| name | task-management |
| description | Simple task management using a shared TASKS.md file. Reference this when the user asks about their tasks, wants to add/complete tasks, or needs help tracking commitments. |
| user-invocable | false |
Task Management
Tasks are tracked in a simple TASKS.md file that both you and the user can edit.
File Location
Always use TASKS.md in the current working directory.
- If it exists, read/write to it
- If it doesn't exist, create it with the template below
Dashboard Setup (First Run)
A visual dashboard is available for managing tasks and memory. On first interaction with tasks:
- Check if
dashboard.html exists in the current working directory
- If not, run this Bash command to copy it (the
-n flag is a no-op if it already exists):
cp -n "{skill_dir}/../dashboard.html" ./dashboard.html
- Inform the user: "I've added the dashboard. Run
/start to set up the full system."
The task board:
- Reads and writes to the same
TASKS.md file
- Auto-saves changes
- Watches for external changes (syncs when you edit via CLI)
- Supports drag-and-drop reordering of tasks and sections
Format & Template
When creating a new TASKS.md, use this exact template (without example tasks):
# Tasks
## Active
## Waiting On
## Someday
## Done
Task format:
- [ ] **Task title** - context, for whom, due date
- Sub-bullets for additional details
- Completed:
- [x] ~~Task~~ (date)
ALWAYS regenerate the dashboard snapshot after writing TASKS.md
The dashboard renders from a snapshot inlined into dashboard.html —
it does not re-read TASKS.md on every browser open (browser
security forbids that from file://). So every time you mutate
TASKS.md (add, complete, edit, reorder a task), immediately run this
single-line Bash command to refresh the snapshot:
python3 "{skill_dir}/../../scripts/regen_dashboard.py"
That's the entire command — one line, no heredoc, no quoting
gymnastics. The script reads the current TASKS.md and dashboard.html
in the current working directory, replaces the snapshot block, writes
back. Idempotent: no-op if dashboard.html doesn't exist (user hasn't
run /start yet) or if the snapshot already matches.
If your tool boundary mangled an earlier multi-line heredoc, this
single-file invocation eliminates that whole class of failure.
How to Interact
When user asks "what's on my plate" / "my tasks":
- Read TASKS.md
- Summarize Active and Waiting On sections
- Highlight anything overdue or urgent
- (Read-only — no snapshot regen needed)
When user says "add a task" / "remind me to":
- Always use the canonical format —
- [ ] (dash, space, open-bracket, space, close-bracket, space) then the task title. Without the - [ ] prefix the dashboard parser silently drops the line.
- Concretely:
- [ ] อ่านหนังสือ not อ่านหนังสือ. - [ ] **Submit report** - to Sarah, due Friday not Submit report to Sarah Friday.
- Include context inline if provided (who it's for, due date) after the title.
- Add to the
## Active section.
- Run the snapshot-regen Bash command above.
When user says "done with X" / "finished X":
- Find the task
- Change
[ ] to [x]
- Add strikethrough:
~~task~~
- Add completion date
- Move to Done section
- Run the snapshot-regen Bash command above.
When user asks "what am I waiting on":
- Read the Waiting On section
- Note how long each item has been waiting
- (Read-only — no snapshot regen needed)
Conventions
- Bold the task title for scannability
- Include "for [person]" when it's a commitment to someone
- Include "due [date]" for deadlines
- Include "since [date]" for waiting items
- Sub-bullets for additional context
- Keep Done section for ~1 week, then clear old items
Extracting Tasks
When summarizing meetings or conversations, offer to add extracted tasks:
- Commitments the user made ("I'll send that over")
- Action items assigned to them
- Follow-ups mentioned
Ask before adding - don't auto-add without confirmation.