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 +1 -1
- package/.pi/prompts/build-epic.md +22 -0
- package/.pi/prompts/compose-workflow.md +29 -5
- package/.pi/prompts/develop-tdd.md +20 -0
- package/.pi/prompts/kickoff-branch.md +26 -1
- package/.pi/prompts/verify-work.md +30 -0
- package/.pi/skills/build-epic/SKILL.md +22 -0
- package/.pi/skills/compose-workflow/SKILL.md +29 -5
- package/.pi/skills/develop-tdd/SKILL.md +20 -0
- package/.pi/skills/kickoff-branch/SKILL.md +26 -1
- package/.pi/skills/verify-work/SKILL.md +30 -0
- package/CHANGELOG.md +19 -0
- package/SKILL-INDEX.md +1 -1
- package/build-epic/SKILL.md +22 -0
- package/compose-workflow/SKILL.md +29 -5
- package/develop-tdd/SKILL.md +20 -0
- package/kickoff-branch/SKILL.md +26 -1
- package/package.json +1 -1
- package/skills-lock.json +5 -5
- package/verify-work/SKILL.md +30 -0
package/.pi/package.json
CHANGED
|
@@ -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/
|
|
14
|
-
-
|
|
15
|
-
-
|
|
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: `
|
|
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
|
-
|
|
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/
|
|
16
|
-
-
|
|
17
|
-
-
|
|
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: `
|
|
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
|
-
|
|
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-
|
|
6
|
+
**Generated:** 2026-06-22T03:20:14Z
|
|
7
7
|
**Skills:** 68
|
|
8
8
|
|
|
9
9
|
---
|
package/build-epic/SKILL.md
CHANGED
|
@@ -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/
|
|
15
|
-
-
|
|
16
|
-
-
|
|
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: `
|
|
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.
|
package/develop-tdd/SKILL.md
CHANGED
|
@@ -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
|
package/kickoff-branch/SKILL.md
CHANGED
|
@@ -32,7 +32,32 @@ git status # working tree MUST be clean
|
|
|
32
32
|
git log --oneline -5
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
|
|
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
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
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": "
|
|
321
|
+
"sha256": "44f96eac8380c15b",
|
|
322
322
|
"path": "verify-work/SKILL.md"
|
|
323
323
|
},
|
|
324
324
|
"visual-dashboard": {
|
package/verify-work/SKILL.md
CHANGED
|
@@ -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"`
|