Complete Task
Mark a task as completed using the taskmd CLI.
Instructions
The user's query is in $ARGUMENTS (a task ID like 077). If $ARGUMENTS is empty or does not contain a task ID, infer the task from conversation context (e.g., the task currently being worked on). If the task cannot be determined, ask the user which task to complete.
⚠️ Worktree safety — never
cdbefore ataskmdwrite. Run everytaskmd set …command (including--verifyand thein-reviewbranch) from your current working directory. Do not prependcd /path/to/repoorcdinto a "primary working directory" first: inside a git worktree that path is a different checkout on a different branch. Unlike theEdit/Writetools (which the harness's worktree isolation guards), a shelltaskmdwrite is not isolated — after such acdit will silently flip the status in the wrong checkout. taskmd resolves its task directory from the current directory, so running in place is what keeps the write in this worktree. (Outside a git repo, running in place is already correct.)The CLI backs this up: in a multi-worktree repo,
taskmd setrefuses to write when the task exists only in a sibling worktree (task <id> exists only in worktree <path> …; run taskmd there). If you hit that error, you are in the wrong checkout — do not work around it bycd-ing; run the command from the worktree that owns the task.
Read the task file to understand the full task scope:
- Run
taskmd get <ID>to get the task contents - Identify all subtask checklists (
- [ ]/- [x]items) in the task body - Identify any acceptance criteria section
- Run
Verify subtasks and acceptance criteria are met:
- Review each subtask checklist item — confirm the work has been done
- Review each acceptance criterion — confirm it is satisfied
- Check off (
- [x]) any items that are complete but not yet checked off by editing the task file - If any items are genuinely incomplete, report them to the user and ask how to proceed — do NOT mark the task as completed
Add a final worklog entry (if worklogs are enabled):
- Check
.taskmd.yamlforworklogs: true-- worklogs are opt-in, so skip this step unless the key is explicitly set totrue - Otherwise, find the worklog file at
tasks/<group>/.worklogs/<ID>.md(ortasks/.worklogs/<ID>.md) - If a worklog exists, append a timestamped completion summary
- Check
Check the workflow mode in
.taskmd.yaml(run thesetaskmd setcommands from the current working directory — do notcdelsewhere first, see the ⚠️ note above):- If
workflow: pr-reviewis set, usetaskmd set $ARGUMENTS --status in-reviewinstead ofcompleted(note: in pr-review mode, tasks are completed by merging the PR, not by setting status directly) - Otherwise (default
solomode), runtaskmd set $ARGUMENTS --status completed --verify - The
--verifyflag runs any verification checks defined in the task before applying the status change - If verification fails, report the failures to the user
- If
Confirm the status change to the user