Run a named TaskMate automation playbook against the Vikunja board: groom (backlog hygiene), split (break oversized tasks into subtasks), review (weekly retro with celebration), celebrate (kudos on completed work), unstick (research the most stuck task), triage (route inbox tasks). Dry-run by default; --apply executes mutations. Custom playbooks in .claude/taskmate/playbooks/ or ~/.config/taskmate/playbooks/ override built-ins. Use for scheduled automation (claude -p "/taskmate:auto groom --apply") or when the user asks to groom, clean up, triage, split, or review their task board.
Daily radar over the Vikunja board: scan open tasks and surface the ONE most valuable signal (overdue urgent task, stuck priority, decision that unblocks others, quick win, imminent deadline) as a short actionable nudge — or stay silent when nothing deserves attention. Read-only. Use when the user asks 'what should I work on', 'anything urgent?', 'morning briefing', 'task pulse', or on a schedule via claude -p.
Manage tasks in Vikunja (the open-source task manager): list, search, create, update, complete, prioritize, label, assign, relate, move, and comment on tasks and projects via a bundled token-efficient CLI. Self-heals when unconfigured by collecting server URL and API token. Use when the user mentions Vikunja, their task board/server, 'add a task', 'what's on my plate', 'what should I work on', 'my todo list', task grooming or triage, or when acting as a task companion working a shared board. Do NOT use for code TODO comments, GitHub/GitLab issues, or Claude Code's internal session task tools.
Guided TaskMate/Vikunja setup: create or update a connection profile (server URL + API token), choose user vs companion mode, pick a persona, bind the current repo to a Vikunja project, and schedule automations. Use when the user says 'set up taskmate', 'connect vikunja', 'configure my task server', wants to add a second profile/account, or when any TaskMate command reports not_configured or a 401.
Advance a long-horizon project by exactly one CID-loop iteration (update-state → define-next → advance → review), with rigor adjusted to the project's current phase (new/poc/mvp/stable). Use when explicitly asked to "run the build loop", "advance the project", "run one CID iteration", on /long-horizon:build, or when an automation (/goal, /loop, a scheduled task) drives autonomous building. Requires a CID context pack at .cid/ (create one with /long-horizon:init). NOT for one-off edits, questions, or reviewing unrelated work.
Set up a project for Continuous Iterative Development (CID): interview the user about the goal, stack, quality gate, and milestones; draft a target.md with runnable Verify criteria; and scaffold the CID context pack at .cid/ so the /long-horizon:build loop can run. Invoked explicitly via /long-horizon:init — model invocation is disabled below, because setting up the loop (interview, settings.json permission rules) is a deliberate human act. Works on empty directories (greenfield) and existing codebases (brownfield). NOT for running iterations (use /long-horizon:build) or checking progress (use /long-horizon:status).
Self-improvement pass for a CID-loop project: analyze the iteration journal, learnings, issues, and git history for loop-level problems (repeated NEEDS_WORK, drift, oversized steps, recurring blockers), then propose harness improvements — and with the "apply" argument, apply at most one bounded policy tuning. Use when asked to "run a retro on the loop", "tune the build loop", "why does the loop keep failing", or on /long-horizon:retro. NOT for reviewing code (the review role does that) or advancing the project (use /long-horizon:build).
Report where a CID-loop project stands without advancing it: current phase, convergence toward the target, last verdicts, open issues, blockers, and the suggested next action. Read-only. Use when asked "where does the project stand", "show loop status", "how is the build loop doing", or on /long-horizon:status. NOT for running an iteration (use /long-horizon:build) or setting up a project (use /long-horizon:init).