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.
- package/CHANGELOG.md +15 -0
- package/CLAUDE.md +5 -4
- package/CONVENTIONS.md +55 -13
- package/README.md +10 -8
- package/SKILL-INDEX.md +14 -11
- package/assess-impact/SKILL.md +2 -2
- package/build-epic/SKILL.md +42 -0
- package/change-request/SKILL.md +16 -16
- package/compose-workflow/REFERENCE.md +3 -3
- package/compose-workflow/SKILL.md +1 -1
- package/deepen-architecture/SKILL.md +6 -6
- package/define-success/SKILL.md +1 -1
- package/delegate-task/SKILL.md +4 -4
- package/develop-tdd/SKILL.md +5 -5
- package/dispatch-agents/SKILL.md +2 -2
- package/evolve-skill/SKILL.md +2 -2
- package/execute-plan/SKILL.md +22 -59
- package/fix-bug/SKILL.md +37 -0
- package/grill-with-docs/SKILL.md +1 -1
- package/inspect-quality/SKILL.md +5 -5
- package/investigate-bug/SKILL.md +2 -2
- package/kickoff-branch/SKILL.md +1 -1
- package/map-codebase/SKILL.md +4 -4
- package/migrate-spec/REFERENCE-GSD.md +35 -41
- package/migrate-spec/REFERENCE.md +43 -44
- package/migrate-spec/SKILL.md +20 -20
- package/model-domain/SKILL.md +7 -7
- package/orchestrate-project/REFERENCE.md +10 -10
- package/orchestrate-project/SKILL.md +13 -16
- package/package.json +7 -7
- package/plan-release/SKILL.md +63 -39
- package/plan-work/SKILL.md +6 -6
- package/request-review/SKILL.md +2 -2
- package/research-first/SKILL.md +3 -3
- package/run-evals/REFERENCE.md +1 -1
- package/run-planning/SKILL.md +24 -0
- package/scope-work/SKILL.md +6 -6
- package/scripts/bp-yaml-set.sh +9 -0
- package/scripts/bp-yaml-snapshot.sh +23 -0
- package/scripts/convert-legado.sh +153 -0
- package/scripts/enrich-epics-from-archive.sh +101 -0
- package/scripts/land-branch.sh +5 -1
- package/scripts/project-survey.sh +18 -9
- package/scripts/sync-bugs-registry.sh +53 -0
- package/scripts/sync-skills.sh +5 -5
- package/scripts/sync-status-from-epics.sh +51 -0
- package/scripts/validate-specs-yaml.sh +41 -0
- package/scripts/yaml-tools.py +144 -0
- package/seed-conventions/SKILL.md +3 -3
- package/session-state/SKILL.md +59 -50
- package/setup-environment/SKILL.md +1 -1
- package/slice-tasks/SKILL.md +6 -6
- package/spike-prototype/SKILL.md +5 -5
- package/survey-context/SKILL.md +38 -27
- package/trace-requirement/SKILL.md +8 -8
- package/using-bigpowers/SKILL.md +10 -9
- package/validate-fix/SKILL.md +4 -4
- package/verify-work/SKILL.md +12 -17
- package/visual-dashboard/SKILL.md +25 -74
- package/visual-dashboard/scripts/cockpit.html +66 -0
- package/visual-dashboard/scripts/read-specs-status.cjs +123 -0
- package/visual-dashboard/scripts/server.cjs +40 -0
- package/write-document/SKILL.md +1 -1
- package/maintain-wiki/SKILL.md +0 -130
- package/profiles/obsidian-wiki.md +0 -120
package/migrate-spec/SKILL.md
CHANGED
|
@@ -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
|
|
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 `
|
|
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/
|
|
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
|
|
83
|
+
### Step 4 — Generate state.yaml
|
|
84
84
|
|
|
85
|
-
Always regenerate `specs/
|
|
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/
|
|
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/
|
|
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/
|
|
129
|
-
| GSD `REQUIREMENTS.md` | `specs/
|
|
130
|
-
| GSD `CONTEXT.md` (phases) | `specs/
|
|
131
|
-
| GSD `PLAN.md` | `specs/
|
|
132
|
-
| GSD `METHODOLOGY.md` | `specs/
|
|
133
|
-
| spec-kit `spec.md` | `specs/
|
|
134
|
-
| spec-kit `plan.md` | `specs/
|
|
135
|
-
| spec-kit `tasks.md` | `specs/
|
|
136
|
-
| BMAD `prd.md` | `specs/
|
|
137
|
-
| BMAD `architecture.md` | `specs/
|
|
138
|
-
| BMAD `epic-*.md` | `specs/
|
|
139
|
-
| BMAD `story-*.md` | `specs/
|
|
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
|
-
- **
|
|
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`.
|
package/model-domain/SKILL.md
CHANGED
|
@@ -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/
|
|
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/
|
|
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/
|
|
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/
|
|
69
|
+
### Update specs/plans/TECH_STACK_LATEST.md inline
|
|
70
70
|
|
|
71
|
-
When a term is resolved, update `specs/
|
|
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/
|
|
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/
|
|
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**: `
|
|
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**:
|
|
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**: `
|
|
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
|
|
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 `
|
|
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/
|
|
90
|
-
- **Current
|
|
91
|
-
- **
|
|
92
|
-
- **
|
|
93
|
-
- **
|
|
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 (
|
|
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:
|
|
27
|
-
2. **ELABORATE** (3-6 hours): Research solutions. Deliverables:
|
|
28
|
-
3. **PLAN** (2-4 hours): Write verifiable plan. Deliverables:
|
|
29
|
-
4. **BUILD** (1-8 hours): Execute plan. Deliverables: Code
|
|
30
|
-
5. **VERIFY** (1-3 hours): Validate success criteria. Deliverables:
|
|
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
|
|
38
|
-
2. **Spawns appropriate skills** —
|
|
39
|
-
3. **Methodology lenses** — If `specs/
|
|
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**
|
|
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. **
|
|
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/
|
|
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.
|
|
4
|
-
"description": "
|
|
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": "^
|
|
43
|
-
"@semantic-release/npm": "^
|
|
44
|
-
"
|
|
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
|
}
|
package/plan-release/SKILL.md
CHANGED
|
@@ -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/
|
|
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
|
-
|
|
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** —
|
|
19
|
-
- **Stories** —
|
|
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
|
-
|
|
39
|
+
Every task must have a `verify:` command. No verify command = not a task.
|
|
43
40
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
60
|
-
Status: [ ] Not started
|
|
84
|
+
→ verify: `grep -c 'id: e' specs/release-plan.yaml`
|
|
61
85
|
|
|
62
|
-
|
|
63
|
-
Feature: ...
|
|
64
|
-
Scenario: ...
|
|
86
|
+
### 6. Sync execution status
|
|
65
87
|
|
|
66
|
-
|
|
67
|
-
|
|
88
|
+
```bash
|
|
89
|
+
bash scripts/sync-status-from-epics.sh
|
|
68
90
|
```
|
|
69
91
|
|
|
70
|
-
|
|
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
|
-
###
|
|
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
|
|
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.
|
package/plan-work/SKILL.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plan-work
|
|
3
3
|
model: opus
|
|
4
|
-
description: Write
|
|
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/
|
|
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:
|
|
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
|
|
61
|
+
### 3. Write epic shard tasks
|
|
62
62
|
|
|
63
|
-
Append
|
|
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
|
|
129
|
+
After writing epic tasks, suggest `kickoff-branch` (if not already on a feature branch) then `build-epic`, `execute-plan`, or `develop-tdd`.
|
package/request-review/SKILL.md
CHANGED
|
@@ -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 (
|
|
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
|
-
|
|
39
|
+
Active epic shard: [paste or summarize from specs/epics/]
|
|
40
40
|
|
|
41
41
|
Diff: [paste git diff or describe changed files]
|
|
42
42
|
|
package/research-first/SKILL.md
CHANGED
|
@@ -10,10 +10,10 @@ model: sonnet
|
|
|
10
10
|
|
|
11
11
|
## Process
|
|
12
12
|
|
|
13
|
-
1. Read `specs/
|
|
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
|
|
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/
|
|
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.
|
package/run-evals/REFERENCE.md
CHANGED
|
@@ -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"}'`
|
package/scope-work/SKILL.md
CHANGED
|
@@ -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/
|
|
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/
|
|
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 (
|
|
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/
|
|
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
|
|
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/
|
|
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"
|