.config/opencode/skills/taskagent/SKILL.md
IMMEDIATELY load this skill if you read ANY file containing "taskagent" (PLAN.md, org/projects, docs, etc). Also load for multi-session work or when user mentions agent tasks. For simple single-session tasks without taskagent references, use TodoWrite instead.
npx skillsauth add ferdinandyb/dotfiles taskagentInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Always use taskagent, NEVER use task directly.
taskagent is a wrapper that uses a separate taskwarrior configuration for agent work.
Using task directly will access the human's personal task list, not the agent task tracking system.
taskagent is globally available - no need to cd to any directory. It works from anywhere.
Always use partial UUIDs (first 8 characters) instead of short numeric IDs.
Short IDs (1, 2, 3...) renumber whenever tasks are completed, deleted, or modified. This makes them unreliable for persistent references. UUIDs are permanent.
# BAD - short ID may change
taskagent 3 info
# GOOD - partial UUID is stable
taskagent abc1234d info
All reports (list, ready, next) now display uuid.short instead of numeric IDs. Use these partial UUIDs in all commands.
When creating tasks or linking dependencies, always capture and use UUIDs:
taskagent add "New task" project:foo
# Note the UUID from output, use it for future references
taskagent is a taskwarrior-based tracker for persistent agent memory across sessions. Use for multi-session work with complex context; use TodoWrite for simple single-session tasks.
Key insight: If resuming work after 2 weeks would be difficult without taskagent, use taskagent.
What survives compaction:
What doesn't survive:
Writing annotations for post-compaction recovery:
Write annotations as if explaining to a future agent with zero conversation context:
COMPLETED: Specific deliverables
IN PROGRESS: Current state + next immediate step
BLOCKERS: What's preventing progress
KEY DECISIONS: Important context or user guidance
During the session, annotate tasks with learnings and misalignments as they occur. These are critical for future sessions and handoff.
LEARNING = New information acquired (user preference, codebase pattern, correct approach discovered)
taskagent <uuid> annotate "LEARNING: User prefers fd over find for file searches."
taskagent <uuid> annotate "LEARNING: Deploy pipeline is in .github/workflows/deploy.yml, not CircleCI."
MISALIGNMENT = Agent went wrong direction, was corrected (implies wasted effort or wrong output)
taskagent <uuid> annotate "MISALIGNMENT: Assumed React class components, codebase uses functional only."
taskagent <uuid> annotate "MISALIGNMENT: Put config in src/, should have been lib/ per project convention."
When to record:
A misalignment often produces a learning - record both:
taskagent <uuid> annotate "MISALIGNMENT: Used grep, user corrected to use ugrep."
taskagent <uuid> annotate "LEARNING: User prefers ugrep (ug) over grep."
These annotations are retrieved during /handoff and written to the plan file's ## Learnings section for future sessions.
At session start, always:
Check for ready work:
taskagent ready
Check for active (in-progress) work:
taskagent +ACTIVE list
If active work exists, read the task details and annotations:
taskagent <uuid> agentinfo # minimal info for agents (preferred)
taskagent <uuid> info # full details (shorthand for 'information')
Ask user which project/context if unclear, then check for org/projects file:
~/org/projects/<project>.md (vimwiki)## Agent section for:
taskagent project: project name (defaults to filename)plan file: path to PLAN.md (defaults to repo root)Read the PLAN.md if it exists for additional context
Report to user: "X tasks ready, Y in progress. [Summary]. Should I continue with Z?"
Update taskagent annotations at these checkpoints:
Critical triggers:
Checkpoint command:
taskagent <uuid> annotate "COMPLETED: X. IN PROGRESS: Y. NEXT: Z."
Note: All commands below use
taskagent, nottask. Thetaskagentcommand is specifically configured for agent work tracking and is separate from the human's personal taskwarrior.
Direct execution: Basic taskagent operations (add, annotate, modify, start, stop, list, info) should be run directly - no subagent needed. Only invoke subagents for reviews (@task-reviewer, @code-reviewer) and complex queries (@taskagent-reader).
taskagent ready # built-in taskwarrior report, shows unblocked tasks
taskagent project:<name> ready
taskagent blocked # show tasks blocked by dependencies
taskagent blocking # show tasks that are blocking others
taskagent add "Task title" project:<name>
taskagent add "Task title" project:<name> details:"Longer explanation of context and why"
taskagent add "Task title" project:<name> +side_quest
# Use the parent's UUID for discovered_from
taskagent add "Found issue" project:<name> discovered_from:<parent_uuid>
taskagent <uuid> start # marks in progress
taskagent <uuid> stop # pauses work
taskagent <uuid> done # REQUIRES @task-reviewer first! See "Task Completion Review"
⚠️ NEVER mark a task done without invoking @task-reviewer first.
taskagent <uuid> annotate "COMPLETED: auth endpoint. IN PROGRESS: tests. NEXT: integration."
taskagent <uuid> agentinfo # minimal info for agents (preferred)
taskagent <uuid> info # full details (shorthand for 'information')
taskagent project:<name> list
taskagent <uuid> modify depends:<other_uuid>
| Field | Purpose | When to Set | |-------|---------|-------------| | description | Short task title | At creation | | details | Initial context, the "why" | At creation | | project | Links to org/projects | At creation | | annotations | Session handoff notes | During work, at checkpoints | | discovered_from | Parent task UUID (not short ID) | When discovered during other work | | +side_quest | Tag for exploratory work | At creation if applicable | | +bug | Tag: something broken | At creation | | +feature | Tag: new functionality | At creation | | +task | Tag: work item (tests, docs, refactoring) | At creation | | +chore | Tag: maintenance (dependencies, tooling) | At creation | | +epic | Tag: large feature, group of related tasks | At creation |
Optional: Projects can have a PLAN.md in the repo root. This can be used independently of org/projects files, or together with them.
# Project Plan
## Current Focus
What the agent should prioritize right now.
## Context
Background information helpful for the agent.
## Notes
Human-agent collaborative notes, session summaries.
The agent should:
## Notes section with significant progress/decisions (ask first)## Current Focus without askingMANDATORY: Before marking ANY task done, you MUST invoke @task-reviewer. There are NO exceptions.
This applies to ALL task types:
For tasks linked to external tickets (Jira, GitHub Issues):
@code-reviewer with the ticket IDtaskagent done: Invoke @task-reviewer as usualCode-reviewer checks ticket alignment; task-reviewer checks task completion. Both are required for externally-tracked work.
Then invoke the reviewer with the UUID (from the report output):
@task-reviewer Review task <uuid>
- Project: <project-name>
- PLAN.md: <path or "none">
- org/projects file: <path or "none">
- Summary: <what you did in 1-2 sentences>
- Key files changed: <list main files touched, or "none" for non-code tasks>
Always pass the UUID, not the short ID or description. The reviewer needs the UUID to look up the task.
Include whichever other fields you have - the reviewer can work with partial context.
After receiving the review verdict:
taskagent <uuid> doneTemporal layering:
Handoff pattern:
Optional: The org/projects vimwiki file (~/org/projects/<project>.md) can be used independently of PLAN.md, or together with it. Format:
# Project Name
## Overview
High-level description.
## Resources
- Links, repos, docs
## Tasks
- [ ] Human tasks
## Agent
- **taskagent project**: `project-name`
- **plan file**: `~/path/to/repo/PLAN.md`
If taskagent project is omitted, defaults to the filename.
If plan file is omitted, defaults to PLAN.md in repo root.
testing
Run Tecton plan and tests via Pants in the data-science repo. Handles long-running commands with proper output capture to avoid truncation.
testing
Load this skill when performing git operations that modify repository state: add, commit, amend, rebase, merge, stash, worktree, reset, checkout, switch, branch create/delete.
tools
MUST load before ANY git or yadm operation — reading, writing, branching, committing, diffing, logging, rebasing, or anything else git-related. No exceptions.
documentation
Fetch GitHub issues, spawn sub-agents to implement fixes and open PRs, then monitor and address PR review comments. Usage: /gh-issues [owner/repo] [--label bug] [--limit 5] [--milestone v1.0] [--assignee @me] [--fork user/repo] [--watch] [--interval 5] [--reviews-only] [--cron] [--dry-run] [--model glm-5] [--notify-channel -1002381931352]