task-lifecyclelisted
Install: claude install-skill justmaniv/cannery-row
## Premise
`tasks/<status>/NNN-slug.md` IS the task tracker. The directory the file lives in is its status. Frontmatter must agree with the directory. Other tasks reference this one by path in their `blocked-by:` field, so a move has cross-task consequences.
This skill is the source of truth for the lifecycle procedure. Project `tasks/README.md` files document layout and frontmatter for humans; this skill governs the *operations*.
---
## Invariants (always true after this skill runs)
1. `status:` frontmatter value === directory the file is in.
2. `updated:` is today's date on every transition or material edit.
3. `created:` is set at file creation and **never** changes.
4. `completed:` is set if and only if the file is in `done/`.
5. Every `- [ ]` in the "Done when" checklist is resolved (`- [x]` or `- ~~strikethrough~~ (reason)`) before a task moves to `done/`.
6. No task sits in `blocked/` with every one of its blockers closed. A `blocked-by:` entry whose task has moved is **rewritten to the new path**, never deleted — the entry is the audit trail, and `status: blocked` over an empty `blocked-by:` is a task blocked by nothing. When the last blocker closes, surface the task for re-triage (see the sweep); it does not sit there.
7. **The campsite is clean** before any task is reported `done` to the human — see the Clean-campsite gate in the `wip → done` procedure. "Done" is never claimed over a littered workspace.
8. **Every task file carries an H1 title and a `## Done wh