bigpowers 2.34.1 → 2.34.2

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.
Files changed (42) hide show
  1. package/.pi/package.json +2 -2
  2. package/.pi/prompts/deploy.md +53 -28
  3. package/.pi/prompts/develop-tdd.md +5 -80
  4. package/.pi/prompts/migrate-spec.md +273 -197
  5. package/.pi/prompts/publish-package.md +125 -67
  6. package/.pi/prompts/release-branch.md +85 -69
  7. package/.pi/prompts/smoke-test.md +98 -58
  8. package/.pi/prompts/using-bigpowers.md +2 -2
  9. package/.pi/prompts/validate-contracts.md +169 -54
  10. package/.pi/prompts/wire-ci.md +147 -89
  11. package/.pi/skills/deploy/SKILL.md +53 -28
  12. package/.pi/skills/develop-tdd/SKILL.md +5 -80
  13. package/.pi/skills/migrate-spec/SKILL.md +273 -197
  14. package/.pi/skills/publish-package/SKILL.md +125 -67
  15. package/.pi/skills/release-branch/SKILL.md +85 -69
  16. package/.pi/skills/smoke-test/SKILL.md +98 -58
  17. package/.pi/skills/using-bigpowers/SKILL.md +2 -2
  18. package/.pi/skills/validate-contracts/SKILL.md +169 -54
  19. package/.pi/skills/wire-ci/SKILL.md +147 -89
  20. package/CHANGELOG.md +7 -0
  21. package/README.md +4 -4
  22. package/SKILL-INDEX.md +1 -1
  23. package/deploy/REFERENCE.md +82 -0
  24. package/deploy/SKILL.md +3 -63
  25. package/develop-tdd/SKILL.md +5 -80
  26. package/migrate-spec/REFERENCE.md +268 -0
  27. package/migrate-spec/SKILL.md +5 -199
  28. package/package.json +2 -2
  29. package/publish-package/REFERENCE.md +239 -0
  30. package/publish-package/SKILL.md +8 -192
  31. package/release-branch/REFERENCE.md +83 -0
  32. package/release-branch/SKILL.md +2 -69
  33. package/scripts/generate-reference-tables.sh +1 -0
  34. package/scripts/sync-skills.sh +4 -1
  35. package/skills-lock.json +9 -9
  36. package/smoke-test/REFERENCE.md +162 -0
  37. package/smoke-test/SKILL.md +5 -130
  38. package/using-bigpowers/SKILL.md +2 -2
  39. package/validate-contracts/REFERENCE.md +183 -0
  40. package/validate-contracts/SKILL.md +6 -77
  41. package/wire-ci/REFERENCE.md +257 -0
  42. package/wire-ci/SKILL.md +8 -210
@@ -46,20 +46,7 @@ If none found: ask the user which framework before proceeding.
46
46
 
47
47
  List every artifact found matching the detected framework. Present the list to the user:
48
48
 
49
- ```
50
- Detected: GSD
51
- Found:
52
- ✓ .planning/ROADMAP.md
53
- ✓ .planning/REQUIREMENTS.md (12 REQ-XX items)
54
- ✓ .planning/state.yaml
55
- ✓ .planning/phases/01-auth/01-CONTEXT.md
56
- ✗ .planning/METHODOLOGY.md (not present)
57
-
58
- Skipping:
59
- .planning/phases/01-auth/01-01-SUMMARY.md (execution record; archived only)
60
-
61
- Proceed with migration? [yes / skip <artifact> / abort]
62
- ```
49
+ See [REFERENCE.md](REFERENCE.md) — `Detected: GSD...`
63
50
 
64
51
  → verify: `find . -maxdepth 4 \( -name "ROADMAP.md" -o -name "spec.md" -o -name "prd.md" -o -name "REQUIREMENTS.md" \) 2>/dev/null | grep -v ".git" | head -15`
65
52
 
