Do Task
Look up a task and start working on it.
Instructions
The user's query is in $ARGUMENTS (a task ID like 077 or a task name/keyword).
⚠️ Worktree safety — never
cdbefore ataskmdwrite. Run everytaskmd set …command 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.)
- Look up the task: Run
taskmd get $ARGUMENTSto find the task- If not found, run
taskmd listto show available tasks and ask the user which one they meant
- If not found, run
- Read the task file with the
Readtool to get the full description, subtasks, and acceptance criteria - Mark the task as in-progress: Run
taskmd set <ID> --status in-progressfrom the current working directory (do notcdelsewhere first — see the ⚠️ note above) - Start a worklog entry (only if worklogs are enabled):
- Check
.taskmd.yamlforworklogs: true. If it is not explicitly enabled, skip all worklog steps silently — do not mention worklogs, do not tell the user they are disabled, just move on. - If enabled, find or create the worklog file at
tasks/<group>/.worklogs/<ID>.md(ortasks/.worklogs/<ID>.mdfor root tasks) - Append a timestamped entry noting your approach and initial findings
- Check
- Do the task: Follow the task description and complete the work described
- Use
EnterPlanModefor non-trivial implementation tasks - Check off subtasks (
- [x]) in the task file as you complete them - Append worklog entries when you make key decisions, hit blockers, or complete significant subtasks
- In the Plan, include a reference to the original task ID, and task file path.
- Use
- Write a final worklog entry (only if worklogs are enabled — otherwise skip silently) summarizing what was done, decisions made, and any open items
- Mark the task as done: Use the
/complete-taskskill (invoke it with the task ID) to complete the task. It handles verification and status changes automatically.
Worklog Format
Each worklog entry uses a timestamp heading followed by free-form notes:
## 2026-02-15T10:30:00Z
Started implementation of the search feature.
**Approach:** Using full-text search with the existing SQLite database
rather than adding Elasticsearch -- simpler and sufficient for our scale.
**Completed:**
- [x] Added search query parser
- [x] Created search index
**Next:** Add result ranking and write tests.
Scan to join WeChat group