bigpowers 1.0.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.
Files changed (96) hide show
  1. package/.gitmessage +5 -0
  2. package/.releaserc.json +17 -0
  3. package/CHANGELOG.md +61 -0
  4. package/CLAUDE.md +61 -0
  5. package/CONVENTIONS.md +140 -0
  6. package/GEMINI.md +53 -0
  7. package/LICENSE +21 -0
  8. package/README.md +116 -0
  9. package/RELEASE.md +108 -0
  10. package/SKILL-INDEX.md +146 -0
  11. package/assess-impact/SKILL.md +76 -0
  12. package/audit-code/HEURISTICS.md +43 -0
  13. package/audit-code/SKILL.md +81 -0
  14. package/bin/bigpowers.js +27 -0
  15. package/change-request/REFERENCE.md +60 -0
  16. package/change-request/SKILL.md +42 -0
  17. package/commit-message/REFERENCE.md +81 -0
  18. package/commit-message/SKILL.md +39 -0
  19. package/countable-story-format.md +293 -0
  20. package/craft-skill/REFERENCE.md +88 -0
  21. package/craft-skill/SKILL.md +55 -0
  22. package/deepen-architecture/DEEPENING.md +37 -0
  23. package/deepen-architecture/INTERFACE-DESIGN.md +44 -0
  24. package/deepen-architecture/LANGUAGE.md +53 -0
  25. package/deepen-architecture/SKILL.md +76 -0
  26. package/define-language/SKILL.md +75 -0
  27. package/define-success/SKILL.md +60 -0
  28. package/delegate-task/SKILL.md +70 -0
  29. package/design-interface/SKILL.md +94 -0
  30. package/develop-tdd/SKILL.md +160 -0
  31. package/develop-tdd/deep-modules.md +33 -0
  32. package/develop-tdd/interface-design.md +31 -0
  33. package/develop-tdd/mocking.md +59 -0
  34. package/develop-tdd/refactoring.md +10 -0
  35. package/develop-tdd/tests.md +71 -0
  36. package/dispatch-agents/SKILL.md +72 -0
  37. package/edit-document/SKILL.md +14 -0
  38. package/elaborate-spec/SKILL.md +79 -0
  39. package/enforce-first/SKILL.md +75 -0
  40. package/execute-plan/SKILL.md +84 -0
  41. package/grill-me/REFERENCE.md +63 -0
  42. package/grill-me/SKILL.md +25 -0
  43. package/guard-git/REFERENCE.md +136 -0
  44. package/guard-git/SKILL.md +39 -0
  45. package/guard-git/scripts/block-dangerous-git.sh +41 -0
  46. package/guard-git/scripts/lib/git-guardrails-core.sh +29 -0
  47. package/hook-commits/SKILL.md +91 -0
  48. package/hooks/pre-tool-use.sh +130 -0
  49. package/index.js +6 -0
  50. package/inspect-quality/SKILL.md +101 -0
  51. package/investigate-bug/SKILL.md +111 -0
  52. package/kickoff-branch/SKILL.md +87 -0
  53. package/map-codebase/SKILL.md +66 -0
  54. package/migrate-spec/REFERENCE-GSD.md +137 -0
  55. package/migrate-spec/REFERENCE.md +186 -0
  56. package/migrate-spec/SKILL.md +150 -0
  57. package/model-domain/ADR-FORMAT.md +47 -0
  58. package/model-domain/CONTEXT-FORMAT.md +77 -0
  59. package/model-domain/SKILL.md +82 -0
  60. package/opencode.json +4 -0
  61. package/orchestrate-project/REFERENCE.md +89 -0
  62. package/orchestrate-project/SKILL.md +59 -0
  63. package/organize-workspace/REFERENCE.md +80 -0
  64. package/organize-workspace/SKILL.md +74 -0
  65. package/package.json +45 -0
  66. package/plan-refactor/SKILL.md +75 -0
  67. package/plan-release/SKILL.md +75 -0
  68. package/plan-work/SKILL.md +124 -0
  69. package/playwright.config.ts +56 -0
  70. package/release-branch/SKILL.md +116 -0
  71. package/request-review/SKILL.md +70 -0
  72. package/respond-review/SKILL.md +68 -0
  73. package/scripts/audit-compliance.sh +256 -0
  74. package/scripts/cleanup-worktrees.sh +44 -0
  75. package/scripts/install-cursor-skills-local.sh +13 -0
  76. package/scripts/install-cursor-skills.sh +34 -0
  77. package/scripts/install.sh +240 -0
  78. package/scripts/project-survey.sh +54 -0
  79. package/scripts/sync-skills.sh +110 -0
  80. package/seed-conventions/SKILL.md +185 -0
  81. package/session-state/SKILL.md +69 -0
  82. package/skills-lock.json +157 -0
  83. package/spike-prototype/SKILL.md +92 -0
  84. package/survey-context/SKILL.md +93 -0
  85. package/terse-mode/SKILL.md +35 -0
  86. package/trace-requirement/SKILL.md +68 -0
  87. package/using-bigpowers/SKILL.md +65 -0
  88. package/validate-fix/SKILL.md +93 -0
  89. package/visual-dashboard/SKILL.md +49 -0
  90. package/visual-dashboard/scripts/frame-template.html +189 -0
  91. package/visual-dashboard/scripts/helper.js +83 -0
  92. package/visual-dashboard/scripts/server.cjs +345 -0
  93. package/visual-dashboard/scripts/start-server.sh +121 -0
  94. package/visual-dashboard/scripts/stop-server.sh +46 -0
  95. package/wire-observability/SKILL.md +90 -0
  96. package/write-document/SKILL.md +63 -0
