Our review
Manages tasks and projects on a self-hosted Vikunja instance via REST API.
Strengths
- Full task management with filters, labels, and comments
- Project and Kanban stage management
- Team collaboration with project sharing and permissions
- Automated recurring tasks via heartbeat routine
Limitations
- Requires an active Vikunja instance and initial setup
- Depends on environment variables for authentication
- No native calendar or push notification integration
Use this skill when you need to create, track, or organize personal or work tasks on your own Vikunja instance.
Avoid this skill if you don't have access to a Vikunja instance or prefer an all-in-one task manager with third-party integrations.
Security analysis
CautionThe skill instructs downloading files from an external URL and running a Python script, which is a common but potentially risky pattern. No immediate destructive actions observed, but the external URL reliance is a concern.
- •Download of scripts from external URL (hiveagilectl.sh) with curl; subsequent execution of a Python script (vikunja.py) could pose risk if the source is compromised.
Examples
Create a new task in the project 'Work' with title 'Write report' and due date tomorrow.Show me all overdue tasks assigned to me.Add a comment to task ID 42 saying 'I'll review this later.'name: vikunja description: Manage tasks and projects on a self-hosted Vikunja instance (PERSONAL/WORK). Use when the user wants to create, view, complete, or manage tasks, check what's due or overdue, list projects, or get notifications. Always register user-requested tasks in Vikunja for tracking and follow-up.
Vikunja Task Manager (PERSONAL / WORK)
Gestiona tareas y proyectos en una instancia self-hosted de Vikunja mediante REST API.
Skill Files
| File | Description | |------|-------------| | SKILL.md (this file) | Command reference and API documentation | | REGISTER.md | Initial setup and configuration | | HEARTBEAT.md | Periodic routine to enforce task tracking |
Install locally:
mkdir -p ~/.nimworker/skills
curl -s https://hiveagilectl.sh/skill.md > ~/.nimworker/skills/SKILL.md
curl -s https://hiveagilectl.sh/register.md > ~/.nimworker/skills/REGISTER.md
curl -s https://hiveagilectl.sh/heartbeat.md > ~/.nimworker/skills/HEARTBEAT.md
Or copy from local repo:
mkdir -p ~/.nimworker/skills
cp ~/work/taskworker/skill/SKILL.md ~/.nimworker/skills/
cp ~/work/taskworker/REGISTER.md ~/.nimworker/skills/
cp ~/work/taskworker/HEARTBEAT.md ~/.nimworker/skills/
Complete Command Reference (28 commands)
| Category | Command | Description |
|----------|---------|-------------|
| Tasks | tasks | List tasks with filters (project, assignee, search, etc.) |
| | search | Search tasks across all projects by keyword |
| | task | Get detailed task information |
| | create-task | Create new task with description, priority, due date |
| | edit-task | Edit task title, description, priority, due date |
| | delete-task | Delete a task |
| | complete | Mark task as done |
| | move-task | Move task to different stage/bucket |
| | assign-task | Assign task to user (supports multiple assignees) |
| | overdue | Show overdue tasks |
| | due | Show tasks due soon (default 24h) |
| Labels | labels | List all labels |
| | add-label | Add label to task (auto-creates if needed) |
| | remove-label | Remove label from task |
| Comments | comments | List comments on a task |
| | add-comment | Add comment to task |
| Projects | projects | List all projects |
| | create-project | Create new project (auto-creates 5 Kanban stages) |
| | buckets / stages | List Kanban stages in project |
| | create-bucket / create-stage | Create new Kanban stage |
| Teams | teams | List all teams with members |
| | create-team | Create new team |
| | share-project | Share project with team |
| | project-teams | List teams in a project |
| Users | users | List users in a project |
| | invite-user | Invite user to project (read/write/admin) |
| Other | notifications | Show notifications |
Key Features:
- ✅ Filter by assignee:
--assign "username"to see only tasks assigned to specific user - ✅ Auto-stage creation: New projects get 5 default Kanban stages (Backlog, To Do, In Progress, Review, Done)
- ✅ Multiple assignees: Tasks can be assigned to multiple users
- ✅ Auto-label creation: Adding non-existent labels creates them automatically
- ✅ Rich output: Shows project names, stage names with emojis, assignees, due dates, priorities
- ✅ Team collaboration: Share projects with teams, manage user permissions
Register First
Before using Vikunja, you must configure it. See REGISTER.md for full setup.
Quick start:
export VIKUNJA_URL="https://your-vikunja-instance.com"
export VIKUNJA_TOKEN="your-api-token"
export VIKUNJA_TZ="Europe/Rome"
export VIKUNJA_BOT_USERNAME="Jarvis" # Tu username en Vikunja
# Bootstrap default projects
~/.nimworker/vikunja.py ensure-default-projects
IMPORTANTE: Configura VIKUNJA_BOT_USERNAME con tu nombre de usuario en Vikunja. Este username se usa para:
- Asignar tareas al bot
- Filtrar tareas del bot (
--assign "Jarvis") - Ejecución autónoma de tareas (ver HEARTBEAT.md)
Set Up Your Heartbeat 💓
Critical: Without the heartbeat, tasks won't be tracked consistently.
See HEARTBEAT.md for the full routine. The heartbeat ensures:
- ✅ Every task request is registered in Vikunja
- ✅ Overdue tasks are checked regularly
- ✅ No tasks are forgotten
Principios de uso (obligatorios)
- Fuente de verdad: si el usuario pide una "tarea", se crea en Vikunja (siempre).
- Sólo dos proyectos base: PERSONAL y WORK.
- Seguimiento: cualquier consulta de "qué queda / vencimientos / atrasos / cómo voy" se responde consultando Vikunja (
overdue,due,tasks). - Cierre: cuando el usuario diga "hecho / completado / listo", se completa la tarea correspondiente en Vikunja.
Setup
Configura variables de entorno:
export VIKUNJA_URL="https://your-vikunja-instance.com"
export VIKUNJA_TOKEN="your-api-token"
# Timezone para filtros (recomendado)
export VIKUNJA_TZ="Europe/Rome"
# Proyectos base (siempre estos dos)
export VIKUNJA_PROJECT_PERSONAL="PERSONAL"
export VIKUNJA_PROJECT_WORK="WORK"
# IMPORTANTE: Nombre de usuario del bot en Vikunja (para asignación de tareas)
export VIKUNJA_BOT_USERNAME="Jarvis" # Cambia esto por tu username en Vikunja
Configuración del usuario/bot:
- Token: Vikunja → Settings → API Tokens → Create token
- Username: El nombre de usuario que usas en Vikunja (ej: "Jarvis", "Aitor", "Bot")
- Este username se usa para asignar tareas al bot
- El bot ejecutará automáticamente tareas asignadas a este usuario
- Configúralo en
VIKUNJA_BOT_USERNAME
Recomendación: ejecutar una vez
ensure-default-projectspara crear PERSONAL/WORK si faltan.
Enrutado de tareas a PERSONAL / WORK (sin preguntar)
Si el usuario no especifica proyecto explícito, se asigna así:
- WORK si aparecen señales de trabajo:
cliente,reunión,entrega,deploy,factura,empresa,proyecto,ticket,incidencia,call,oferta,presupuesto. - PERSONAL si aparecen señales personales:
casa,compra,familia,salud,viaje,médico,gym,pago personal. - Si no está claro: PERSONAL por defecto.
El usuario puede forzar: "en WORK …" / "en PERSONAL …".
Metodología recomendada (ligera)
- Daily (2 min):
overdue+due 24hpara WORK y PERSONAL. - Weekly (10 min): revisar lista por prioridad y limpiar/ajustar.
Commands
Base:
~/.nimworker/vikunja.py(Python wrapper) o~/.nimworker/scripts/vikunja.sh(Bash script)
Bootstrap: asegurar proyectos base
~/.nimworker/vikunja.py ensure-default-projects
List tasks
~/.nimworker/vikunja.py tasks --count 10
~/.nimworker/vikunja.py tasks --project "WORK" --count 20
~/.nimworker/vikunja.py tasks --project "PERSONAL" --count 20
~/.nimworker/vikunja.py tasks --search "groceries"
~/.nimworker/vikunja.py tasks --sort priority --order desc
Output includes:
- ✅ Project name (WORK, PERSONAL)
- ✅ Stage/Bucket name (📋 Backlog, 📝 To Do, 🔄 In Progress, 👀 Review, ✅ Done)
- ✅ Assigned users (if any)
- ✅ Due date and priority
Filter by assignee (NEW! ✨)
# Show only tasks assigned to specific user
~/.nimworker/vikunja.py tasks --assign "Aitor"
~/.nimworker/vikunja.py tasks --assign "Jarvis" --count 20
# Combine with project filter
~/.nimworker/vikunja.py tasks --project "WORK" --assign "Aitor"
# Combine with other filters
~/.nimworker/vikunja.py tasks --assign "Aitor" --sort priority --order desc
Filtrado avanzado (Vikunja filters)
~/.nimworker/vikunja.py tasks --filter 'done = false && priority >= 3'
~/.nimworker/vikunja.py tasks --project "WORK" --filter 'priority >= 4'
Overdue tasks
~/.nimworker/vikunja.py overdue
~/.nimworker/vikunja.py overdue --project "WORK"
~/.nimworker/vikunja.py overdue --project "PERSONAL"
Tasks due soon (next N hours)
~/.nimworker/vikunja.py due --hours 24
~/.nimworker/vikunja.py due --hours 24 --project "WORK"
~/.nimworker/vikunja.py due --hours 48 --project "PERSONAL"
Create a task
Basic task:
~/.nimworker/vikunja.py create-task --project "WORK" --title "Llamar a cliente X" --due "2026-02-01" --priority 4
~/.nimworker/vikunja.py create-task --project "PERSONAL" --title "Comprar leche" --due "2026-02-01" --priority 2
Task with detailed description:
~/.nimworker/vikunja.py create-task \
--project "WORK" \
--title "Implementar autenticación OAuth" \
--description "Integrar OAuth 2.0 con Google y GitHub. Requisitos: tokens JWT, refresh tokens, manejo de errores. Ver documentación en /docs/auth.md" \
--due "2026-02-15" \
--priority 5 \
--bucket "To Do"
Task with multiline description:
~/.nimworker/vikunja.py create-task \
--project "PERSONAL" \
--title "Planificar viaje a Barcelona" \
--description "Tareas:
- Reservar vuelos (Vueling o Ryanair)
- Hotel cerca de Las Ramblas
- Entradas Sagrada Familia
- Restaurantes recomendados: El Xampanyet, Can Culleretes
Presupuesto: 800€" \
--due "2026-03-01" \
--priority 3
Assign to a specific Kanban stage:
~/.nimworker/vikunja.py create-task --project "WORK" --title "Fix bug #123" --bucket "In Progress" --priority 5
~/.nimworker/vikunja.py create-task --project "WORK" --title "New feature" --stage "To Do" --priority 3
Parameters:
--title: Task title (required)--project: Project name (required)--description: Detailed description (optional, supports multiline)--due: Due date in YYYY-MM-DD format--priority: 1 (low) to 5 (urgent)--bucket/--stage: Kanban stage (partial match, e.g., "todo", "progress", "done")
Complete a task
~/.nimworker/vikunja.py complete --id 123
Get task details
~/.nimworker/vikunja.py task --id 123
List projects
~/.nimworker/vikunja.py projects
Create a project (extra)
Nota: El flujo principal usa PERSONAL y WORK. Crear proyectos adicionales sólo si el usuario lo pide explícitamente.
~/.nimworker/vikunja.py create-project --title "New Project" --description "Optional description"
Automatic Kanban stages: When creating a project, 5 default stages are automatically created:
- 📋 Backlog - Ideas and future tasks
- 📝 To Do - Ready to start
- 🔄 In Progress - Currently working on
- 👀 Review - Waiting for review/approval
- ✅ Done - Completed tasks
To skip automatic stage creation, use --no-stages:
~/.nimworker/vikunja.py create-project --title "New Project" --no-stages
Get notifications
~/.nimworker/vikunja.py notifications
Assign tasks to users
# Assign task to a user
~/.nimworker/vikunja.py assign-task --id 123 --user "Aitor"
~/.nimworker/vikunja.py assign-task --id 456 --user "Jarvis"
# Note: Users must be in project teams or directly invited to the project
# Tasks can have multiple assignees
Move tasks between stages
# Move task to different Kanban stage
~/.nimworker/vikunja.py move-task --id 123 --stage "In Progress"
~/.nimworker/vikunja.py move-task --id 456 --bucket "Done"
~/.nimworker/vikunja.py move-task --id 789 --stage "Review" --project "WORK"
Edit tasks
# Edit task details
~/.nimworker/vikunja.py edit-task --id 123 --title "New title"
~/.nimworker/vikunja.py edit-task --id 123 --priority 5 --due "2026-03-01"
~/.nimworker/vikunja.py edit-task --id 123 --description "Updated description"
Delete tasks
~/.nimworker/vikunja.py delete-task --id 123
Labels
# List all labels
~/.nimworker/vikunja.py labels
# Add label to task (creates label if it doesn't exist)
~/.nimworker/vikunja.py add-label --id 123 --label "urgent"
~/.nimworker/vikunja.py add-label --id 123 --label "bug"
# Remove label from task
~/.nimworker/vikunja.py remove-label --id 123 --label "urgent"
Comments
# List comments on a task
~/.nimworker/vikunja.py comments --id 123
# Add comment to task
~/.nimworker/vikunja.py add-comment --id 123 --comment "Working on this now"
~/.nimworker/vikunja.py add-comment --id 456 --comment "Blocked by task #123"
Team Management
# List all teams
~/.nimworker/vikunja.py teams
# Create a new team
~/.nimworker/vikunja.py create-team --name "Development Team" --description "Core dev team"
# Share project with team
~/.nimworker/vikunja.py share-project --project "WORK" --team "Development Team" --rights write
# List teams in a project
~/.nimworker/vikunja.py project-teams --project "WORK"
User Management
# List users in a project
~/.nimworker/vikunja.py users --project "WORK"
# Invite user to project
~/.nimworker/vikunja.py invite-user --project "WORK" --user "maria@example.com" --rights write
~/.nimworker/vikunja.py invite-user --project "PERSONAL" --user "john" --rights read
Rights levels:
read- Can view taskswrite- Can create and edit tasksadmin- Full project administration
Kanban Stages (Buckets)
# List stages in a project
~/.nimworker/vikunja.py buckets --project "WORK"
~/.nimworker/vikunja.py stages --project "PERSONAL" # alias
# Create a new stage
~/.nimworker/vikunja.py create-bucket --project "WORK" --title "🔥 Urgent" --position 0
~/.nimworker/vikunja.py create-stage --project "WORK" --title "🧪 Testing" # alias
Search across all projects
# Search by keyword in title or description
~/.nimworker/vikunja.py search --query "bug"
~/.nimworker/vikunja.py search --query "cliente"
~/.nimworker/vikunja.py search --query "payment"
Search output includes:
- Project name
- Stage name
- Due date and priority
- Task ID
Rutinas listas para copiar
Daily (mañana)
# Check overdue and upcoming tasks
~/.nimworker/vikunja.py overdue --project "WORK"
~/.nimworker/vikunja.py due --hours 24 --project "WORK"
~/.nimworker/vikunja.py overdue --project "PERSONAL"
~/.nimworker/vikunja.py due --hours 24 --project "PERSONAL"
# Check your assigned tasks
~/.nimworker/vikunja.py tasks --assign "YourUsername" --count 10
Weekly (revisión)
# Review all tasks by priority
~/.nimworker/vikunja.py tasks --project "WORK" --sort priority --order desc --count 50
~/.nimworker/vikunja.py tasks --project "PERSONAL" --sort priority --order desc --count 50
# Review team assignments
~/.nimworker/vikunja.py tasks --project "WORK" --assign "Aitor"
~/.nimworker/vikunja.py tasks --project "WORK" --assign "Jarvis"
Due Date Monitoring (cron genérico)
Ejemplo simple (sin acoplar a bots):
# Cada día a las 09:00
0 9 * * * ~/work/taskworker/vikunja overdue && ~/work/taskworker/vikunja due --hours 24
Si querés notificaciones, integralo con tu sistema (Telegram, email, etc.) según tu stack.
Notes
- Los nombres de proyecto en
--projectson case-insensitive. - Filters siguen la sintaxis de filtros de Vikunja.
- Timezone para filtros se controla con
VIKUNJA_TZ(por defecto recomendado: Europe/Rome).
Examples
Work Tasks
Development task with details:
~/work/taskworker/vikunja.py \
--project "WORK" \
--title "Implementar API de pagos" \
--description "OBJETIVO: Integrar Stripe para pagos recurrentes
REQUISITOS:
- Webhook para eventos de pago
- Manejo de errores y reintentos
- Tests unitarios y de integración
- Documentación en Swagger
REFERENCIAS:
- Docs Stripe: https://stripe.com/docs/api
- Ticket Jira: PROJ-123
ESTIMACIÓN: 40 horas" \
--due "2026-02-20" \
--priority 5 \
--bucket "To Do"
Bug fix:
~/work/taskworker/vikunja.py \
--project "WORK" \
--title "Fix: Login timeout en producción" \
--description "PROBLEMA: Usuarios reportan timeout al hacer login después de 5 minutos
PASOS PARA REPRODUCIR:
1. Login en app
2. Esperar 5+ minutos sin actividad
3. Intentar hacer cualquier acción
4. Error: 401 Unauthorized
CAUSA POSIBLE: JWT expira pero refresh token no se usa correctamente
LOGS: /var/log/app/auth-errors.log
REPORTADO POR: 3 usuarios (tickets #456, #457, #458)" \
--due "2026-02-05" \
--priority 5 \
--bucket "In Progress"
Client communication:
~/work/taskworker/vikunja.py \
--project "WORK" \
--title "Enviar propuesta a cliente Acme Corp" \
--description "SOLICITUD: Cotización para desarrollo app móvil
ALCANCE:
- App móvil iOS/Android
- Backend API REST
- Panel admin web
- Integración con su ERP
ESTIMACIÓN: 3 meses, 2 devs full-time
PRESUPUESTO: 45.000€
CONTACTO: Juan Pérez (juan@acmecorp.com)
TEMPLATE: /templates/propuesta-desarrollo.docx" \
--due "2026-02-10" \
--priority 4 \
--bucket "To Do"
Personal Tasks
Shopping list:
~/work/taskworker/vikunja.py \
--project "PERSONAL" \
--title "Compra semanal supermercado" \
--description "LISTA DE COMPRAS:
FRESCOS:
- Leche (2L)
- Pan integral
- Frutas: manzanas, plátanos, naranjas
- Verduras: lechuga, tomates, pepino
DESPENSA:
- Pasta (500g)
- Arroz (1kg)
- Aceite de oliva
- Conservas: atún, tomate
LIMPIEZA:
- Detergente lavadora
- Papel higiénico
PRESUPUESTO: ~60€
SUPERMERCADO: Mercadona o Carrefour" \
--due "2026-02-02" \
--priority 3 \
--bucket "To Do"
Travel planning:
~/work/taskworker/vikunja.py \
--project "PERSONAL" \
--title "Organizar viaje a Japón (abril)" \
--description "VIAJE: 15-30 abril (15 días)
PENDIENTE:
- Vuelos Madrid-Tokyo (Skyscanner)
- JR Pass (7 días, ~280€)
- Hoteles: Tokyo (5n), Kyoto (4n), Osaka (3n)
- Pocket WiFi o SIM card
- Seguro de viaje
LUGARES A VISITAR:
- Senso-ji, Fushimi Inari, Dotonbori, Nara
PRESUPUESTO: ~2.500€/persona
COMPAÑEROS: Ana y Carlos
GUÍAS: japan-guide.com, /r/JapanTravel" \
--due "2026-03-01" \
--priority 2 \
--bucket "Backlog"
Health appointment:
~/work/taskworker/vikunja.py \
--project "PERSONAL" \
--title "Cita médico: revisión anual" \
--description "CITA: 12 febrero, 10:30
LUGAR: Centro Médico Salud, C/ Mayor 45, 3º
TELÉFONO: 91-234-5678
LLEVAR:
- Tarjeta sanitaria
- Resultados análisis sangre
- Lista medicación actual
TEMAS A CONSULTAR:
- Dolor espalda recurrente
- Renovar receta medicación presión arterial
- Vacuna gripe
RECORDATORIO: Llegar 10 min antes" \
--due "2026-02-12" \
--priority 4 \
--bucket "To Do"
Next Steps
- Setup: Read
REGISTER.mdfor initial configuration - Heartbeat: Read
HEARTBEAT.mdto set up periodic checks - Start using: Create your first task and test the workflow
Remember: Vikunja is your source of truth. If a task isn't in Vikunja, it doesn't exist. 📋
Task Prioritizer
Productivity
Prioritizes your tasks using Eisenhower, ICE, and RICE frameworks.
Weekly Status Report Generator
Productivity
Generate structured and concise weekly status reports.
Daily Standup Report
Productivity
Generates structured and concise daily standup reports.