@@ -75,17 +62,7 @@ Apply the mapping from [REFERENCE.md](./REFERENCE.md) and [REFERENCE-GSD.md](./R
75
62
 
76
63
  When source artifacts contain IDs (REQ-XX, FR-XX, UJ-XX), emit them as **first-class YAML fields** in `in_scope` entries, not YAML comments:
77
64
 
78
- ```yaml
79
- # CORRECT — first-class id: field
80
- in_scope:
81
- - id: REQ-001
82
- description: "User can register with email/password"
83
- source: "REQUIREMENTS.md"
84
-
85
- # DEPRECATED — comment-only
86
- in_scope:
87
- - "User can register with email/password" # REQ-001
88
- ```
65
+ See [REFERENCE.md](REFERENCE.md) — `# CORRECT — first-class id: field...`
89
66
 
90
67
  **When source has no IDs:** Prompt the user: "No IDs found. Assign auto-generated IDs? [yes / no]". If yes, emit `REQ-{NNN}` with `# auto-generated` annotation.
91
68
 
@@ -97,20 +74,7 @@ See [REFERENCE.md — in_scope format with ID tracking](./REFERENCE.md#in_scope-
97
74
 
98
75
  When source has FR-XX or UJ-XX IDs, emit `specs/product/REQUIREMENTS_TRACE.yaml` for end-to-end requirement traceability:
99
76
 
100
- ```yaml
101
- trace:
102
- - id: FR-001
103
- type: functional_requirement
104
- description: "User can register with email/password"
105
- epic: e02-auth-ui
106
- story: e02s01
107
- verify: "grep -q 'FR-001' specs/product/SCOPE_LATEST.yaml && echo OK"
108
- - id: UJ-001
109
- type: user_journey
110
- description: "New user completes registration flow"
111
- epic: e02-auth-ui
112
- story: e02s01
113
- ```
77
+ See [REFERENCE.md](REFERENCE.md) — `trace:...`
114
78
 
115
79
  **Existing trace file:** If `REQUIREMENTS_TRACE.yaml` already exists, prompt: "REQUIREMENTS_TRACE.yaml exists. [overwrite / merge / skip]"
116
80
 
@@ -128,170 +92,14 @@ See [REFERENCE.md — REQUIREMENTS_TRACE.yaml format](./REFERENCE.md#requirement
128
92
 
129
93
  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
94
 
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
148
- ```
95
+ See [REFERENCE.md](REFERENCE.md) — `active_flow: null...`
149
96
 
150
97
  If no open decisions were found during migration, the `open_decisions` list may be empty with an explanatory comment:
151
98
 
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
- ```
99
+ See [REFERENCE.md](REFERENCE.md) — `handoff:...`
159
100
 
160
101
  → verify: `grep -q 'handoff:' specs/state.yaml && grep -q 'last_step_completed' specs/state.yaml && echo "ok" || echo "MISSING or INCOMPLETE: handoff block"`
161
102
 
162
- ### Step 5 — Surface learnings (optional)
163
-
164
- After migration, offer the user a brief analysis of what the source framework did that bigpowers doesn't have yet.
165
-
166
- Use the learnings table from [REFERENCE.md](./REFERENCE.md#learnings-to-adopt). Present as checkboxes so the user can decide which to adopt.
167
-
168
- → verify: `grep -c "\- \[ \]" specs/state.yaml 2>/dev/null && echo "pending items recorded" || echo "no pending items in state.yaml"`
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
-
207
- ### Step 7 — Post-migration: Optional two-pass spec writing gate
208
-
209
- After Steps 1–6, offer the user an optional two-pass spec writing workflow (spec-kit learning):
210
-
211
- Prompt: "Use two-pass spec writing (user journeys first, then technical)? [yes / no]"
212
-
213
- If **yes**, initialize the gate in `specs/state.yaml`:
214
-
215
- ```yaml
216
- two_pass_spec:
217
- journey_pass: pending
218
- technical_pass: pending
219
- approved_at: null
220
- ```
221
-
222
- The journey pass must be marked "complete" by the user (after stakeholder approval of user-journey specs) before the technical pass begins:
223
-
224
- ```yaml
225
- two_pass_spec:
226
- journey_pass: complete
227
- approved_at: "2026-06-26T12:00:00Z"
228
- technical_pass: pending
229
- ```
230
-
231
- Inform the user: "Journey pass is pending. Run `elaborate-spec` for user journeys, get stakeholder approval, then update `two_pass_spec.journey_pass: complete` in state.yaml before proceeding to technical specs."
232
-
233
- If **no**, skip the two-pass gate. Proceed directly to plan-work.
234
-
235
- → verify: `grep -q 'two_pass_spec:' specs/state.yaml && echo "two-pass gate initialized" || echo "two-pass gate not activated"`
236
-
237
- ### Step 8 — Post-migration: Optional methodology doc template
238
-
239
- After Steps 1–7, offer the user an optional analytical framework scaffold (GSD learning):
240
-
241
- Prompt: "Create a methodology doc? [yes / no]"
242
-
243
- If **yes**, present a checklist of analytical lenses:
244
-
245
- ```
246
- Which lenses to include in specs/tech-architecture/METHODOLOGY_LATEST.md?
247
-
248
- [x] Cost of Delay (CD3) — Priority & trade-off assessment
249
- [ ] STRIDE — Security threat modeling
250
- [ ] F.I.R.S.T — Test quality principles
251
- [ ] Bayesian Updating — Probabilistic decision-making
252
- [ ] OWASP Top 10 — Web security framework
253
- ```
254
-
255
- Copy the template from `migrate-spec/templates/METHODOLOGY_LATEST.md` to `specs/tech-architecture/METHODOLOGY_LATEST.md`.
256
- - Active lenses remain uncommented
257
- - Unselected lenses are left commented out
258
- - Populate `{{project_name}}` with the migrated project's name
259
-
260
- If **no**, skip. Add note to handoff: "Methodology doc: skipped — can be added later via `cp migrate-spec/templates/METHODOLOGY_LATEST.md specs/tech-architecture/`"
261
-
262
- → verify: `test -f specs/tech-architecture/METHODOLOGY_LATEST.md && echo "methodology doc created" || echo "methodology doc skipped"`
263
-
264
-
265
- ## Artifact Mapping Summary
266
-
267
- Full mapping tables: [REFERENCE-GSD.md](./REFERENCE-GSD.md) (GSD) · [REFERENCE.md](./REFERENCE.md) (spec-kit, BMAD, learnings).
268
-
269
- | Source | Target |
270
- |--------|--------|
271
- | GSD `ROADMAP.md` | `specs/release-plan.yaml + epic shards` |
272
- | GSD `REQUIREMENTS.md` | `specs/product/SCOPE_LATEST.yaml` |
273
- | GSD `CONTEXT.md` (phases) | `specs/tech-architecture/tech-stack.md` + `specs/adr/` |
274
- | GSD `PLAN.md` | `specs/epics/eNN-slug/epic.yaml` (tasks with verify in `-tasks.yaml`) |
275
- | GSD `METHODOLOGY.md` | `specs/tech-architecture/tech-stack.md` |
276
- | spec-kit `spec.md` | `specs/product/SCOPE_LATEST.yaml` + `specs/tech-architecture/tech-stack.md` |
277
- | spec-kit `plan.md` | `specs/tech-architecture/tech-stack.md` + `specs/release-plan.yaml` + `specs/epics/` |
278
- | spec-kit `tasks.md` | `specs/epics/ (see slice-tasks)` |
279
- | BMAD `prd.md` | `specs/product/SCOPE_LATEST.yaml` |
280
- | BMAD `architecture.md` | `specs/tech-architecture/tech-stack.md` + `specs/adr/` |
281
- | BMAD `epic-*.md` | `specs/release-plan.yaml + epic shards` |
282
- | BMAD `story-*.md` | `specs/epics/ (see slice-tasks)` |
283
- | BMAD `project-context.md` | `CLAUDE.md` (append project-specific section) |
284
- | BMAD `decision-log.md` | `specs/adr/` (one ADR per logged decision) |
285
-
286
-
287
- ## Rules
288
-
289
- - **Preserve source IDs** — REQ-XX, FR-XX, UJ-XX are emitted as first-class `id:` fields in bigpowers YAML targets (e.g., `in_scope` entries). Never silently renumber. See Step 3 ID Tracking subsection for details.
290
- - **Never merge contradictory docs** — if source has both `CONTEXT.md` and `architecture.md`, create sections in bigpowers `CONTEXT.md`; don't collapse them.
291
- - **ADRs are opt-in** — only create an ADR when: hard to reverse, surprising without context, result of a real trade-off. Lightweight decisions go to `specs/DECISION-LOG.md`.
292
- - **state.yaml is always regenerated** — never migrate source STATE verbatim; bigpowers state.yaml needs its own format.
293
- - **specs/ is the only output location** — no files are created outside `specs/` and `CLAUDE.md`.
294
-
295
103
  ---
296
104
 
297
105
  # migrate-spec Reference — GSD
@@ -428,6 +236,8 @@ These GSD artifacts are not migrated — they are execution records, not plannin
428
236
 
429
237
  ---
430
238
 
239
+ # Migrate Spec — Reference
240
+
431
241
  # migrate-spec Reference — spec-kit, BMAD, Learnings
432
242
 
433
243
  Transformation rules for spec-kit and BMAD projects, plus learnings to adopt and output formats.
@@ -762,3 +572,269 @@ two_pass_spec: # Optional: only if user activates two-pass spec writing gate
762
572
  technical_pass: pending
763
573
  approved_at: null
764
574
  ```
575
+
576
+ ---
577
+
578
+ ## Reference block 1
579
+
580
+ ```
581
+ Detected: GSD
582
+ Found:
583
+ ✓ .planning/ROADMAP.md
584
+ ✓ .planning/REQUIREMENTS.md (12 REQ-XX items)
585
+ ✓ .planning/state.yaml
586
+ ✓ .planning/phases/01-auth/01-CONTEXT.md
587
+ ✗ .planning/METHODOLOGY.md (not present)
588
+
589
+ Skipping:
590
+ .planning/phases/01-auth/01-01-SUMMARY.md (execution record; archived only)
591
+
592
+ Proceed with migration? [yes / skip <artifact> / abort]
593
+ ```
594
+
595
+ ---
596
+
597
+ ## Reference block 2
598
+
599
+ ```yaml
600
+ # CORRECT — first-class id: field
601
+ in_scope:
602
+ - id: REQ-001
603
+ description: "User can register with email/password"
604
+ source: "REQUIREMENTS.md"
605
+
606
+ # DEPRECATED — comment-only
607
+ in_scope:
608
+ - "User can register with email/password" # REQ-001
609
+ ```
610
+
611
+ ---
612
+
613
+ ## Reference block 3
614
+
615
+ ```yaml
616
+ trace:
617
+ - id: FR-001
618
+ type: functional_requirement
619
+ description: "User can register with email/password"
620
+ epic: e02-auth-ui
621
+ story: e02s01
622
+ verify: "grep -q 'FR-001' specs/product/SCOPE_LATEST.yaml && echo OK"
623
+ - id: UJ-001
624
+ type: user_journey
625
+ description: "New user completes registration flow"
626
+ epic: e02-auth-ui
627
+ story: e02s01
628
+ ```
629
+
630
+ ---
631
+
632
+ ## Reference block 4
633
+
634
+ ```yaml
635
+ active_flow: null
636
+ active_epic_id: null
637
+ active_story_id: null
638
+
639
+ # ... other state fields ...
640
+
641
+ handoff:
642
+ last_step_completed: "Migrated from <framework> on <date>"
643
+ open_decisions:
644
+ - "decision text here"
645
+ required_reading:
646
+ - specs/product/VISION_LATEST.yaml
647
+ - specs/product/SCOPE_LATEST.yaml
648
+ - specs/tech-architecture/TECH_STACK_LATEST.md
649
+ - specs/release-plan.yaml
650
+ next_skill: survey-context
651
+ ```
652
+
653
+ ---
654
+
655
+ ## Reference block 5
656
+
657
+ ```markdown
658
+ # Migration Audit — <project-name> from <framework>
659
+
660
+ **Date:** <ISO 8601 timestamp>
661
+ **Status:** Pass / Fail with findings
662
+
663
+ ## Findings
664
+
665
+ ### High Priority
666
+ - Artifact: specs/epics/e02-auth-ui/epic.yaml
667
+ Finding: No verify: commands in story tasks
668
+ Recommendation: Add `verify:` to each task before develop-tdd
669
+
670
+ ### Information
671
+ - Count of TODO markers: 3 (normal for fresh migration)
672
+ ```
673
+
674
+ ---
675
+
676
+ ## Reference block 6
677
+
678
+ ```
679
+ Which lenses to include in specs/tech-architecture/METHODOLOGY_LATEST.md?
680
+
681
+ [x] Cost of Delay (CD3) — Priority & trade-off assessment
682
+ [ ] STRIDE — Security threat modeling
683
+ [ ] F.I.R.S.T — Test quality principles
684
+ [ ] Bayesian Updating — Probabilistic decision-making
685
+ [ ] OWASP Top 10 — Web security framework
686
+ ```
687
+
688
+ ---
689
+
690
+ ### Step 7 — Post-migration: Optional two-pass spec writing gate
691
+
692
+ After Steps 1–6, offer the user an optional two-pass spec writing workflow (spec-kit learning):
693
+
694
+ Prompt: "Use two-pass spec writing (user journeys first, then technical)? [yes / no]"
695
+
696
+ If **yes**, initialize the gate in `specs/state.yaml`:
697
+
698
+ ```yaml
699
+ two_pass_spec:
700
+ journey_pass: pending
701
+ technical_pass: pending
702
+ approved_at: null
703
+ ```
704
+
705
+ The journey pass must be marked "complete" by the user (after stakeholder approval of user-journey specs) before the technical pass begins:
706
+
707
+ ```yaml
708
+ two_pass_spec:
709
+ journey_pass: complete
710
+ approved_at: "2026-06-26T12:00:00Z"
711
+ technical_pass: pending
712
+ ```
713
+
714
+ Inform the user: "Journey pass is pending. Run `elaborate-spec` for user journeys, get stakeholder approval, then update `two_pass_spec.journey_pass: complete` in state.yaml before proceeding to technical specs."
715
+
716
+ If **no**, skip the two-pass gate. Proceed directly to plan-work.
717
+
718
+ → verify: `grep -q 'two_pass_spec:' specs/state.yaml && echo "two-pass gate initialized" || echo "two-pass gate not activated"`
719
+
720
+
721
+ ---
722
+
723
+ ### Step 8 — Post-migration: Optional methodology doc template
724
+
725
+ After Steps 1–7, offer the user an optional analytical framework scaffold (GSD learning):
726
+
727
+ Prompt: "Create a methodology doc? [yes / no]"
728
+
729
+ If **yes**, present a checklist of analytical lenses:
730
+
731
+ ```
732
+ Which lenses to include in specs/tech-architecture/METHODOLOGY_LATEST.md?
733
+
734
+ [x] Cost of Delay (CD3) — Priority & trade-off assessment
735
+ [ ] STRIDE — Security threat modeling
736
+ [ ] F.I.R.S.T — Test quality principles
737
+ [ ] Bayesian Updating — Probabilistic decision-making
738
+ [ ] OWASP Top 10 — Web security framework
739
+ ```
740
+
741
+ Copy the template from `migrate-spec/templates/METHODOLOGY_LATEST.md` to `specs/tech-architecture/METHODOLOGY_LATEST.md`.
742
+ - Active lenses remain uncommented
743
+ - Unselected lenses are left commented out
744
+ - Populate `{{project_name}}` with the migrated project's name
745
+
746
+ If **no**, skip. Add note to handoff: "Methodology doc: skipped — can be added later via `cp migrate-spec/templates/METHODOLOGY_LATEST.md specs/tech-architecture/`"
747
+
748
+ → verify: `test -f specs/tech-architecture/METHODOLOGY_LATEST.md && echo "methodology doc created" || echo "methodology doc skipped"`
749
+
750
+ ---
751
+
752
+
753
+ ---
754
+
755
+ ## Artifact Mapping Summary
756
+
757
+ Full mapping tables: [REFERENCE-GSD.md](./REFERENCE-GSD.md) (GSD) · [REFERENCE.md](./REFERENCE.md) (spec-kit, BMAD, learnings).
758
+
759
+ | Source | Target |
760
+ |--------|--------|
761
+ | GSD `ROADMAP.md` | `specs/release-plan.yaml + epic shards` |
762
+ | GSD `REQUIREMENTS.md` | `specs/product/SCOPE_LATEST.yaml` |
763
+ | GSD `CONTEXT.md` (phases) | `specs/tech-architecture/tech-stack.md` + `specs/adr/` |
764
+ | GSD `PLAN.md` | `specs/epics/eNN-slug/epic.yaml` (tasks with verify in `-tasks.yaml`) |
765
+ | GSD `METHODOLOGY.md` | `specs/tech-architecture/tech-stack.md` |
766
+ | spec-kit `spec.md` | `specs/product/SCOPE_LATEST.yaml` + `specs/tech-architecture/tech-stack.md` |
767
+ | spec-kit `plan.md` | `specs/tech-architecture/tech-stack.md` + `specs/release-plan.yaml` + `specs/epics/` |
768
+ | spec-kit `tasks.md` | `specs/epics/ (see slice-tasks)` |
769
+ | BMAD `prd.md` | `specs/product/SCOPE_LATEST.yaml` |
770
+ | BMAD `architecture.md` | `specs/tech-architecture/tech-stack.md` + `specs/adr/` |
771
+ | BMAD `epic-*.md` | `specs/release-plan.yaml + epic shards` |
772
+ | BMAD `story-*.md` | `specs/epics/ (see slice-tasks)` |
773
+ | BMAD `project-context.md` | `CLAUDE.md` (append project-specific section) |
774
+ | BMAD `decision-log.md` | `specs/adr/` (one ADR per logged decision) |
775
+
776
+ ---
777
+
778
+
779
+ ---
780
+
781
+ ## Rules
782
+
783
+ - **Preserve source IDs** — REQ-XX, FR-XX, UJ-XX are emitted as first-class `id:` fields in bigpowers YAML targets (e.g., `in_scope` entries). Never silently renumber. See Step 3 ID Tracking subsection for details.
784
+ - **Never merge contradictory docs** — if source has both `CONTEXT.md` and `architecture.md`, create sections in bigpowers `CONTEXT.md`; don't collapse them.
785
+ - **ADRs are opt-in** — only create an ADR when: hard to reverse, surprising without context, result of a real trade-off. Lightweight decisions go to `specs/DECISION-LOG.md`.
786
+ - **state.yaml is always regenerated** — never migrate source STATE verbatim; bigpowers state.yaml needs its own format.
787
+ - **specs/ is the only output location** — no files are created outside `specs/` and `CLAUDE.md`.
788
+
789
+ ---
790
+
791
+ ### Step 5 — Surface learnings (optional)
792
+
793
+ After migration, offer the user a brief analysis of what the source framework did that bigpowers doesn't have yet.
794
+
795
+ Use the learnings table from [REFERENCE.md](./REFERENCE.md#learnings-to-adopt). Present as checkboxes so the user can decide which to adopt.
796
+
797
+ → verify: `grep -c "\- \[ \]" specs/state.yaml 2>/dev/null && echo "pending items recorded" || echo "no pending items in state.yaml"`
798
+
799
+
800
+ ---
801
+
802
+ ### Step 6 — Adversarial review (optional)
803
+
804
+ 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.
805
+
806
+ Prompt: "Run adversarial review of migrated artifacts? [yes / skip]"
807
+
808
+ If yes, perform these checks:
809
+
810
+ 1. **Scan for incomplete markers** — Find TODO, FIXME, MISSING in specs/
811
+ 2. **Verify every epic has `verify:` commands** — Parse all `eNN-*/epic.yaml` files
812
+ 3. **Check state.yaml handoff** — Ensure `open_decisions` is documented (even if empty)
813
+
814
+ Collect findings and write to `specs/archive/MIGRATION-AUDIT.md`:
815
+
816
+ ```markdown
817
+ # Migration Audit — <project-name> from <framework>
818
+
819
+ **Date:** <ISO 8601 timestamp>
820
+ **Status:** Pass / Fail with findings
821
+
822
+
823
+ ---
824
+
825
+ ## Findings
826
+
827
+ ### High Priority
828
+ - Artifact: specs/epics/e02-auth-ui/epic.yaml
829
+ Finding: No verify: commands in story tasks
830
+ Recommendation: Add `verify:` to each task before develop-tdd
831
+
832
+ ### Information
833
+ - Count of TODO markers: 3 (normal for fresh migration)
834
+ ```
835
+
836
+ If findings exist, the handoff block should note: "Adversarial review: N findings — see `specs/archive/MIGRATION-AUDIT.md`"
837
+
838
+ If skip is chosen, add to handoff: "Adversarial review: skipped — review manually before plan-work"
839
+
840
+ → verify: `test -f specs/archive/MIGRATION-AUDIT.md && echo "audit completed" || echo "audit skipped or not performed"`