plan-release
Plan Release
Section titled “Plan Release”HARD GATE — Do NOT run this skill unless
elaborate-spechas produced a clear spec or the user has already defined the feature in detail. If the problem is still fuzzy, runelaborate-specfirst. HARD GATE —specs/product/SCOPE_LATEST.yaml(or legacyspecs/product/SCOPE_LATEST.yaml) must exist. If missing, runscope-workfirst.
Synthesize the conversation context into specs/release-plan.yaml (index) and shard detail under specs/epics/. No new interview — only clarify if something is genuinely ambiguous.
Outputs
Section titled “Outputs”| File | Content |
|---|---|
specs/release-plan.yaml |
release.version, semver bump hint, WSJF-ordered epic list with id, capsule_dir, wsjf, bcps — no story status |
specs/epics/eNN-<slug>/epic.yaml |
Epic manifest: id, title, wsjf, total_bcps, status, stories[] list |
specs/epics/eNN-<slug>/eNNsYY-<slug>.md |
Story spec in countable-story-format.md with 20 sections and Gherkin acceptance criteria |
specs/epics/eNN-<slug>/eNNsYY-tasks.yaml |
Decoupled task checklist with verify: commands per task |
specs/execution-status.yaml |
Flat key-value store for story status (eNNsYY: todo) |
Epic Capsule Structure
Section titled “Epic Capsule Structure”All epics use capsule directories (no flat/folder distinction):
specs/epics/e01-auth-system/├── epic.yaml # Epic manifest├── adr/ # Epic-local ADRs (created lazily)├── e01s01-login.md # Story spec (countable-story-format)├── e01s01-tasks.yaml # Decoupled task checklist├── e01s02-jwt.md # Story spec└── e01s02-tasks.yaml # Decoupled task checklistRationale: Capsule dirs achieve change isolation (C9), enable archive pruning (C2/C6), and enforce SRP by decoupling spec .md from execution -tasks.yaml (C1).
Process
Section titled “Process”1. Draft epics and stories
Section titled “1. Draft epics and stories”From the conversation context, define:
- Epics —
e01,e02, … (stable IDs; WSJF order inrelease-plan.yamlonly) - Stories —
e01s01,e01s02, … with Gherkin acceptance criteria
WSJF-sort epics: score = (Business Value + Time Criticality + Risk Reduction) / Job Size. Highest score first.
Security risk boost: If an epic’s
specs/security/epics/<id>/THREAT_MODEL.mdidentifies HIGH or CRITICAL risk, add +2 to the WSJF numerator (BV + TC + RR + 2) to reflect the urgency of addressing security concerns before they ship. Document the boost in the epic’s note field in release-plan.yaml.
2. Write acceptance criteria (Gherkin)
Section titled “2. Write acceptance criteria (Gherkin)”For each story, write at least one happy-path and one edge-case scenario (countable format §17 if maturity ≥ 3).
3. Write tasks with verify commands
Section titled “3. Write tasks with verify commands”Every task must have a verify: command. No verify command = not a task.
4. Save specs/release-plan.yaml
Section titled “4. Save specs/release-plan.yaml”Do NOT hand-track the real version. semantic-release decides it at merge.
versionhere is a non-authoritative mirror/label only — read the real number withgh release view. Setbump_hint(the expectation), not a number you intend to enforce.
release: version: "2.29.0" # mirror of next expected tag, NOT authoritative — gh release view wins codename: "Feature Name" status: planning # planning | in_progress | released semantic_release: true bump_hint: minor # patch | minor | major — CI decides at mergeepics: - id: e01 title: Auth System wsjf: 4.5 capsule_dir: epics/e01-auth-system - id: e02 title: User Profile wsjf: 3.8 capsule_dir: epics/e02-user-profile5. Save epic manifest (epic.yaml)
Section titled “5. Save epic manifest (epic.yaml)”Each epic capsule directory contains an epic.yaml manifest:
id: e01title: Auth Systemwsjf: 4.5total_bcps: 8status: in_progressstories: - id: e01s01 title: Login bcps: 3 status: todo spec: e01s01-login.md tasks: e01s01-tasks.yaml - id: e01s02 title: JWT Token Management bcps: 5 status: todo spec: e01s02-jwt.md tasks: e01s02-tasks.yaml6. Save story specs (countable-story-format .md)
Section titled “6. Save story specs (countable-story-format .md)”Each story becomes a standalone .md file following countable-story-format.md. Minimum: maturity 3 (Countable) with all 20 sections present. Acceptance criteria in §17 use Gherkin scenarios.
7. Save decoupled task files (-tasks.yaml)
Section titled “7. Save decoupled task files (-tasks.yaml)”Each story has a decoupled -tasks.yaml with implementation steps:
story_id: e01s01title: Loginstatus: todobcps: 3tasks: - id: 1 description: "Add login form component tests" verify: "npm test -- login-form.test.tsx" status: todo - id: 2 description: "Implement login form with validation" verify: "npm test -- login-form.test.tsx" status: todoHARD GATE — Every task MUST have a runnable
verify:command. Noverify:= not a task.
→ verify: bash scripts/validate-specs-yaml.sh
8. Sync execution status
Section titled “8. Sync execution status”bash scripts/sync-status-from-epics.sh9. Snapshot on planning close (optional)
Section titled “9. Snapshot on planning close (optional)”Copy to specs/product/snapshots/release-<version>/ when the user approves the plan.
10. Suggest next steps
Section titled “10. Suggest next steps”- Run
assess-impactbeforeplan-workfor any story touching existing modules. - Run
plan-workper story for detailed steps inside the epic shard. - Run
change-requestif a new requirement arrives mid-flight.