bigpowers 1.5.1 → 2.0.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 +35 -0
- package/CONVENTIONS.md +18 -2
- package/README.md +39 -13
- package/RELEASE.md +16 -1
- package/SKILL-INDEX.md +3 -3
- package/assess-impact/SKILL.md +2 -2
- package/build-epic/SKILL.md +5 -5
- package/change-request/SKILL.md +4 -4
- package/dashboard/src/loaders/reader.js +2 -1
- package/dashboard/src/tui/epic-queue.js +2 -0
- package/dashboard/src/tui/filesystem.js +5 -6
- package/dashboard/src/tui/index.js +39 -13
- package/dashboard/src/tui/ledger.js +3 -5
- package/dashboard/src/tui/metrics-bar.js +20 -3
- package/dashboard/src/tui/pipeline.js +9 -13
- package/dashboard/src/tui/state-yaml.js +6 -8
- package/deepen-architecture/SKILL.md +6 -6
- package/define-success/SKILL.md +1 -1
- package/develop-tdd/SKILL.md +3 -3
- package/elaborate-spec/SKILL.md +7 -7
- package/execute-plan/SKILL.md +4 -4
- package/investigate-bug/SKILL.md +1 -1
- package/kickoff-branch/SKILL.md +1 -1
- package/map-codebase/SKILL.md +4 -4
- package/migrate-spec/SKILL.md +8 -8
- package/model-domain/SKILL.md +8 -8
- package/orchestrate-project/REFERENCE.md +8 -4
- package/orchestrate-project/SKILL.md +2 -2
- package/package.json +1 -1
- package/plan-release/SKILL.md +73 -27
- package/plan-work/SKILL.md +23 -7
- package/release-branch/SKILL.md +15 -0
- package/research-first/SKILL.md +2 -2
- package/run-evals/SKILL.md +2 -2
- package/run-planning/SKILL.md +1 -1
- package/scope-work/SKILL.md +4 -4
- package/scripts/land-branch.sh +28 -0
- package/seed-conventions/SKILL.md +37 -6
- package/session-state/SKILL.md +34 -3
- package/slice-tasks/SKILL.md +4 -4
- package/survey-context/SKILL.md +2 -2
- package/trace-requirement/SKILL.md +6 -6
- package/verify-work/SKILL.md +35 -2
- package/write-document/SKILL.md +1 -1
- package/dashboard/src/data/gate-status.js +0 -32
- package/dashboard/src/data/metrics.js +0 -89
- package/dashboard/src/data/pipeline-map.js +0 -32
- package/dashboard/src/data/reader.js +0 -122
- package/dashboard/src/data/watcher.js +0 -108
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
const chalk = require('chalk');
|
|
2
|
-
|
|
3
1
|
function renderStateYaml(box, stateData) {
|
|
4
2
|
if (!box || typeof box.setContent !== 'function') {
|
|
5
3
|
return;
|
|
6
4
|
}
|
|
7
5
|
|
|
8
6
|
if (!stateData) {
|
|
9
|
-
box.setContent(
|
|
7
|
+
box.setContent('{center}state.yaml not found{/center}');
|
|
10
8
|
return;
|
|
11
9
|
}
|
|
12
10
|
|
|
13
11
|
const lines = [];
|
|
14
|
-
lines.push('{bold}{
|
|
12
|
+
lines.push('{bold}CURRENT ACTION{/bold}');
|
|
15
13
|
lines.push('');
|
|
16
14
|
|
|
17
15
|
const pairs = [
|
|
@@ -27,17 +25,17 @@ function renderStateYaml(box, stateData) {
|
|
|
27
25
|
pairs.forEach(({ key, value }) => {
|
|
28
26
|
let displayValue = String(value || '—');
|
|
29
27
|
|
|
30
|
-
// Color rules
|
|
28
|
+
// Color rules: use blessed markup, not chalk
|
|
31
29
|
if (key === 'git.branch') {
|
|
32
30
|
if (displayValue === 'main') {
|
|
33
|
-
displayValue =
|
|
31
|
+
displayValue = `{green-fg}${displayValue}{/green-fg}`;
|
|
34
32
|
} else if (displayValue.startsWith('feat/')) {
|
|
35
|
-
displayValue =
|
|
33
|
+
displayValue = `{yellow-fg}${displayValue}{/yellow-fg}`;
|
|
36
34
|
}
|
|
37
35
|
}
|
|
38
36
|
|
|
39
37
|
if (key === 'next_skill' && value) {
|
|
40
|
-
displayValue =
|
|
38
|
+
displayValue = `{green-fg}${displayValue}{/green-fg}`;
|
|
41
39
|
}
|
|
42
40
|
|
|
43
41
|
lines.push(` {dim}${key}:{/dim} ${displayValue}`);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: deepen-architecture
|
|
3
3
|
model: sonnet
|
|
4
|
-
description: Find deepening opportunities in a codebase, informed by the domain language in specs/
|
|
4
|
+
description: Find deepening opportunities in a codebase, informed by the domain language in specs/tech-architecture/tech-stack.md and the decisions in specs/adr/. Use when the user wants to improve architecture, find refactoring opportunities, consolidate tightly-coupled modules, or make a codebase more testable and AI-navigable.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Deepen Architecture
|
|
@@ -29,7 +29,7 @@ Key principles (see [LANGUAGE.md](LANGUAGE.md) for the full list):
|
|
|
29
29
|
- **The interface is the test surface.**
|
|
30
30
|
- **One adapter = hypothetical seam. Two adapters = real seam.**
|
|
31
31
|
|
|
32
|
-
This skill is _informed_ by the project's domain model — `specs/
|
|
32
|
+
This skill is _informed_ by the project's domain model — `specs/tech-architecture/tech-stack.md` and any `specs/adr/`. The domain language gives names to good seams; ADRs record decisions the skill should not re-litigate. See [CONTEXT-FORMAT.md](../model-domain/CONTEXT-FORMAT.md) and [ADR-FORMAT.md](../model-domain/ADR-FORMAT.md).
|
|
33
33
|
|
|
34
34
|
## Process
|
|
35
35
|
|
|
@@ -37,7 +37,7 @@ This skill is _informed_ by the project's domain model — `specs/plans/TECH_STA
|
|
|
37
37
|
|
|
38
38
|
Read existing documentation first:
|
|
39
39
|
|
|
40
|
-
- `specs/
|
|
40
|
+
- `specs/tech-architecture/tech-stack.md` (or `specs/tech-architecture/tech-stack.md` + each `specs/tech-architecture/tech-stack.md` in a multi-context repo)
|
|
41
41
|
- Relevant ADRs in `specs/adr/`
|
|
42
42
|
|
|
43
43
|
If any of these files don't exist, proceed silently — don't flag their absence or suggest creating them upfront.
|
|
@@ -73,7 +73,7 @@ Present a numbered list of deepening opportunities. For each candidate:
|
|
|
73
73
|
- **Solution** — plain English description of what would change
|
|
74
74
|
- **Benefits** — explained in terms of locality and leverage, and how tests would improve
|
|
75
75
|
|
|
76
|
-
**Use `specs/
|
|
76
|
+
**Use `specs/tech-architecture/tech-stack.md` vocabulary for the domain, and [LANGUAGE.md](LANGUAGE.md) vocabulary for the architecture.**
|
|
77
77
|
|
|
78
78
|
**ADR conflicts**: if a candidate contradicts an existing ADR, only surface it when the friction is real enough to warrant revisiting the ADR. Mark it clearly. Don't list every theoretical refactor an ADR forbids.
|
|
79
79
|
|
|
@@ -85,7 +85,7 @@ Once the user picks a candidate, drop into a grilling conversation. Walk the des
|
|
|
85
85
|
|
|
86
86
|
Side effects happen inline as decisions crystallize:
|
|
87
87
|
|
|
88
|
-
- **Naming a deepened module after a concept not in `specs/
|
|
89
|
-
- **Sharpening a fuzzy term during the conversation?** Update `specs/
|
|
88
|
+
- **Naming a deepened module after a concept not in `specs/tech-architecture/tech-stack.md`?** Add the term to `specs/tech-architecture/tech-stack.md` — same discipline as `model-domain` (see [CONTEXT-FORMAT.md](../model-domain/CONTEXT-FORMAT.md)). Create the file lazily if it doesn't exist.
|
|
89
|
+
- **Sharpening a fuzzy term during the conversation?** Update `specs/tech-architecture/tech-stack.md` right there.
|
|
90
90
|
- **User rejects the candidate with a load-bearing reason?** Offer an ADR, framed as: _"Want me to record this as an ADR so future architecture reviews don't re-suggest it?"_ Only offer when the reason would actually be needed by a future explorer. See [ADR-FORMAT.md](../model-domain/ADR-FORMAT.md).
|
|
91
91
|
- **Want to explore alternative interfaces for the deepened module?** See [INTERFACE-DESIGN.md](INTERFACE-DESIGN.md).
|
package/define-success/SKILL.md
CHANGED
|
@@ -20,7 +20,7 @@ Transform "do X" into "step → verify: <cmd>" pairs. This is the pre-flight che
|
|
|
20
20
|
|
|
21
21
|
### 1. Read the task statement
|
|
22
22
|
|
|
23
|
-
Take the task as stated (from conversation, or from `specs/epics/ (see slice-tasks)`, or from `specs/
|
|
23
|
+
Take the task as stated (from conversation, or from `specs/epics/ (see slice-tasks)`, or from `specs/product/SCOPE_LATEST.yaml`).
|
|
24
24
|
|
|
25
25
|
### 2. Break into observable outcomes
|
|
26
26
|
|
package/develop-tdd/SKILL.md
CHANGED
|
@@ -8,7 +8,7 @@ description: Test-driven development with red-green-refactor loop using vertical
|
|
|
8
8
|
|
|
9
9
|
> **HARD GATE** — Do NOT proceed if on `main` or `master`. Run `kickoff-branch` first to create a feature branch or worktree.
|
|
10
10
|
>
|
|
11
|
-
> **HARD GATE** — Do NOT write code before you have a plan. New feature: `plan-work` → epic
|
|
11
|
+
> **HARD GATE** — Do NOT write code before you have a plan. New feature: `plan-work` → epic capsule tasks. Bug: `investigate-bug` → `specs/bugs/BUG-*.md` (or use `fix-bug` orchestrator).
|
|
12
12
|
>
|
|
13
13
|
> **RECURSIVE DISCIPLINE** — This lifecycle apply to EVERY task, including updating these skills. Never skip planning because a task is "meta" or "just documentation."
|
|
14
14
|
|
|
@@ -65,7 +65,7 @@ If you find yourself thinking these things, you are likely deviating from produc
|
|
|
65
65
|
|
|
66
66
|
Before writing any code:
|
|
67
67
|
|
|
68
|
-
- [ ] Read active `specs/epics
|
|
68
|
+
- [ ] Read active `specs/epics/*/epic.yaml` story tasks or `specs/bugs/BUG-*.md` — understand verify steps
|
|
69
69
|
- [ ] Confirm with user what interface changes are needed
|
|
70
70
|
- [ ] Confirm with user which behaviors to test (prioritize)
|
|
71
71
|
- [ ] Identify opportunities for [deep modules](deep-modules.md) (small interface, deep implementation)
|
|
@@ -141,7 +141,7 @@ After every behavior cycle, run the verify command from the active epic task if
|
|
|
141
141
|
### 6. Manual Verification Handover
|
|
142
142
|
|
|
143
143
|
Once the story is complete and all tests pass:
|
|
144
|
-
1. Locate the **Verification Script** in the active epic
|
|
144
|
+
1. Locate the **Verification Script** in the active epic capsule (`specs/epics/`) for this story.
|
|
145
145
|
2. Present the script to the user as a step-by-step guide.
|
|
146
146
|
3. Wait for the user to confirm the behavioral correctness before moving to the next story or declaring the task done.
|
|
147
147
|
|
package/elaborate-spec/SKILL.md
CHANGED
|
@@ -63,12 +63,12 @@ Once the user has answered the main questions, probe for assumptions:
|
|
|
63
63
|
|
|
64
64
|
### 4. Synthesize and confirm
|
|
65
65
|
|
|
66
|
-
Summarize your understanding in 3–5 bullet points:
|
|
67
|
-
- The problem
|
|
68
|
-
- The solution
|
|
69
|
-
- The key constraints
|
|
70
|
-
- The success criteria
|
|
71
|
-
- What's out of scope
|
|
66
|
+
Summarize your understanding in 3–5 bullet points aligned with [countable-story-format.md](file:///Users/danielvm/Developer/bigpowers/countable-story-format.md):
|
|
67
|
+
- The problem (feeds into §1 Business narrative)
|
|
68
|
+
- The solution and main flow (feeds into §5)
|
|
69
|
+
- The key constraints and alternative flows (feeds into §6)
|
|
70
|
+
- The success criteria (feeds into §17 Gherkin)
|
|
71
|
+
- What's out of scope (feeds into §18)
|
|
72
72
|
|
|
73
73
|
Ask: "Is this an accurate summary? Anything missing or wrong?"
|
|
74
74
|
|
|
@@ -76,7 +76,7 @@ Ask: "Is this an accurate summary? Anything missing or wrong?"
|
|
|
76
76
|
|
|
77
77
|
Once the spec is clear, recommend the next step:
|
|
78
78
|
- If domain model needs work → `model-domain`
|
|
79
|
-
- If ready to plan → `plan-release` then `plan-work` per story
|
|
79
|
+
- If ready to plan → `plan-release` (creates epic capsules with `epic.yaml` + story `.md` + `-tasks.yaml`) then `plan-work` per story
|
|
80
80
|
- If a spike is needed first → `spike-prototype`
|
|
81
81
|
- If architecture decisions are needed → `deepen-architecture` or `grill-me`
|
|
82
82
|
- If the plan depends on a specific library or API → `grill-me` in docs mode
|
package/execute-plan/SKILL.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: execute-plan
|
|
3
3
|
model: haiku
|
|
4
|
-
description: Batch-execute tasks from the active epic
|
|
4
|
+
description: Batch-execute tasks from the active epic capsule sequentially, with a human checkpoint after each step. Use when user has an approved plan and wants step-by-step oversight.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Execute Plan
|
|
8
8
|
|
|
9
|
-
Execute tasks from the **active epic** (`specs/epics/eNN
|
|
9
|
+
Execute tasks from the **active epic** (`specs/epics/eNN-slug/epic.yaml` story `tasks[]`) one at a time, showing evidence after each step before proceeding.
|
|
10
10
|
|
|
11
11
|
> **HARD GATE** — Do NOT proceed if on `main` or `master`. Run `kickoff-branch` first.
|
|
12
12
|
>
|
|
@@ -16,7 +16,7 @@ Execute tasks from the **active epic** (`specs/epics/eNN-*.yaml` story `tasks[]`
|
|
|
16
16
|
|
|
17
17
|
### 1. Read the plan
|
|
18
18
|
|
|
19
|
-
Read `specs/state.yaml` (`active_epic`, `active_story`) and the matching `specs/epics
|
|
19
|
+
Read `specs/state.yaml` (`active_epic`, `active_story`) and the matching `specs/epics/*/epic.yaml`. Parse `depends-on` in task descriptions for execution waves.
|
|
20
20
|
|
|
21
21
|
> **CONTEXT ISOLATION** — Spawn each skill with a **fresh context window**. Pass decisions only through `specs/state.yaml` `handoff` — never rely on prior chat history.
|
|
22
22
|
|
|
@@ -44,7 +44,7 @@ Update `specs/execution-status.yaml` when a story/epic completes (`bash scripts/
|
|
|
44
44
|
|
|
45
45
|
### 3. Blockers
|
|
46
46
|
|
|
47
|
-
Report blocker; ask skip/adapt/stop; update epic
|
|
47
|
+
Report blocker; ask skip/adapt/stop; update epic capsule if plan changes.
|
|
48
48
|
|
|
49
49
|
### 4. Final report
|
|
50
50
|
|
package/investigate-bug/SKILL.md
CHANGED
|
@@ -69,7 +69,7 @@ Rules:
|
|
|
69
69
|
|
|
70
70
|
### 5. Write the bug file
|
|
71
71
|
|
|
72
|
-
Save the investigation and fix plan to `specs/bugs/BUG-
|
|
72
|
+
Save the investigation and fix plan to `specs/bugs/BUG-NNN-slug.md`. Create the `specs/bugs/` directory if it doesn't exist.
|
|
73
73
|
|
|
74
74
|
After writing, append a row to `specs/bugs/registry.yaml` with: bug_id (same timestamp), date, severity, priority, scope, summary, and file path. Create `specs/bugs/registry.yaml` if it doesn't exist.
|
|
75
75
|
|
package/kickoff-branch/SKILL.md
CHANGED
|
@@ -92,7 +92,7 @@ Worktree: ../<task-slug>
|
|
|
92
92
|
Ready to develop.
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
Suggest next skill: `develop-tdd` to start the TDD loop, or `execute-plan` if `specs/release-plan.yaml + epic
|
|
95
|
+
Suggest next skill: `develop-tdd` to start the TDD loop, or `execute-plan` if `specs/release-plan.yaml + epic capsule directories` already exists.
|
|
96
96
|
|
|
97
97
|
## Handoff
|
|
98
98
|
|
package/map-codebase/SKILL.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: map-codebase
|
|
3
3
|
model: sonnet
|
|
4
|
-
description: "High-fidelity codebase surveying — analyzes stack, architecture, and gray areas (error handling, API shapes) and persists them into specs/
|
|
4
|
+
description: "High-fidelity codebase surveying — analyzes stack, architecture, and gray areas (error handling, API shapes) and persists them into specs/tech-architecture/tech-stack.md. Goes beyond survey-context by identifying 'signals' for planning."
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Map Codebase
|
|
@@ -38,8 +38,8 @@ Look for signals that will influence upcoming plans:
|
|
|
38
38
|
- **Integration Points:** "We need to talk to the Stripe API, but there's no wrapper yet."
|
|
39
39
|
- **Conventions:** "The team always uses functional components over classes."
|
|
40
40
|
|
|
41
|
-
### 5. Persist to specs/
|
|
42
|
-
Compile all findings into `specs/
|
|
41
|
+
### 5. Persist to specs/tech-architecture/tech-stack.md
|
|
42
|
+
Compile all findings into `specs/tech-architecture/tech-stack.md`. This file serves as the project's "Long-Term Memory".
|
|
43
43
|
|
|
44
44
|
```markdown
|
|
45
45
|
# Project Context
|
|
@@ -66,4 +66,4 @@ Compile all findings into `specs/plans/TECH_STACK_LATEST.md`. This file serves a
|
|
|
66
66
|
- When first joining a project.
|
|
67
67
|
- Before a major refactor or architectural change.
|
|
68
68
|
- When `survey-context` reveals a lack of domain knowledge.
|
|
69
|
-
- To refresh `specs/
|
|
69
|
+
- To refresh `specs/tech-architecture/tech-stack.md` after significant changes.
|
package/migrate-spec/SKILL.md
CHANGED
|
@@ -126,15 +126,15 @@ Full mapping tables: [REFERENCE-GSD.md](./REFERENCE-GSD.md) (GSD) · [REFERENCE.
|
|
|
126
126
|
| Source | Target |
|
|
127
127
|
|--------|--------|
|
|
128
128
|
| GSD `ROADMAP.md` | `specs/release-plan.yaml + epic shards` |
|
|
129
|
-
| GSD `REQUIREMENTS.md` | `specs/
|
|
130
|
-
| GSD `CONTEXT.md` (phases) | `specs/
|
|
131
|
-
| GSD `PLAN.md` | `specs/epics/eNN
|
|
132
|
-
| GSD `METHODOLOGY.md` | `specs/
|
|
133
|
-
| spec-kit `spec.md` | `specs/
|
|
134
|
-
| spec-kit `plan.md` | `specs/
|
|
129
|
+
| GSD `REQUIREMENTS.md` | `specs/product/SCOPE_LATEST.yaml` |
|
|
130
|
+
| GSD `CONTEXT.md` (phases) | `specs/tech-architecture/tech-stack.md` + `specs/adr/` |
|
|
131
|
+
| GSD `PLAN.md` | `specs/epics/eNN-slug/epic.yaml` (tasks with verify in `-tasks.yaml`) |
|
|
132
|
+
| GSD `METHODOLOGY.md` | `specs/tech-architecture/tech-stack.md` |
|
|
133
|
+
| spec-kit `spec.md` | `specs/product/SCOPE_LATEST.yaml` + `specs/tech-architecture/tech-stack.md` |
|
|
134
|
+
| spec-kit `plan.md` | `specs/tech-architecture/tech-stack.md` + `specs/release-plan.yaml` + `specs/epics/` |
|
|
135
135
|
| spec-kit `tasks.md` | `specs/epics/ (see slice-tasks)` |
|
|
136
|
-
| BMAD `prd.md` | `specs/
|
|
137
|
-
| BMAD `architecture.md` | `specs/
|
|
136
|
+
| BMAD `prd.md` | `specs/product/SCOPE_LATEST.yaml` |
|
|
137
|
+
| BMAD `architecture.md` | `specs/tech-architecture/tech-stack.md` + `specs/adr/` |
|
|
138
138
|
| BMAD `epic-*.md` | `specs/release-plan.yaml + epic shards` |
|
|
139
139
|
| BMAD `story-*.md` | `specs/epics/ (see slice-tasks)` |
|
|
140
140
|
| BMAD `project-context.md` | `CLAUDE.md` (append project-specific section) |
|
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/tech-architecture/tech-stack.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
|
# Model Domain
|
|
@@ -32,7 +32,7 @@ Most repos have a single context:
|
|
|
32
32
|
└── src/
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
If a `specs/
|
|
35
|
+
If a `specs/tech-architecture/tech-stack.md` exists, the repo has multiple contexts. The map points to where each one lives:
|
|
36
36
|
|
|
37
37
|
```
|
|
38
38
|
/
|
|
@@ -50,13 +50,13 @@ If a `specs/CONTEXT-MAP.md` exists, the repo has multiple contexts. The map poin
|
|
|
50
50
|
└── adr/
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
Create files lazily — only when you have something to write. If no `specs/
|
|
53
|
+
Create files lazily — only when you have something to write. If no `specs/tech-architecture/tech-stack.md` exists, create it when the first term is resolved. If no `specs/adr/` exists, create it when the first ADR is needed.
|
|
54
54
|
|
|
55
55
|
## During the session
|
|
56
56
|
|
|
57
57
|
### Challenge against the glossary
|
|
58
58
|
|
|
59
|
-
When the user uses a term that conflicts with the existing language in `specs/
|
|
59
|
+
When the user uses a term that conflicts with the existing language in `specs/tech-architecture/tech-stack.md`, call it out immediately. "Your glossary defines 'cancellation' as X, but you seem to mean Y — which is it?"
|
|
60
60
|
|
|
61
61
|
### Sharpen fuzzy language
|
|
62
62
|
|
|
@@ -70,11 +70,11 @@ When domain relationships are being discussed, stress-test them with specific sc
|
|
|
70
70
|
|
|
71
71
|
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?"
|
|
72
72
|
|
|
73
|
-
### Update specs/
|
|
73
|
+
### Update specs/tech-architecture/tech-stack.md inline
|
|
74
74
|
|
|
75
|
-
When a term is resolved, update `specs/
|
|
75
|
+
When a term is resolved, update `specs/tech-architecture/tech-stack.md` right there. Don't batch these up — capture them as they happen. Use the format in [CONTEXT-FORMAT.md](./CONTEXT-FORMAT.md).
|
|
76
76
|
|
|
77
|
-
Don't couple `specs/
|
|
77
|
+
Don't couple `specs/tech-architecture/tech-stack.md` to implementation details. Only include terms that are meaningful to domain experts.
|
|
78
78
|
|
|
79
79
|
### Offer ADRs sparingly
|
|
80
80
|
|
|
@@ -93,4 +93,4 @@ When the plan touches shared state, async, or multi-threaded code:
|
|
|
93
93
|
- [ ] List every **shared mutable** location (globals, singletons, module-level caches).
|
|
94
94
|
- [ ] For each: who reads, who writes, synchronization mechanism (lock, actor, immutable copy).
|
|
95
95
|
- [ ] Flag **race risks** (check-then-act, non-atomic read-modify-write) with severity.
|
|
96
|
-
- [ ] Record findings in `specs/
|
|
96
|
+
- [ ] Record findings in `specs/tech-architecture/tech-stack.md` under `## Concurrency` or in an ADR if architectural.
|
|
@@ -23,10 +23,14 @@ Detailed documentation for the `orchestrate-project` meta-skill.
|
|
|
23
23
|
- **Gate**: Quality (request-review ≥94%) + slopcheck [SUS]/[SLOP].
|
|
24
24
|
|
|
25
25
|
### PHASE 4: BUILD
|
|
26
|
-
- **Goal**: Execute the plan
|
|
27
|
-
- **Deliverables**: Code; `execution-status.yaml` updated per story.
|
|
28
|
-
- **Skills**: `kickoff-branch`, `develop-tdd`, `
|
|
29
|
-
- **
|
|
26
|
+
- **Goal**: Execute the plan story-by-story using the 8-step `build-epic` cycle with TDD and vertical slices.
|
|
27
|
+
- **Deliverables**: Code; `execution-status.yaml` updated per story; `specs/metrics/cycle-times.yaml` row per story.
|
|
28
|
+
- **Skills**: `build-epic` (conductor) → per-story: `survey-context`, `plan-work`, `kickoff-branch`, `develop-tdd`, `verify-work`, `audit-code`, `commit-message`, `release-branch`.
|
|
29
|
+
- **BCP tracking**: `plan-work` labels every task `[BCP N]`; total written to `state.yaml` as `epic_cycle.story_bcps`. BCP baseline must exist in `release-plan.yaml` before starting.
|
|
30
|
+
- **Timestamps**: `survey-context` stamps `metrics.story_start`; `release-branch` stamps `metrics.story_end` and writes BCP/hr to `specs/metrics/cycle-times.yaml`.
|
|
31
|
+
- **next_skill**: Each critical-path skill writes `handoff.next_skill` to `state.yaml`. Agents resume by reading `state.yaml` — no guessing.
|
|
32
|
+
- **Dashboard**: `npm run dashboard` (TUI) or `npm run dashboard:web` (browser, port 7742) shows live pipeline, epic queue, BCP metrics, and cycle-time ledger.
|
|
33
|
+
- **Gate**: Integration tests PASS; all 8 build-epic steps completed per story.
|
|
30
34
|
|
|
31
35
|
### PHASE 5: VERIFY
|
|
32
36
|
- **Goal**: Validate success criteria and ensure production readiness.
|
|
@@ -38,7 +38,7 @@ See [REFERENCE.md](REFERENCE.md) for detailed phase specifications and gate type
|
|
|
38
38
|
|
|
39
39
|
1. **Maintains state.yaml** — Tracks current phase, `active_epic`, `active_flow`, decisions, risks.
|
|
40
40
|
2. **Spawns appropriate skills** — Routes by `model:` frontmatter. Decisions pass only via `specs/state.yaml` `handoff` between spawns.
|
|
41
|
-
3. **Methodology lenses** — If `specs/
|
|
41
|
+
3. **Methodology lenses** — If `specs/tech-architecture/test.md` or ADRs exist, apply at phase gates.
|
|
42
42
|
4. **Enforces gates** — Hard stops if success criteria not met.
|
|
43
43
|
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.
|
|
44
44
|
6. **Pauses for confirmation** — After each phase, asks "Ready to proceed?".
|
|
@@ -56,5 +56,5 @@ See [REFERENCE.md](REFERENCE.md) for full mode behaviors.
|
|
|
56
56
|
|
|
57
57
|
All phases complete with artifacts:
|
|
58
58
|
```bash
|
|
59
|
-
verify: test -f specs/state.yaml && test -f specs/release-plan.yaml && test -f specs/
|
|
59
|
+
verify: test -f specs/state.yaml && test -f specs/release-plan.yaml && test -f specs/product/SCOPE_LATEST.yaml && ls specs/epics/*.yaml 1>/dev/null && echo "✅ All phases complete"
|
|
60
60
|
```
|
package/package.json
CHANGED
package/plan-release/SKILL.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
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.yaml and specs/epics/eNN
|
|
4
|
+
description: Convert elaborated specs into a structured release plan with Gherkin acceptance criteria and WSJF-sorted epics. Produces specs/release-plan.yaml and epic capsule directories (specs/epics/eNN-slug/) with epic.yaml manifests, countable-story-format .md specs, and decoupled -tasks.yaml files. 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
|
-
> **HARD GATE** — `specs/
|
|
11
|
+
> **HARD GATE** — `specs/product/SCOPE_LATEST.yaml` (or legacy `specs/product/SCOPE_LATEST.yaml`) must exist. If missing, run `scope-work` first.
|
|
12
12
|
|
|
13
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
14
|
|
|
@@ -16,9 +16,27 @@ Synthesize the conversation context into `specs/release-plan.yaml` (index) and s
|
|
|
16
16
|
|
|
17
17
|
| File | Content |
|
|
18
18
|
|------|---------|
|
|
19
|
-
| `specs/release-plan.yaml` | `release.version`, semver bump hint, WSJF-ordered epic list
|
|
20
|
-
| `specs/epics/eNN-<slug
|
|
21
|
-
| `specs/
|
|
19
|
+
| `specs/release-plan.yaml` | `release.version`, semver bump hint, WSJF-ordered epic list with `id`, `capsule_dir`, `wsjf`, `bcps` — **no story status** |
|
|
20
|
+
| `specs/epics/eNN-<slug>/epic.yaml` | Epic manifest: `id`, `title`, `wsjf`, `total_bcps`, `status`, `stories[]` list |
|
|
21
|
+
| `specs/epics/eNN-<slug>/eNNsYY-<slug>.md` | Story spec in [countable-story-format.md](file:///Users/danielvm/Developer/bigpowers/countable-story-format.md) with 20 sections and Gherkin acceptance criteria |
|
|
22
|
+
| `specs/epics/eNN-<slug>/eNNsYY-tasks.yaml` | Decoupled task checklist with `verify:` commands per task |
|
|
23
|
+
| `specs/execution-status.yaml` | Flat key-value store for story status (`eNNsYY: todo`) |
|
|
24
|
+
|
|
25
|
+
## Epic Capsule Structure
|
|
26
|
+
|
|
27
|
+
All epics use capsule directories (no flat/folder distinction):
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
specs/epics/e01-auth-system/
|
|
31
|
+
├── epic.yaml # Epic manifest
|
|
32
|
+
├── adr/ # Epic-local ADRs (created lazily)
|
|
33
|
+
├── e01s01-login.md # Story spec (countable-story-format)
|
|
34
|
+
├── e01s01-tasks.yaml # Decoupled task checklist
|
|
35
|
+
├── e01s02-jwt.md # Story spec
|
|
36
|
+
└── e01s02-tasks.yaml # Decoupled task checklist
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Rationale:** Capsule dirs achieve change isolation (C9), enable archive pruning (C2/C6), and enforce SRP by decoupling spec `.md` from execution `-tasks.yaml` (C1). See `sdd-adequacy-ranking.md` for the full 10-criteria scoring.
|
|
22
40
|
|
|
23
41
|
## Process
|
|
24
42
|
|
|
@@ -49,51 +67,79 @@ release:
|
|
|
49
67
|
bump_hint: minor # patch | minor | major — CI decides at merge
|
|
50
68
|
epics:
|
|
51
69
|
- id: e01
|
|
52
|
-
title:
|
|
70
|
+
title: Auth System
|
|
53
71
|
wsjf: 4.5
|
|
54
|
-
|
|
55
|
-
mode: flat # flat | folder (folder if >5 stories)
|
|
72
|
+
capsule_dir: epics/e01-auth-system
|
|
56
73
|
- id: e02
|
|
57
|
-
title:
|
|
58
|
-
wsjf:
|
|
59
|
-
|
|
60
|
-
mode: folder
|
|
74
|
+
title: User Profile
|
|
75
|
+
wsjf: 3.8
|
|
76
|
+
capsule_dir: epics/e02-user-profile
|
|
61
77
|
```
|
|
62
78
|
|
|
63
|
-
### 5. Save epic
|
|
79
|
+
### 5. Save epic manifest (`epic.yaml`)
|
|
64
80
|
|
|
65
|
-
|
|
81
|
+
Each epic capsule directory contains an `epic.yaml` manifest:
|
|
66
82
|
|
|
67
83
|
```yaml
|
|
68
84
|
id: e01
|
|
69
|
-
title:
|
|
85
|
+
title: Auth System
|
|
70
86
|
wsjf: 4.5
|
|
71
|
-
|
|
87
|
+
total_bcps: 8
|
|
88
|
+
status: in_progress
|
|
72
89
|
stories:
|
|
73
90
|
- id: e01s01
|
|
74
|
-
title:
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
91
|
+
title: Login
|
|
92
|
+
bcps: 3
|
|
93
|
+
status: todo
|
|
94
|
+
spec: e01s01-login.md
|
|
95
|
+
tasks: e01s01-tasks.yaml
|
|
96
|
+
- id: e01s02
|
|
97
|
+
title: JWT Token Management
|
|
98
|
+
bcps: 5
|
|
99
|
+
status: todo
|
|
100
|
+
spec: e01s02-jwt.md
|
|
101
|
+
tasks: e01s02-tasks.yaml
|
|
78
102
|
```
|
|
79
103
|
|
|
80
|
-
|
|
104
|
+
### 6. Save story specs (countable-story-format .md)
|
|
81
105
|
|
|
82
|
-
|
|
106
|
+
Each story becomes a standalone `.md` file following [countable-story-format.md](file:///Users/danielvm/Developer/bigpowers/countable-story-format.md). Minimum: maturity 3 (Countable) with all 20 sections present. Acceptance criteria in §17 use Gherkin scenarios.
|
|
83
107
|
|
|
84
|
-
|
|
108
|
+
### 7. Save decoupled task files (`-tasks.yaml`)
|
|
109
|
+
|
|
110
|
+
Each story has a decoupled `-tasks.yaml` with implementation steps:
|
|
111
|
+
|
|
112
|
+
```yaml
|
|
113
|
+
story_id: e01s01
|
|
114
|
+
title: Login
|
|
115
|
+
status: todo
|
|
116
|
+
bcps: 3
|
|
117
|
+
tasks:
|
|
118
|
+
- id: 1
|
|
119
|
+
description: "Add login form component tests"
|
|
120
|
+
verify: "npm test -- login-form.test.tsx"
|
|
121
|
+
status: todo
|
|
122
|
+
- id: 2
|
|
123
|
+
description: "Implement login form with validation"
|
|
124
|
+
verify: "npm test -- login-form.test.tsx"
|
|
125
|
+
status: todo
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
> **HARD GATE** — Every task MUST have a runnable `verify:` command. No `verify:` = not a task.
|
|
129
|
+
|
|
130
|
+
→ verify: `bash scripts/validate-specs-yaml.sh`
|
|
85
131
|
|
|
86
|
-
###
|
|
132
|
+
### 8. Sync execution status
|
|
87
133
|
|
|
88
134
|
```bash
|
|
89
135
|
bash scripts/sync-status-from-epics.sh
|
|
90
136
|
```
|
|
91
137
|
|
|
92
|
-
###
|
|
138
|
+
### 9. Snapshot on planning close (optional)
|
|
93
139
|
|
|
94
|
-
Copy to `specs/
|
|
140
|
+
Copy to `specs/product/snapshots/release-<version>/` when the user approves the plan.
|
|
95
141
|
|
|
96
|
-
###
|
|
142
|
+
### 10. Suggest next steps
|
|
97
143
|
|
|
98
144
|
- Run `assess-impact` before `plan-work` for any story touching existing modules.
|
|
99
145
|
- Run `plan-work` per story for detailed steps inside the epic shard.
|
package/plan-work/SKILL.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plan-work
|
|
3
3
|
model: opus
|
|
4
|
-
description: Write detailed implementation tasks into the active epic
|
|
4
|
+
description: Write detailed implementation tasks into the active epic capsule directory (specs/epics/eNN-slug/). Produces decoupled story .md specs (countable-story-format) and runnable -tasks.yaml files. 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 the **active epic
|
|
9
|
+
Produce a detailed, verifiable implementation plan in the **active epic capsule directory** (`specs/epics/eNN-slug/`). Output: a story spec `.md` file (countable-story-format) and a decoupled `eNNsYY-tasks.yaml` with runnable verify commands. "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 the **active epic shard**
|
|
|
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.yaml`, `
|
|
19
|
+
Read any existing `specs/` files: `release-plan.yaml`, `product/SCOPE_LATEST.yaml`, active epic capsule `epics/<capsule_dir>/epic.yaml`, `tech-architecture/tech-stack.md`, `product/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?
|
|
@@ -63,11 +63,27 @@ Break the implementation into the smallest possible steps where each step:
|
|
|
63
63
|
|
|
64
64
|
**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.
|
|
65
65
|
|
|
66
|
-
### 3. Write
|
|
66
|
+
### 3. Write capsule story spec + tasks
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
Output two files inside the active epic capsule directory:
|
|
69
69
|
|
|
70
|
-
**
|
|
70
|
+
**Story spec:** `specs/epics/<capsule>/eNNsYY-<slug>.md` — populated [countable-story-format](file:///Users/danielvm/Developer/bigpowers/countable-story-format.md) with all 20 sections. Minimum maturity: 3 (Countable). Acceptance criteria in §17.
|
|
71
|
+
|
|
72
|
+
**Task checklist:** `specs/epics/<capsule>/eNNsYY-tasks.yaml` — decoupled execution steps:
|
|
73
|
+
|
|
74
|
+
```yaml
|
|
75
|
+
story_id: e01s01
|
|
76
|
+
title: Login
|
|
77
|
+
status: todo
|
|
78
|
+
bcps: 3
|
|
79
|
+
tasks:
|
|
80
|
+
- id: 1
|
|
81
|
+
description: "Add login form component tests"
|
|
82
|
+
verify: "npm test -- login-form.test.tsx"
|
|
83
|
+
status: todo
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Update `specs/epics/<capsule>/epic.yaml` manifest to list the story and its BCPs. Run `bash scripts/sync-status-from-epics.sh` after structural changes.
|
|
71
87
|
|
|
72
88
|
<plan-template>
|
|
73
89
|
|
|
@@ -133,7 +149,7 @@ Before finalizing, confirm:
|
|
|
133
149
|
- Is the granularity right (not too coarse, not too fine)?
|
|
134
150
|
- Are the verify commands actually runnable in this project?
|
|
135
151
|
|
|
136
|
-
After writing
|
|
152
|
+
After writing capsule tasks, suggest `kickoff-branch` (if not already on a feature branch) then `build-epic`, `execute-plan`, or `develop-tdd`.
|
|
137
153
|
|
|
138
154
|
## Sub-operations
|
|
139
155
|
|
package/release-branch/SKILL.md
CHANGED
|
@@ -132,6 +132,21 @@ gh pr merge --squash --delete-branch
|
|
|
132
132
|
3. Tag the repo (e.g., `v2.1.0`).
|
|
133
133
|
4. Generate release notes.
|
|
134
134
|
|
|
135
|
+
### 7a. Archive completed epic capsule
|
|
136
|
+
|
|
137
|
+
> **HARD GATE** — When an epic's stories are all complete (all marked `done` in `execution-status.yaml`), move the epic capsule directory to the archive.
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
EPIC_CAPSULE="specs/epics/eNN-slug"
|
|
141
|
+
if [ -d "$EPIC_CAPSULE" ]; then
|
|
142
|
+
mkdir -p specs/epics/archive
|
|
143
|
+
mv "$EPIC_CAPSULE" "specs/epics/archive/"
|
|
144
|
+
echo "Archived: $EPIC_CAPSULE → specs/epics/archive/"
|
|
145
|
+
fi
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Rationale:** Archiving completed epics removes inactive context from the agent workspace, preserving token budget (C2/C6). The capsule directory (epic.yaml + stories + tasks + epic-local ADRs) moves as a unit — nothing is orphaned.
|
|
149
|
+
|
|
135
150
|
### 8. Clean up worktree (if not done by land-branch.sh)
|
|
136
151
|
|
|
137
152
|
```bash
|
package/research-first/SKILL.md
CHANGED
|
@@ -10,7 +10,7 @@ model: sonnet
|
|
|
10
10
|
|
|
11
11
|
## Process
|
|
12
12
|
|
|
13
|
-
1. Read `specs/
|
|
13
|
+
1. Read `specs/product/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
16
|
4. Append `## Prior Art` to `requirements/SCOPE_LATEST.yaml` notes or the active epic story.
|
|
@@ -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/product/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.
|