Agent skill for creating recursive, self-contained TODO task trees that can be resumed from disk without relying on chat history.
- Creates root tasks and nested subtasks with a consistent node layout.
- Materializes inherited rules into each node's
rules/effective-rules.md. - Keeps project-local task data under
TODO/. - Tracks resumable state through
meta.yaml,handoff.md, andplan/current-step.md. - Supports managed task complexity levels for simple, medium, and coordination-heavy work.
Place this repository in your agent skills directory:
skills/todo-skill
Then invoke it as:
$todo-skill
The skill keeps reusable logic in the skill folder and project-specific task data in the target project's TODO/ folder:
TODO/
config/
todo-skill.json
rules/
project-rules.md
tasks/
entrypoint.md
TASK-001/
TASK-002_example-named-task/
Create a root task:
python scripts/init_work_package.py --root TODO/tasks --id TASK-001 --title "Example task"Create a root task with an optional folder suffix:
python scripts/init_work_package.py --root TODO/tasks --id TASK-002 --title "Example named task" --folder-name "Example named task"Create a child task:
python scripts/init_work_package.py --root TODO/tasks --id TASK-001-01 --title "Example child" --parent TODO/tasks/TASK-001Folder suffixes keep the ID prefix intact, so ordering and hierarchy stay based on TASK-001, TASK-001-01, and similar IDs.
Refresh complexity and rules:
python scripts/resolve_effective_state.py --node TODO/tasks/TASK-001Update resumable state:
python scripts/update_handoff.py --node TODO/tasks/TASK-001 --status review --next-action "Review the result."Validate a node:
python scripts/validate_work_package.py --node TODO/tasks/TASK-001Validate the skill itself:
python quick_validate.pyAgents may move a task through backlog, ready, active, paused, blocked, review, and witherror.
Use backlog when a task is not fully defined or still needs better execution or validation process definition.
Use paused when a task is intentionally paused without an external blocker and should not continue until it is resumed.
Use witherror when a task was executed and implemented, but validation or review found errors that must be fixed.
Terminal statuses are user-gated:
donearchived
Use --user-approved-terminal-status only when the user explicitly approves closing or retiring a node.
When a parent task is done or archived, all descendants are considered effectively closed, but their own meta.yaml.status values are not changed automatically.
Generated project task state lives under TODO/ and is ignored by this repository. Publish the reusable skill files, not local task instances.