@@ -0,0 +1,137 @@
1
+ # migrate-spec Reference — GSD
2
+
3
+ Full artifact transformation rules for migrating GSD projects to bigpowers.
4
+
5
+ See [REFERENCE.md](./REFERENCE.md) for spec-kit, BMAD, learnings, and ADR/DECISION-LOG formats.
6
+
7
+ ---
8
+
9
+ ## Artifact Locations
10
+
11
+ GSD stores everything under `.planning/` at the project root.
12
+
13
+ ```
14
+ .planning/
15
+ ├── ROADMAP.md
16
+ ├── STATE.md
17
+ ├── REQUIREMENTS.md
18
+ ├── METHODOLOGY.md
19
+ ├── HANDOFF.json
20
+ ├── .continue-here.md
21
+ └── phases/
22
+ └── XX-name/
23
+ ├── XX-CONTEXT.md
24
+ ├── XX-YY-PLAN.md
25
+ ├── XX-YY-SUMMARY.md
26
+ └── XX-DISCUSSION-LOG.md
27
+ spikes/
28
+ └── SPIKE-NNN/README.md
29
+ ```
30
+
31
+ ---
32
+
33
+ ## Transformation Rules
34
+
35
+ ### `.planning/ROADMAP.md` → `specs/RELEASE-PLAN.md`
36
+
37
+ GSD ROADMAP has: milestone name, phases, success criteria per phase, plan count.
38
+
39
+ bigpowers RELEASE-PLAN needs: release version, status, WSJF, focus, objective.
40
+
41
+ Transform:
42
+ - Each GSD phase → one release entry in RELEASE-PLAN.md
43
+ - Phase name → release name (add version number e.g. v1.0.0)
44
+ - GSD success criteria → "Success Criteria" subsection under each release entry
45
+ - Phase plan count → "Job Size" hint for WSJF (ask user to score)
46
+ - Completed phases → `✅` status; active phase → `⏳`; future phases → `📋`
47
+
48
+ ---
49
+
50
+ ### `.planning/REQUIREMENTS.md` → `specs/SCOPE.md`
51
+
52
+ GSD REQUIREMENTS has: REQ-XX IDs, Validated/Active/Out-of-Scope categories, traceability.
53
+
54
+ Transform:
55
+ - Copy REQ-XX IDs as-is (preserve for cross-referencing)
56
+ - Validated requirements → "In Scope" section
57
+ - Out-of-Scope → "Out of Scope" section
58
+ - Active (in-progress) → "In Scope (WIP)" section
59
+ - Add header: `# Scope — migrated from GSD REQUIREMENTS.md`
60
+
61
+ ---
62
+
63
+ ### `.planning/phases/XX-name/XX-CONTEXT.md` → `specs/CONTEXT.md` + `specs/adr/`
64
+
65
+ GSD CONTEXT.md has 6 sections: domain, decisions, canonical_refs, code_context, specifics, deferred.
66
+
67
+ Transform:
68
+ - `domain` → `specs/CONTEXT.md` Domain section (domain model, terms, aggregates)
69
+ - `decisions` → scan each: if hard-to-reverse + surprising → `specs/adr/NNNN-{slug}.md`; if lightweight → `specs/DECISION-LOG.md`
70
+ - `canonical_refs` → Reference links in CONTEXT.md
71
+ - `code_context` → `specs/CONTEXT.md` Architecture section
72
+ - `specifics` → merge into relevant CONTEXT.md section
73
+ - `deferred` → `specs/SCOPE.md` Out-of-Scope section (with "(deferred from GSD)" note)
74
+
75
+ ---
76
+
77
+ ### `.planning/phases/XX-name/XX-YY-PLAN.md` → `specs/PLAN-vX.Y.Z.md`
78
+
79
+ GSD PLAN has: frontmatter (depends-on, verify), objective, typed tasks, success criteria, output spec.
80
+
81
+ Transform:
82
+ - Preserve task structure
83
+ - Keep `verify: <command>` lines (same format bigpowers uses)
84
+ - Map GSD `depends-on` to a "Dependencies" note in bigpowers PLAN header
85
+ - Add bigpowers frontmatter with release version
86
+ - SUMMARY.md (execution record) → append as "## Execution Record" if needed; otherwise skip
87
+
88
+ ---
89
+
90
+ ### `.planning/METHODOLOGY.md` → `specs/SPIKE-methodology.md`
91
+
92
+ GSD METHODOLOGY.md is a standing reference for analytical lenses (Bayesian updating, STRIDE, cost-of-delay). bigpowers has no direct equivalent.
93
+
94
+ Transform:
95
+ - Copy each lens as a section in `specs/SPIKE-methodology.md`
96
+ - Add header: `# Project Methodology — migrated from GSD`
97
+ - Note: "These lenses should inform `plan-work` and `audit-code` sessions."
98
+
99
+ ---
100
+
101
+ ### `.planning/HANDOFF.json` + `.continue-here.md` → `specs/STATE.md` (resume block)
102
+
103
+ GSD HANDOFF has: current phase, last plan, blocking reason, required reading list.
104
+
105
+ Transform — add a "## Session Resume" block to `specs/STATE.md`:
106
+
107
+ ```markdown
108
+ ## Session Resume
109
+
110
+ - Last active: <phase/plan from HANDOFF>
111
+ - Blocking: <reason if any>
112
+ - Required reading before next session: <required_reading list>
113
+ ```
114
+
115
+ ---
116
+
117
+ ### `.planning/spikes/SPIKE-NNN/README.md` → `specs/SPIKE-{name}.md`
118
+
119
+ GSD spike README has: YAML frontmatter (verdict, validates, related), methodology, findings, recommendation.
120
+
121
+ Transform:
122
+ - Flatten directory into single `specs/SPIKE-{name}.md`
123
+ - Preserve frontmatter as YAML block comment at top
124
+ - Keep verdict prominently: `**Verdict:** ADOPTED / REJECTED / DEFERRED`
125
+
126
+ ---
127
+
128
+ ## Skip List
129
+
130
+ These GSD artifacts are not migrated — they are execution records, not planning inputs:
131
+
132
+ | Artifact | Reason |
133
+ |----------|--------|
134
+ | `.planning/phases/XX/XX-YY-SUMMARY.md` | Execution log; no bigpowers equivalent |
135
+ | `.planning/phases/XX/XX-DISCUSSION-LOG.md` | Audit trail only; not consumed by agents |
136
+ | `.planning/USER-PROFILE.md` | User calibration; bigpowers has no profile system |
137
+ | `.planning/sketches/` | Visual exploration; not spec artifacts |
@@ -0,0 +1,186 @@
1
+ # migrate-spec Reference — spec-kit, BMAD, Learnings
2
+
3
+ Transformation rules for spec-kit and BMAD projects, plus learnings to adopt and output formats.
4
+
5
+ See [REFERENCE-GSD.md](./REFERENCE-GSD.md) for full GSD → bigpowers mapping.
6
+
7
+ ---
8
+
9
+ ## spec-kit → bigpowers Mapping
10
+
11
+ ### Artifact Locations
12
+
13
+ ```
14
+ project-root/
15
+ ├── spec.md ← user journeys, success criteria, scope
16
+ ├── plan.md ← technology, architecture, constraints
17
+ ├── tasks.md ← atomic task list
18
+ └── .specify/
19
+ ├── workflow-catalogs.yml
20
+ └── workflows/runs/<id>/
21
+ ├── state.json
22
+ └── log.jsonl
23
+ ```
24
+
25
+ ### `spec.md` → `specs/SCOPE.md` + `specs/CONTEXT.md`
26
+
27
+ spec-kit `spec.md` focuses on: who uses it, user journeys, success criteria, what's in/out of scope.
28
+
29
+ Transform:
30
+ - User journeys → `specs/SCOPE.md` "Success Criteria" subsection (observable behaviors)
31
+ - In/out of scope → `specs/SCOPE.md` main sections
32
+ - Domain terms / glossary → `specs/CONTEXT.md` glossary section
33
+ - Problem statement / vision → first paragraph of `specs/CONTEXT.md`
34
+
35
+ ### `plan.md` → `specs/CONTEXT.md` + `specs/PLAN.md`
36
+
37
+ spec-kit `plan.md` covers: technology stack, architectural patterns, implementation constraints.
38
+
39
+ Transform:
40
+ - Technology decisions → `specs/CONTEXT.md` "Technology" section
41
+ - Architecture patterns → `specs/CONTEXT.md` "Architecture" section
42
+ - Hard decisions with trade-offs → `specs/adr/NNNN-{slug}.md`
43
+ - Phased approach / milestones → `specs/RELEASE-PLAN.md` release entries
44
+ - Implementation steps → `specs/PLAN.md` task list
45
+
46
+ ### `tasks.md` → `specs/TASKS.md`
47
+
48
+ spec-kit tasks are atomic, verifiable in isolation — same principle as bigpowers `verify:` mandate.
49
+
50
+ Transform:
51
+ - Copy tasks directly; preserve task numbers
52
+ - Add `verify:` line if spec-kit task has an acceptance criterion
53
+ - Group into phases matching `specs/RELEASE-PLAN.md` releases
54
+
55
+ ### `.specify/` state
56
+
57
+ Discard — workflow engine state; not meaningful in the bigpowers skill model.
58
+
59
+ ---
60
+
61
+ ## BMAD → bigpowers Mapping
62
+
63
+ ### Artifact Locations
64
+
65
+ ```
66
+ project-root/
67
+ ├── _bmad/bmm/config.yaml
68
+ ├── _bmad-output/
69
+ │ ├── product-brief.md
70
+ │ ├── prfaq-{project}.md
71
+ │ ├── prd.md
72
+ │ ├── addendum.md
73
+ │ ├── decision-log.md
74
+ │ ├── ux-spec.md
75
+ │ └── architecture.md
76
+ ├── project-context.md
77
+ └── docs/
78
+ ├── epic-{slug}.md
79
+ └── story-{slug}.md
80
+ ```
81
+
82
+ ### `product-brief.md` / `prfaq-{project}.md` → `specs/CONTEXT.md` (Vision)
83
+
84
+ Transform:
85
+ - Vision + core value → `specs/CONTEXT.md` Vision section (first section)
86
+ - Target users → personas list in CONTEXT.md
87
+ - prfaq customer FAQ → can inform success criteria in SCOPE.md
88
+
89
+ ### `prd.md` → `specs/SCOPE.md`
90
+
91
+ BMAD `prd.md` has: Glossary, FR-XX functional requirements, UJ-XX user journeys, NFRs, assumptions.
92
+
93
+ Transform:
94
+ - Glossary → `specs/CONTEXT.md` Glossary section (keep exactly; it's domain language)
95
+ - FR-XX items → `specs/SCOPE.md` "In Scope" with IDs preserved as comments: `<!-- FR-3 -->`
96
+ - UJ-XX user journeys → `specs/SCOPE.md` "Success Criteria" section
97
+ - NFRs → `specs/SCOPE.md` "Constraints" section
98
+ - `[ASSUMPTION: ...]` inline tags → `specs/SCOPE.md` "Assumptions" section (collected)
99
+ - Out-of-scope features → `specs/SCOPE.md` "Out of Scope" section
100
+
101
+ ### `addendum.md` + `decision-log.md` → `specs/adr/` + `specs/DECISION-LOG.md`
102
+
103
+ Transform:
104
+ - Hard, irreversible, surprising decisions → individual `specs/adr/NNNN-{slug}.md`
105
+ - Lightweight decisions → `specs/DECISION-LOG.md` (date | decision | rationale)
106
+ - `addendum.md` change signals → note at top of SCOPE.md: "PRD amended: see decision-log"
107
+
108
+ ### `architecture.md` → `specs/CONTEXT.md` + `specs/adr/`
109
+
110
+ Transform:
111
+ - ADR sections → individual `specs/adr/NNNN-{slug}.md` files
112
+ - System overview / data models → `specs/CONTEXT.md` Architecture section
113
+ - API contracts → keep at `docs/api.md` or similar; link from CONTEXT.md
114
+
115
+ ### `epic-*.md` → `specs/RELEASE-PLAN.md`
116
+
117
+ Each epic → one release entry. Epic acceptance criteria → "Success Criteria" subsection.
118
+
119
+ ### `story-*.md` → `specs/TASKS.md`
120
+
121
+ Each story → one entry. Acceptance criteria → `verify:` lines. Story tasks → subtask checklist.
122
+
123
+ ### `project-context.md` → `CLAUDE.md`
124
+
125
+ Add a "## Project Context" section to `CLAUDE.md` (or create `PROJECT-CONTEXT.md` if CLAUDE.md is bigpowers-managed). Copy tech stack, coding rules, preferences verbatim. Note: `<!-- Migrated from BMAD project-context.md -->`.
126
+
127
+ ---
128
+
129
+ ## Learnings to Adopt
130
+
131
+ Optional enhancements to offer the user after migration. Present as checkboxes.
132
+
133
+ ### From GSD
134
+
135
+ - [ ] **`specs/METHODOLOGY.md`** — Standing analytical lenses (Bayesian updating, STRIDE, cost-of-delay). Agents read this before planning.
136
+ - [ ] **Session Resume block in STATE.md** — Last skill used, last step completed, required reading for next session.
137
+ - [ ] **ID tracking in SCOPE.md** — Add SCOPE-XX IDs to requirements for spec → plan → verification traceability.
138
+
139
+ ### From spec-kit
140
+
141
+ - [ ] **Two-pass spec writing** — User-journey pass first (what/why, no technical details), then technical-decisions pass. Cleaner specs.
142
+ - [ ] **Explicit inter-phase gate** — "Approve to proceed?" checkpoint at end of `elaborate-spec` before starting `plan-work`.
143
+ - [ ] **`specs/TASKS.md` isolation guarantee** — Each task entry completable and verifiable in isolation; declared dependencies explicit.
144
+
145
+ ### From BMAD
146
+
147
+ - [ ] **FR-XX + UJ-XX in SCOPE.md** — Functional requirement + user journey numbering for rigorous traceability.
148
+ - [ ] **`specs/DECISION-LOG.md`** — Lightweight decision log for PRD-level choices below the ADR threshold. Format: `date | decision | rationale | alternatives`.
149
+ - [ ] **`PROJECT-CONTEXT.md`** — Project-specific constitution read by all implementation agents. Generated from `model-domain` output.
150
+ - [ ] **Adversarial review pass** — Dedicated critique pass on the plan before `develop-tdd`. Critic checks for gaps, edge cases, contradictions with SCOPE.md.
151
+
152
+ ---
153
+
154
+ ## Output Formats
155
+
156
+ ### ADR format (bigpowers)
157
+
158
+ Use `model-domain/ADR-FORMAT.md`. Only create when all three apply: hard to reverse, surprising without context, result of a real trade-off.
159
+
160
+ ```markdown
161
+ # ADR-NNNN: {Title}
162
+
163
+ **Status:** Accepted
164
+ **Date:** YYYY-MM-DD
165
+
166
+ ## Context
167
+ [What situation forced this decision?]
168
+
169
+ ## Decision
170
+ [What was decided?]
171
+
172
+ ## Consequences
173
+ [What becomes easier or harder?]
174
+ ```
175
+
176
+ ### DECISION-LOG.md format
177
+
178
+ For lightweight decisions that don't warrant a full ADR:
179
+
180
+ ```markdown
181
+ # Decision Log
182
+
183
+ | Date | Decision | Rationale | Alternatives |
184
+ |------|----------|-----------|--------------|
185
+ | 2026-05-19 | Use Postgres | Existing ops expertise | SQLite (limited), DynamoDB (no local dev) |
186
+ ```
@@ -0,0 +1,150 @@
1
+ ---
2
+ name: migrate-spec
3
+ description: Detect GSD, spec-kit, or BMAD spec artifacts in the current project and transform them into bigpowers format (specs/ directory, CONTEXT.md, SCOPE.md, TASKS.md, RELEASE-PLAN.md, ADRs). Use when user has an existing project with foreign spec docs and wants to adopt bigpowers conventions, or says "migrate", "import specs", "convert from GSD/BMAD/spec-kit".
4
+ ---
5
+
6
+ # Migrate Spec
7
+
8
+ 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.
9
+
10
+ ## Quick start
11
+
12
+ 1. Run this skill from the root of the project being migrated (not the bigpowers repo itself).
13
+ 2. The skill auto-detects the source framework and presents its findings before transforming anything.
14
+ 3. All output goes to `specs/` at the project root.
15
+
16
+ ---
17
+
18
+ ## Red flags — stop and ask
19
+
20
+ Before proceeding, check for these rationalization traps:
21
+
22
+ - **Partial artifact set** — only one fingerprint file found (e.g. just `spec.md` with no `plan.md`). Don't assume it's a complete project. Ask: "I found only X — is this the full set of your spec artifacts?"
23
+ - **Wrong trigger** — user said "migrate my code" or "migrate the database", not "migrate my specs". Confirm before running.
24
+ - **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?"
25
+ - **Active divergence** — source `STATE.md` or `sprint-status.yaml` shows in-progress work. Flag: "There is active work in flight. Migrating now may lose in-progress context. Proceed?"
26
+
27
+ If any red flag fires: surface it, wait for explicit user confirmation before continuing.
28
+
29
+ ---
30
+
31
+ ## Process
32
+
33
+ ### Step 1 — Detect the source framework
34
+
35
+ Scan for the fingerprints below. Stop at first match; if multiple match, list them and ask the user which is primary.
36
+
37
+ | Framework | Fingerprints (any one is sufficient) |
38
+ |-----------|--------------------------------------|
39
+ | **GSD** | `.planning/` directory; `.planning/ROADMAP.md`; `.planning/REQUIREMENTS.md` with `REQ-` IDs |
40
+ | **spec-kit** | `.specify/` directory; `spec.md` + `plan.md` at root; `.github/skills/speckit-*/SKILL.md` |
41
+ | **BMAD** | `_bmad/` directory; `_bmad-output/` directory; `prd.md` with `FR-` IDs; `epic-*.md` or `story-*.md` |
42
+
43
+ If none found: ask the user which framework before proceeding.
44
+
45
+ → verify: `ls .planning/ 2>/dev/null && echo "GSD" || ls .specify/ 2>/dev/null && echo "spec-kit" || ls _bmad/ 2>/dev/null && echo "BMAD" || echo "BLOCKED: no known framework detected"`
46
+
47
+ ### Step 2 — Inventory the source artifacts
48
+
49
+ List every artifact found matching the detected framework. Present the list to the user:
50
+
51
+ ```
52
+ Detected: GSD
53
+ Found:
54
+ ✓ .planning/ROADMAP.md
55
+ ✓ .planning/REQUIREMENTS.md (12 REQ-XX items)
56
+ ✓ .planning/STATE.md
57
+ ✓ .planning/phases/01-auth/01-CONTEXT.md
58
+ ✗ .planning/METHODOLOGY.md (not present)
59
+
60
+ Skipping:
61
+ .planning/phases/01-auth/01-01-SUMMARY.md (execution record; archived only)
62
+
63
+ Proceed with migration? [yes / skip <artifact> / abort]
64
+ ```
65
+
66
+ → 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`
67
+
68
+ ### Step 3 — Transform (one artifact at a time, show diffs)
69
+
70
+ Apply the mapping from [REFERENCE.md](./REFERENCE.md) and [REFERENCE-GSD.md](./REFERENCE-GSD.md). For each target file:
71
+
72
+ 1. Show what will be created or appended (title + first 20 lines).
73
+ 2. Ask: "Create this? [yes / edit / skip]"
74
+ 3. On yes: write to `specs/`.
75
+
76
+ > **HARD GATE** — Never overwrite an existing `specs/` file without explicit user confirmation. Merge into it if it exists; don't clobber.
77
+ >
78
+ > → verify: `git diff --name-only HEAD -- specs/ 2>/dev/null | head -20`
79
+
80
+ → verify: `ls specs/*.md 2>/dev/null | head -15`
81
+
82
+ ### Step 4 — Generate STATE.md
83
+
84
+ Always regenerate `specs/STATE.md` from scratch in bigpowers format:
85
+
86
+ ```markdown
87
+ # Session State: <project name>
88
+
89
+ ## Current Milestone
90
+
91
+ Migrated from <framework> on <date>. Next: review generated specs and run plan-work.
92
+
93
+ ## Git Metadata
94
+
95
+ - **Branch**: <current branch>
96
+ - **Hash**: <git rev-parse HEAD>
97
+
98
+ ## Completed Releases
99
+
100
+ (none — migration starting point)
101
+
102
+ ## Pending Releases
103
+
104
+ - [ ] Review migrated specs
105
+ - [ ] Run elaborate-spec to validate scope
106
+ - [ ] Run plan-work to produce first release plan
107
+ ```
108
+
109
+ → verify: `[ -f specs/STATE.md ] && echo "ok" || echo "MISSING: specs/STATE.md not created"`
110
+
111
+ ### Step 5 — Surface learnings (optional)
112
+
113
+ After migration, offer the user a brief analysis of what the source framework did that bigpowers doesn't have yet.
114
+
115
+ Use the learnings table from [REFERENCE.md](./REFERENCE.md#learnings-to-adopt). Present as checkboxes so the user can decide which to adopt.
116
+
117
+ → verify: `grep -c "\- \[ \]" specs/STATE.md 2>/dev/null && echo "pending items recorded" || echo "no pending items in STATE.md"`
118
+
119
+ ---
120
+
121
+ ## Artifact Mapping Summary
122
+
123
+ Full mapping tables: [REFERENCE-GSD.md](./REFERENCE-GSD.md) (GSD) · [REFERENCE.md](./REFERENCE.md) (spec-kit, BMAD, learnings).
124
+
125
+ | Source | Target |
126
+ |--------|--------|
127
+ | GSD `ROADMAP.md` | `specs/RELEASE-PLAN.md` |
128
+ | GSD `REQUIREMENTS.md` | `specs/SCOPE.md` |
129
+ | GSD `CONTEXT.md` (phases) | `specs/CONTEXT.md` + `specs/adr/` |
130
+ | GSD `PLAN.md` | `specs/PLAN-vX.Y.Z.md` |
131
+ | GSD `METHODOLOGY.md` | `specs/SPIKE-methodology.md` |
132
+ | spec-kit `spec.md` | `specs/SCOPE.md` + `specs/CONTEXT.md` |
133
+ | spec-kit `plan.md` | `specs/CONTEXT.md` + `specs/PLAN.md` |
134
+ | spec-kit `tasks.md` | `specs/TASKS.md` |
135
+ | BMAD `prd.md` | `specs/SCOPE.md` |
136
+ | BMAD `architecture.md` | `specs/CONTEXT.md` + `specs/adr/` |
137
+ | BMAD `epic-*.md` | `specs/RELEASE-PLAN.md` |
138
+ | BMAD `story-*.md` | `specs/TASKS.md` |
139
+ | BMAD `project-context.md` | `CLAUDE.md` (append project-specific section) |
140
+ | BMAD `decision-log.md` | `specs/adr/` (one ADR per logged decision) |
141
+
142
+ ---
143
+
144
+ ## Rules
145
+
146
+ - **Preserve source IDs** — REQ-XX, FR-XX, UJ-XX become inline comments in bigpowers targets. Never silently renumber.
147
+ - **Never merge contradictory docs** — if source has both `CONTEXT.md` and `architecture.md`, create sections in bigpowers `CONTEXT.md`; don't collapse them.
148
+ - **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`.
149
+ - **STATE.md is always regenerated** — never migrate source STATE verbatim; bigpowers STATE.md needs its own format.
150
+ - **specs/ is the only output location** — no files are created outside `specs/` and `CLAUDE.md`.
@@ -0,0 +1,47 @@
1
+ # ADR Format
2
+
3
+ ADRs live in `docs/adr/` and use sequential numbering: `0001-slug.md`, `0002-slug.md`, etc.
4
+
5
+ Create the `docs/adr/` directory lazily — only when the first ADR is needed.
6
+
7
+ ## Template
8
+
9
+ ```md
10
+ # {Short title of the decision}
11
+
12
+ {1-3 sentences: what's the context, what did we decide, and why.}
13
+ ```
14
+
15
+ That's it. An ADR can be a single paragraph. The value is in recording *that* a decision was made and *why* — not in filling out sections.
16
+
17
+ ## Optional sections
18
+
19
+ Only include these when they add genuine value. Most ADRs won't need them.
20
+
21
+ - **Status** frontmatter (`proposed | accepted | deprecated | superseded by ADR-NNNN`) — useful when decisions are revisited
22
+ - **Considered Options** — only when the rejected alternatives are worth remembering
23
+ - **Consequences** — only when non-obvious downstream effects need to be called out
24
+
25
+ ## Numbering
26
+
27
+ Scan `docs/adr/` for the highest existing number and increment by one.
28
+
29
+ ## When to offer an ADR
30
+
31
+ All three of these must be true:
32
+
33
+ 1. **Hard to reverse** — the cost of changing your mind later is meaningful
34
+ 2. **Surprising without context** — a future reader will look at the code and wonder "why on earth did they do it this way?"
35
+ 3. **The result of a real trade-off** — there were genuine alternatives and you picked one for specific reasons
36
+
37
+ If a decision is easy to reverse, skip it — you'll just reverse it. If it's not surprising, nobody will wonder why. If there was no real alternative, there's nothing to record beyond "we did the obvious thing."
38
+
39
+ ### What qualifies
40
+
41
+ - **Architectural shape.** "We're using a monorepo." "The write model is event-sourced, the read model is projected into Postgres."
42
+ - **Integration patterns between contexts.** "Ordering and Billing communicate via domain events, not synchronous HTTP."
43
+ - **Technology choices that carry lock-in.** Database, message bus, auth provider, deployment target. Not every library — just the ones that would take a quarter to swap out.
44
+ - **Boundary and scope decisions.** "Customer data is owned by the Customer context; other contexts reference it by ID only." The explicit no-s are as valuable as the yes-s.
45
+ - **Deliberate deviations from the obvious path.** "We're using manual SQL instead of an ORM because X." Anything where a reasonable reader would assume the opposite. These stop the next engineer from "fixing" something that was deliberate.
46
+ - **Constraints not visible in the code.** "We can't use AWS because of compliance requirements." "Response times must be under 200ms because of the partner API contract."
47
+ - **Rejected alternatives when the rejection is non-obvious.** If you considered GraphQL and picked REST for subtle reasons, record it — otherwise someone will suggest GraphQL again in six months.
@@ -0,0 +1,77 @@
1
+ # CONTEXT.md Format
2
+
3
+ ## Structure
4
+
5
+ ```md
6
+ # {Context Name}
7
+
8
+ {One or two sentence description of what this context is and why it exists.}
9
+
10
+ ## Language
11
+
12
+ **Order**:
13
+ A customer's request to purchase one or more items.
14
+ _Avoid_: Purchase, transaction
15
+
16
+ **Invoice**:
17
+ A request for payment sent to a customer after delivery.
18
+ _Avoid_: Bill, payment request
19
+
20
+ **Customer**:
21
+ A person or organization that places orders.
22
+ _Avoid_: Client, buyer, account
23
+
24
+ ## Relationships
25
+
26
+ - An **Order** produces one or more **Invoices**
27
+ - An **Invoice** belongs to exactly one **Customer**
28
+
29
+ ## Example dialogue
30
+
31
+ > **Dev:** "When a **Customer** places an **Order**, do we create the **Invoice** immediately?"
32
+ > **Domain expert:** "No — an **Invoice** is only generated once a **Fulfillment** is confirmed."
33
+
34
+ ## Flagged ambiguities
35
+
36
+ - "account" was used to mean both **Customer** and **User** — resolved: these are distinct concepts.
37
+ ```
38
+
39
+ ## Rules
40
+
41
+ - **Be opinionated.** When multiple words exist for the same concept, pick the best one and list the others as aliases to avoid.
42
+ - **Flag conflicts explicitly.** If a term is used ambiguously, call it out in "Flagged ambiguities" with a clear resolution.
43
+ - **Keep definitions tight.** One sentence max. Define what it IS, not what it does.
44
+ - **Show relationships.** Use bold term names and express cardinality where obvious.
45
+ - **Only include terms specific to this project's context.** General programming concepts (timeouts, error types, utility patterns) don't belong even if the project uses them extensively. Before adding a term, ask: is this a concept unique to this context, or a general programming concept? Only the former belongs.
46
+ - **Group terms under subheadings** when natural clusters emerge. If all terms belong to a single cohesive area, a flat list is fine.
47
+ - **Write an example dialogue.** A conversation between a dev and a domain expert that demonstrates how the terms interact naturally and clarifies boundaries between related concepts.
48
+
49
+ ## Single vs multi-context repos
50
+
51
+ **Single context (most repos):** One `CONTEXT.md` at the repo root.
52
+
53
+ **Multiple contexts:** A `CONTEXT-MAP.md` at the repo root lists the contexts, where they live, and how they relate to each other:
54
+
55
+ ```md
56
+ # Context Map
57
+
58
+ ## Contexts
59
+
60
+ - [Ordering](./src/ordering/CONTEXT.md) — receives and tracks customer orders
61
+ - [Billing](./src/billing/CONTEXT.md) — generates invoices and processes payments
62
+ - [Fulfillment](./src/fulfillment/CONTEXT.md) — manages warehouse picking and shipping
63
+
64
+ ## Relationships
65
+
66
+ - **Ordering → Fulfillment**: Ordering emits `OrderPlaced` events; Fulfillment consumes them to start picking
67
+ - **Fulfillment → Billing**: Fulfillment emits `ShipmentDispatched` events; Billing consumes them to generate invoices
68
+ - **Ordering ↔ Billing**: Shared types for `CustomerId` and `Money`
69
+ ```
70
+
71
+ The skill infers which structure applies:
72
+
73
+ - If `CONTEXT-MAP.md` exists, read it to find contexts
74
+ - If only a root `CONTEXT.md` exists, single context
75
+ - If neither exists, create a root `CONTEXT.md` lazily when the first term is resolved
76
+
77
+ When multiple contexts exist, infer which one the current topic relates to. If unclear, ask.
@@ -0,0 +1,82 @@
1
+ ---
2
+ name: model-domain
3
+ description: Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates specs/CONTEXT.md and specs/adr/ inline as decisions crystallise. Use when user wants to stress-test a plan against their project's domain language and documented decisions.
4
+ ---
5
+
6
+ Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.
7
+
8
+ Ask the questions one at a time, waiting for feedback on each question before continuing.
9
+
10
+ If a question can be answered by exploring the codebase, explore the codebase instead.
11
+
12
+ ## Domain awareness
13
+
14
+ During codebase exploration, also look for existing documentation:
15
+
16
+ ### File structure
17
+
18
+ Most repos have a single context:
19
+
20
+ ```
21
+ /
22
+ ├── specs/
23
+ │ ├── CONTEXT.md
24
+ │ └── adr/
25
+ │ ├── 0001-event-sourced-orders.md
26
+ │ └── 0002-postgres-for-write-model.md
27
+ └── src/
28
+ ```
29
+
30
+ If a `specs/CONTEXT-MAP.md` exists, the repo has multiple contexts. The map points to where each one lives:
31
+
32
+ ```
33
+ /
34
+ ├── specs/
35
+ │ ├── CONTEXT-MAP.md
36
+ │ └── adr/ ← system-wide decisions
37
+ └── src/
38
+ ├── ordering/
39
+ │ └── specs/
40
+ │ ├── CONTEXT.md
41
+ │ └── adr/ ← context-specific decisions
42
+ └── billing/
43
+ └── specs/
44
+ ├── CONTEXT.md
45
+ └── adr/
46
+ ```
47
+
48
+ Create files lazily — only when you have something to write. If no `specs/CONTEXT.md` exists, create it when the first term is resolved. If no `specs/adr/` exists, create it when the first ADR is needed.
49
+
50
+ ## During the session
51
+
52
+ ### Challenge against the glossary
53
+
54
+ When the user uses a term that conflicts with the existing language in `specs/CONTEXT.md`, call it out immediately. "Your glossary defines 'cancellation' as X, but you seem to mean Y — which is it?"
55
+
56
+ ### Sharpen fuzzy language
57
+
58
+ When the user uses vague or overloaded terms, propose a precise canonical term. "You're saying 'account' — do you mean the Customer or the User? Those are different things."
59
+
60
+ ### Discuss concrete scenarios
61
+
62
+ When domain relationships are being discussed, stress-test them with specific scenarios. Invent scenarios that probe edge cases and force the user to be precise about the boundaries between concepts.
63
+
64
+ ### Cross-reference with code
65
+
66
+ When the user states how something works, check whether the code agrees. If you find a contradiction, surface it: "Your code cancels entire Orders, but you just said partial cancellation is possible — which is right?"
67
+
68
+ ### Update specs/CONTEXT.md inline
69
+
70
+ When a term is resolved, update `specs/CONTEXT.md` right there. Don't batch these up — capture them as they happen. Use the format in [CONTEXT-FORMAT.md](./CONTEXT-FORMAT.md).
71
+
72
+ Don't couple `specs/CONTEXT.md` to implementation details. Only include terms that are meaningful to domain experts.
73
+
74
+ ### Offer ADRs sparingly
75
+
76
+ Only offer to create an ADR when all three are true:
77
+
78
+ 1. **Hard to reverse** — the cost of changing your mind later is meaningful
79
+ 2. **Surprising without context** — a future reader will wonder "why did they do it this way?"
80
+ 3. **The result of a real trade-off** — there were genuine alternatives and you picked one for specific reasons
81
+
82
+ If any of the three is missing, skip the ADR. Use the format in [ADR-FORMAT.md](./ADR-FORMAT.md).
package/opencode.json ADDED
@@ -0,0 +1,4 @@
1
+ {
2
+ "$schema": "https://opencode.ai/config.json",
3
+ "instructions": [".cursor/rules/*.mdc"]
4
+ }