Persistent TODO scratch pad for tracking tasks across sessions. Use when the user asks to add, list, complete, remove, or summarize tasks in a portable workspace Markdown file. Uses stable task IDs and exact matching; heartbeat reporting is opt-in and count-only.
Memory
todowrite
Try itRoute TODO checklists to the right storage + TaskList conversational discipline. Topics — session (/wip), file (fix_plan.md), issue (GitHub Issues), completion-report, fix-plan-sync, priority-prefix, media-separation (tracking vs recording vs knowledge). Use when: "TODO management", "checklist", "todowrite", "fix_plan cleanup", "register as issue", "completion report", "task priority", "media-separation".
What it does
Route TODO checklists to the right storage + TaskList conversational discipline. Topics — session (/wip), file (fix_plan.md), issue (GitHub Issues), completion-report, fix-plan-sync, priority-prefix, media-separation (tracking vs recording vs knowledge). Use when: "TODO management", "checklist", "todowrite", "fix_plan cleanup", "register as issue", "completion report", "task priority", "media-separation".
The skill document
TodoWrite
Route TODO checklists to the appropriate storage based on context, and enforce conversational/reporting discipline around TaskList items.
Routing Decision
New TODO arrives
├─ Only needed this session → /wip (TaskCreate/TodoWrite)
├─ Persists beyond session → file (fix_plan.md, TODO.md)
└─ Team-shared → issue (GitHub Issues)
Topics
| Topic | Storage | Lifetime | Tool / Guide |
|---|---|---|---|
| session | TaskCreate/TodoWrite | Session | → /wip skill |
| file | fix_plan.md, TODO.md | While file exists | Write/Edit |
| issue | GitHub Issues | Permanent | gh issue create |
| conversation-id | — | Always-on | conversation-id.md — subject-prefix references in user-visible output. Enforced by resources/block-tasklist-id-in-conversation.sh (PreToolUse:AskUserQuestion, registered in settings.json) |
| completion-report | — | Always-on | completion-report.md — TaskUpdate completion format + file-change disclosure |
| fix-plan-sync | — | Always-on | fix-plan-sync.md — two-way sync between task medium and checklist medium |
| priority-prefix | — | Always-on | priority-prefix.md — priority/order via subject prefix (P{n}, PR-anchored, fix-* > P0) |
| media-separation | — | On-demand | media-separation.md — 3-layer model: tracking files vs RAG vs LLM Wiki |
| claude-task | Task JSON CLI | Permanent / Standalone | claude-task.md — standalone Python CLI tool (claude-task.py) for managing Task JSON files directly from terminal shell |
Skip exceptions
TodoWrite can be skipped when:
- Running a single command (e.g.,
kubectl get,ls) - A task with 2 or fewer trivial steps
- Information lookup only
AskUserQuestion can be skipped when:
- The user gave a clear directive
- The action is safe and reversible
- The general best practice is unambiguous
Session → /wip
Current session task tracking is handled by the wip skill:
/wip # Track session work with TodoWrite/TaskCreate
File-based TODO
fix_plan.md (Ralph projects)
## Pending
- [ ] Item 1 — description
- [ ] Item 2 — description
## Completed
- [x] Done item — (completed: 2026-04-03, commit abc1234)
Rules:
- Move to
Completedsection on completion + timestamp - Mark blocked items with
[BLOCKED]tag - Mark skipped items with
[SKIPPED]tag
TODO.md (General projects)
# TODO
## High Priority
- [ ] Urgent item
## Normal
- [ ] Regular item
## Done
- [x] Completed item (2026-04-03)
Issue-based TODO
Team-shared TODOs go to GitHub Issues:
# Create issue (user approval required)
gh issue create --title "Item" --body "Description"
# List issues
gh issue list --label "todo"
Note: gh issue create only runs when user explicitly says "create an issue".
Routing Examples
| Situation | Route | Reason |
|---|---|---|
| "Run this 5-step deploy" | /wip (session) | Session tracking is sufficient |
| "Fix this bug later" | file (fix_plan.md) | Persists beyond session |
| "Assign this to Jinju" | issue (GitHub) | Team sharing needed |
| "Note this from the review" | file (fix_plan.md) | Outside current PR scope |
Related skills
Manage tasks, todos and reminders using the todo.txt CLI (todo.sh). Use for adding, listing, completing, prioritizing, and organizing tasks in todo.txt format.
Manage persistent project todos in files.
Coordinate Todo tasks across AI agents through Git
Read and write Microsoft To Do via shared Outlook Graph auth: enumerate task lists, read/filter tasks, and create, update, complete, or delete tasks (writes require --apply plus a typed-YES prompt or an explicit --yes flag).
Manage Todoist tasks, projects, sections, labels, and comments through authenticated API calls.