bigpowers 1.2.3 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/CLAUDE.md +5 -4
  3. package/CONVENTIONS.md +55 -13
  4. package/README.md +10 -8
  5. package/SKILL-INDEX.md +14 -11
  6. package/assess-impact/SKILL.md +2 -2
  7. package/build-epic/SKILL.md +42 -0
  8. package/change-request/SKILL.md +16 -16
  9. package/compose-workflow/REFERENCE.md +3 -3
  10. package/compose-workflow/SKILL.md +1 -1
  11. package/deepen-architecture/SKILL.md +6 -6
  12. package/define-success/SKILL.md +1 -1
  13. package/delegate-task/SKILL.md +4 -4
  14. package/develop-tdd/SKILL.md +5 -5
  15. package/dispatch-agents/SKILL.md +2 -2
  16. package/evolve-skill/SKILL.md +2 -2
  17. package/execute-plan/SKILL.md +22 -59
  18. package/fix-bug/SKILL.md +37 -0
  19. package/grill-with-docs/SKILL.md +1 -1
  20. package/inspect-quality/SKILL.md +5 -5
  21. package/investigate-bug/SKILL.md +2 -2
  22. package/kickoff-branch/SKILL.md +1 -1
  23. package/map-codebase/SKILL.md +4 -4
  24. package/migrate-spec/REFERENCE-GSD.md +35 -41
  25. package/migrate-spec/REFERENCE.md +43 -44
  26. package/migrate-spec/SKILL.md +20 -20
  27. package/model-domain/SKILL.md +7 -7
  28. package/orchestrate-project/REFERENCE.md +10 -10
  29. package/orchestrate-project/SKILL.md +13 -16
  30. package/package.json +7 -7
  31. package/plan-release/SKILL.md +63 -39
  32. package/plan-work/SKILL.md +6 -6
  33. package/request-review/SKILL.md +2 -2
  34. package/research-first/SKILL.md +3 -3
  35. package/run-evals/REFERENCE.md +1 -1
  36. package/run-planning/SKILL.md +24 -0
  37. package/scope-work/SKILL.md +6 -6
  38. package/scripts/bp-yaml-set.sh +9 -0
  39. package/scripts/bp-yaml-snapshot.sh +23 -0
  40. package/scripts/convert-legado.sh +153 -0
  41. package/scripts/enrich-epics-from-archive.sh +101 -0
  42. package/scripts/land-branch.sh +5 -1
  43. package/scripts/project-survey.sh +18 -9
  44. package/scripts/sync-bugs-registry.sh +53 -0
  45. package/scripts/sync-skills.sh +5 -5
  46. package/scripts/sync-status-from-epics.sh +51 -0
  47. package/scripts/validate-specs-yaml.sh +41 -0
  48. package/scripts/yaml-tools.py +144 -0
  49. package/seed-conventions/SKILL.md +3 -3
  50. package/session-state/SKILL.md +59 -50
  51. package/setup-environment/SKILL.md +1 -1
  52. package/slice-tasks/SKILL.md +6 -6
  53. package/spike-prototype/SKILL.md +5 -5
  54. package/survey-context/SKILL.md +38 -27
  55. package/trace-requirement/SKILL.md +8 -8
  56. package/using-bigpowers/SKILL.md +10 -9
  57. package/validate-fix/SKILL.md +4 -4
  58. package/verify-work/SKILL.md +12 -17
  59. package/visual-dashboard/SKILL.md +25 -74
  60. package/visual-dashboard/scripts/cockpit.html +66 -0
  61. package/visual-dashboard/scripts/read-specs-status.cjs +123 -0
  62. package/visual-dashboard/scripts/server.cjs +40 -0
  63. package/write-document/SKILL.md +1 -1
  64. package/maintain-wiki/SKILL.md +0 -130
  65. package/profiles/obsidian-wiki.md +0 -120
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: migrate-spec
3
3
  model: sonnet
4
- description: Detect GSD, spec-kit, or BMAD spec artifacts in the current project and transform them into bigpowers format (specs/ directory, CONTEXT.md, SCOPE.md, TASKS.md, RELEASE-PLAN.md, ADRs). Use when user has an existing project with foreign spec docs and wants to adopt bigpowers conventions, or says "migrate", "import specs", "convert from GSD/BMAD/spec-kit".
4
+ description: Detect GSD, spec-kit, or BMAD spec artifacts and transform them into bigpowers YAML layout (state.yaml, release-plan.yaml, epics/, requirements/, plans/, ADRs). Use when migrating foreign spec docs.
5
5
  ---
6
6
 
7
7
  # Migrate Spec
@@ -23,7 +23,7 @@ Before proceeding, check for these rationalization traps:
23
23
  - **Partial artifact set** — only one fingerprint file found (e.g. just `spec.md` with no `plan.md`). Don't assume it's a complete project. Ask: "I found only X — is this the full set of your spec artifacts?"
24
24
  - **Wrong trigger** — user said "migrate my code" or "migrate the database", not "migrate my specs". Confirm before running.
25
25
  - **Stale source** — source artifacts have commit dates older than 6 months with no recent activity. Flag: "These specs appear inactive since <date>. Are they still the source of truth?"
26
- - **Active divergence** — source `STATE.md` or `sprint-status.yaml` shows in-progress work. Flag: "There is active work in flight. Migrating now may lose in-progress context. Proceed?"
26
+ - **Active divergence** — source `state.yaml` or `sprint-status.yaml` shows in-progress work. Flag: "There is active work in flight. Migrating now may lose in-progress context. Proceed?"
27
27
 
28
28
  If any red flag fires: surface it, wait for explicit user confirmation before continuing.
