bigpowers 2.30.0 → 2.32.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.30.0",
3
+ "version": "2.32.0",
4
4
  "description": "70 skills — 61 agent skills for spec-driven, test-first software development by solo developers",
5
5
  "keywords": [
6
6
  "pi-package"
@@ -126,19 +126,38 @@ See [REFERENCE.md — REQUIREMENTS_TRACE.yaml format](./REFERENCE.md#requirement
126
126
 
127
127
  ### Step 4 — Generate state.yaml
128
128
 
129
- Always regenerate `specs/state.yaml` from scratch in bigpowers format (see REFERENCE.md for template):
129
+ Always regenerate `specs/state.yaml` from scratch in bigpowers YAML format (see REFERENCE.md for template). The **handoff block is mandatory** and must include all four fields:
130
130
 
131
- ```markdown
132
- # Session State: <project name>
133
- ## Current Milestone
134
- Migrated from <framework> on <date>. Next: review generated specs and run plan-work.
135
- ## Pending Releases
136
- - [ ] Review migrated specs
137
- - [ ] Run elaborate-spec to validate scope
138
- - [ ] Run plan-work to produce first release plan
131
+ ```yaml
132
+ active_flow: null
133
+ active_epic_id: null
134
+ active_story_id: null
135
+
136
+ # ... other state fields ...
137
+
138
+ handoff:
139
+ last_step_completed: "Migrated from <framework> on <date>"
140
+ open_decisions:
141
+ - "decision text here"
142
+ required_reading:
143
+ - specs/product/VISION_LATEST.yaml
144
+ - specs/product/SCOPE_LATEST.yaml
145
+ - specs/tech-architecture/TECH_STACK_LATEST.md
146
+ - specs/release-plan.yaml
147
+ next_skill: survey-context
139
148
  ```
140
149
 
141
- verify: `[ -f specs/state.yaml ] && echo "ok" || echo "MISSING: specs/state.yaml not created"`
150
+ If no open decisions were found during migration, the `open_decisions` list may be empty with an explanatory comment:
151
+
152
+ ```yaml
153
+ handoff:
154
+ last_step_completed: "..."
155
+ open_decisions: [] # None — all decisions resolved during migration
156
+ required_reading: [...]
157
+ next_skill: survey-context
158
+ ```
159
+
160
+ → verify: `grep -q 'handoff:' specs/state.yaml && grep -q 'last_step_completed' specs/state.yaml && echo "ok" || echo "MISSING or INCOMPLETE: handoff block"`
142
161
 
143
162
  ### Step 5 — Surface learnings (optional)
144
163
 
@@ -148,6 +167,43 @@ Use the learnings table from [REFERENCE.md](./REFERENCE.md#learnings-to-adopt).
148
167
 
149
168
  → verify: `grep -c "\- \[ \]" specs/state.yaml 2>/dev/null && echo "pending items recorded" || echo "no pending items in state.yaml"`
150
169
 
170
+ ### Step 6 — Adversarial review (optional)
171
+
172
+ Before the user runs `plan-work`, offer an optional lightweight audit of the migrated artifacts. This catches common migration errors early — incomplete specs, missing verification commands, unresolved decisions.
173
+
174
+ Prompt: "Run adversarial review of migrated artifacts? [yes / skip]"
175
+
176
+ If yes, perform these checks:
177
+
178
+ 1. **Scan for incomplete markers** — Find TODO, FIXME, MISSING in specs/
179
+ 2. **Verify every epic has `verify:` commands** — Parse all `eNN-*/epic.yaml` files
180
+ 3. **Check state.yaml handoff** — Ensure `open_decisions` is documented (even if empty)
181
+
182
+ Collect findings and write to `specs/archive/MIGRATION-AUDIT.md`:
183
+
184
+ ```markdown
185
+ # Migration Audit — <project-name> from <framework>
186
+
187
+ **Date:** <ISO 8601 timestamp>
188
+ **Status:** Pass / Fail with findings
189
+
190
+ ## Findings
191
+
192
+ ### High Priority
193
+ - Artifact: specs/epics/e02-auth-ui/epic.yaml
194
+ Finding: No verify: commands in story tasks
195
+ Recommendation: Add `verify:` to each task before develop-tdd
196
+
197
+ ### Information
198
+ - Count of TODO markers: 3 (normal for fresh migration)
199
+ ```
200
+
201
+ If findings exist, the handoff block should note: "Adversarial review: N findings — see `specs/archive/MIGRATION-AUDIT.md`"
202
+
203
+ If skip is chosen, add to handoff: "Adversarial review: skipped — review manually before plan-work"
204
+
205
+ → verify: `test -f specs/archive/MIGRATION-AUDIT.md && echo "audit completed" || echo "audit skipped or not performed"`
206
+
151
207
 
152
208
  ## Artifact Mapping Summary
153
209
 
@@ -450,7 +506,7 @@ Optional enhancements to offer the user after migration. Present as checkboxes.
450
506
  ### From GSD
451
507
 
452
508
  - [ ] **`specs/tech-architecture/METHODOLOGY_LATEST.md`** — Standing analytical lenses. Agents read before planning.
453
- - [ ] **`handoff` block in state.yaml** — Last skill, last step, required reading for next session.
509
+ - [x] **`handoff` block in state.yaml** — Last skill, last step, required reading for next session. (adopted: mandatory in Step 4 output)
454
510
  - [x] **ID tracking in SCOPE_LATEST.yaml** — FR/UJ IDs for spec → plan → verification traceability. (adopted in Step 3 transform)
455
511
 
456
512
  ### From spec-kit
@@ -463,7 +519,7 @@ Optional enhancements to offer the user after migration. Present as checkboxes.
463
519
 
464
520
  - [x] **FR-XX + UJ-XX in SCOPE_LATEST.yaml** — Rigorous traceability. (adopted: REQUIREMENTS_TRACE.yaml emitted on migration)
465
521
  - [ ] **`specs/DECISION-LOG.md`** — Lightweight decisions below ADR threshold.
466
- - [ ] **Adversarial review pass** — Critique epic shard before `develop-tdd`.
522
+ - [x] **Adversarial review pass** — Critique epic shard before `develop-tdd`. (adopted: optional Step 6 in migration)
467
523
 
468
524
  ---
469
525
 
@@ -501,6 +557,45 @@ For lightweight decisions that don't warrant a full ADR:
501
557
  | 2026-05-19 | Use Postgres | Existing ops expertise | SQLite (limited), DynamoDB (no local dev) |
502
558
  ```
503
559
 
560
+ ### MIGRATION-AUDIT.md format
561
+
562
+ Post-migration adversarial review report. Written to `specs/archive/MIGRATION-AUDIT.md` when Step 6 runs:
563
+
564
+ ```markdown
565
+ # Migration Audit — <project-name>
566
+
567
+ **Source Framework:** <GSD|spec-kit|BMAD>
568
+ **Date:** <ISO 8601>
569
+ **Status:** <Pass|Findings|Critical>
570
+
571
+ ## Summary
572
+
573
+ - TODO markers: N
574
+ - FIXME markers: N
575
+ - MISSING markers: N
576
+ - Epics without verify: N
577
+
578
+ ## High Priority Findings
579
+
580
+ - **Artifact:** specs/epics/e02-auth-ui/epic.yaml
581
+ **Issue:** Story e02s01 has no verify: commands in tasks
582
+ **Recommendation:** Add runnable verify command before develop-tdd
583
+
584
+ - **Artifact:** specs/state.yaml
585
+ **Issue:** open_decisions list empty without comment explanation
586
+ **Recommendation:** Add # comment if all decisions were resolved during migration
587
+
588
+ ## Information
589
+
590
+ - Artifact specs/epics/e01-auth/epic.yaml contains TODO: "Define Neon Auth client URL injection" (normal for fresh migration)
591
+
592
+ ## Next Steps
593
+
594
+ 1. Address high-priority findings before plan-work
595
+ 2. Run bash scripts/audit-compliance.sh to enforce code quality gates
596
+ 3. Begin develop-tdd on highest-WSJF epic
597
+ ```
598
+
504
599
  ### in_scope format with ID tracking
505
600
 
506
601
  Source IDs (REQ-XX, FR-XX, UJ-XX) are emitted as first-class YAML fields:
@@ -559,27 +654,49 @@ metadata:
559
654
 
560
655
  ### `specs/state.yaml` template format
561
656
 
562
- Generated during Step 4 of migration. Regenerate from scratch in bigpowers format:
563
-
564
- ```markdown
565
- # Session State: <project name>
566
-
567
- ## Current Milestone
568
-
569
- Migrated from <framework> on <date>. Next: review generated specs and run plan-work.
570
-
571
- ## Git Metadata
657
+ Generated during Step 4 of migration. Regenerate from scratch in bigpowers YAML format. The **handoff block is mandatory**:
572
658
 
573
- - **Branch**: <current branch>
574
- - **Hash**: <git rev-parse HEAD>
575
-
576
- ## Completed Releases
577
-
578
- (none — migration starting point)
579
-
580
- ## Pending Releases
659
+ ```yaml
660
+ active_flow: null
661
+ active_epic_id: null
662
+ active_story_id: null
663
+ completed_epic: false
664
+
665
+ epic_cycle:
666
+ current_step: null
667
+ next_skill: null
668
+ story_bcps: null
669
+ completed_steps: []
670
+ audit_result: null
671
+
672
+ bug_cycle:
673
+ current_step: null
674
+ completed_steps: []
675
+
676
+ release:
677
+ target_version: null
678
+ last_tag: null
679
+ last_publish: null
680
+ ci_verified: false
681
+
682
+ metrics:
683
+ story_start: null
684
+ story_end: null
685
+ cycle_minutes: null
686
+ bcp_per_hour: null
687
+
688
+ git:
689
+ branch: <current branch>
690
+ hash: <git rev-parse HEAD>
691
+ pushed: false
581
692
 
582
- - [ ] Review migrated specs
583
- - [ ] Run elaborate-spec to validate scope
584
- - [ ] Run plan-work to produce first release plan
693
+ handoff:
694
+ last_step_completed: "Migrated from <framework> on <date>"
695
+ open_decisions: [] # Empty if all decisions resolved during migration
696
+ required_reading:
697
+ - specs/product/VISION_LATEST.yaml
698
+ - specs/product/SCOPE_LATEST.yaml
699
+ - specs/tech-architecture/TECH_STACK_LATEST.md
700
+ - specs/release-plan.yaml
701
+ next_skill: survey-context
585
702
  ```
@@ -128,19 +128,38 @@ See [REFERENCE.md — REQUIREMENTS_TRACE.yaml format](./REFERENCE.md#requirement
128
128
 
129
129
  ### Step 4 — Generate state.yaml
130
130
 
131
- Always regenerate `specs/state.yaml` from scratch in bigpowers format (see REFERENCE.md for template):
131
+ Always regenerate `specs/state.yaml` from scratch in bigpowers YAML format (see REFERENCE.md for template). The **handoff block is mandatory** and must include all four fields:
132
132
 
133
- ```markdown
134
- # Session State: <project name>
135
- ## Current Milestone
136
- Migrated from <framework> on <date>. Next: review generated specs and run plan-work.
137
- ## Pending Releases
138
- - [ ] Review migrated specs
139
- - [ ] Run elaborate-spec to validate scope
140
- - [ ] Run plan-work to produce first release plan
133
+ ```yaml
134
+ active_flow: null
135
+ active_epic_id: null
136
+ active_story_id: null
137
+
138
+ # ... other state fields ...
139
+
140
+ handoff:
141
+ last_step_completed: "Migrated from <framework> on <date>"
142
+ open_decisions:
143
+ - "decision text here"
144
+ required_reading:
145
+ - specs/product/VISION_LATEST.yaml
146
+ - specs/product/SCOPE_LATEST.yaml
147
+ - specs/tech-architecture/TECH_STACK_LATEST.md
148
+ - specs/release-plan.yaml
149
+ next_skill: survey-context
141
150
  ```
142
151
 
143
- verify: `[ -f specs/state.yaml ] && echo "ok" || echo "MISSING: specs/state.yaml not created"`
152
+ If no open decisions were found during migration, the `open_decisions` list may be empty with an explanatory comment:
153
+
154
+ ```yaml
155
+ handoff:
156
+ last_step_completed: "..."
157
+ open_decisions: [] # None — all decisions resolved during migration
158
+ required_reading: [...]
159
+ next_skill: survey-context
160
+ ```
161
+
162
+ → verify: `grep -q 'handoff:' specs/state.yaml && grep -q 'last_step_completed' specs/state.yaml && echo "ok" || echo "MISSING or INCOMPLETE: handoff block"`
144
163
 
145
164
  ### Step 5 — Surface learnings (optional)
146
165
 
@@ -150,6 +169,43 @@ Use the learnings table from [REFERENCE.md](./REFERENCE.md#learnings-to-adopt).
150
169
 
151
170
  → verify: `grep -c "\- \[ \]" specs/state.yaml 2>/dev/null && echo "pending items recorded" || echo "no pending items in state.yaml"`
152
171
 
172
+ ### Step 6 — Adversarial review (optional)
173
+
174
+ Before the user runs `plan-work`, offer an optional lightweight audit of the migrated artifacts. This catches common migration errors early — incomplete specs, missing verification commands, unresolved decisions.
175
+
176
+ Prompt: "Run adversarial review of migrated artifacts? [yes / skip]"
177
+
178
+ If yes, perform these checks:
179
+
180
+ 1. **Scan for incomplete markers** — Find TODO, FIXME, MISSING in specs/
181
+ 2. **Verify every epic has `verify:` commands** — Parse all `eNN-*/epic.yaml` files
182
+ 3. **Check state.yaml handoff** — Ensure `open_decisions` is documented (even if empty)
183
+
184
+ Collect findings and write to `specs/archive/MIGRATION-AUDIT.md`:
185
+
186
+ ```markdown
187
+ # Migration Audit — <project-name> from <framework>
188
+
189
+ **Date:** <ISO 8601 timestamp>
190
+ **Status:** Pass / Fail with findings
191
+
192
+ ## Findings
193
+
194
+ ### High Priority
195
+ - Artifact: specs/epics/e02-auth-ui/epic.yaml
196
+ Finding: No verify: commands in story tasks
197
+ Recommendation: Add `verify:` to each task before develop-tdd
198
+
199
+ ### Information
200
+ - Count of TODO markers: 3 (normal for fresh migration)
201
+ ```
202
+
203
+ If findings exist, the handoff block should note: "Adversarial review: N findings — see `specs/archive/MIGRATION-AUDIT.md`"
204
+
205
+ If skip is chosen, add to handoff: "Adversarial review: skipped — review manually before plan-work"
206
+
207
+ → verify: `test -f specs/archive/MIGRATION-AUDIT.md && echo "audit completed" || echo "audit skipped or not performed"`
208
+
153
209
 
154
210
  ## Artifact Mapping Summary
155
211
 
@@ -452,7 +508,7 @@ Optional enhancements to offer the user after migration. Present as checkboxes.
452
508
  ### From GSD
453
509
 
454
510
  - [ ] **`specs/tech-architecture/METHODOLOGY_LATEST.md`** — Standing analytical lenses. Agents read before planning.
455
- - [ ] **`handoff` block in state.yaml** — Last skill, last step, required reading for next session.
511
+ - [x] **`handoff` block in state.yaml** — Last skill, last step, required reading for next session. (adopted: mandatory in Step 4 output)
456
512
  - [x] **ID tracking in SCOPE_LATEST.yaml** — FR/UJ IDs for spec → plan → verification traceability. (adopted in Step 3 transform)
457
513
 
458
514
  ### From spec-kit
@@ -465,7 +521,7 @@ Optional enhancements to offer the user after migration. Present as checkboxes.
465
521
 
466
522
  - [x] **FR-XX + UJ-XX in SCOPE_LATEST.yaml** — Rigorous traceability. (adopted: REQUIREMENTS_TRACE.yaml emitted on migration)
467
523
  - [ ] **`specs/DECISION-LOG.md`** — Lightweight decisions below ADR threshold.
468
- - [ ] **Adversarial review pass** — Critique epic shard before `develop-tdd`.
524
+ - [x] **Adversarial review pass** — Critique epic shard before `develop-tdd`. (adopted: optional Step 6 in migration)
469
525
 
470
526
  ---
471
527
 
@@ -503,6 +559,45 @@ For lightweight decisions that don't warrant a full ADR:
503
559
  | 2026-05-19 | Use Postgres | Existing ops expertise | SQLite (limited), DynamoDB (no local dev) |
504
560
  ```
505
561
 
562
+ ### MIGRATION-AUDIT.md format
563
+
564
+ Post-migration adversarial review report. Written to `specs/archive/MIGRATION-AUDIT.md` when Step 6 runs:
565
+
566
+ ```markdown
567
+ # Migration Audit — <project-name>
568
+
569
+ **Source Framework:** <GSD|spec-kit|BMAD>
570
+ **Date:** <ISO 8601>
571
+ **Status:** <Pass|Findings|Critical>
572
+
573
+ ## Summary
574
+
575
+ - TODO markers: N
576
+ - FIXME markers: N
577
+ - MISSING markers: N
578
+ - Epics without verify: N
579
+
580
+ ## High Priority Findings
581
+
582
+ - **Artifact:** specs/epics/e02-auth-ui/epic.yaml
583
+ **Issue:** Story e02s01 has no verify: commands in tasks
584
+ **Recommendation:** Add runnable verify command before develop-tdd
585
+
586
+ - **Artifact:** specs/state.yaml
587
+ **Issue:** open_decisions list empty without comment explanation
588
+ **Recommendation:** Add # comment if all decisions were resolved during migration
589
+
590
+ ## Information
591
+
592
+ - Artifact specs/epics/e01-auth/epic.yaml contains TODO: "Define Neon Auth client URL injection" (normal for fresh migration)
593
+
594
+ ## Next Steps
595
+
596
+ 1. Address high-priority findings before plan-work
597
+ 2. Run bash scripts/audit-compliance.sh to enforce code quality gates
598
+ 3. Begin develop-tdd on highest-WSJF epic
599
+ ```
600
+
506
601
  ### in_scope format with ID tracking
507
602
 
508
603
  Source IDs (REQ-XX, FR-XX, UJ-XX) are emitted as first-class YAML fields:
@@ -561,27 +656,49 @@ metadata:
561
656
 
562
657
  ### `specs/state.yaml` template format
563
658
 
564
- Generated during Step 4 of migration. Regenerate from scratch in bigpowers format:
565
-
566
- ```markdown
567
- # Session State: <project name>
568
-
569
- ## Current Milestone
570
-
571
- Migrated from <framework> on <date>. Next: review generated specs and run plan-work.
572
-
573
- ## Git Metadata
659
+ Generated during Step 4 of migration. Regenerate from scratch in bigpowers YAML format. The **handoff block is mandatory**:
574
660
 
575
- - **Branch**: <current branch>
576
- - **Hash**: <git rev-parse HEAD>
577
-
578
- ## Completed Releases
579
-
580
- (none — migration starting point)
581
-
582
- ## Pending Releases
661
+ ```yaml
662
+ active_flow: null
663
+ active_epic_id: null
664
+ active_story_id: null
665
+ completed_epic: false
666
+
667
+ epic_cycle:
668
+ current_step: null
669
+ next_skill: null
670
+ story_bcps: null
671
+ completed_steps: []
672
+ audit_result: null
673
+
674
+ bug_cycle:
675
+ current_step: null
676
+ completed_steps: []
677
+
678
+ release:
679
+ target_version: null
680
+ last_tag: null
681
+ last_publish: null
682
+ ci_verified: false
683
+
684
+ metrics:
685
+ story_start: null
686
+ story_end: null
687
+ cycle_minutes: null
688
+ bcp_per_hour: null
689
+
690
+ git:
691
+ branch: <current branch>
692
+ hash: <git rev-parse HEAD>
693
+ pushed: false
583
694
 
584
- - [ ] Review migrated specs
585
- - [ ] Run elaborate-spec to validate scope
586
- - [ ] Run plan-work to produce first release plan
695
+ handoff:
696
+ last_step_completed: "Migrated from <framework> on <date>"
697
+ open_decisions: [] # Empty if all decisions resolved during migration
698
+ required_reading:
699
+ - specs/product/VISION_LATEST.yaml
700
+ - specs/product/SCOPE_LATEST.yaml
701
+ - specs/tech-architecture/TECH_STACK_LATEST.md
702
+ - specs/release-plan.yaml
703
+ next_skill: survey-context
587
704
  ```
package/CHANGELOG.md CHANGED
@@ -1,3 +1,17 @@
1
+ # [2.32.0](https://github.com/danielvm-git/bigpowers/compare/v2.31.0...v2.32.0) (2026-06-26)
2
+
3
+
4
+ ### Features
5
+
6
+ * **migrate-spec:** add optional Step 6 adversarial review pass ([64ae774](https://github.com/danielvm-git/bigpowers/commit/64ae774070068727f7dbb91e9cbb8e722bd0feb0))
7
+
8
+ # [2.31.0](https://github.com/danielvm-git/bigpowers/compare/v2.30.0...v2.31.0) (2026-06-26)
9
+
10
+
11
+ ### Features
12
+
13
+ * **migrate-spec:** make handoff block mandatory in Step 4 output ([1f05663](https://github.com/danielvm-git/bigpowers/commit/1f0566320356d8de4d3c2775ddebc3b17cf27fe6))
14
+
1
15
  # [2.30.0](https://github.com/danielvm-git/bigpowers/compare/v2.29.0...v2.30.0) (2026-06-26)
2
16
 
3
17
 
@@ -0,0 +1,34 @@
1
+ # Proposed Commit Message
2
+
3
+ ## Type and Scope
4
+ `feat(migrate-spec)` — Minor version bump
5
+
6
+ ## Title
7
+ ```
8
+ feat(migrate-spec): make handoff block mandatory in Step 4 output
9
+ ```
10
+
11
+ ## Body
12
+ ```
13
+ The handoff block (last_step_completed, open_decisions, required_reading,
14
+ next_skill) is now a mandatory part of state.yaml generation, not optional.
15
+
16
+ During real migrations, the handoff block proved immediately useful — the next
17
+ agent reads it first to understand context, decisions, and required reading.
18
+ Promoting it from optional to mandatory ensures every migration output includes
19
+ this metadata.
20
+
21
+ Changes:
22
+ - SKILL.md Step 4: updated to mandate handoff block with YAML format example
23
+ - REFERENCE.md: added complete state.yaml YAML template with handoff structure
24
+ - Learnings table: marked handoff as adopted (from GSD learning set)
25
+ ```
26
+
27
+ ## Release Impact
28
+ - **Bump Type:** `minor` (X.Y.z)
29
+ - **Rationale:** New mandatory output structure in migrate-spec skill
30
+
31
+ ## Notes
32
+ - Documentation-only change (no code changes)
33
+ - All verify commands pass
34
+ - Audit gate: PASS (10/10 items)
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-26T22:23:41Z
6
+ **Generated:** 2026-06-26T22:59:59Z
7
7
  **Skills:** 70
8
8
 
9
9
  ---
@@ -133,7 +133,7 @@ Optional enhancements to offer the user after migration. Present as checkboxes.
133
133
  ### From GSD
134
134
 
135
135
  - [ ] **`specs/tech-architecture/METHODOLOGY_LATEST.md`** — Standing analytical lenses. Agents read before planning.
136
- - [ ] **`handoff` block in state.yaml** — Last skill, last step, required reading for next session.
136
+ - [x] **`handoff` block in state.yaml** — Last skill, last step, required reading for next session. (adopted: mandatory in Step 4 output)
137
137
  - [x] **ID tracking in SCOPE_LATEST.yaml** — FR/UJ IDs for spec → plan → verification traceability. (adopted in Step 3 transform)
138
138
 
139
139
  ### From spec-kit
@@ -146,7 +146,7 @@ Optional enhancements to offer the user after migration. Present as checkboxes.
146
146
 
147
147
  - [x] **FR-XX + UJ-XX in SCOPE_LATEST.yaml** — Rigorous traceability. (adopted: REQUIREMENTS_TRACE.yaml emitted on migration)
148
148
  - [ ] **`specs/DECISION-LOG.md`** — Lightweight decisions below ADR threshold.
149
- - [ ] **Adversarial review pass** — Critique epic shard before `develop-tdd`.
149
+ - [x] **Adversarial review pass** — Critique epic shard before `develop-tdd`. (adopted: optional Step 6 in migration)
150
150
 
151
151
  ---
152
152
 
@@ -184,6 +184,45 @@ For lightweight decisions that don't warrant a full ADR:
184
184
  | 2026-05-19 | Use Postgres | Existing ops expertise | SQLite (limited), DynamoDB (no local dev) |
185
185
  ```
186
186
 
187
+ ### MIGRATION-AUDIT.md format
188
+
189
+ Post-migration adversarial review report. Written to `specs/archive/MIGRATION-AUDIT.md` when Step 6 runs:
190
+
191
+ ```markdown
192
+ # Migration Audit — <project-name>
193
+
194
+ **Source Framework:** <GSD|spec-kit|BMAD>
195
+ **Date:** <ISO 8601>
196
+ **Status:** <Pass|Findings|Critical>
197
+
198
+ ## Summary
199
+
200
+ - TODO markers: N
201
+ - FIXME markers: N
202
+ - MISSING markers: N
203
+ - Epics without verify: N
204
+
205
+ ## High Priority Findings
206
+
207
+ - **Artifact:** specs/epics/e02-auth-ui/epic.yaml
208
+ **Issue:** Story e02s01 has no verify: commands in tasks
209
+ **Recommendation:** Add runnable verify command before develop-tdd
210
+
211
+ - **Artifact:** specs/state.yaml
212
+ **Issue:** open_decisions list empty without comment explanation
213
+ **Recommendation:** Add # comment if all decisions were resolved during migration
214
+
215
+ ## Information
216
+
217
+ - Artifact specs/epics/e01-auth/epic.yaml contains TODO: "Define Neon Auth client URL injection" (normal for fresh migration)
218
+
219
+ ## Next Steps
220
+
221
+ 1. Address high-priority findings before plan-work
222
+ 2. Run bash scripts/audit-compliance.sh to enforce code quality gates
223
+ 3. Begin develop-tdd on highest-WSJF epic
224
+ ```
225
+
187
226
  ### in_scope format with ID tracking
188
227
 
189
228
  Source IDs (REQ-XX, FR-XX, UJ-XX) are emitted as first-class YAML fields:
@@ -242,27 +281,49 @@ metadata:
242
281
 
243
282
  ### `specs/state.yaml` template format
244
283
 
245
- Generated during Step 4 of migration. Regenerate from scratch in bigpowers format:
246
-
247
- ```markdown
248
- # Session State: <project name>
249
-
250
- ## Current Milestone
251
-
252
- Migrated from <framework> on <date>. Next: review generated specs and run plan-work.
284
+ Generated during Step 4 of migration. Regenerate from scratch in bigpowers YAML format. The **handoff block is mandatory**:
253
285
 
254
- ## Git Metadata
255
-
256
- - **Branch**: <current branch>
257
- - **Hash**: <git rev-parse HEAD>
258
-
259
- ## Completed Releases
260
-
261
- (none — migration starting point)
262
-
263
- ## Pending Releases
264
-
265
- - [ ] Review migrated specs
266
- - [ ] Run elaborate-spec to validate scope
267
- - [ ] Run plan-work to produce first release plan
286
+ ```yaml
287
+ active_flow: null
288
+ active_epic_id: null
289
+ active_story_id: null
290
+ completed_epic: false
291
+
292
+ epic_cycle:
293
+ current_step: null
294
+ next_skill: null
295
+ story_bcps: null
296
+ completed_steps: []
297
+ audit_result: null
298
+
299
+ bug_cycle:
300
+ current_step: null
301
+ completed_steps: []
302
+
303
+ release:
304
+ target_version: null
305
+ last_tag: null
306
+ last_publish: null
307
+ ci_verified: false
308
+
309
+ metrics:
310
+ story_start: null
311
+ story_end: null
312
+ cycle_minutes: null
313
+ bcp_per_hour: null
314
+
315
+ git:
316
+ branch: <current branch>
317
+ hash: <git rev-parse HEAD>
318
+ pushed: false
319
+
320
+ handoff:
321
+ last_step_completed: "Migrated from <framework> on <date>"
322
+ open_decisions: [] # Empty if all decisions resolved during migration
323
+ required_reading:
324
+ - specs/product/VISION_LATEST.yaml
325
+ - specs/product/SCOPE_LATEST.yaml
326
+ - specs/tech-architecture/TECH_STACK_LATEST.md
327
+ - specs/release-plan.yaml
328
+ next_skill: survey-context
268
329
  ```
@@ -129,19 +129,38 @@ See [REFERENCE.md — REQUIREMENTS_TRACE.yaml format](./REFERENCE.md#requirement
129
129
 
130
130
  ### Step 4 — Generate state.yaml
131
131
 
132
- Always regenerate `specs/state.yaml` from scratch in bigpowers format (see REFERENCE.md for template):
132
+ Always regenerate `specs/state.yaml` from scratch in bigpowers YAML format (see REFERENCE.md for template). The **handoff block is mandatory** and must include all four fields:
133
133
 
134
- ```markdown
135
- # Session State: <project name>
136
- ## Current Milestone
137
- Migrated from <framework> on <date>. Next: review generated specs and run plan-work.
138
- ## Pending Releases
139
- - [ ] Review migrated specs
140
- - [ ] Run elaborate-spec to validate scope
141
- - [ ] Run plan-work to produce first release plan
134
+ ```yaml
135
+ active_flow: null
136
+ active_epic_id: null
137
+ active_story_id: null
138
+
139
+ # ... other state fields ...
140
+
141
+ handoff:
142
+ last_step_completed: "Migrated from <framework> on <date>"
143
+ open_decisions:
144
+ - "decision text here"
145
+ required_reading:
146
+ - specs/product/VISION_LATEST.yaml
147
+ - specs/product/SCOPE_LATEST.yaml
148
+ - specs/tech-architecture/TECH_STACK_LATEST.md
149
+ - specs/release-plan.yaml
150
+ next_skill: survey-context
151
+ ```
152
+
153
+ If no open decisions were found during migration, the `open_decisions` list may be empty with an explanatory comment:
154
+
155
+ ```yaml
156
+ handoff:
157
+ last_step_completed: "..."
158
+ open_decisions: [] # None — all decisions resolved during migration
159
+ required_reading: [...]
160
+ next_skill: survey-context
142
161
  ```
143
162
 
144
- → verify: `[ -f specs/state.yaml ] && echo "ok" || echo "MISSING: specs/state.yaml not created"`
163
+ → verify: `grep -q 'handoff:' specs/state.yaml && grep -q 'last_step_completed' specs/state.yaml && echo "ok" || echo "MISSING or INCOMPLETE: handoff block"`
145
164
 
146
165
  ### Step 5 — Surface learnings (optional)
147
166
 
@@ -151,6 +170,43 @@ Use the learnings table from [REFERENCE.md](./REFERENCE.md#learnings-to-adopt).
151
170
 
152
171
  → verify: `grep -c "\- \[ \]" specs/state.yaml 2>/dev/null && echo "pending items recorded" || echo "no pending items in state.yaml"`
153
172
 
173
+ ### Step 6 — Adversarial review (optional)
174
+
175
+ Before the user runs `plan-work`, offer an optional lightweight audit of the migrated artifacts. This catches common migration errors early — incomplete specs, missing verification commands, unresolved decisions.
176
+
177
+ Prompt: "Run adversarial review of migrated artifacts? [yes / skip]"
178
+
179
+ If yes, perform these checks:
180
+
181
+ 1. **Scan for incomplete markers** — Find TODO, FIXME, MISSING in specs/
182
+ 2. **Verify every epic has `verify:` commands** — Parse all `eNN-*/epic.yaml` files
183
+ 3. **Check state.yaml handoff** — Ensure `open_decisions` is documented (even if empty)
184
+
185
+ Collect findings and write to `specs/archive/MIGRATION-AUDIT.md`:
186
+
187
+ ```markdown
188
+ # Migration Audit — <project-name> from <framework>
189
+
190
+ **Date:** <ISO 8601 timestamp>
191
+ **Status:** Pass / Fail with findings
192
+
193
+ ## Findings
194
+
195
+ ### High Priority
196
+ - Artifact: specs/epics/e02-auth-ui/epic.yaml
197
+ Finding: No verify: commands in story tasks
198
+ Recommendation: Add `verify:` to each task before develop-tdd
199
+
200
+ ### Information
201
+ - Count of TODO markers: 3 (normal for fresh migration)
202
+ ```
203
+
204
+ If findings exist, the handoff block should note: "Adversarial review: N findings — see `specs/archive/MIGRATION-AUDIT.md`"
205
+
206
+ If skip is chosen, add to handoff: "Adversarial review: skipped — review manually before plan-work"
207
+
208
+ → verify: `test -f specs/archive/MIGRATION-AUDIT.md && echo "audit completed" || echo "audit skipped or not performed"`
209
+
154
210
  ---
155
211
 
156
212
  ## Artifact Mapping Summary
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bigpowers",
3
- "version": "2.30.0",
3
+ "version": "2.32.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
@@ -163,7 +163,7 @@
163
163
  },
164
164
  "migrate-spec": {
165
165
  "description": "Detect GSD, spec-kit, or BMAD spec artifacts and transform them into bigpowers YAML layout (state.yaml, release-plan.yaml, epics/, requirements/, plans/, ADRs). Use when migrating foreign spec docs.",
166
- "sha256": "72006537bb12ab1a",
166
+ "sha256": "353a127597cead4d",
167
167
  "path": "migrate-spec/SKILL.md"
168
168
  },
169
169
  "model-domain": {