mcpField
V
vikunja-vja

vikunja-vja

github.com/akhyProductivity141 installsUpdated 8w ago
Repository

About vikunja-vja

vikunja-vja is a skill for managing tasks on a Vikunja instance through the `vja` CLI. It covers task and project operations, with filters and date inputs for common review and scheduling workflows.

Key features

  1. 01Create, edit, delete, and clone tasks
  2. 02Filter and sort task lists
  3. 03Set due dates, reminders, and priority
  4. 04Manage projects, labels, and assignees
  5. 05Toggle completion and defer due dates

Use cases

  1. 01Review overdue and high-priority tasks
  2. 02Create and assign a labeled task
  3. 03Bulk-defer overdue tasks
  4. 04Organize tasks into projects and labels

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/akhy/agent-skills --skill vikunja-vja

After installing, type/vikunja-vjain Claude Code to confirm it loaded.

Details

From the project README

Vikunja Tasks Skill

Manage tasks on a Vikunja instance using the vja CLI.

Always use --json and pipe to jq for structured output. Title arguments are positional (not --title).

Tasks

Create
vja add "Task title"
vja add "Task title" -n "Description" -d "tomorrow" -p 3 -l urgent -A alice
vja add "Task title" -d "next monday at 9:00" -r "1h before due_date" -o "My Project"

Flags:

  • -n / --note — description
  • -d / --due — due date (natural language: "in 3 days", "2025-12-31")
  • --start / --end — start/end dates
  • -p / --prio — priority (1=low … 4=urgent)
  • -l / --label — label name (repeat for multiple: -l bug -l backend)
  • -A / --assignee — username to assign
  • -r / --reminder — reminder ("in 3 days at 18:00", "1h before due_date")
  • -o / --project — project name or id
  • -f / --star — mark as favorite
  • --force-create — create label if it doesn't exist yet
List
vja ls --json | jq '.tasks[] | {id, title, due_date, priority}'

# Filter examples
vja ls --filter "done eq false" --json | jq '.tasks[] | {id, title}'
vja ls --filter "priority ge 3" --json | jq '.tasks[] | {id, title, priority}'
vja ls --filter "due_date before today" --json | jq '.tasks[] | {id, title, due_date}'
vja ls -l urgent --json | jq '.tasks[] | {id, title}'
vja ls -o "My Project" --json | jq '.tasks[] | {id, title}'
vja ls -u 3 --json | jq '.tasks[] | {id, title, urgency}'   # urgency >= 3
vja ls --all --json | jq '.tasks[] | {id, title, done}'     # include completed
vja ls --sort "-priority,due_date" --json | jq '.tasks[] | {id, title}'

Filter operators: eq, ne, gt, lt, ge, le, before, after, contains. Multiple --filter flags are ANDed.

Show
vja show <task_id> --json | jq '{id, title, description, due_date, priority, assignees, labels}'
Edit
vja edit <task_id> -i "New title"
vja edit <task_id> -n "Updated description"
vja edit <task_id> -a "Appended note"          # append to existing description
vja edit <task_id> -d "next friday" -p 4
vja edit <task_id> -l bug -l backend           # set labels
vja edit <task_id> -A alice                    # toggle assignee (adds if absent, removes if present)
vja edit <task_id> -c true                     # mark completed
vja edit <task_id> -f                          # star; --no-star to unstar
vja edit <task_id> -o "Other Project"          # move to project
Delete
vja delete <task_id> -q
Toggle done/undone
vja toggle <task_id>
Defer due date
vja defer <task_id> 2d      # delay by 2 days (also shifts reminders)
vja defer <task_id> 1h30m
Clone
vja clone <task_id> "New task title"
Open in browser
vja open <task_id>

Projects

vja project ls --json | jq '.[] | {id, title, parent_project_id}'
vja project show <project_id> --json | jq .
vja project add "Project name"
vja project add "Sub-project" -o "Parent Project"

Labels

vja label ls --json | jq '.[] | {id, title}'
vja label add "new-label"

User

vja user show --json | jq '{id, username, email}'

Workflows

Daily review
# Overdue tasks
vja ls --filter "due_date before today" --filter "done eq false" --json \
  | jq '.tasks[] | {id, title, due_date}'

# High-priority open tasks sorted by urgency
vja ls --filter "priority ge 3" --filter "done eq false" --sort "-urgency" --json \
  | jq '.tasks[] | {id, title, priority, urgency, due_date}'
Create, assign, and label in one step
vja add "Review PR #42" -p 3 -d "today" -A alice -l review --force-create
Bulk-defer overdue tasks
vja ls --filter "due_date before today" --filter "done eq false" --json \
  | jq '.tasks[].id' \
  | xargs -I{} vja defer {} 1d -q
Complete a task and log it
vja toggle <task_id> -v --json | jq '{id, title, done}'

Notes

  • Dates support natural language via parsedatetime: "tomorrow", "next monday", "in 3 days at 9:00", "2025-12-31"
  • --json outputs Vikunja API JSON; --jsonvja outputs vja's internal representation
  • Config is read from ~/.config/vja/config.rc (or legacy ~/.vjacli/vja.rc)

Comments

Markdown supported