bigpowers 2.24.0 → 2.26.0

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/.pi/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigpowers",
3
- "version": "2.24.0",
3
+ "version": "2.26.0",
4
4
  "description": "68 skills — 61 agent skills for spec-driven, test-first software development by solo developers",
5
5
  "keywords": [
6
6
  "pi-package"
@@ -46,6 +46,28 @@ After step 5 (verify-work) completes successfully, step 6 runs `audit-code` auto
46
46
  4. **Audit artifact:** Full audit report saved to `specs/verifications/AUDIT-<epic>-<story>.md` regardless of pass/fail, for reviewer traceability.
47
47
  5. **Enforce F.I.R.S.T:** After audit-code passes, run `enforce-first --quick` on new/modified tests. Append F.I.R.S.T violations (if any) to the audit report. Failing F.I.R.S.T criteria trigger the same loop-back to step 4.
48
48
 
49
+ ## --fast mode
50
+
51
+ Coalesces read-and-report steps to reduce token overhead. Activate with `build-epic --fast`.
52
+
53
+ | Normal | --fast | Change |
54
+ |--------|--------|--------|
55
+ | Step 1 (survey-context) | 1+2 together | survey + plan in one invocation |
56
+ | Step 2 (plan-work) | (absorbed into 1) | — |
57
+ | Step 3 (kickoff-branch) | Step 2 | unchanged, sequential |
58
+ | Step 4 (develop-tdd) | Step 3 | unchanged, sequential |
59
+ | Step 5 (verify-work) | Step 4 | unchanged, sequential |
60
+ | Step 6 (audit-code) | 5+6 together | audit + commit-message in one invocation |
61
+ | Step 7 (commit-message) | (absorbed into 6) | — |
62
+ | Step 8 (release-branch) | Step 7 | unchanged, sequential |
63
+
64
+ **Total invocations:** 8 → 6 per story.
65
+
66
+ **Rules:**
67
+ - Steps 3/4/5/8 (kickoff, develop, verify, release) still run sequentially — they require user interaction or branch state.
68
+ - `--fast` does NOT skip any checklist items; it only coalesces steps that are pure read-and-report.
69
+ - Record `epic_cycle.fast_mode: true` in `state.yaml` when this flag is active.
70
+
49
71
  ## Handoff
50
72
 
51
73
  Write `handoff.next_skill` and `handoff.context` in `state.yaml` when pausing mid-epic.
@@ -10,16 +10,40 @@ description: Chain multiple bigpowers skills into a custom workflow recipe saved
10
10
  ## Process
11
11
 
12
12
  1. Interview: goal, phases, which skills, gates between steps.
13
- 2. Write `specs/WORKFLOW-<name>.md`:
14
- - Trigger ("Use when...")
15
- - Ordered steps: `skill artefact → verify`
16
- - HARD GATEs between phases
13
+ 2. Write `specs/workflows/<name>.yaml`:
14
+ - `name`, `command`, `description`, `skills[]`, `verify`
15
+ - Optional: `args` for skill-specific arguments
17
16
  3. Register in state.yaml Active Decisions.
18
17
  4. Optional: reference from `orchestrate-project` Ad-Hoc mode.
19
18
 
19
+ > **Prefer the YAML recipe format** over the legacy `specs/WORKFLOW-<name>.md` markdown format.
20
+ > YAML recipes are command-mappable, machine-readable, and listed in the Standard Recipe Library.
21
+
22
+ ## Standard Recipe Library
23
+
24
+ Pre-built recipes in `specs/workflows/` map agentic stack commands to skill chains.
25
+ Reference them in AGENTS.md so `/command` directly invokes the matching recipe.
26
+
27
+ | Command | Workflow | Skill chain |
28
+ |---------|----------|-------------|
29
+ | `/check-stack` | check-stack | survey-context → assess-impact → setup-environment |
30
+ | `/ship` | ship | audit-code → commit-message → release-branch |
31
+ | `/tdd` | tdd | develop-tdd → enforce-first |
32
+ | `/code-review` | code-review | audit-code → request-review → respond-review |
33
+ | `/security` | security | audit-code → request-review |
34
+ | `/plan` | plan | survey-context → research-first → plan-work |
35
+ | `/build-fix` | build-fix | investigate-bug → diagnose-root → develop-tdd → validate-fix |
36
+ | `/e2e` | e2e | smoke-test → verify-work |
37
+
38
+ Add to `AGENTS.md`:
39
+ ```
40
+ /check-stack = compose-workflow check-stack
41
+ /ship = compose-workflow ship
42
+ ```
43
+
20
44
  ## Verify
21
45
 
22
- → verify: `test -f specs/WORKFLOW-*.md && grep -c "verify:" specs/WORKFLOW-*.md | awk '{if($1>0) print "OK"}'`
46
+ → verify: `ls specs/workflows/*.yaml 2>/dev/null | wc -l | awk '{if($1>=8) print "OK: " $1 " recipes"; else print "FAIL"}'`
23
47
 
24
48
  See [REFERENCE.md](REFERENCE.md) for template.
25
49
 
@@ -148,6 +148,26 @@ Once all tests pass: locate the Verification Script in the active epic capsule,
148
148
  [ ] verify: command passes
149
149
  ```
150
150
 
151
+ ## --config mode
152
+
153
+ For pure-config tasks (update package.json, edit YAML, tweak manifest) where there is no test infrastructure to write against. The RED state is "verify command fails"; GREEN is "verify command passes."
154
+
155
+ **When to use:** task has a runnable `verify:` command and the deliverable is a config file change with no new behavior to unit-test. Invoke as `develop-tdd --config`.
156
+
157
+ **Cycle:**
158
+
159
+ ```
160
+ RED: Run verify command → it fails (expected)
161
+ GREEN: Apply config change → verify passes
162
+ COMMIT: commit: chore(<scope>): <change>
163
+ ```
164
+
165
+ **Rules:**
166
+ - Skips test-writing phase entirely — do NOT write a test file for config tasks.
167
+ - `verify:` command is **required** and must be runnable (no placeholder).
168
+ - Commit message follows Conventional Commits (`chore:` or `feat:` as appropriate).
169
+ - Still runs full `verify-work` after all tasks complete.
170
+
151
171
  ## Handoff
152
172
 
153
173
  Gate: READY -> next: verify-work
@@ -31,7 +31,32 @@ git status # working tree MUST be clean
31
31
  git log --oneline -5
32
32
  ```
33
33
 
34
- If working tree is dirty, ask the user to stash or commit first. If not on `$DEFAULT` after checkout, stop and fix before continuing.
34
+ **Spec-only pre-kickoff** before enforcing the clean-tree gate, check whether dirty files are spec artifacts:
35
+
36
+ ```bash
37
+ DIRTY=$(git status --porcelain | awk '{print $2}')
38
+ NON_SPEC=$(echo "$DIRTY" | grep -v '^specs/' || true)
39
+
40
+ if [ -z "$DIRTY" ]; then
41
+ : # clean — proceed
42
+ elif [ -z "$NON_SPEC" ]; then
43
+ # spec-only dirty tree — offer auto-commit
44
+ echo "Dirty spec artifacts: $(echo $DIRTY | tr '\n' ' ')"
45
+ read -p "Commit spec artifacts before kickoff? [Y/n]: " CONFIRM
46
+ CONFIRM=${CONFIRM:-Y}
47
+ if [[ "$CONFIRM" =~ ^[Yy] ]]; then
48
+ git add specs/
49
+ git commit -m "chore(state): checkpoint before kickoff"
50
+ fi
51
+ else
52
+ echo "Dirty tree: $NON_SPEC (not a spec artifact). Stash or commit before proceeding."
53
+ exit 1
54
+ fi
55
+ ```
56
+
57
+ - **Spec artifacts** match `specs/` — state.yaml, epics YAMLs, execution-status.yaml, etc.
58
+ - **Non-spec dirty files** (src/, scripts/, SKILL.md, …) still enforce the full clean-tree gate.
59
+ - If not on `$DEFAULT` after checkout, stop and fix before continuing.
35
60
 
36
61
  ### 3. Pre-flight & Conflict Resolution
37
62
 
@@ -15,6 +15,7 @@ Review answers "is the code good?"; Verify answers "does the built thing do what
15
15
 
16
16
  - Default: full UAT plus gaps loop
17
17
  - --smoke: Cold-start only plus one happy-path flow. Use for hotfixes.
18
+ - --cli: CLI tool verification — replaces cold-start with binary smoke checklist. Use for CLI tools with no server process.
18
19
 
19
20
  ## Process
20
21
 
@@ -23,6 +24,12 @@ Review answers "is the code good?"; Verify answers "does the built thing do what
23
24
  0. **Branch check** — must not be `main`/`master`.
24
25
 
25
26
  1. Read active story tasks from `specs/epics/<capsule>/eNNsYY-tasks.yaml` and story spec from `specs/epics/<capsule>/eNNsYY-<slug>.md` (countable-story-format, Gherkin in §17).
27
+ 1a. **Pre-UAT verify validation** — for each task's `verify:` command, run it and detect pattern mismatches before UAT begins. If a grep/awk/jq command fails, check whether the pattern is wrong vs. a genuine failure:
28
+ ```bash
29
+ # For a failing grep -q 'PATTERN' FILE, check what is actually in FILE
30
+ grep 'PATTERN' FILE || grep -n '' FILE | head -20 # show nearest lines
31
+ ```
32
+ Report: `"Pattern 'X' not found. Nearest match: 'Y' at line N"` and ask `"Update verify command? [Y/n]"`. Fix before proceeding — a mismatched verify command produces false failures during UAT.
26
33
  2. **Cold-start smoke** (if app): stop server, clear caches, boot from scratch.
27
34
  3. **AGENTS.md preflight** — before running default checks, call `bash scripts/bp-read-agents.sh` to detect project-specific commands. If `BP_PREFLIGHT` is set, run it instead of the default mechanical gates (or in addition to them if the project requires both). Output: `"Using preflight from AGENTS.md: <cmd>"`. Fall back to `CLAUDE.md` commands if AGENTS.md is absent.
28
35
  4. Mechanical gates: build → typecheck → lint → tests (from `CLAUDE.md` or AGENTS.md).
@@ -90,6 +97,29 @@ phases:
90
97
 
91
98
  > **HARD GATE** — Verification evidence MUST be persisted before marking the story done. No evidence = not verified.
92
99
 
100
+ ## --cli mode
101
+
102
+ For CLI tools where cold-start smoke (stop server / clear caches) does not apply. Auto-detected when the project has no server process (no `listen()`, no `server.js`, no blocking `main()`); or explicitly activated with `--cli`.
103
+
104
+ **Auto-detect binary name:**
105
+ ```bash
106
+ # Cargo.toml
107
+ BINARY=$(grep '^name' Cargo.toml | head -1 | awk -F'"' '{print $2}')
108
+ # package.json
109
+ BINARY=$(node -e "console.log(require('./package.json').bin && Object.keys(require('./package.json').bin)[0] || '')" 2>/dev/null)
110
+ # Makefile
111
+ BINARY=$(grep '^BIN\s*=' Makefile 2>/dev/null | awk '{print $3}')
112
+ ```
113
+
114
+ **CLI verification checklist (replaces cold-start smoke):**
115
+
116
+ 1. `--help` smoke: `$BINARY --help` → assert output contains "Usage"
117
+ 2. `--version` check: `$BINARY --version` → assert version matches manifest (Cargo.toml / package.json)
118
+ 3. Happy-path: run documented example command from README.md → assert non-empty output
119
+ 4. Edge case: `$BINARY --invalid-flag` → assert exit code ≠ 0 and error message printed
120
+
121
+ No "stop server" or "clear caches" steps are executed in `--cli` mode. Steps 3–6 of the default process (mechanical gates, UAT, gaps loop) still run unchanged.
122
+
93
123
  ## Verify
94
124
 
95
125
  → verify: `test -f specs/verifications/<story_id>-verify.yaml && echo "Evidence persisted"`
@@ -48,6 +48,28 @@ After step 5 (verify-work) completes successfully, step 6 runs `audit-code` auto
48
48
  4. **Audit artifact:** Full audit report saved to `specs/verifications/AUDIT-<epic>-<story>.md` regardless of pass/fail, for reviewer traceability.
49
49
  5. **Enforce F.I.R.S.T:** After audit-code passes, run `enforce-first --quick` on new/modified tests. Append F.I.R.S.T violations (if any) to the audit report. Failing F.I.R.S.T criteria trigger the same loop-back to step 4.
50
50
 
51
+ ## --fast mode
52
+
53
+ Coalesces read-and-report steps to reduce token overhead. Activate with `build-epic --fast`.
54
+
55
+ | Normal | --fast | Change |
56
+ |--------|--------|--------|
57
+ | Step 1 (survey-context) | 1+2 together | survey + plan in one invocation |
58
+ | Step 2 (plan-work) | (absorbed into 1) | — |
59
+ | Step 3 (kickoff-branch) | Step 2 | unchanged, sequential |
60
+ | Step 4 (develop-tdd) | Step 3 | unchanged, sequential |
61
+ | Step 5 (verify-work) | Step 4 | unchanged, sequential |
62
+ | Step 6 (audit-code) | 5+6 together | audit + commit-message in one invocation |
63
+ | Step 7 (commit-message) | (absorbed into 6) | — |
64
+ | Step 8 (release-branch) | Step 7 | unchanged, sequential |
65
+
66
+ **Total invocations:** 8 → 6 per story.
67
+
68
+ **Rules:**
69
+ - Steps 3/4/5/8 (kickoff, develop, verify, release) still run sequentially — they require user interaction or branch state.
70
+ - `--fast` does NOT skip any checklist items; it only coalesces steps that are pure read-and-report.
71
+ - Record `epic_cycle.fast_mode: true` in `state.yaml` when this flag is active.
72
+
51
73
  ## Handoff
52
74
 
53
75
  Write `handoff.next_skill` and `handoff.context` in `state.yaml` when pausing mid-epic.
@@ -12,16 +12,40 @@ model: sonnet
12
12
  ## Process
13
13
 
14
14
  1. Interview: goal, phases, which skills, gates between steps.
15
- 2. Write `specs/WORKFLOW-<name>.md`:
16
- - Trigger ("Use when...")
17
- - Ordered steps: `skill artefact → verify`
18
- - HARD GATEs between phases
15
+ 2. Write `specs/workflows/<name>.yaml`:
16
+ - `name`, `command`, `description`, `skills[]`, `verify`
17
+ - Optional: `args` for skill-specific arguments
19
18
  3. Register in state.yaml Active Decisions.
20
19
  4. Optional: reference from `orchestrate-project` Ad-Hoc mode.
21
20
 
21
+ > **Prefer the YAML recipe format** over the legacy `specs/WORKFLOW-<name>.md` markdown format.
22
+ > YAML recipes are command-mappable, machine-readable, and listed in the Standard Recipe Library.
23
+
24
+ ## Standard Recipe Library
25
+
26
+ Pre-built recipes in `specs/workflows/` map agentic stack commands to skill chains.
27
+ Reference them in AGENTS.md so `/command` directly invokes the matching recipe.
28
+
29
+ | Command | Workflow | Skill chain |
30
+ |---------|----------|-------------|
31
+ | `/check-stack` | check-stack | survey-context → assess-impact → setup-environment |
32
+ | `/ship` | ship | audit-code → commit-message → release-branch |
33
+ | `/tdd` | tdd | develop-tdd → enforce-first |
34
+ | `/code-review` | code-review | audit-code → request-review → respond-review |
35
+ | `/security` | security | audit-code → request-review |
36
+ | `/plan` | plan | survey-context → research-first → plan-work |
37
+ | `/build-fix` | build-fix | investigate-bug → diagnose-root → develop-tdd → validate-fix |
38
+ | `/e2e` | e2e | smoke-test → verify-work |
39
+
40
+ Add to `AGENTS.md`:
41
+ ```
42
+ /check-stack = compose-workflow check-stack
43
+ /ship = compose-workflow ship
44
+ ```
45
+
22
46
  ## Verify
23
47
 
24
- → verify: `test -f specs/WORKFLOW-*.md && grep -c "verify:" specs/WORKFLOW-*.md | awk '{if($1>0) print "OK"}'`
48
+ → verify: `ls specs/workflows/*.yaml 2>/dev/null | wc -l | awk '{if($1>=8) print "OK: " $1 " recipes"; else print "FAIL"}'`
25
49
 
26
50
  See [REFERENCE.md](REFERENCE.md) for template.
27
51
 
@@ -150,6 +150,26 @@ Once all tests pass: locate the Verification Script in the active epic capsule,
150
150
  [ ] verify: command passes
151
151
  ```
152
152
 
153
+ ## --config mode
154
+
155
+ For pure-config tasks (update package.json, edit YAML, tweak manifest) where there is no test infrastructure to write against. The RED state is "verify command fails"; GREEN is "verify command passes."
156
+
157
+ **When to use:** task has a runnable `verify:` command and the deliverable is a config file change with no new behavior to unit-test. Invoke as `develop-tdd --config`.
158
+
159
+ **Cycle:**
160
+
161
+ ```
162
+ RED: Run verify command → it fails (expected)
163
+ GREEN: Apply config change → verify passes
164
+ COMMIT: commit: chore(<scope>): <change>
165
+ ```
166
+
167
+ **Rules:**
168
+ - Skips test-writing phase entirely — do NOT write a test file for config tasks.
169
+ - `verify:` command is **required** and must be runnable (no placeholder).
170
+ - Commit message follows Conventional Commits (`chore:` or `feat:` as appropriate).
171
+ - Still runs full `verify-work` after all tasks complete.
172
+
153
173
  ## Handoff
154
174
 
155
175
  Gate: READY -> next: verify-work
@@ -33,7 +33,32 @@ git status # working tree MUST be clean
33
33
  git log --oneline -5
34
34
  ```
35
35
 
36
- If working tree is dirty, ask the user to stash or commit first. If not on `$DEFAULT` after checkout, stop and fix before continuing.
36
+ **Spec-only pre-kickoff** before enforcing the clean-tree gate, check whether dirty files are spec artifacts:
37
+
38
+ ```bash
39
+ DIRTY=$(git status --porcelain | awk '{print $2}')
40
+ NON_SPEC=$(echo "$DIRTY" | grep -v '^specs/' || true)
41
+
42
+ if [ -z "$DIRTY" ]; then
43
+ : # clean — proceed
44
+ elif [ -z "$NON_SPEC" ]; then
45
+ # spec-only dirty tree — offer auto-commit
46
+ echo "Dirty spec artifacts: $(echo $DIRTY | tr '\n' ' ')"
47
+ read -p "Commit spec artifacts before kickoff? [Y/n]: " CONFIRM
48
+ CONFIRM=${CONFIRM:-Y}
49
+ if [[ "$CONFIRM" =~ ^[Yy] ]]; then
50
+ git add specs/
51
+ git commit -m "chore(state): checkpoint before kickoff"
52
+ fi
53
+ else
54
+ echo "Dirty tree: $NON_SPEC (not a spec artifact). Stash or commit before proceeding."
55
+ exit 1
56
+ fi
57
+ ```
58
+
59
+ - **Spec artifacts** match `specs/` — state.yaml, epics YAMLs, execution-status.yaml, etc.
60
+ - **Non-spec dirty files** (src/, scripts/, SKILL.md, …) still enforce the full clean-tree gate.
61
+ - If not on `$DEFAULT` after checkout, stop and fix before continuing.
37
62
 
38
63
  ### 3. Pre-flight & Conflict Resolution
39
64
 
@@ -17,6 +17,7 @@ Review answers "is the code good?"; Verify answers "does the built thing do what
17
17
 
18
18
  - Default: full UAT plus gaps loop
19
19
  - --smoke: Cold-start only plus one happy-path flow. Use for hotfixes.
20
+ - --cli: CLI tool verification — replaces cold-start with binary smoke checklist. Use for CLI tools with no server process.
20
21
 
21
22
  ## Process
22
23
 
@@ -25,6 +26,12 @@ Review answers "is the code good?"; Verify answers "does the built thing do what
25
26
  0. **Branch check** — must not be `main`/`master`.
26
27
 
27
28
  1. Read active story tasks from `specs/epics/<capsule>/eNNsYY-tasks.yaml` and story spec from `specs/epics/<capsule>/eNNsYY-<slug>.md` (countable-story-format, Gherkin in §17).
29
+ 1a. **Pre-UAT verify validation** — for each task's `verify:` command, run it and detect pattern mismatches before UAT begins. If a grep/awk/jq command fails, check whether the pattern is wrong vs. a genuine failure:
30
+ ```bash
31
+ # For a failing grep -q 'PATTERN' FILE, check what is actually in FILE
32
+ grep 'PATTERN' FILE || grep -n '' FILE | head -20 # show nearest lines
33
+ ```
34
+ Report: `"Pattern 'X' not found. Nearest match: 'Y' at line N"` and ask `"Update verify command? [Y/n]"`. Fix before proceeding — a mismatched verify command produces false failures during UAT.
28
35
  2. **Cold-start smoke** (if app): stop server, clear caches, boot from scratch.
29
36
  3. **AGENTS.md preflight** — before running default checks, call `bash scripts/bp-read-agents.sh` to detect project-specific commands. If `BP_PREFLIGHT` is set, run it instead of the default mechanical gates (or in addition to them if the project requires both). Output: `"Using preflight from AGENTS.md: <cmd>"`. Fall back to `CLAUDE.md` commands if AGENTS.md is absent.
30
37
  4. Mechanical gates: build → typecheck → lint → tests (from `CLAUDE.md` or AGENTS.md).
@@ -92,6 +99,29 @@ phases:
92
99
 
93
100
  > **HARD GATE** — Verification evidence MUST be persisted before marking the story done. No evidence = not verified.
94
101
 
102
+ ## --cli mode
103
+
104
+ For CLI tools where cold-start smoke (stop server / clear caches) does not apply. Auto-detected when the project has no server process (no `listen()`, no `server.js`, no blocking `main()`); or explicitly activated with `--cli`.
105
+
106
+ **Auto-detect binary name:**
107
+ ```bash
108
+ # Cargo.toml
109
+ BINARY=$(grep '^name' Cargo.toml | head -1 | awk -F'"' '{print $2}')
110
+ # package.json
111
+ BINARY=$(node -e "console.log(require('./package.json').bin && Object.keys(require('./package.json').bin)[0] || '')" 2>/dev/null)
112
+ # Makefile
113
+ BINARY=$(grep '^BIN\s*=' Makefile 2>/dev/null | awk '{print $3}')
114
+ ```
115
+
116
+ **CLI verification checklist (replaces cold-start smoke):**
117
+
118
+ 1. `--help` smoke: `$BINARY --help` → assert output contains "Usage"
119
+ 2. `--version` check: `$BINARY --version` → assert version matches manifest (Cargo.toml / package.json)
120
+ 3. Happy-path: run documented example command from README.md → assert non-empty output
121
+ 4. Edge case: `$BINARY --invalid-flag` → assert exit code ≠ 0 and error message printed
122
+
123
+ No "stop server" or "clear caches" steps are executed in `--cli` mode. Steps 3–6 of the default process (mechanical gates, UAT, gaps loop) still run unchanged.
124
+
95
125
  ## Verify
96
126
 
97
127
  → verify: `test -f specs/verifications/<story_id>-verify.yaml && echo "Evidence persisted"`
package/CHANGELOG.md CHANGED
@@ -1,3 +1,22 @@
1
+ # [2.26.0](https://github.com/danielvm-git/bigpowers/compare/v2.25.0...v2.26.0) (2026-06-22)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **compose-workflow:** respond to code review — fix recipes and docs ([17ac105](https://github.com/danielvm-git/bigpowers/commit/17ac105371c25fd111821b3711648eb4009db314))
7
+
8
+
9
+ ### Features
10
+
11
+ * **e20:** Build-Epic Ergonomics & Flow Polish — all stories done ([80b4b9a](https://github.com/danielvm-git/bigpowers/commit/80b4b9acd049ae2521c29e1d66fc0be5b509cac9))
12
+
13
+ # [2.25.0](https://github.com/danielvm-git/bigpowers/compare/v2.24.0...v2.25.0) (2026-06-22)
14
+
15
+
16
+ ### Features
17
+
18
+ * **compose-workflow:** add standard recipe library with 8 agentic stack workflows ([2d61aed](https://github.com/danielvm-git/bigpowers/commit/2d61aedb60a5ee881d568b23cb922d49ee896990))
19
+
1
20
  # [2.24.0](https://github.com/danielvm-git/bigpowers/compare/v2.23.0...v2.24.0) (2026-06-22)
2
21
 
3
22
 
package/SKILL-INDEX.md CHANGED
@@ -3,7 +3,7 @@
3
3
  > **DO NOT EDIT** — This file is auto-generated by `scripts/generate-skill-index.sh`.
4
4
  > Edit `SKILL.md` source files or `skills-lock.json` instead. Run `bash scripts/sync-skills.sh` to regenerate.
5
5
 
6
- **Generated:** 2026-06-22T02:28:01Z
6
+ **Generated:** 2026-06-22T03:20:14Z
7
7
  **Skills:** 68
8
8
 
9
9
  ---
@@ -47,6 +47,28 @@ After step 5 (verify-work) completes successfully, step 6 runs `audit-code` auto
47
47
  4. **Audit artifact:** Full audit report saved to `specs/verifications/AUDIT-<epic>-<story>.md` regardless of pass/fail, for reviewer traceability.
48
48
  5. **Enforce F.I.R.S.T:** After audit-code passes, run `enforce-first --quick` on new/modified tests. Append F.I.R.S.T violations (if any) to the audit report. Failing F.I.R.S.T criteria trigger the same loop-back to step 4.
49
49
 
50
+ ## --fast mode
51
+
52
+ Coalesces read-and-report steps to reduce token overhead. Activate with `build-epic --fast`.
53
+
54
+ | Normal | --fast | Change |
55
+ |--------|--------|--------|
56
+ | Step 1 (survey-context) | 1+2 together | survey + plan in one invocation |
57
+ | Step 2 (plan-work) | (absorbed into 1) | — |
58
+ | Step 3 (kickoff-branch) | Step 2 | unchanged, sequential |
59
+ | Step 4 (develop-tdd) | Step 3 | unchanged, sequential |
60
+ | Step 5 (verify-work) | Step 4 | unchanged, sequential |
61
+ | Step 6 (audit-code) | 5+6 together | audit + commit-message in one invocation |
62
+ | Step 7 (commit-message) | (absorbed into 6) | — |
63
+ | Step 8 (release-branch) | Step 7 | unchanged, sequential |
64
+
65
+ **Total invocations:** 8 → 6 per story.
66
+
67
+ **Rules:**
68
+ - Steps 3/4/5/8 (kickoff, develop, verify, release) still run sequentially — they require user interaction or branch state.
69
+ - `--fast` does NOT skip any checklist items; it only coalesces steps that are pure read-and-report.
70
+ - Record `epic_cycle.fast_mode: true` in `state.yaml` when this flag is active.
71
+
50
72
  ## Handoff
51
73
 
52
74
  Write `handoff.next_skill` and `handoff.context` in `state.yaml` when pausing mid-epic.
@@ -11,15 +11,39 @@ model: sonnet
11
11
  ## Process
12
12
 
13
13
  1. Interview: goal, phases, which skills, gates between steps.
14
- 2. Write `specs/WORKFLOW-<name>.md`:
15
- - Trigger ("Use when...")
16
- - Ordered steps: `skill artefact → verify`
17
- - HARD GATEs between phases
14
+ 2. Write `specs/workflows/<name>.yaml`:
15
+ - `name`, `command`, `description`, `skills[]`, `verify`
16
+ - Optional: `args` for skill-specific arguments
18
17
  3. Register in state.yaml Active Decisions.
19
18
  4. Optional: reference from `orchestrate-project` Ad-Hoc mode.
20
19
 
20
+ > **Prefer the YAML recipe format** over the legacy `specs/WORKFLOW-<name>.md` markdown format.
21
+ > YAML recipes are command-mappable, machine-readable, and listed in the Standard Recipe Library.
22
+
23
+ ## Standard Recipe Library
24
+
25
+ Pre-built recipes in `specs/workflows/` map agentic stack commands to skill chains.
26
+ Reference them in AGENTS.md so `/command` directly invokes the matching recipe.
27
+
28
+ | Command | Workflow | Skill chain |
29
+ |---------|----------|-------------|
30
+ | `/check-stack` | check-stack | survey-context → assess-impact → setup-environment |
31
+ | `/ship` | ship | audit-code → commit-message → release-branch |
32
+ | `/tdd` | tdd | develop-tdd → enforce-first |
33
+ | `/code-review` | code-review | audit-code → request-review → respond-review |
34
+ | `/security` | security | audit-code → request-review |
35
+ | `/plan` | plan | survey-context → research-first → plan-work |
36
+ | `/build-fix` | build-fix | investigate-bug → diagnose-root → develop-tdd → validate-fix |
37
+ | `/e2e` | e2e | smoke-test → verify-work |
38
+
39
+ Add to `AGENTS.md`:
40
+ ```
41
+ /check-stack = compose-workflow check-stack
42
+ /ship = compose-workflow ship
43
+ ```
44
+
21
45
  ## Verify
22
46
 
23
- → verify: `test -f specs/WORKFLOW-*.md && grep -c "verify:" specs/WORKFLOW-*.md | awk '{if($1>0) print "OK"}'`
47
+ → verify: `ls specs/workflows/*.yaml 2>/dev/null | wc -l | awk '{if($1>=8) print "OK: " $1 " recipes"; else print "FAIL"}'`
24
48
 
25
49
  See [REFERENCE.md](REFERENCE.md) for template.
@@ -149,6 +149,26 @@ Once all tests pass: locate the Verification Script in the active epic capsule,
149
149
  [ ] verify: command passes
150
150
  ```
151
151
 
152
+ ## --config mode
153
+
154
+ For pure-config tasks (update package.json, edit YAML, tweak manifest) where there is no test infrastructure to write against. The RED state is "verify command fails"; GREEN is "verify command passes."
155
+
156
+ **When to use:** task has a runnable `verify:` command and the deliverable is a config file change with no new behavior to unit-test. Invoke as `develop-tdd --config`.
157
+
158
+ **Cycle:**
159
+
160
+ ```
161
+ RED: Run verify command → it fails (expected)
162
+ GREEN: Apply config change → verify passes
163
+ COMMIT: commit: chore(<scope>): <change>
164
+ ```
165
+
166
+ **Rules:**
167
+ - Skips test-writing phase entirely — do NOT write a test file for config tasks.
168
+ - `verify:` command is **required** and must be runnable (no placeholder).
169
+ - Commit message follows Conventional Commits (`chore:` or `feat:` as appropriate).
170
+ - Still runs full `verify-work` after all tasks complete.
171
+
152
172
  ## Handoff
153
173
 
154
174
  Gate: READY -> next: verify-work
@@ -32,7 +32,32 @@ git status # working tree MUST be clean
32
32
  git log --oneline -5
33
33
  ```
34
34
 
35
- If working tree is dirty, ask the user to stash or commit first. If not on `$DEFAULT` after checkout, stop and fix before continuing.
35
+ **Spec-only pre-kickoff** before enforcing the clean-tree gate, check whether dirty files are spec artifacts:
36
+
37
+ ```bash
38
+ DIRTY=$(git status --porcelain | awk '{print $2}')
39
+ NON_SPEC=$(echo "$DIRTY" | grep -v '^specs/' || true)
40
+
41
+ if [ -z "$DIRTY" ]; then
42
+ : # clean — proceed
43
+ elif [ -z "$NON_SPEC" ]; then
44
+ # spec-only dirty tree — offer auto-commit
45
+ echo "Dirty spec artifacts: $(echo $DIRTY | tr '\n' ' ')"
46
+ read -p "Commit spec artifacts before kickoff? [Y/n]: " CONFIRM
47
+ CONFIRM=${CONFIRM:-Y}
48
+ if [[ "$CONFIRM" =~ ^[Yy] ]]; then
49
+ git add specs/
50
+ git commit -m "chore(state): checkpoint before kickoff"
51
+ fi
52
+ else
53
+ echo "Dirty tree: $NON_SPEC (not a spec artifact). Stash or commit before proceeding."
54
+ exit 1
55
+ fi
56
+ ```
57
+
58
+ - **Spec artifacts** match `specs/` — state.yaml, epics YAMLs, execution-status.yaml, etc.
59
+ - **Non-spec dirty files** (src/, scripts/, SKILL.md, …) still enforce the full clean-tree gate.
60
+ - If not on `$DEFAULT` after checkout, stop and fix before continuing.
36
61
 
37
62
  ### 3. Pre-flight & Conflict Resolution
38
63
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigpowers",
3
- "version": "2.24.0",
3
+ "version": "2.26.0",
4
4
  "description": "61 agent skills for spec-driven, test-first software development by solo developers",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/skills-lock.json CHANGED
@@ -18,7 +18,7 @@
18
18
  },
19
19
  "build-epic": {
20
20
  "description": "Eight-step epic build cycle — reads state.yaml, execution-status.yaml, and one epic capsule; updates status via bp-yaml-set or direct edit. Resume mode runs one step per invocation. Use instead of ad-hoc execute-plan for release work.",
21
- "sha256": "b7049084cd180053",
21
+ "sha256": "7a376ef092fde9cc",
22
22
  "path": "build-epic/SKILL.md"
23
23
  },
24
24
  "change-request": {
@@ -33,7 +33,7 @@
33
33
  },
34
34
  "compose-workflow": {
35
35
  "description": "Chain multiple bigpowers skills into a custom workflow recipe saved in specs/. Use when a project repeats a non-standard skill sequence, or user wants a documented playbook beyond orchestrate-project modes.",
36
- "sha256": "dc9abafd52cde7b3",
36
+ "sha256": "854e272ca7bd6e3a",
37
37
  "path": "compose-workflow/SKILL.md"
38
38
  },
39
39
  "craft-skill": {
@@ -73,7 +73,7 @@
73
73
  },
74
74
  "develop-tdd": {
75
75
  "description": "Test-driven development with red-green-refactor loop using vertical slices. Use for features (epic tasks) or bugs (specs/bugs/BUG-*.md).",
76
- "sha256": "6ace47f7db4642d4",
76
+ "sha256": "e050f400da14eff3",
77
77
  "path": "develop-tdd/SKILL.md"
78
78
  },
79
79
  "diagnose-root": {
@@ -148,7 +148,7 @@
148
148
  },
149
149
  "kickoff-branch": {
150
150
  "description": "Create a git worktree and feature branch, then verify a clean test baseline before any code is written. Use when starting a new feature or task, when user wants to work in isolation from main, or mentions \"start a branch\" or \"new worktree\".",
151
- "sha256": "77864a4086f91f60",
151
+ "sha256": "d3c74c05a8d790c0",
152
152
  "path": "kickoff-branch/SKILL.md"
153
153
  },
154
154
  "map-codebase": {
@@ -318,7 +318,7 @@
318
318
  },
319
319
  "verify-work": {
320
320
  "description": "Multi-phase UAT gate — cold-start smoke, build, typecheck, lint, tests, step-by-step manual verification, gaps-closure loop. Use after execute-plan or develop-tdd, before audit-code.",
321
- "sha256": "d1aeab669a9c5621",
321
+ "sha256": "44f96eac8380c15b",
322
322
  "path": "verify-work/SKILL.md"
323
323
  },
324
324
  "visual-dashboard": {
@@ -16,6 +16,7 @@ Review answers "is the code good?"; Verify answers "does the built thing do what
16
16
 
17
17
  - Default: full UAT plus gaps loop
18
18
  - --smoke: Cold-start only plus one happy-path flow. Use for hotfixes.
19
+ - --cli: CLI tool verification — replaces cold-start with binary smoke checklist. Use for CLI tools with no server process.
19
20
 
20
21
  ## Process
21
22
 
@@ -24,6 +25,12 @@ Review answers "is the code good?"; Verify answers "does the built thing do what
24
25
  0. **Branch check** — must not be `main`/`master`.
25
26
 
26
27
  1. Read active story tasks from `specs/epics/<capsule>/eNNsYY-tasks.yaml` and story spec from `specs/epics/<capsule>/eNNsYY-<slug>.md` (countable-story-format, Gherkin in §17).
28
+ 1a. **Pre-UAT verify validation** — for each task's `verify:` command, run it and detect pattern mismatches before UAT begins. If a grep/awk/jq command fails, check whether the pattern is wrong vs. a genuine failure:
29
+ ```bash
30
+ # For a failing grep -q 'PATTERN' FILE, check what is actually in FILE
31
+ grep 'PATTERN' FILE || grep -n '' FILE | head -20 # show nearest lines
32
+ ```
33
+ Report: `"Pattern 'X' not found. Nearest match: 'Y' at line N"` and ask `"Update verify command? [Y/n]"`. Fix before proceeding — a mismatched verify command produces false failures during UAT.
27
34
  2. **Cold-start smoke** (if app): stop server, clear caches, boot from scratch.
28
35
  3. **AGENTS.md preflight** — before running default checks, call `bash scripts/bp-read-agents.sh` to detect project-specific commands. If `BP_PREFLIGHT` is set, run it instead of the default mechanical gates (or in addition to them if the project requires both). Output: `"Using preflight from AGENTS.md: <cmd>"`. Fall back to `CLAUDE.md` commands if AGENTS.md is absent.
29
36
  4. Mechanical gates: build → typecheck → lint → tests (from `CLAUDE.md` or AGENTS.md).
@@ -91,6 +98,29 @@ phases:
91
98
 
92
99
  > **HARD GATE** — Verification evidence MUST be persisted before marking the story done. No evidence = not verified.
93
100
 
101
+ ## --cli mode
102
+
103
+ For CLI tools where cold-start smoke (stop server / clear caches) does not apply. Auto-detected when the project has no server process (no `listen()`, no `server.js`, no blocking `main()`); or explicitly activated with `--cli`.
104
+
105
+ **Auto-detect binary name:**
106
+ ```bash
107
+ # Cargo.toml
108
+ BINARY=$(grep '^name' Cargo.toml | head -1 | awk -F'"' '{print $2}')
109
+ # package.json
110
+ BINARY=$(node -e "console.log(require('./package.json').bin && Object.keys(require('./package.json').bin)[0] || '')" 2>/dev/null)
111
+ # Makefile
112
+ BINARY=$(grep '^BIN\s*=' Makefile 2>/dev/null | awk '{print $3}')
113
+ ```
114
+
115
+ **CLI verification checklist (replaces cold-start smoke):**
116
+
117
+ 1. `--help` smoke: `$BINARY --help` → assert output contains "Usage"
118
+ 2. `--version` check: `$BINARY --version` → assert version matches manifest (Cargo.toml / package.json)
119
+ 3. Happy-path: run documented example command from README.md → assert non-empty output
120
+ 4. Edge case: `$BINARY --invalid-flag` → assert exit code ≠ 0 and error message printed
121
+
122
+ No "stop server" or "clear caches" steps are executed in `--cli` mode. Steps 3–6 of the default process (mechanical gates, UAT, gaps loop) still run unchanged.
123
+
94
124
  ## Verify
95
125
 
96
126
  → verify: `test -f specs/verifications/<story_id>-verify.yaml && echo "Evidence persisted"`