- New command /execute-milestones: executes all (or selected) milestones strictly in order; for each milestone creates a separate .steering/[date]-milestone-NN-[name]/ directory, divides its features into tasks grouped by feature, implements, validates, tests, reconciles docs, and updates milestone/roadmap statuses before starting the next - New skill milestone-execution: per-milestone steering structure, task-division rules, gate criteria between milestones, and failure handling - plan-milestones completion message, AGENTS.md, README, and docs/milestones/README.md updated Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
5.4 KiB
5.4 KiB
| name | description |
|---|---|
| milestone-execution | Guide for executing milestones one by one - creating a separate steering directory per milestone, dividing the milestone's features into tasks, and enforcing gate criteria between milestones. Use when running /execute-milestones or implementing a whole milestone in one run. |
Milestone Execution Skill
This skill explains how to execute the milestone plan (docs/milestones/) one milestone at a time. Where /add-feature implements one feature with one steering directory, milestone execution implements one whole milestone per steering directory — and processes milestones strictly in roadmap order.
Core Principles
- One milestone = one steering directory: every milestone gets its own
.steering/[YYYYMMDD]-milestone-[NN]-[name]/with its ownrequirements.md,design.md, andtasklist.md. Documents are never shared or reused between milestones. - Strict order, one at a time: milestones execute in ascending number. A milestone starts only after the previous one passed its gate. Never interleave tasks from two milestones.
- Features divided into tasks: the milestone's features (from its milestone document) are broken down into concrete tasks in
tasklist.md, grouped by feature. The milestone document stays the "what"; the steering tasklist is the "how". - Same discipline as
/add-feature: the steering skill's implementation mode, the development guidelines, the validator subagent, and the test loop all apply per milestone. - Status flows upward: task status lives in the steering
tasklist.md; feature and milestone status live indocs/milestones/. When a milestone's last task completes, check off its features, mark the milestoneCompleted, and advance the roadmap pointer.
Steering Directory per Milestone
Naming: .steering/[YYYYMMDD]-milestone-[NN]-[kebab-case-name]/ (e.g. .steering/20260702-milestone-01-mvp/).
requirements.md
- Milestone goal (from the milestone document)
- In/out of scope
- One section per feature: description, related PRD requirements, affected screens, acceptance criteria
- The milestone's Definition of Done
design.md
- Implementation approach across the whole milestone
- Shared components and data-model changes used by multiple features (build these first)
- Feature implementation order within the milestone, with a one-line rationale
- Consistency notes against
docs/architecture.mdanddocs/design/ui-blueprint.json
tasklist.md
Tasks are grouped by feature, in the implementation order chosen in design.md:
# Tasklist: Milestone 01 — MVP
## Shared Foundations
- [ ] [Task that multiple features depend on, e.g. data model, shared component]
## Feature: Register account
- [ ] [Task 1: data/model layer]
- [ ] [Task 2: logic/service layer]
- [ ] [Task 3: UI per affected screen]
- [ ] [Task 4: tests for the acceptance criteria]
## Feature: Log in / log out
- [ ] ...
## Milestone Verification
- [ ] All acceptance criteria in requirements.md confirmed
- [ ] npm test / lint / typecheck pass
## Post-Implementation Retrospective
_Filled at the end: completion date, plan vs. actual, lessons learned._
How to Divide a Feature into Tasks
- 3–8 tasks per feature; each completable in one implementation-loop iteration.
- Slice along the natural layers the feature touches: data/model → logic/service → UI (one task per affected screen) → tests.
- Every feature's section ends with a task that verifies its acceptance criteria.
- Tasks that unblock several features go into a "Shared Foundations" section at the top — never duplicated per feature.
Gate Criteria Between Milestones
A milestone passes its gate only when all of the following hold. Only then may the next milestone start:
- Every task in the milestone's
tasklist.mdis[x](or struck with a technical reason). - The
implementation-validatorsubagent's validation passed. npm test,npm run lint,npm run typecheckall succeed.- The six persistent documents in
docs/are reconciled with the milestone's changes. - In
docs/milestones/: every feature is checked off, the milestone status isCompletedwith Completion Notes, androadmap.mdpoints to the next milestone.
Failure Handling
- A task fails repeatedly: split it (exception rule A) or re-approach via
design.md; do not skip it. - A feature turns out to be unimplementable as specified: update the milestone document and
requirements.mdwith the revised scope and reason, then continue — the plan must reflect reality. - An external blocker stops the milestone (missing credential, unavailable service, a decision only the user can make): record the blocker in the milestone's
tasklist.mdand inroadmap.md(status staysIn progress), then stop and report. This is the only permitted early stop; never silently skip to the next milestone, because later milestones depend on earlier ones.
Consistency Checklist
Before declaring a milestone (or the whole run) complete:
- Each executed milestone has exactly one steering directory, named
[date]-milestone-[NN]-[name]. - Every feature of the milestone appears as a section in that
tasklist.md. - Feature checkboxes in the milestone document match the completed work.
roadmap.mdstatuses and current-milestone pointer are correct.- No task or feature from a later milestone was implemented early.