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.
- package/.gitmessage +5 -0
- package/.releaserc.json +17 -0
- package/CHANGELOG.md +61 -0
- package/CLAUDE.md +61 -0
- package/CONVENTIONS.md +140 -0
- package/GEMINI.md +53 -0
- package/LICENSE +21 -0
- package/README.md +116 -0
- package/RELEASE.md +108 -0
- package/SKILL-INDEX.md +146 -0
- package/assess-impact/SKILL.md +76 -0
- package/audit-code/HEURISTICS.md +43 -0
- package/audit-code/SKILL.md +81 -0
- package/bin/bigpowers.js +27 -0
- package/change-request/REFERENCE.md +60 -0
- package/change-request/SKILL.md +42 -0
- package/commit-message/REFERENCE.md +81 -0
- package/commit-message/SKILL.md +39 -0
- package/countable-story-format.md +293 -0
- package/craft-skill/REFERENCE.md +88 -0
- package/craft-skill/SKILL.md +55 -0
- package/deepen-architecture/DEEPENING.md +37 -0
- package/deepen-architecture/INTERFACE-DESIGN.md +44 -0
- package/deepen-architecture/LANGUAGE.md +53 -0
- package/deepen-architecture/SKILL.md +76 -0
- package/define-language/SKILL.md +75 -0
- package/define-success/SKILL.md +60 -0
- package/delegate-task/SKILL.md +70 -0
- package/design-interface/SKILL.md +94 -0
- package/develop-tdd/SKILL.md +160 -0
- package/develop-tdd/deep-modules.md +33 -0
- package/develop-tdd/interface-design.md +31 -0
- package/develop-tdd/mocking.md +59 -0
- package/develop-tdd/refactoring.md +10 -0
- package/develop-tdd/tests.md +71 -0
- package/dispatch-agents/SKILL.md +72 -0
- package/edit-document/SKILL.md +14 -0
- package/elaborate-spec/SKILL.md +79 -0
- package/enforce-first/SKILL.md +75 -0
- package/execute-plan/SKILL.md +84 -0
- package/grill-me/REFERENCE.md +63 -0
- package/grill-me/SKILL.md +25 -0
- package/guard-git/REFERENCE.md +136 -0
- package/guard-git/SKILL.md +39 -0
- package/guard-git/scripts/block-dangerous-git.sh +41 -0
- package/guard-git/scripts/lib/git-guardrails-core.sh +29 -0
- package/hook-commits/SKILL.md +91 -0
- package/hooks/pre-tool-use.sh +130 -0
- package/index.js +6 -0
- package/inspect-quality/SKILL.md +101 -0
- package/investigate-bug/SKILL.md +111 -0
- package/kickoff-branch/SKILL.md +87 -0
- package/map-codebase/SKILL.md +66 -0
- package/migrate-spec/REFERENCE-GSD.md +137 -0
- package/migrate-spec/REFERENCE.md +186 -0
- package/migrate-spec/SKILL.md +150 -0
- package/model-domain/ADR-FORMAT.md +47 -0
- package/model-domain/CONTEXT-FORMAT.md +77 -0
- package/model-domain/SKILL.md +82 -0
- package/opencode.json +4 -0
- package/orchestrate-project/REFERENCE.md +89 -0
- package/orchestrate-project/SKILL.md +59 -0
- package/organize-workspace/REFERENCE.md +80 -0
- package/organize-workspace/SKILL.md +74 -0
- package/package.json +45 -0
- package/plan-refactor/SKILL.md +75 -0
- package/plan-release/SKILL.md +75 -0
- package/plan-work/SKILL.md +124 -0
- package/playwright.config.ts +56 -0
- package/release-branch/SKILL.md +116 -0
- package/request-review/SKILL.md +70 -0
- package/respond-review/SKILL.md +68 -0
- package/scripts/audit-compliance.sh +256 -0
- package/scripts/cleanup-worktrees.sh +44 -0
- package/scripts/install-cursor-skills-local.sh +13 -0
- package/scripts/install-cursor-skills.sh +34 -0
- package/scripts/install.sh +240 -0
- package/scripts/project-survey.sh +54 -0
- package/scripts/sync-skills.sh +110 -0
- package/seed-conventions/SKILL.md +185 -0
- package/session-state/SKILL.md +69 -0
- package/skills-lock.json +157 -0
- package/spike-prototype/SKILL.md +92 -0
- package/survey-context/SKILL.md +93 -0
- package/terse-mode/SKILL.md +35 -0
- package/trace-requirement/SKILL.md +68 -0
- package/using-bigpowers/SKILL.md +65 -0
- package/validate-fix/SKILL.md +93 -0
- package/visual-dashboard/SKILL.md +49 -0
- package/visual-dashboard/scripts/frame-template.html +189 -0
- package/visual-dashboard/scripts/helper.js +83 -0
- package/visual-dashboard/scripts/server.cjs +345 -0
- package/visual-dashboard/scripts/start-server.sh +121 -0
- package/visual-dashboard/scripts/stop-server.sh +46 -0
- package/wire-observability/SKILL.md +90 -0
- 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