29
29
 
@@ -54,7 +54,7 @@ Detected: GSD
54
54
  Found:
55
55
  ✓ .planning/ROADMAP.md
56
56
  ✓ .planning/REQUIREMENTS.md (12 REQ-XX items)
57
- ✓ .planning/STATE.md
57
+ ✓ .planning/state.yaml
58
58
  ✓ .planning/phases/01-auth/01-CONTEXT.md
59
59
  ✗ .planning/METHODOLOGY.md (not present)
60
60
 
@@ -80,9 +80,9 @@ Apply the mapping from [REFERENCE.md](./REFERENCE.md) and [REFERENCE-GSD.md](./R
80
80
 
81
81
  → verify: `ls specs/*.md 2>/dev/null | head -15`
82
82
 
83
- ### Step 4 — Generate STATE.md
83
+ ### Step 4 — Generate state.yaml
84
84
 
85
- Always regenerate `specs/STATE.md` from scratch in bigpowers format:
85
+ Always regenerate `specs/state.yaml` from scratch in bigpowers format:
86
86
 
87
87
  ```markdown
88
88
  # Session State: <project name>
@@ -107,7 +107,7 @@ Migrated from <framework> on <date>. Next: review generated specs and run plan-w
107
107
  - [ ] Run plan-work to produce first release plan
108
108
  ```
109
109
 
110
- → verify: `[ -f specs/STATE.md ] && echo "ok" || echo "MISSING: specs/STATE.md not created"`
110
+ → verify: `[ -f specs/state.yaml ] && echo "ok" || echo "MISSING: specs/state.yaml not created"`
111
111
 
112
112
  ### Step 5 — Surface learnings (optional)
113
113
 
@@ -115,7 +115,7 @@ After migration, offer the user a brief analysis of what the source framework di
115
115
 
116
116
  Use the learnings table from [REFERENCE.md](./REFERENCE.md#learnings-to-adopt). Present as checkboxes so the user can decide which to adopt.
117
117
 
118
- → verify: `grep -c "\- \[ \]" specs/STATE.md 2>/dev/null && echo "pending items recorded" || echo "no pending items in STATE.md"`
118
+ → verify: `grep -c "\- \[ \]" specs/state.yaml 2>/dev/null && echo "pending items recorded" || echo "no pending items in state.yaml"`
119
119
 
120
120
  ---
121
121
 
@@ -125,18 +125,18 @@ Full mapping tables: [REFERENCE-GSD.md](./REFERENCE-GSD.md) (GSD) · [REFERENCE.
125
125
 
126
126
  | Source | Target |
127
127
  |--------|--------|
128
- | GSD `ROADMAP.md` | `specs/RELEASE-PLAN.md` |
129
- | GSD `REQUIREMENTS.md` | `specs/SCOPE.md` |
130
- | GSD `CONTEXT.md` (phases) | `specs/CONTEXT.md` + `specs/adr/` |
131
- | GSD `PLAN.md` | `specs/PLAN-vX.Y.Z.md` |
132
- | GSD `METHODOLOGY.md` | `specs/SPIKE-methodology.md` |
133
- | spec-kit `spec.md` | `specs/SCOPE.md` + `specs/CONTEXT.md` |
134
- | spec-kit `plan.md` | `specs/CONTEXT.md` + `specs/PLAN.md` |
135
- | spec-kit `tasks.md` | `specs/TASKS.md` |
136
- | BMAD `prd.md` | `specs/SCOPE.md` |
137
- | BMAD `architecture.md` | `specs/CONTEXT.md` + `specs/adr/` |
138
- | BMAD `epic-*.md` | `specs/RELEASE-PLAN.md` |
139
- | BMAD `story-*.md` | `specs/TASKS.md` |
128
+ | GSD `ROADMAP.md` | `specs/release-plan.yaml + epic shards` |
129
+ | GSD `REQUIREMENTS.md` | `specs/requirements/SCOPE_LATEST.yaml` |
130
+ | GSD `CONTEXT.md` (phases) | `specs/plans/TECH_STACK_LATEST.md` + `specs/adr/` |
131
+ | GSD `PLAN.md` | `specs/epics/eNN-*.yaml` (tasks with verify) |
132
+ | GSD `METHODOLOGY.md` | `specs/plans/METHODOLOGY_LATEST.md` |
133
+ | spec-kit `spec.md` | `specs/requirements/SCOPE_LATEST.yaml` + `specs/plans/TECH_STACK_LATEST.md` |
134
+ | spec-kit `plan.md` | `specs/plans/TECH_STACK_LATEST.md` + `specs/release-plan.yaml` + `specs/epics/` |
135
+ | spec-kit `tasks.md` | `specs/epics/ (see slice-tasks)` |
136
+ | BMAD `prd.md` | `specs/requirements/SCOPE_LATEST.yaml` |
137
+ | BMAD `architecture.md` | `specs/plans/TECH_STACK_LATEST.md` + `specs/adr/` |
138
+ | BMAD `epic-*.md` | `specs/release-plan.yaml + epic shards` |
139
+ | BMAD `story-*.md` | `specs/epics/ (see slice-tasks)` |
140
140
  | BMAD `project-context.md` | `CLAUDE.md` (append project-specific section) |
141
141
  | BMAD `decision-log.md` | `specs/adr/` (one ADR per logged decision) |
142
142
 
@@ -147,5 +147,5 @@ Full mapping tables: [REFERENCE-GSD.md](./REFERENCE-GSD.md) (GSD) · [REFERENCE.
147
147
  - **Preserve source IDs** — REQ-XX, FR-XX, UJ-XX become inline comments in bigpowers targets. Never silently renumber.
148
148
  - **Never merge contradictory docs** — if source has both `CONTEXT.md` and `architecture.md`, create sections in bigpowers `CONTEXT.md`; don't collapse them.
149
149
  - **ADRs are opt-in** — only create an ADR when: hard to reverse, surprising without context, result of a real trade-off. Lightweight decisions go to `specs/DECISION-LOG.md`.
150
- - **STATE.md is always regenerated** — never migrate source STATE verbatim; bigpowers STATE.md needs its own format.
150
+ - **state.yaml is always regenerated** — never migrate source STATE verbatim; bigpowers state.yaml needs its own format.
151
151
  - **specs/ is the only output location** — no files are created outside `specs/` and `CLAUDE.md`.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: model-domain
3
3
  model: sonnet
4
- description: Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates specs/CONTEXT.md and specs/adr/ inline as decisions crystallise. Use when user wants to stress-test a plan against their project's domain language and documented decisions.
4
+ description: Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates specs/plans/TECH_STACK_LATEST.md and specs/adr/ inline as decisions crystallise. Use when user wants to stress-test a plan against their project's domain language and documented decisions.
5
5
  ---
6
6
 
7
7
  Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.
@@ -46,13 +46,13 @@ If a `specs/CONTEXT-MAP.md` exists, the repo has multiple contexts. The map poin
46
46
  └── adr/
47
47
  ```
48
48
 
49
- Create files lazily — only when you have something to write. If no `specs/CONTEXT.md` exists, create it when the first term is resolved. If no `specs/adr/` exists, create it when the first ADR is needed.
49
+ Create files lazily — only when you have something to write. If no `specs/plans/TECH_STACK_LATEST.md` exists, create it when the first term is resolved. If no `specs/adr/` exists, create it when the first ADR is needed.
50
50
 
51
51
  ## During the session
52
52
 
53
53
  ### Challenge against the glossary
54
54
 
55
- When the user uses a term that conflicts with the existing language in `specs/CONTEXT.md`, call it out immediately. "Your glossary defines 'cancellation' as X, but you seem to mean Y — which is it?"
55
+ When the user uses a term that conflicts with the existing language in `specs/plans/TECH_STACK_LATEST.md`, call it out immediately. "Your glossary defines 'cancellation' as X, but you seem to mean Y — which is it?"
56
56
 
57
57
  ### Sharpen fuzzy language
58
58
 
@@ -66,11 +66,11 @@ When domain relationships are being discussed, stress-test them with specific sc
66
66
 
67
67
  When the user states how something works, check whether the code agrees. If you find a contradiction, surface it: "Your code cancels entire Orders, but you just said partial cancellation is possible — which is right?"
68
68
 
69
- ### Update specs/CONTEXT.md inline
69
+ ### Update specs/plans/TECH_STACK_LATEST.md inline
70
70
 
71
- When a term is resolved, update `specs/CONTEXT.md` right there. Don't batch these up — capture them as they happen. Use the format in [CONTEXT-FORMAT.md](./CONTEXT-FORMAT.md).
71
+ When a term is resolved, update `specs/plans/TECH_STACK_LATEST.md` right there. Don't batch these up — capture them as they happen. Use the format in [CONTEXT-FORMAT.md](./CONTEXT-FORMAT.md).
72
72
 
73
- Don't couple `specs/CONTEXT.md` to implementation details. Only include terms that are meaningful to domain experts.
73
+ Don't couple `specs/plans/TECH_STACK_LATEST.md` to implementation details. Only include terms that are meaningful to domain experts.
74
74
 
75
75
  ### Offer ADRs sparingly
76
76
 
@@ -89,4 +89,4 @@ When the plan touches shared state, async, or multi-threaded code:
89
89
  - [ ] List every **shared mutable** location (globals, singletons, module-level caches).
90
90
  - [ ] For each: who reads, who writes, synchronization mechanism (lock, actor, immutable copy).
91
91
  - [ ] Flag **race risks** (check-then-act, non-atomic read-modify-write) with severity.
92
- - [ ] Record findings in `specs/CONTEXT.md` under `## Concurrency` or in an ADR if architectural.
92
+ - [ ] Record findings in `specs/plans/TECH_STACK_LATEST.md` under `## Concurrency` or in an ADR if architectural.
@@ -6,25 +6,25 @@ Detailed documentation for the `orchestrate-project` meta-skill.
6
6
 
7
7
  ### PHASE 1: DISCOVER
8
8
  - **Goal**: Understand the problem completely and map existing context.
9
- - **Deliverables**: `PROJECT.md`, `CONTEXT.md`.
9
+ - **Deliverables**: `requirements/VISION_LATEST.yaml`, `requirements/SCOPE_LATEST.yaml`, `plans/TECH_STACK_LATEST.md`.
10
10
  - **Skills**: `survey-context`, `elaborate-spec`, `grill-me`.
11
11
  - **Gate**: Confirm ("Is the problem clear?").
12
12
 
13
13
  ### PHASE 2: ELABORATE
14
14
  - **Goal**: Research solutions and lock architectural design.
15
- - **Deliverables**: `RESEARCH.md`, ADRs (Architecture Decision Records).
15
+ - **Deliverables**: Prior art in scope YAML, ADRs in `specs/adr/`.
16
16
  - **Skills**: `model-domain`, `define-language`, `challenge-design`.
17
17
  - **Gate**: Quality ≥94% (via `request-review`) + Confirm ("Are decisions locked?").
18
18
 
19
19
  ### PHASE 3: PLAN
20
20
  - **Goal**: Write a verifiable implementation plan with success criteria.
21
- - **Deliverables**: `PLAN.md` with `verify:` commands.
21
+ - **Deliverables**: `release-plan.yaml`, `epics/eNN-*.yaml` with `verify:` per task.
22
22
  - **Skills**: `scope-work`, `slice-tasks`, `define-success`, `plan-work`.
23
23
  - **Gate**: Quality (request-review ≥94%) + slopcheck [SUS]/[SLOP].
24
24
 
25
25
  ### PHASE 4: BUILD
26
26
  - **Goal**: Execute the plan step-by-step using TDD and vertical slices.
27
- - **Deliverables**: Code, `SUMMARY.md`.
27
+ - **Deliverables**: Code; `execution-status.yaml` updated per story.
28
28
  - **Skills**: `kickoff-branch`, `develop-tdd`, `delegate-task`, `execute-plan`.
29
29
  - **Gate**: Integration tests PASS.
30
30
 
@@ -60,7 +60,7 @@ Detailed documentation for the `orchestrate-project` meta-skill.
60
60
  ### Mode 2: Fast-Track (Skip Negotiable Gates)
61
61
  **Use Case**: Hotfixes, minor improvements, refactors on well-tested code.
62
62
  **Behavior**:
63
- - Skip Discover if `PROJECT.md` exists.
63
+ - Skip Discover if `requirements/SCOPE_LATEST.yaml` exists.
64
64
  - Skip Elaborate if design decisions are already locked.
65
65
  - Skip Verify if coverage ≥95% + all tests PASS.
66
66
  - Soft gates auto-approve if baseline conditions are met.
@@ -86,10 +86,10 @@ Detailed documentation for the `orchestrate-project` meta-skill.
86
86
  ---
87
87
 
88
88
  ## Error Recovery & State
89
- Orchestrate maintains `specs/STATE.md` to track:
90
- - **Current Phase**: Position in the loop.
91
- - **Artifacts**: Checklist of completed deliverables.
92
- - **Decisions**: Audit trail of architectural choices.
93
- - **Risks**: Active project risks and mitigation status.
89
+ Orchestrate maintains `specs/state.yaml` to track:
90
+ - **Current flow / epic**: `active_flow`, `active_epic_id`, `epic_cycle`.
91
+ - **Handoff**: `last_step_completed`, `open_decisions`, `required_reading`, `next_skill`.
92
+ - **Git**: `branch`, `hash` for session continuity.
93
+ - **Progress**: Story status lives in `execution-status.yaml` only.
94
94
 
95
95
  In the event of a crash or exit, run `claude /orchestrate --resume` to pick up exactly where the session left off.
@@ -11,7 +11,7 @@ The orchestrate skill coordinates projects through a prescriptive 6-phase core l
11
11
  ## Quick Start
12
12
 
13
13
  ```bash
14
- # Start a new project (creates PROJECT.md and begins discover phase)
14
+ # Start a new project (initializes specs/ YAML cockpit and begins discover phase)
15
15
  claude /orchestrate --mode standard
16
16
 
17
17
  # Or resume an existing project at the current phase
@@ -23,27 +23,24 @@ claude /orchestrate --mode fast-track
23
23
 
24
24
  ## The 6-Phase Core Loop
25
25
 
26
- 1. **DISCOVER** (3-6 hours): Understand problem. Deliverables: PROJECT.md, CONTEXT.md.
27
- 2. **ELABORATE** (3-6 hours): Research solutions. Deliverables: RESEARCH.md.
28
- 3. **PLAN** (2-4 hours): Write verifiable plan. Deliverables: PLAN.md.
29
- 4. **BUILD** (1-8 hours): Execute plan. Deliverables: Code, SUMMARY.md.
30
- 5. **VERIFY** (1-3 hours): Validate success criteria. Deliverables: VERIFICATION.md.
31
- 6. **RELEASE** (30 min - 2 hours): Ship to production. Deliverables: Release tag.
26
+ 1. **DISCOVER** (3-6 hours): Understand problem. Deliverables: `requirements/VISION_LATEST.yaml`, `requirements/SCOPE_LATEST.yaml`, `plans/TECH_STACK_LATEST.md`.
27
+ 2. **ELABORATE** (3-6 hours): Research solutions. Deliverables: Prior art in scope YAML, ADRs in `specs/adr/`.
28
+ 3. **PLAN** (2-4 hours): Write verifiable plan. Deliverables: `release-plan.yaml`, `epics/eNN-*.yaml` with `verify:` per task.
29
+ 4. **BUILD** (1-8 hours): Execute plan. Deliverables: Code; update `execution-status.yaml`.
30
+ 5. **VERIFY** (1-3 hours): Validate success criteria. Deliverables: UAT evidence, `specs/EVALS-*.md` if used.
31
+ 6. **RELEASE** (30 min - 2 hours): Ship to production. Deliverables: Release tag (vX.Y.Z), `state.yaml` `release.last_tag`.
32
32
 
33
33
  See [REFERENCE.md](REFERENCE.md) for detailed phase specifications and gate types.
34
34
 
35
35
  ## How Orchestrate Works
36
36
 
37
- 1. **Maintains STATE.md** — Tracks current phase, artifacts, decisions, risks.
38
- 2. **Spawns appropriate skills** — Reads each skill's `model:` frontmatter and routes (haiku/sonnet/opus). Calls survey-context, research-first, elaborate-spec, plan-work, develop-tdd, verify-work, run-evals, etc. Decisions pass only via `specs/STATE.md` between spawns.
39
- 3. **Methodology lenses** — If `specs/METHODOLOGY.md` exists, apply active reasoning modes (STRIDE, Cost-of-Delay) at phase gates.
37
+ 1. **Maintains state.yaml** — Tracks current phase, `active_epic`, `active_flow`, decisions, risks.
38
+ 2. **Spawns appropriate skills** — Routes by `model:` frontmatter. Decisions pass only via `specs/state.yaml` `handoff` between spawns.
39
+ 3. **Methodology lenses** — If `specs/plans/TEST_PLAN_LATEST.md` or ADRs exist, apply at phase gates.
40
40
  4. **Enforces gates** — Hard stops if success criteria not met.
41
- 5. **The Gatekeeper** (v1.19.0) — Between every Story implementation in PHASE 4:
42
- - READ `specs/RELEASE-PLAN.md` to verify completion.
43
- - REQUIRE that the previous Story is marked `[x] Done`.
44
- - REFUSE to call `update_topic` for a new Story until the previous one is physically evidenced as complete.
41
+ 5. **The Gatekeeper** — Between stories in BUILD: read `specs/execution-status.yaml`; previous story must be `done` before starting the next; use `build-epic` for the 8-step epic cycle.
45
42
  6. **Pauses for confirmation** — After each phase, asks "Ready to proceed?".
46
- 7. **Archives history** — Saves RELEASE-PLAN snapshots as specs/RELEASE-PLAN-vX.Y.Z.md when needed.
43
+ 7. **Snapshots** — `bash scripts/bp-yaml-snapshot.sh` before major release cuts.
47
44
 
48
45
  ## Orchestration Modes
49
46
 
@@ -57,5 +54,5 @@ See [REFERENCE.md](REFERENCE.md) for full mode behaviors.
57
54
 
58
55
  All phases complete with artifacts:
59
56
  ```bash
60
- verify: test -f specs/PROJECT.md && test -f specs/PLAN.md && test -f specs/VERIFICATION.md && echo "✅ All phases complete"
57
+ verify: test -f specs/state.yaml && test -f specs/release-plan.yaml && test -f specs/requirements/SCOPE_LATEST.yaml && ls specs/epics/*.yaml 1>/dev/null && echo "✅ All phases complete"
61
58
  ```
package/package.json CHANGED
@@ -1,11 +1,13 @@
1
1
  {
2
2
  "name": "bigpowers",
3
- "version": "1.2.3",
4
- "description": "59 agent skills for spec-driven, test-first software development by solo developers",
3
+ "version": "1.3.1",
4
+ "description": "61 agent skills for spec-driven, test-first software development by solo developers",
5
5
  "main": "index.js",
6
6
  "scripts": {
7
7
  "compliance": "bash scripts/audit-compliance.sh specs/audit/features",
8
8
  "sync": "bash scripts/sync-skills.sh",
9
+ "validate-specs": "bash scripts/validate-specs-yaml.sh",
10
+ "enrich-epics": "bash scripts/enrich-epics-from-archive.sh",
9
11
  "version": "bash scripts/sync-skills.sh && git add .gemini/extensions/bigpowers/gemini-extension.json specs/SKILL-SEARCH-INDEX.md",
10
12
  "install": "bash scripts/install.sh",
11
13
  "postinstall": "bash scripts/sync-skills.sh && bash scripts/install.sh",
@@ -37,11 +39,9 @@
37
39
  },
38
40
  "devDependencies": {
39
41
  "@semantic-release/changelog": "^6.0.3",
40
- "@semantic-release/commit-analyzer": "^11.1.0",
41
42
  "@semantic-release/git": "^10.0.1",
42
- "@semantic-release/github": "^9.2.6",
43
- "@semantic-release/npm": "^11.0.3",
44
- "@semantic-release/release-notes-generator": "^12.1.0",
45
- "semantic-release": "^22.0.12"
43
+ "@semantic-release/github": "^11.0.1",
44
+ "@semantic-release/npm": "^12.0.1",
45
+ "semantic-release": "^24.2.0"
46
46
  }
47
47
  }
@@ -1,76 +1,100 @@
1
1
  ---
2
2
  name: plan-release
3
3
  model: sonnet
4
- description: Convert elaborated specs into a structured release plan with Gherkin acceptance criteria and WSJF-sorted epics. Produces specs/RELEASE-PLAN.md. Use when a spec is clear and ready to plan, after elaborate-spec, or when the user wants a release plan broken into epics and stories.
4
+ description: Convert elaborated specs into a structured release plan with Gherkin acceptance criteria and WSJF-sorted epics. Produces specs/release-plan.yaml and specs/epics/eNN-*.yaml. Use when a spec is clear and ready to plan, after elaborate-spec, or when the user wants a release plan broken into epics and stories.
5
5
  ---
6
6
 
7
7
  # Plan Release
8
8
 
9
9
  > **HARD GATE** — Do NOT run this skill unless `elaborate-spec` has produced a clear spec or the user has already defined the feature in detail. If the problem is still fuzzy, run `elaborate-spec` first.
10
10
 
11
- Synthesize the conversation context into `specs/RELEASE-PLAN.md`. No new interview only clarify if something is genuinely ambiguous.
11
+ > **HARD GATE** `specs/requirements/SCOPE_LATEST.yaml` (or legacy `specs/requirements/SCOPE_LATEST.yaml`) must exist. If missing, run `scope-work` first.
12
+
13
+ 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.
14
+
15
+ ## Outputs
16
+
17
+ | File | Content |
18
+ |------|---------|
19
+ | `specs/release-plan.yaml` | `release.version`, semver bump hint, WSJF-ordered epic list (`id: e01`, `file:`, `mode:`) — **no story status** |
20
+ | `specs/epics/eNN-<slug>.yaml` | Epic metadata, `covers: [fr-x]`, stories with tasks and `verify:` |
21
+ | `specs/execution-status.yaml` | Regenerate keys via `bash scripts/sync-status-from-epics.sh` after epics exist |
12
22
 
13
23
  ## Process
14
24
 
15
25
  ### 1. Draft epics and stories
16
26
 
17
27
  From the conversation context, define:
18
- - **Epics** — major capability areas (Priority: P1/P2/P3 | Value: High/Med/Low | Effort: S/M/L)
19
- - **Stories** — "As a [actor], I want [feature] so that [benefit]"
28
+ - **Epics** — `e01`, `e02`, (stable IDs; WSJF order in `release-plan.yaml` only)
29
+ - **Stories** — `e01s01`, `e01s02`, with Gherkin acceptance criteria
20
30
 
21
31
  WSJF-sort epics: score = (Business Value + Time Criticality + Risk Reduction) / Job Size. Highest score first.
22
32
 
23
33
  ### 2. Write acceptance criteria (Gherkin)
24
34
 
25
- For each story, write at least one happy-path and one edge-case scenario:
26
-
27
- ```
28
- Acceptance Criteria:
29
- Feature: [name]
30
- Scenario: [happy path]
31
- Given [initial state]
32
- When [user action]
33
- Then [observable outcome]
34
- Scenario: [edge case]
35
- Given ...
36
- When ...
37
- Then ...
38
- ```
35
+ For each story, write at least one happy-path and one edge-case scenario (countable format §17 if maturity ≥ 3).
39
36
 
40
37
  ### 3. Write tasks with verify commands
41
38
 
42
- Under each story, list implementation tasks:
39
+ Every task must have a `verify:` command. No verify command = not a task.
43
40
 
44
- ```
45
- Tasks:
46
- - [ ] Write failing test for scenario 1 → verify: <cmd>
47
- - [ ] Implement [module/function] → verify: <cmd>
48
- - [ ] Integrate and smoke-test → verify: <cmd>
41
+ ### 4. Save specs/release-plan.yaml
42
+
43
+ ```yaml
44
+ release:
45
+ version: "3.0.0"
46
+ codename: "Feature Name"
47
+ status: planning # planning | in_progress | released
48
+ semantic_release: true
49
+ bump_hint: minor # patch | minor | major — CI decides at merge
50
+ epics:
51
+ - id: e01
52
+ title: Security
53
+ wsjf: 4.5
54
+ file: epics/e01-security.yaml
55
+ mode: flat # flat | folder (folder if >5 stories)
56
+ - id: e02
57
+ title: Verification
58
+ wsjf: 4.3
59
+ file: epics/e02-verification/epic.yaml
60
+ mode: folder
49
61
  ```
50
62
 
51
- Every task must have a `verify:` command. No verify command = not a task.
63
+ ### 5. Save epic shards
64
+
65
+ **Flat** (`mode: flat`, ≤ ~5 stories):
66
+
67
+ ```yaml
68
+ id: e01
69
+ title: Security
70
+ wsjf: 4.5
71
+ covers: [fr-08]
72
+ stories:
73
+ - id: e01s01
74
+ title: Guard git hooks
75
+ tasks:
76
+ - desc: Block push on main
77
+ verify: "grep -q guard-git .cursor/rules/guard-git.mdc"
78
+ ```
52
79
 
53
- ### 4. Save specs/RELEASE-PLAN.md
80
+ **Folder GSD** (`mode: folder`): `epics/e02-verification/epic.yaml` + `stories/e02s01-*.md` with YAML frontmatter for tasks.
54
81
 
55
- ```
56
- ## Epic 1: [Name]
57
- Priority: P1 | Value: High | Effort: M | WSJF: [score]
82
+ → verify: `bash scripts/validate-specs-yaml.sh`
58
83
 
59
- ### Story 1.1: As a [actor], I want [feature] so that [benefit]
60
- Status: [ ] Not started
84
+ verify: `grep -c 'id: e' specs/release-plan.yaml`
61
85
 
62
- Acceptance Criteria:
63
- Feature: ...
64
- Scenario: ...
86
+ ### 6. Sync execution status
65
87
 
66
- Tasks:
67
- - [ ] ... → verify: <cmd>
88
+ ```bash
89
+ bash scripts/sync-status-from-epics.sh
68
90
  ```
69
91
 
70
- verify: `grep -c "Scenario:" specs/RELEASE-PLAN.md`
92
+ ### 7. Snapshot on planning close (optional)
93
+
94
+ Copy to `specs/requirements/snapshots/release-<version>/` when the user approves the plan.
71
95
 
72
- ### 5. Suggest next steps
96
+ ### 8. Suggest next steps
73
97
 
74
98
  - Run `assess-impact` before `plan-work` for any story touching existing modules.
75
- - Run `plan-work` per story to produce the detailed step-by-step plan.
99
+ - Run `plan-work` per story for detailed steps inside the epic shard.
76
100
  - Run `change-request` if a new requirement arrives mid-flight.
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: plan-work
3
3
  model: opus
4
- description: Write a detailed implementation plan to specs/RELEASE-PLAN.md. Every step must include a runnable verify command (Karpathy verification template). Use when user has a task to implement and needs a step-by-step plan with evidence checkpoints, or after plan-release produces specs/RELEASE-PLAN.md.
4
+ description: Write detailed implementation tasks into the active epic shard (specs/epics/eNN-*.yaml). Every task must include a runnable verify command. Use when user needs step-by-step plan with evidence, or after plan-release.
5
5
  ---
6
6
 
7
7
  # Plan Work
8
8
 
9
- Produce a detailed, verifiable implementation plan in `specs/RELEASE-PLAN.md`. Every step must be paired with a runnable verify command — "I think it works" is not a step.
9
+ Produce a detailed, verifiable implementation plan in the **active epic shard** (`specs/epics/eNN-*.yaml` under the target story's `tasks[]`). Every step must be paired with a runnable verify command — "I think it works" is not a step.
10
10
 
11
11
  > **HARD GATE** — Do NOT proceed with a plan until the task's success criteria are clear. If success is ambiguous, run `define-success` first to convert the task into "step → verify: <cmd>" pairs.
12
12
  >
@@ -16,7 +16,7 @@ Produce a detailed, verifiable implementation plan in `specs/RELEASE-PLAN.md`. E
16
16
 
17
17
  Before writing the plan, check if `define-success` has been run. If the task's success criteria are unclear, run `define-success` first to convert the task into "step → verify: <cmd>" pairs.
18
18
 
19
- Read any existing `specs/` files: RELEASE-PLAN.md, SCOPE.md, TASKS.md, CONTEXT.md, UBIQUITOUS_LANGUAGE.md.
19
+ Read any existing `specs/` files: `release-plan.yaml`, `requirements/SCOPE_LATEST.yaml`, active `epics/*.yaml`, `plans/TECH_STACK_LATEST.md`, `requirements/GLOSSARY_LATEST.yaml`.
20
20
 
21
21
  > **ZOOM-OUT MANDATE** (v1.17.0 Guardrails) — If this plan modifies an existing module, function, or behavior:
22
22
  > 1. State the module's **purpose** — what is it responsible for?
@@ -58,9 +58,9 @@ Break the implementation into the smallest possible steps where each step:
58
58
 
59
59
  **Red-flag check**: before moving to Step 3, name any rationalization you caught yourself making — skipping a gate, adding out-of-scope steps, omitting a verify command. Write them out; do not suppress them.
60
60
 
61
- ### 3. Write specs/RELEASE-PLAN.md
61
+ ### 3. Write epic shard tasks
62
62
 
63
- Append the detailed steps under the relevant story in `specs/RELEASE-PLAN.md`. Create the `specs/` directory if it doesn't exist.
63
+ Append tasks under the relevant story in `specs/epics/{epic-id}-*.yaml` (`tasks[]` with `desc` + `verify`). Update `specs/release-plan.yaml` if a new story is needed. Run `bash scripts/sync-status-from-epics.sh` after structural changes.
64
64
 
65
65
  <plan-template>
66
66
 
@@ -126,4 +126,4 @@ Before finalizing, confirm:
126
126
  - Is the granularity right (not too coarse, not too fine)?
127
127
  - Are the verify commands actually runnable in this project?
128
128
 
129
- After writing `specs/RELEASE-PLAN.md`, suggest `kickoff-branch` (if not already on a feature branch) then `execute-plan` or `develop-tdd`.
129
+ After writing epic tasks, suggest `kickoff-branch` (if not already on a feature branch) then `build-epic`, `execute-plan`, or `develop-tdd`.
@@ -22,7 +22,7 @@ Write a self-contained brief for the reviewer agent. Include:
22
22
 
23
23
  - What was built (feature description, not implementation)
24
24
  - Which files changed (the diff context)
25
- - What `specs/` artifacts are relevant (PLAN.md, bugs/BUG-*.md, SCOPE.md)
25
+ - What `specs/` artifacts are relevant (active `epics/eNN-*.yaml`, `requirements/SCOPE_LATEST.yaml`, `bugs/BUG-*.md`)
26
26
  - What CONVENTIONS.md requires
27
27
  - What the verify command is
28
28
  - What you're most uncertain about (where you want fresh eyes)
@@ -36,7 +36,7 @@ You are a code reviewer. Review the following code changes.
36
36
 
37
37
  Context: [feature description]
38
38
  CONVENTIONS.md rules: [paste relevant sections]
39
- specs/PLAN.md: [paste or summarize]
39
+ Active epic shard: [paste or summarize from specs/epics/]
40
40
 
41
41
  Diff: [paste git diff or describe changed files]
42
42
 
@@ -10,10 +10,10 @@ model: sonnet
10
10
 
11
11
  ## Process
12
12
 
13
- 1. Read `specs/SCOPE.md`, `specs/RELEASE-PLAN.md`, and the current task statement.
13
+ 1. Read `specs/requirements/SCOPE_LATEST.yaml`, `specs/release-plan.yaml + epic shards`, and the current task statement.
14
14
  2. Search in order: this repo → bigpowers skills (`search-skills`) → package registries → web docs.
15
15
  3. For each candidate: note name, URL/path, fit (adopt | extend | compose | build).
16
- 4. Append `## Prior Art` to the active spec (SCOPE.md or story in RELEASE-PLAN.md).
16
+ 4. Append `## Prior Art` to `requirements/SCOPE_LATEST.yaml` notes or the active epic story.
17
17
 
18
18
  ## Outcome matrix
19
19
 
@@ -26,6 +26,6 @@ model: sonnet
26
26
 
27
27
  ## Verify
28
28
 
29
- → verify: `grep -c "Prior Art" specs/SCOPE.md specs/RELEASE-PLAN.md 2>/dev/null | awk '{s+=$1} END {if(s>0) print "OK"; else print "MISSING"}'`
29
+ → verify: `grep -c "Prior Art" specs/requirements/SCOPE_LATEST.yaml specs/release-plan.yaml + epic shards 2>/dev/null | awk '{s+=$1} END {if(s>0) print "OK"; else print "MISSING"}'`
30
30
 
31
31
  See [REFERENCE.md](REFERENCE.md) for search commands and registry checklist.
@@ -24,4 +24,4 @@
24
24
 
25
25
  ## pass@k
26
26
 
27
- Run capability evals k times (default k=3). Ship when all k pass or document known flake in STATE.md.
27
+ Run capability evals k times (default k=3). Ship when all k pass or document known flake in `specs/state.yaml` `handoff.open_decisions`.
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: run-planning
3
+ model: sonnet
4
+ description: Advance discover-phase workflows and update specs/planning-status.yaml. Use for survey, scope, research, plan-release chain without touching build epics.
5
+ ---
6
+
7
+ # Run Planning
8
+
9
+ Updates `specs/planning-status.yaml` as discover-phase skills complete.
10
+
11
+ ## Workflows (default keys)
12
+
13
+ - `survey-context` → `scope-work` → `research-first` → `elaborate-spec` (optional) → `plan-release` → `slice-tasks`
14
+
15
+ ## Process
16
+
17
+ 1. Read `specs/planning-status.yaml` and `specs/state.yaml`.
18
+ 2. Find first workflow with `status: pending` or `optional` not yet run.
19
+ 3. Invoke the matching skill; on success set `status: done` for that workflow key.
20
+ 4. Set `state.yaml` `active_flow: planning` while in this chain.
21
+
22
+ ## Verify
23
+
24
+ → verify: `test -f specs/planning-status.yaml && grep -c 'status: done' specs/planning-status.yaml | awk '{if($1>=3) print "OK"; else print "INCOMPLETE"}'`
@@ -1,22 +1,22 @@
1
1
  ---
2
2
  name: scope-work
3
- description: Define what is in and out of scope for the current effort and save as specs/SCOPE.md. Use when user wants a PRD, scope definition, or before plan-release on a new initiative.
3
+ description: Define what is in and out of scope for the current effort and save as specs/requirements/SCOPE_LATEST.yaml. Use when user wants a PRD, scope definition, or before plan-release on a new initiative.
4
4
  model: sonnet
5
5
  ---
6
6
 
7
7
  # Scope Work
8
8
 
9
- Turn the current conversation into a bounded PRD at `specs/SCOPE.md`.
9
+ Turn the current conversation into a bounded PRD at `specs/requirements/SCOPE_LATEST.yaml`.
10
10
 
11
11
  ## Process
12
12
 
13
- 1. Read existing `specs/` artifacts (CONTEXT.md, RELEASE-PLAN.md if any).
13
+ 1. Read existing `specs/` artifacts (`release-plan.yaml`, `plans/TECH_STACK_LATEST.md`, `requirements/VISION_LATEST.yaml` if any).
14
14
  2. Interview (if needed): goal, users, in-scope, out-of-scope, constraints, success metrics.
15
- 3. Write `specs/SCOPE.md` with: Vision, In Scope, Out of Scope, Constraints, Success Criteria.
15
+ 3. Write `specs/requirements/SCOPE_LATEST.yaml` with: `core_value`, `summary`, `in_scope[]`, `out_of_scope[]`, `constraints`, `success_criteria`, `references`.
16
16
  4. Run `research-first` if external dependencies are proposed.
17
17
 
18
- > **HARD GATE** — Every "in scope" item must map to a future story ID or explicit "deferred" with reason.
18
+ > **HARD GATE** — Every `in_scope` item must map to a future epic/story ID or explicit deferred note in `out_of_scope`.
19
19
 
20
20
  ## Verify
21
21
 
22
- → verify: `test -f specs/SCOPE.md && grep -c "Out of Scope" specs/SCOPE.md | awk '{if($1>0) print "OK"; else print "MISSING"}'`
22
+ → verify: `test -f specs/requirements/SCOPE_LATEST.yaml && grep -c 'out_of_scope' specs/requirements/SCOPE_LATEST.yaml | awk '{if($1>0) print "OK"; else print "MISSING"}'`
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env bash
2
+ # bp-yaml-set.sh — patch a dotted key in a specs YAML file
3
+ # Usage: bp-yaml-set.sh <file> <dotted.key> <value>
4
+ set -euo pipefail
5
+ REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
6
+ FILE="${1:?file}"
7
+ KEY="${2:?dotted.key}"
8
+ VAL="${3:?value}"
9
+ python3 "$REPO_ROOT/scripts/yaml-tools.py" set "$FILE" "$KEY" "$VAL"
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env bash
2
+ # bp-yaml-snapshot.sh — freeze release-plan + requirements into snapshots/
3
+ # Usage: bp-yaml-snapshot.sh [version] (default: read from release-plan.yaml)
4
+ set -euo pipefail
5
+ REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
6
+ SPECS="$REPO_ROOT/specs"
7
+ VER="${1:-}"
8
+
9
+ if [[ -z "$VER" ]]; then
10
+ VER=$(grep -E '^\s+version:' "$SPECS/release-plan.yaml" | head -1 | sed 's/.*"\(.*\)".*/\1/')
11
+ fi
12
+ DEST="$SPECS/requirements/snapshots/release-$VER"
13
+ mkdir -p "$DEST"
14
+
15
+ for f in release-plan.yaml requirements/VISION_LATEST.yaml requirements/SCOPE_LATEST.yaml; do
16
+ src="$SPECS/$f"
17
+ [[ -f "$src" ]] || continue
18
+ base=$(basename "$f")
19
+ cp "$src" "$DEST/$base"
20
+ done
21
+
22
+ echo "bp-yaml-snapshot: wrote $DEST"
23
+ ls -la "$DEST"