plan
Turn requirements nobody scheduled into well-described tasks, edit tasks and milestones, and reconcile TASKS.md with the team's own tracker Arguments: add <what> | sync | status | milestone <id> | (em
SKILL.mdmacstack-dev/skills/plan/SKILL.md
GitHubUse macstack-dev:planning.
First, before any number is reported, bring the statuses in line with what the audit actually found:
python3 "${CLAUDE_PLUGIN_ROOT}/skills/planning/references/task_status.py" macstack [--apply]
A task sitting todo that the code finished weeks ago inflates every count below it; a
task sitting done whose case the audit found absent deflates them, which is worse
because nobody goes looking behind a closed task. Report the moves, apply them with
--apply once the user agrees, and only then count.
With no argument: find the work nobody has planned. Run
python3 "${CLAUDE_PLUGIN_ROOT}/skills/planning/references/uncovered.py" macstack [--emit]
which classifies every case into five states — already planned · confirmed done by the newest conformance review · found partial or blocked by it · awaiting the client · neither planned nor checked. Only the fifth is work.
A case awaiting the client does not become a task. Its text names a live §A id, so
nobody can finish it today; TASKS.md is a queue somebody picks from, and an item that
stops the person who picked it makes the whole queue untrustworthy. The §A question
holds that work — its where the answer goes line says what the answer unlocks — and the
task is written the day the answer lands. --emit withholds those skeletons and says how
many it withheld.
Read the audit verdicts before reporting a number. The first version of this reported "63 cases with no plan" where 35 were already confirmed implemented: true, and useless. A work list nobody believes is a work list nobody reads.
Then do the part the script cannot: read the code and fill each skeleton's files
and acceptance. Use generated/ARCHITECTURE.md as the map rather than a blind grep.
Acceptance names a test, and its strongest form is remove X and this named test
reddens. A bare filename is not acceptance; a line number is banned outright.
Three things this refuses to do:
- Guess
filesoracceptancewithout reading the code. If the codebase does not answer where something belongs, that is a finding — say so and leave the field empty rather than filling it plausibly. - Plan a case an audit already passed.
- Plan a case that is waiting on the client. Name the
§Aids and stop. - Invent a milestone. A new milestone is a decision about scope and dates and it
belongs to the owner. Take the last
M<n>and ask before going past it.
Then stop. The handoff is the point: open plan mode and say "take M15-T2 from macstack/history/TASKS.md". Do not start coding here.
sync reconciles with the team's tracker in both directions and stops at every
disagreement rather than picking a winner. status and milestone <id> report
progress against done_when.