Taskwarrior Issue Tracking
Overview
Use Taskwarrior v3 as a lightweight, offline-capable issue tracker for agents. Treat each issue as a Taskwarrior task with project/tag metadata and explicit status transitions. Follow the workflow to keep work moving until all assigned tasks are finished.
Workflow
- •Identify the current project and list available work
- •Use a consistent project naming convention based on the
originremote:project:repo:<host>/<owner>/<repo>(e.g.,project:repo:github.com/peter-jerry-ye/skills) - •If the repo has no remote yet, fall back to a home-relative path:
project:path:Documents/cakes/skills - •List available tasks:
task project:repo:github.com/peter-jerry-ye/skills(pending by default)
- •Pick a task and claim it
- •
task <id> modify +agent-codex
- •Plan the work before execution
- •Create dependency tasks instead of arrow plans.
- •Example:
- •
task add project:repo:github.com/peter-jerry-ye/skills +ready "Step 1: gather context" - •
task add project:repo:github.com/peter-jerry-ye/skills +ready "Step 2: edit SKILL.md" - •
task add project:repo:github.com/peter-jerry-ye/skills +ready "Step 3: sanity check" - •
task <id-step3> modify depends:<id-step2> - •
task <id-step2> modify depends:<id-step1>
- •
- •Include routine jobs as dependency tasks that block the final deliverable (e.g., lint/format/build/test).
- •Make the final deliverable depend on all routine jobs and prerequisite steps.
- •Example routine-job chain:
- •
task add project:repo:github.com/peter-jerry-ye/skills "Run cargo fmt" - •
task add project:repo:github.com/peter-jerry-ye/skills "Run cargo clippy" - •
task add project:repo:github.com/peter-jerry-ye/skills "Implement feature X" - •
task <id-feature> modify depends:<id-fmt>,<id-clippy>
- •
- •Create new tasks as needed
- •
task add project:repo:github.com/peter-jerry-ye/skills "Fix parser crash"
- •Work notes and updates
- •
task <id> annotate "Found reproduction case" - •
task <id> modify priority:H due:2025-01-15 - •If blocked, use dependencies (see "Blocked Work")
- •Complete work
- •
task <id> done - •Add a closing note first if needed:
task <id> annotate "Merged fix and verified"
- •Follow-ups
- •Create follow-up tasks for deferred work instead of leaving comments in Git.
- •Continue until all assigned tasks are finished
- •Do not stop while tasks you own are blocked by unmet dependencies.
- •When assigned a task, work through and complete its dependencies so it becomes unblocked, then complete the task itself.
Command Mapping
- •Find work:
task project:repo:<host>/<owner>/<repo> +ready - •Show task details:
task <id> info - •Claim work:
task <id> modify +agent-<name> - •Blocked work: add dependencies and use
task blocked/task blockingreports - •Close work:
task <id> done(completed)
Conventions
- •Statuses: rely on Taskwarrior built-ins (
pending,waiting,completed), avoid custom status tags. - •Blocked work: represent blockers with
depends:and query withtask blocked/task blocking. - •Ownership: encode agent identity in tags, e.g.
+agent-codex,+agent-alice. - •Project scope: use
project:repo:<host>/<owner>/<repo>and fall back toproject:path:<home-relative>when no remote exists. - •Linking: include relevant file paths or IDs in annotations.
Landing the Plane (Session Completion)
When ending a work session, you MUST complete ALL steps below. Work is NOT complete until git push succeeds.
MANDATORY WORKFLOW:
- •File issues for remaining work - Create tasks for anything that needs follow-up
- •
task add project:repo:<host>/<owner>/<repo> +ready "Follow-up: <short title>"
- •
- •Run quality gates (if code changed) - Tests, linters, builds
- •Update issue status - Close finished work, update blocked items
- •
task <id> done - •Add dependencies for blocked tasks and annotate the blocker
- •
- •PUSH TO REMOTE - This is MANDATORY:
bash
git pull --rebase git push git status # MUST show "up to date with origin"
- •Clean up - Clear stashes, prune remote branches
- •Verify - All changes committed AND pushed
- •Hand off - Provide context for next session
CRITICAL RULES:
- •Work is NOT complete until
git pushsucceeds - •NEVER stop before pushing - that leaves work stranded locally
- •NEVER say "ready to push when you are" - YOU must push
- •If push fails, resolve and retry until it succeeds
Blocked Work
- •Use dependencies instead of custom status tags.
- •Example:
- •
task <id-blocked> modify depends:<id-blocker> - •
task blockedto list blocked tasks - •
task blockingto list blocker tasks
- •
Work Until Finished
- •Keep working until all tasks you own are
doneor have explicit dependencies with a blocker task created. - •If a task depends on another, split it into a new task and block the current one with a clear annotation.