migrate-spec
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.
- License 许可
- MIT
- 最近更新
- 2026-11-10
- Stars
- ★ 292
- Forks
- 23
01 前言 Front Matter
- name
- migrate-spec
- model
- sonnet
- 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.
03 SKILL.md 正文
<!-- story: e25s01 --> <!-- story: e25s02 --> <!-- story: e25s03 --> <!-- story: e25s04 --> <!-- story: e25s05 --> <!-- story: e25s06 -->
Migrate Spec
Transform existing GSD, spec-kit, or BMAD planning artifacts into the bigpowers specs/ model. No code is written — the output is a set of bigpowers-format spec files the user can use immediately.
Quick start
- Run this skill from the root of the project being migrated (not the bigpowers repo itself).
- The skill auto-detects the source framework and presents its findings before transforming anything.
- All output goes to
specs/at the project root.
Red flags — stop and ask
Before proceeding, check for these rationalization traps:
- Partial artifact set — only one fingerprint file found (e.g. just
spec.mdwith noplan.md). Don't assume it's a complete project. Ask: "I found only X — is this the full set of your spec artifacts?" - Wrong trigger — user said "migrate my code" or "migrate the database", not "migrate my specs". Confirm before running.
- Stale source — source artifacts have commit dates older than 6 months with no recent activity. Flag: "These specs appear inactive since <date>. Are they still the source of truth?"
- Active divergence — source
state.yamlorsprint-status.yamlshows in-progress work. Flag: "There is active work in flight. Migrating now may lose in-progress context. Proceed?"
If any red flag fires: surface it, wait for explicit user confirmation before continuing.
Process
Step 1 — Detect the source framework
Scan for the fingerprints below. Stop at first match; if multiple match, list them and ask the user which is primary.
| Framework | Fingerprints (any one is sufficient) |
|---|---|
| GSD | .planning/ directory; .planning/ROADMAP.md; .planning/REQUIREMENTS.md with REQ- IDs |
| spec-kit | .specify/ directory; spec.md + plan.md at root; .github/skills/speckit-*/SKILL.md |
| BMAD | _bmad/ directory; _bmad-output/ directory; prd.md with FR- IDs; epic-*.md or story-*.md |
If none found: ask the user which framework before proceeding.
→ verify: test -d specs && test -f specs/state.yaml
Step 2 — Inventory the source artifacts
List every artifact found matching the detected framework. Present the list to the user:
See REFERENCE.md — Detected: GSD...
→ verify: test -d specs && test -w specs
Step 3 — Transform (one artifact at a time, show diffs)
Apply the mapping from REFERENCE.md and REFERENCE-GSD.md. For each target file:
- Show what will be created or appended (title + first 20 lines).
- Ask: "Create this? [yes / edit / skip]"
- On yes: write to
specs/.
ID Tracking (REQ-XX, FR-XX, UJ-XX)
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:
See REFERENCE.md — # CORRECT — first-class id: field...
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.
When source has MIXED IDs: Items with IDs get id: fields; items without IDs receive auto-generated REQ-NNN entries. Document which were auto-generated in a comment block at the top of in_scope.
See REFERENCE.md — in_scope format with ID tracking for examples.
Traceability Output (FR-XX, UJ-XX)
When source has FR-XX or UJ-XX IDs, emit specs/product/REQUIREMENTS_TRACE.yaml for end-to-end requirement traceability:
See REFERENCE.md — trace:...
Existing trace file: If REQUIREMENTS_TRACE.yaml already exists, prompt: "REQUIREMENTS_TRACE.yaml exists. [overwrite / merge / skip]"
No FR-XX/UJ-XX found: Skip trace file; add note to state.yaml handoff: "No FR-XX/UJ-XX IDs found — traceability file skipped".
See REFERENCE.md — REQUIREMENTS_TRACE.yaml format for the complete schema.
HARD GATE — Never overwrite an existing
specs/file without explicit user confirmation. Merge into it if it exists; don't clobber.→ verify:
git rev-parse --git-dir >/dev/null 2>&1 && test -d specs
→ verify: test -d specs && [ "$(ls specs/*.md specs/*.yaml 2>/dev/null | wc -l | tr -d " ")" -gt 0 ]
Step 4 — Generate state.yaml
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:
See REFERENCE.md — active_flow: null...
If no open decisions were found during migration, the open_decisions list may be empty with an explanatory comment:
See REFERENCE.md — handoff:...
→ verify: grep -q handoff: specs/state.yaml
migrate-spec Reference — GSD
Full artifact transformation rules for migrating GSD projects to bigpowers YAML layout.
See REFERENCE.md for spec-kit, BMAD, learnings, and ADR/DECISION-LOG formats.
Artifact Locations
GSD stores everything under .planning/ at the project root.
.planning/
├── ROADMAP.md
├── STATE.md
├── REQUIREMENTS.md
├── METHODOLOGY.md
├── HANDOFF.json
├── .continue-here.md
└── phases/
└── XX-name/
├── XX-CONTEXT.md
├── XX-YY-PLAN.md
├── XX-YY-SUMMARY.md
└── XX-DISCUSSION-LOG.md
spikes/
└── SPIKE-NNN/README.md
Transformation Rules
.planning/ROADMAP.md → specs/release-plan.yaml + specs/epics/eNN-*.yaml
GSD ROADMAP has: milestone name, phases, success criteria per phase, plan count.
Transform:
- Each GSD phase → one epic entry in
release-plan.yaml(id,title,wsjf,file) - Phase detail → matching
specs/epics/eNN-slug.yaml(stories, tasks,verify) - Completed phases →
doneinexecution-status.yaml; active →in_progress
.planning/REQUIREMENTS.md → specs/product/SCOPE_LATEST.yaml
GSD REQUIREMENTS has: REQ-XX IDs, Validated/Active/Out-of-Scope categories, traceability.
Transform:
- Preserve REQ-XX IDs as first-class
id:fields inin_scopeentries (see REFERENCE.md — ID tracking format) - Validated requirements →
in_scopeentries withid:,description:,source:fields - Out-of-Scope →
out_of_scopeentries (preserve IDs if present) - Active (in-progress) →
in_scopewith status note
.planning/phases/XX-name/XX-CONTEXT.md → specs/tech-architecture/TECH_STACK_LATEST.md + specs/adr/
GSD CONTEXT.md has 6 sections: domain, decisions, canonical_refs, code_context, specifics, deferred.
Transform:
domain→plans/TECH_STACK_LATEST.mdDomain sectiondecisions→ scan each: if hard-to-reverse + surprising →specs/adr/NNNN-{slug}.md; if lightweight →specs/DECISION-LOG_LATEST.mdcanonical_refs→ Reference links in TECH_STACKcode_context→ Architecture sectiondeferred→SCOPE_LATEST.yamlout_of_scope(with "(deferred from GSD)" note)
.planning/phases/XX-name/XX-YY-PLAN.md → specs/epics/eNN-*.yaml tasks
GSD PLAN has: frontmatter (depends-on, verify), objective, typed tasks, success criteria, output spec.
Transform:
- Preserve task structure as
tasks[]in epic shard - Keep
verify: <command>lines - Map GSD
depends-onto taskdepends-onnotes - SUMMARY.md (execution record) → skip or append to
specs/archive/
.planning/METHODOLOGY.md → specs/tech-architecture/METHODOLOGY_LATEST.md
GSD METHODOLOGY.md is a standing reference for analytical lenses (Bayesian updating, STRIDE, cost-of-delay).
Transform:
- Copy each lens as a section in
specs/tech-architecture/METHODOLOGY_LATEST.md - Note: "These lenses should inform
plan-workandaudit-codesessions."
.planning/HANDOFF.json + .continue-here.md → specs/state.yaml handoff
GSD HANDOFF has: current phase, last plan, blocking reason, required reading list.
Transform — populate handoff in state.yaml:
handoff:
last_step_completed: "<phase/plan from HANDOFF>"
open_decisions:
- "<blocking reason if any>"
required_reading:
- "<required_reading list>"
next_skill: survey-context
.planning/spikes/SPIKE-NNN/README.md → specs/archive/spikes/SPIKE-{name}.md
GSD spike README has: YAML frontmatter (verdict, validates, related), methodology, findings, recommendation.
Transform:
- Flatten directory into
specs/archive/spikes/SPIKE-{name}.md - Preserve frontmatter as YAML block at top
- Keep verdict prominently:
**Verdict:** ADOPTED / REJECTED / DEFERRED
Skip List
These GSD artifacts are not migrated — they are execution records, not planning inputs:
| Artifact | Reason |
|---|---|
.planning/phases/XX/XX-YY-SUMMARY.md |
Execution log; no bigpowers equivalent |
.planning/phases/XX/XX-DISCUSSION-LOG.md |
Audit trail only; not consumed by agents |
.planning/USER-PROFILE.md |
User calibration; bigpowers has no profile system |
.planning/sketches/ |
Visual exploration; not spec artifacts |
Migrate Spec — Reference
Navigation
| Lines | Section |
|---|---|
| 1 | Title |
| 3–68 | Navigation |
| 69–70 | spec-kit → bigpowers Mapping |
| 71–84 | Artifact Locations |
| 85–94 | spec.md → specs/product/SCOPE_LATEST.yaml + specs/tech-architecture/TECH_STACK_LATEST.md |
| 95–105 | plan.md → specs/tech-architecture/TECH_STACK_LATEST.md + specs/release-plan.yaml + specs/epics/ |
| 106–114 | tasks.md → specs/epics/ (via slice-tasks) |
| 115–120 | .specify/ state |
| 121–122 | BMAD → bigpowers Mapping |
| 123–141 | Artifact Locations |
| 142–148 | product-brief.md / prfaq-{project}.md → specs/product/VISION_LATEST.yaml |
| 149–160 | prd.md → specs/product/SCOPE_LATEST.yaml + GLOSSARY_LATEST.yaml |
| 161–167 | addendum.md + decision-log.md → specs/adr/ + specs/DECISION-LOG_LATEST.md |
| 168–174 | architecture.md → specs/tech-architecture/TECH_STACK_LATEST.md + specs/adr/ |
| 175–178 | epic-*.md → specs/release-plan.yaml + specs/epics/eNN-*.yaml |
| 179–182 | story-*.md → specs/epics/ stories |
| 183–188 | project-context.md → CLAUDE.md |
| 189–192 | Learnings to Adopt |
| 193–198 | From GSD |
| 199–204 | From spec-kit |
| 205–212 | From BMAD |
| 213–214 | Output Formats |
| 215–224 | ADR format (bigpowers) |
| 225–227 | Context |
| 228–230 | Decision |
| 231–234 | Consequences |
| 235–246 | DECISION-LOG.md format |
| 247–257 | MIGRATION-AUDIT.md format |
| 258–264 | Summary |
| 265–274 | High Priority Findings |
| 275–278 | Information |
| 279–285 | Next Steps |
| 286–306 | in_scope format with ID tracking |
| 307–341 | REQUIREMENTS_TRACE.yaml format |
| 342–397 | specs/state.yaml template format |
| 398–416 | Reference block 1 |
| 417–432 | Reference block 2 |
| 433–451 | Reference block 3 |
| 452–474 | Reference block 4 |
| 475–482 | Reference block 5 |
| 483–484 | Findings |
| 485–489 | High Priority |
| 490–495 | Information |
| 496–509 | Reference block 6 |
| 510–542 | Step 7 — Post-migration: Optional two-pass spec writing gate |
| 543–574 | Step 8 — Post-migration: Optional methodology doc template |
| 575–600 | Artifact Mapping Summary |
| 601–610 | Rules |
| 611–621 | Step 5 — Surface learnings (optional) |
| 622–644 | Step 6 — Adversarial review (optional) |
| 645–646 | Findings |
| 647–651 | High Priority |
| 652–660 | Information |
migrate-spec Reference — spec-kit, BMAD, Learnings
Transformation rules for spec-kit and BMAD projects, plus learnings to adopt and output formats.
See REFERENCE-GSD.md for full GSD → bigpowers YAML mapping.
spec-kit → bigpowers Mapping
Artifact Locations
project-root/
├── spec.md ← user journeys, success criteria, scope
├── plan.md ← technology, architecture, constraints
├── tasks.md ← atomic task list
└── .specify/
├── workflow-catalogs.yml
└── workflows/runs/<id>/
├── state.json
└── log.jsonl
spec.md → specs/product/SCOPE_LATEST.yaml + specs/tech-architecture/TECH_STACK_LATEST.md
spec-kit spec.md focuses on: who uses it, user journeys, success criteria, what's in/out of scope.
Transform:
- User journeys →
SCOPE_LATEST.yamlsuccess criteria /in_scopeentries - In/out of scope →
in_scope/out_of_scopesections - Domain terms / glossary →
requirements/GLOSSARY_LATEST.yaml - Problem statement / vision →
requirements/VISION_LATEST.yaml
plan.md → specs/tech-architecture/TECH_STACK_LATEST.md + specs/release-plan.yaml + specs/epics/
spec-kit plan.md covers: technology stack, architectural patterns, implementation constraints.
Transform:
- Technology decisions →
plans/TECH_STACK_LATEST.mdTechnology section - Architecture patterns → Architecture section
- Hard decisions with trade-offs →
specs/adr/NNNN-{slug}.md - Phased approach / milestones →
release-plan.yamlepic entries - Implementation steps →
epics/eNN-*.yamltask list withverify:
tasks.md → specs/epics/ (via slice-tasks)
spec-kit tasks are atomic, verifiable in isolation — same principle as bigpowers verify: mandate.
Transform:
- Copy tasks into epic shard
tasks[]; preserve task numbers - Add
verify:line if spec-kit task has an acceptance criterion - Group into epics matching
release-plan.yamlentries
.specify/ state
Discard — workflow engine state; not meaningful in the bigpowers skill model.
BMAD → bigpowers Mapping
Artifact Locations
project-root/
├── _bmad/bmm/config.yaml
├── _bmad-output/
│ ├── product-brief.md
│ ├── prfaq-{project}.md
│ ├── prd.md
│ ├── addendum.md
│ ├── decision-log.md
│ ├── ux-spec.md
│ └── architecture.md
├── project-context.md
└── docs/
├── epic-{slug}.md
└── story-{slug}.md
product-brief.md / prfaq-{project}.md → specs/product/VISION_LATEST.yaml
Transform:
- Vision + core value →
VISION_LATEST.yamlnorth_star / success_criteria - Target users → notes in VISION or SCOPE
- prfaq customer FAQ → can inform success criteria in SCOPE
prd.md → specs/product/SCOPE_LATEST.yaml + GLOSSARY_LATEST.yaml
BMAD prd.md has: Glossary, FR-XX functional requirements, UJ-XX user journeys, NFRs, assumptions.
Transform:
- Glossary →
GLOSSARY_LATEST.yaml - FR-XX items →
in_scopewith IDs preserved - UJ-XX user journeys → success criteria
- NFRs →
constraintssection [ASSUMPTION: ...]inline tags → collected in scope YAML- Out-of-scope features →
out_of_scope
addendum.md + decision-log.md → specs/adr/ + specs/DECISION-LOG_LATEST.md
Transform:
- Hard, irreversible, surprising decisions → individual
specs/adr/NNNN-{slug}.md - Lightweight decisions →
specs/DECISION-LOG_LATEST.md(date | decision | rationale) addendum.mdchange signals → note inSCOPE_LATEST.yamlmetadata
architecture.md → specs/tech-architecture/TECH_STACK_LATEST.md + specs/adr/
Transform:
- ADR sections → individual
specs/adr/NNNN-{slug}.mdfiles - System overview / data models → TECH_STACK Architecture section
- API contracts → keep at
docs/api.mdor similar; link from TECH_STACK
epic-*.md → specs/release-plan.yaml + specs/epics/eNN-*.yaml
Each epic → one release-plan entry + one epic shard. Acceptance criteria → story tasks with verify:.
story-*.md → specs/epics/ stories
Each story → one story entry in epic shard. Acceptance criteria → verify: lines.
project-context.md → CLAUDE.md
Add a "## Project Context" section to CLAUDE.md. Copy tech stack, coding rules, preferences verbatim.
Learnings to Adopt
Optional enhancements to offer the user after migration. Present as checkboxes.
From GSD
- [x]
specs/tech-architecture/METHODOLOGY_LATEST.md— Standing analytical lenses. Agents read before planning. (adopted: optional Step 8 template scaffold) - [x]
handoffblock in state.yaml — Last skill, last step, required reading for next session. (adopted: mandatory in Step 4 output) - [x] ID tracking in SCOPE_LATEST.yaml — FR/UJ IDs for spec → plan → verification traceability. (adopted in Step 3 transform)
From spec-kit
- [x] Two-pass spec writing — User-journey pass first, then technical-decisions pass. (adopted: optional post-migration gate)
- [ ] Explicit inter-phase gate — "Approve to proceed?" at end of
elaborate-spec. - [ ] Epic task isolation — Each task completable in isolation;
depends-onexplicit in epic YAML.
From BMAD
- [x] FR-XX + UJ-XX in SCOPE_LATEST.yaml — Rigorous traceability. (adopted: REQUIREMENTS_TRACE.yaml emitted on migration)
- [ ]
specs/DECISION-LOG_LATEST.md— Lightweight decisions below ADR threshold. - [x] Adversarial review pass — Critique epic shard before
develop-tdd. (adopted: optional Step 6 in migration)
Output Formats
ADR format (bigpowers)
Use model-domain/ADR-FORMAT.md. Only create when all three apply: hard to reverse, surprising without context, result of a real trade-off.
# ADR-NNNN: {Title}
**Status:** Accepted
**Date:** YYYY-MM-DD
## Context
[What situation forced this decision?]
## Decision
[What was decided?]
## Consequences
[What becomes easier or harder?]
DECISION-LOG.md format
For lightweight decisions that don't warrant a full ADR:
# Decision Log
| Date | Decision | Rationale | Alternatives |
|------|----------|-----------|--------------|
| 2026-05-19 | Use Postgres | Existing ops expertise | SQLite (limited), DynamoDB (no local dev) |
MIGRATION-AUDIT.md format
Post-migration adversarial review report. Written to specs/archive/MIGRATION-AUDIT.md when Step 6 runs:
# Migration Audit — <project-name>
**Source Framework:** <GSD|spec-kit|BMAD>
**Date:** <ISO 8601>
**Status:** <Pass|Findings|Critical>
## Summary
- TODO markers: N
- FIXME markers: N
- MISSING markers: N
- Epics without verify: N
## High Priority Findings
- **Artifact:** specs/epics/e02-auth-ui/epic.yaml
**Issue:** Story e02s01 has no verify: commands in tasks
**Recommendation:** Add runnable verify command before develop-tdd
- **Artifact:** specs/state.yaml
**Issue:** open_decisions list empty without comment explanation
**Recommendation:** Add # comment if all decisions were resolved during migration
## Information
- Artifact specs/epics/e01-auth/epic.yaml contains TODO: "Define Neon Auth client URL injection" (normal for fresh migration)
## Next Steps
1. Address high-priority findings before plan-work
2. Run bash scripts/audit-compliance.sh to enforce code quality gates
3. Begin develop-tdd on highest-WSJF epic
in_scope format with ID tracking
Source IDs (REQ-XX, FR-XX, UJ-XX) are emitted as first-class YAML fields:
in_scope:
- id: REQ-001
description: "User can register with email and password"
source: "REQUIREMENTS.md"
- id: FR-015
description: "Auth service must support OAuth2 token flow"
source: "prd.md"
- id: REQ-AUTO-002 # auto-generated when source had no ID
description: "Dashboard displays user profile"
# auto-generated: true (optional comment for tracking)
When source has no IDs: If the user opts in, auto-generated IDs follow the REQ-{NNN} format with an optional # auto-generated comment.
When source has mixed IDs: Entries with source IDs get id: fields; entries without IDs receive auto-generated IDs. A comment block at the top of in_scope documents which IDs were auto-generated.
REQUIREMENTS_TRACE.yaml format
Emitted when source has FR-XX (functional requirement) or UJ-XX (user journey) IDs. Maps source requirements to bigpowers epic/story structure and verification commands:
trace:
# Functional Requirements
- id: FR-001
type: functional_requirement
description: "User can register with email/password"
source_artifact: "prd.md"
epic: "e02-auth-ui"
story: "e02s01"
verify: "grep -q 'FR-001' specs/product/SCOPE_LATEST.yaml && echo OK"
# User Journeys
- id: UJ-001
type: user_journey
description: "New user completes registration flow"
source_artifact: "epic-auth-ui.md"
epic: "e02-auth-ui"
story: "e02s01"
verify: "grep -q 'UJ-001' specs/epics/e02-auth-ui/epic.yaml && echo OK"
metadata:
source_framework: "BMAD"
migrated_at: "2026-06-26T12:00:00Z"
total_requirements: 2
coverage: "All FR-XX and UJ-XX IDs from source mapped"
When source has no FR-XX/UJ-XX: Skip REQUIREMENTS_TRACE.yaml. Add note to state.yaml handoff: "No FR-XX/UJ-XX IDs found — traceability file skipped".
Existing trace file: If REQUIREMENTS_TRACE.yaml exists, prompt user: "Overwrite? [yes / merge / skip]". Merge appends new entries; skip leaves existing file intact.
specs/state.yaml template format
Generated during Step 4 of migration. Regenerate from scratch in bigpowers YAML format. The handoff block is mandatory:
active_flow: null
active_epic_id: null
active_story_id: null
completed_epic: false
epic_cycle:
current_step: null
next_skill: null
story_bcps: null
completed_steps: []
audit_result: null
bug_cycle:
current_step: null
completed_steps: []
release:
target_version: null
last_tag: null
last_publish: null
ci_verified: false
metrics:
story_start: null
story_end: null
cycle_minutes: null
bcp_per_hour: null
git:
branch: <current branch>
hash: <git rev-parse HEAD>
pushed: false
handoff:
last_step_completed: "Migrated from <framework> on <date>"
open_decisions: [] # Empty if all decisions resolved during migration
required_reading:
- specs/product/VISION_LATEST.yaml
- specs/product/SCOPE_LATEST.yaml
- specs/tech-architecture/TECH_STACK_LATEST.md
- specs/release-plan.yaml
next_skill: survey-context
two_pass_spec: # Optional: only if user activates two-pass spec writing gate
journey_pass: pending
technical_pass: pending
approved_at: null
Reference block 1
Detected: GSD
Found:
✓ .planning/ROADMAP.md
✓ .planning/REQUIREMENTS.md (12 REQ-XX items)
✓ .planning/state.yaml
✓ .planning/phases/01-auth/01-CONTEXT.md
✗ .planning/METHODOLOGY.md (not present)
Skipping:
.planning/phases/01-auth/01-01-SUMMARY.md (execution record; archived only)
Proceed with migration? [yes / skip <artifact> / abort]
Reference block 2
# CORRECT — first-class id: field
in_scope:
- id: REQ-001
description: "User can register with email/password"
source: "REQUIREMENTS.md"
# DEPRECATED — comment-only
in_scope:
- "User can register with email/password" # REQ-001
Reference block 3
trace:
- id: FR-001
type: functional_requirement
description: "User can register with email/password"
epic: e02-auth-ui
story: e02s01
verify: "grep -q 'FR-001' specs/product/SCOPE_LATEST.yaml && echo OK"
- id: UJ-001
type: user_journey
description: "New user completes registration flow"
epic: e02-auth-ui
story: e02s01
Reference block 4
active_flow: null
active_epic_id: null
active_story_id: null
# ... other state fields ...
handoff:
last_step_completed: "Migrated from <framework> on <date>"
open_decisions:
- "decision text here"
required_reading:
- specs/product/VISION_LATEST.yaml
- specs/product/SCOPE_LATEST.yaml
- specs/tech-architecture/TECH_STACK_LATEST.md
- specs/release-plan.yaml
next_skill: survey-context
Reference block 5
# Migration Audit — <project-name> from <framework>
**Date:** <ISO 8601 timestamp>
**Status:** Pass / Fail with findings
## Findings
### High Priority
- Artifact: specs/epics/e02-auth-ui/epic.yaml
Finding: No verify: commands in story tasks
Recommendation: Add `verify:` to each task before develop-tdd
### Information
- Count of TODO markers: 3 (normal for fresh migration)
Reference block 6
Which lenses to include in specs/tech-architecture/METHODOLOGY_LATEST.md?
[x] Cost of Delay (CD3) — Priority & trade-off assessment
[ ] STRIDE — Security threat modeling
[ ] F.I.R.S.T — Test quality principles
[ ] Bayesian Updating — Probabilistic decision-making
[ ] OWASP Top 10 — Web security framework
Step 7 — Post-migration: Optional two-pass spec writing gate
After Steps 1–6, offer the user an optional two-pass spec writing workflow (spec-kit learning):
Prompt: "Use two-pass spec writing (user journeys first, then technical)? [yes / no]"
If yes, initialize the gate in specs/state.yaml:
two_pass_spec:
journey_pass: pending
technical_pass: pending
approved_at: null
The journey pass must be marked "complete" by the user (after stakeholder approval of user-journey specs) before the technical pass begins:
two_pass_spec:
journey_pass: complete
approved_at: "2026-06-26T12:00:00Z"
technical_pass: pending
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."
If no, skip the two-pass gate. Proceed directly to plan-work.
→ verify: grep -q 'two_pass_spec:' specs/state.yaml && echo "two-pass gate initialized" || echo "two-pass gate not activated"
Step 8 — Post-migration: Optional methodology doc template
After Steps 1–7, offer the user an optional analytical framework scaffold (GSD learning):
Prompt: "Create a methodology doc? [yes / no]"
If yes, present a checklist of analytical lenses:
Which lenses to include in specs/tech-architecture/METHODOLOGY_LATEST.md?
[x] Cost of Delay (CD3) — Priority & trade-off assessment
[ ] STRIDE — Security threat modeling
[ ] F.I.R.S.T — Test quality principles
[ ] Bayesian Updating — Probabilistic decision-making
[ ] OWASP Top 10 — Web security framework
Copy the template from migrate-spec/templates/METHODOLOGY_LATEST.md to specs/tech-architecture/METHODOLOGY_LATEST.md.
- Active lenses remain uncommented
- Unselected lenses are left commented out
- Populate
{{project_name}}with the migrated project's name
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/"
→ verify: test -f specs/tech-architecture/METHODOLOGY_LATEST.md && echo "methodology doc created" || echo "methodology doc skipped"
Artifact Mapping Summary
Full mapping tables: REFERENCE-GSD.md (GSD) · REFERENCE.md (spec-kit, BMAD, learnings).
| Source | Target |
|---|---|
GSD ROADMAP.md |
specs/release-plan.yaml + epic shards |
GSD REQUIREMENTS.md |
specs/product/SCOPE_LATEST.yaml |
GSD CONTEXT.md (phases) |
specs/tech-architecture/tech-stack.md + specs/adr/ |
GSD PLAN.md |
specs/epics/eNN-slug/epic.yaml (tasks with verify in -tasks.yaml) |
GSD METHODOLOGY.md |
specs/tech-architecture/tech-stack.md |
spec-kit spec.md |
specs/product/SCOPE_LATEST.yaml + specs/tech-architecture/tech-stack.md |
spec-kit plan.md |
specs/tech-architecture/tech-stack.md + specs/release-plan.yaml + specs/epics/ |
spec-kit tasks.md |
specs/epics/ (see slice-tasks) |
BMAD prd.md |
specs/product/SCOPE_LATEST.yaml |
BMAD architecture.md |
specs/tech-architecture/tech-stack.md + specs/adr/ |
BMAD epic-*.md |
specs/release-plan.yaml + epic shards |
BMAD story-*.md |
specs/epics/ (see slice-tasks) |
BMAD project-context.md |
CLAUDE.md (append project-specific section) |
BMAD decision-log.md |
specs/adr/ (one ADR per logged decision) |
Rules
- Preserve source IDs — REQ-XX, FR-XX, UJ-XX are emitted as first-class
id:fields in bigpowers YAML targets (e.g.,in_scopeentries). Never silently renumber. See Step 3 ID Tracking subsection for details. - Never merge contradictory docs — if source has both
CONTEXT.mdandarchitecture.md, create sections in bigpowersCONTEXT.md; don't collapse them. - 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_LATEST.md. - state.yaml is always regenerated — never migrate source STATE verbatim; bigpowers state.yaml needs its own format.
- specs/ is the only output location — no files are created outside
specs/andCLAUDE.md.
Step 5 — Surface learnings (optional)
After migration, offer the user a brief analysis of what the source framework did that bigpowers doesn't have yet.
Use the learnings table from REFERENCE.md. Present as checkboxes so the user can decide which to adopt.
→ verify: grep -c "\- \[ \]" specs/state.yaml 2>/dev/null && echo "pending items recorded" || echo "no pending items in state.yaml"
Step 6 — Adversarial review (optional)
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.
Prompt: "Run adversarial review of migrated artifacts? [yes / skip]"
If yes, perform these checks:
- Scan for incomplete markers — Find TODO, FIXME, MISSING in specs/
- Verify every epic has
verify:commands — Parse alleNN-*/epic.yamlfiles - Check state.yaml handoff — Ensure
open_decisionsis documented (even if empty)
Collect findings and write to specs/archive/MIGRATION-AUDIT.md:
# Migration Audit — <project-name> from <framework>
**Date:** <ISO 8601 timestamp>
**Status:** Pass / Fail with findings
---
## Findings
### High Priority
- Artifact: specs/epics/e02-auth-ui/epic.yaml
Finding: No verify: commands in story tasks
Recommendation: Add `verify:` to each task before develop-tdd
### Information
- Count of TODO markers: 3 (normal for fresh migration)
If findings exist, the handoff block should note: "Adversarial review: N findings — see specs/archive/MIGRATION-AUDIT.md"
If skip is chosen, add to handoff: "Adversarial review: skipped — review manually before plan-work"
→ verify: test -f specs/archive/MIGRATION-AUDIT.md && echo "audit completed" || echo "audit skipped or not performed"
04 同仓库更多 Skills
skill-verify-fail-open-fixture
Negative-path fixture for run-skill-verify.sh — must never PASS.
negative-path
暂无简介
write-document
Write, organize, and sync high-integrity technical documents using the BMAD methodology. Ensures every document is Bold, Minimal, Actionable, and Durable. Use when creating architectural docs, technical guides, or organizing the specs/ directory.
wire-observability
Add structured JSON logging, observability commands, and idempotent setup scripts to a project. Use when a project needs production-readiness instrumentation, when user wants structured logging, or as a production-readiness gate at any phase of development.
wire-ci
CI pipeline setup with bundled, forge-neutral templates and local validation. Detects the forge from the git remote, generates workflows for supported forges, and skips honestly for the rest. The CI equivalent of wire-observability.
visual-dashboard
Start a browser-based dashboard that visualizes architecture, implementation plans, and project status. Persists artifacts in .bigpowers/dashboard/. Reads specs/state.yaml, release-plan.yaml, epics, and planning-status via HTTP API or opencode panel.