bigpowers 2.41.0 → 2.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.pi/package.json +1 -1
- package/.pi/prompts/assess-impact.md +3 -3
- package/.pi/prompts/audit-plan.md +2 -2
- package/.pi/prompts/define-language.md +5 -5
- package/.pi/prompts/inspect-quality.md +2 -2
- package/.pi/prompts/migrate-spec.md +5 -5
- package/.pi/prompts/plan-refactor.md +4 -4
- package/.pi/prompts/research-first.md +1 -1
- package/.pi/prompts/search-skills.md +6 -6
- package/.pi/prompts/trace-requirement.md +3 -3
- package/.pi/skills/assess-impact/SKILL.md +3 -3
- package/.pi/skills/audit-plan/SKILL.md +2 -2
- package/.pi/skills/define-language/SKILL.md +5 -5
- package/.pi/skills/inspect-quality/SKILL.md +2 -2
- package/.pi/skills/migrate-spec/SKILL.md +5 -5
- package/.pi/skills/plan-refactor/SKILL.md +4 -4
- package/.pi/skills/research-first/SKILL.md +1 -1
- package/.pi/skills/search-skills/SKILL.md +6 -6
- package/.pi/skills/trace-requirement/SKILL.md +3 -3
- package/.releaserc.json +1 -1
- package/CHANGELOG.md +7 -0
- package/GEMINI.md +21 -0
- package/SKILL-INDEX.md +1 -1
- package/assess-impact/SKILL.md +3 -3
- package/audit-plan/SKILL.md +2 -2
- package/define-language/SKILL.md +5 -5
- package/inspect-quality/SKILL.md +2 -2
- package/migrate-spec/REFERENCE-GSD.md +1 -1
- package/migrate-spec/REFERENCE.md +4 -4
- package/package.json +2 -2
- package/plan-refactor/SKILL.md +4 -4
- package/research-first/REFERENCE.md +1 -1
- package/scripts/build-skill-index.sh +1 -1
- package/search-skills/SKILL.md +6 -6
- package/skills-lock.json +11 -11
- package/trace-requirement/SKILL.md +3 -3
package/.pi/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Analyze the blast radius of a proposed change before any code is written. Maps dependents, affected stories, and test coverage. Produces specs/
|
|
2
|
+
description: Analyze the blast radius of a proposed change before any code is written. Maps dependents, affected stories, and test coverage. Produces specs/IMPACT_LATEST.md. Use before plan-work on any non-trivial change, when touching a shared module, or when the user asks "what does this break?".
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
|
|
@@ -53,7 +53,7 @@ grep -rn "[symbol-name]" . --include="*.test.*" --include="*.spec.*"
|
|
|
53
53
|
| Medium | 3–10 callers, partial test coverage |
|
|
54
54
|
| High | > 10 callers, or shared API/interface, or no tests |
|
|
55
55
|
|
|
56
|
-
### 6. Write specs/
|
|
56
|
+
### 6. Write specs/IMPACT_LATEST.md
|
|
57
57
|
|
|
58
58
|
```
|
|
59
59
|
## Target
|
|
@@ -76,7 +76,7 @@ grep -rn "[symbol-name]" . --include="*.test.*" --include="*.spec.*"
|
|
|
76
76
|
[Proceed / Add tests first / Discuss design]
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
-
→ verify: `grep "Risk:" specs/
|
|
79
|
+
→ verify: `grep "Risk:" specs/IMPACT_LATEST.md`
|
|
80
80
|
|
|
81
81
|
Suggest `plan-work` once risk is understood and any test gaps are noted.
|
|
82
82
|
|
|
@@ -48,7 +48,7 @@ Assess an incoming project plan for alignment with bigpowers principles, identif
|
|
|
48
48
|
|
|
49
49
|
3. **Close gaps conversationally** — for each ❌ or ⚠️, ask one question at a time. Record each answer before moving to the next.
|
|
50
50
|
|
|
51
|
-
4. **Write `specs/PLAN-
|
|
51
|
+
4. **Write `specs/PLAN-AUDIT_LATEST.md`**:
|
|
52
52
|
|
|
53
53
|
```markdown
|
|
54
54
|
# Plan Audit — <project>
|
|
@@ -85,4 +85,4 @@ NOT READY — N gaps remain; close before proceeding
|
|
|
85
85
|
|
|
86
86
|
## Verify
|
|
87
87
|
|
|
88
|
-
→ verify: `test -f specs/PLAN-
|
|
88
|
+
→ verify: `test -f specs/PLAN-AUDIT_LATEST.md && grep -q 'Verdict' specs/PLAN-AUDIT_LATEST.md && echo OK || echo FAIL`
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Extract a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms. Saves to specs/
|
|
2
|
+
description: Extract a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms. Saves to specs/UBIQUITOUS_LANGUAGE_LATEST.md. Use when user wants to define domain terms, build a glossary, harden terminology, create a ubiquitous language, or mentions "domain model" or "DDD".
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
# Define Language
|
|
7
7
|
|
|
8
|
-
Extract and formalize domain terminology from the current conversation into a consistent glossary, saved to `specs/
|
|
8
|
+
Extract and formalize domain terminology from the current conversation into a consistent glossary, saved to `specs/UBIQUITOUS_LANGUAGE_LATEST.md`.
|
|
9
9
|
|
|
10
10
|
**Distinct from `model-domain` and `deepen-architecture`:** Use this skill to produce a canonical glossary of terms (words and definitions). Use `model-domain` to stress-test a plan through an interview that resolves domain model decisions. Use `deepen-architecture` to find module-level refactoring opportunities in the codebase.
|
|
11
11
|
|
|
@@ -19,12 +19,12 @@ Extract and formalize domain terminology from the current conversation into a co
|
|
|
19
19
|
- Different words used for the same concept (synonyms)
|
|
20
20
|
- Vague or overloaded terms
|
|
21
21
|
3. **Propose a canonical glossary** with opinionated term choices
|
|
22
|
-
4. **Write to `specs/
|
|
22
|
+
4. **Write to `specs/UBIQUITOUS_LANGUAGE_LATEST.md`** in the working directory using the format below
|
|
23
23
|
5. **Output a summary** inline in the conversation
|
|
24
24
|
|
|
25
25
|
## Output Format
|
|
26
26
|
|
|
27
|
-
Write a `specs/
|
|
27
|
+
Write a `specs/UBIQUITOUS_LANGUAGE_LATEST.md` file with this structure:
|
|
28
28
|
|
|
29
29
|
```md
|
|
30
30
|
# Ubiquitous Language
|
|
@@ -72,7 +72,7 @@ Write a `specs/UBIQUITOUS_LANGUAGE.md` file with this structure:
|
|
|
72
72
|
|
|
73
73
|
When invoked again in the same conversation:
|
|
74
74
|
|
|
75
|
-
1. Read the existing `specs/
|
|
75
|
+
1. Read the existing `specs/UBIQUITOUS_LANGUAGE_LATEST.md`
|
|
76
76
|
2. Incorporate any new terms from subsequent discussion
|
|
77
77
|
3. Update definitions if understanding has evolved
|
|
78
78
|
4. Re-flag any new ambiguities
|
|
@@ -25,7 +25,7 @@ Do NOT over-interview. If the description is clear enough to log, move on.
|
|
|
25
25
|
|
|
26
26
|
Kick off an Agent (subagent_type=Explore) to understand the relevant area. The goal is NOT to find a fix — it's to:
|
|
27
27
|
|
|
28
|
-
- Learn the domain language used in that area (check `specs/
|
|
28
|
+
- Learn the domain language used in that area (check `specs/UBIQUITOUS_LANGUAGE_LATEST.md` if present)
|
|
29
29
|
- Understand what the feature is supposed to do
|
|
30
30
|
- Identify the user-facing behavior boundary
|
|
31
31
|
|
|
@@ -96,7 +96,7 @@ For each bug, also append a detail section:
|
|
|
96
96
|
|
|
97
97
|
- **bug_id** uses full timestamp: `BUG-YYYY-MM-DDTHHMMSS` — matches the individual bug file name in `specs/bugs/`
|
|
98
98
|
- **No file paths or line numbers** — these go stale
|
|
99
|
-
- **Use the project's domain language** (check `specs/
|
|
99
|
+
- **Use the project's domain language** (check `specs/UBIQUITOUS_LANGUAGE_LATEST.md` if it exists)
|
|
100
100
|
- **Describe behaviors, not code** — "the sync service fails to apply the patch" not "applyPatch() throws"
|
|
101
101
|
- **Reproduction steps are mandatory** — if you can't determine them, ask the user
|
|
102
102
|
|
|
@@ -165,7 +165,7 @@ GSD CONTEXT.md has 6 sections: domain, decisions, canonical_refs, code_context,
|
|
|
165
165
|
|
|
166
166
|
Transform:
|
|
167
167
|
- `domain` → `plans/TECH_STACK_LATEST.md` Domain section
|
|
168
|
-
- `decisions` → scan each: if hard-to-reverse + surprising → `specs/adr/NNNN-{slug}.md`; if lightweight → `specs/DECISION-
|
|
168
|
+
- `decisions` → scan each: if hard-to-reverse + surprising → `specs/adr/NNNN-{slug}.md`; if lightweight → `specs/DECISION-LOG_LATEST.md`
|
|
169
169
|
- `canonical_refs` → Reference links in TECH_STACK
|
|
170
170
|
- `code_context` → Architecture section
|
|
171
171
|
- `deferred` → `SCOPE_LATEST.yaml` `out_of_scope` (with "(deferred from GSD)" note)
|
|
@@ -338,11 +338,11 @@ Transform:
|
|
|
338
338
|
- `[ASSUMPTION: ...]` inline tags → collected in scope YAML
|
|
339
339
|
- Out-of-scope features → `out_of_scope`
|
|
340
340
|
|
|
341
|
-
### `addendum.md` + `decision-log.md` → `specs/adr/` + `specs/DECISION-
|
|
341
|
+
### `addendum.md` + `decision-log.md` → `specs/adr/` + `specs/DECISION-LOG_LATEST.md`
|
|
342
342
|
|
|
343
343
|
Transform:
|
|
344
344
|
- Hard, irreversible, surprising decisions → individual `specs/adr/NNNN-{slug}.md`
|
|
345
|
-
- Lightweight decisions → `specs/DECISION-
|
|
345
|
+
- Lightweight decisions → `specs/DECISION-LOG_LATEST.md` (date | decision | rationale)
|
|
346
346
|
- `addendum.md` change signals → note in `SCOPE_LATEST.yaml` metadata
|
|
347
347
|
|
|
348
348
|
### `architecture.md` → `specs/tech-architecture/TECH_STACK_LATEST.md` + `specs/adr/`
|
|
@@ -385,7 +385,7 @@ Optional enhancements to offer the user after migration. Present as checkboxes.
|
|
|
385
385
|
### From BMAD
|
|
386
386
|
|
|
387
387
|
- [x] **FR-XX + UJ-XX in SCOPE_LATEST.yaml** — Rigorous traceability. (adopted: REQUIREMENTS_TRACE.yaml emitted on migration)
|
|
388
|
-
- [ ] **`specs/DECISION-
|
|
388
|
+
- [ ] **`specs/DECISION-LOG_LATEST.md`** — Lightweight decisions below ADR threshold.
|
|
389
389
|
- [x] **Adversarial review pass** — Critique epic shard before `develop-tdd`. (adopted: optional Step 6 in migration)
|
|
390
390
|
|
|
391
391
|
---
|
|
@@ -782,7 +782,7 @@ Full mapping tables: [REFERENCE-GSD.md](./REFERENCE-GSD.md) (GSD) · [REFERENCE.
|
|
|
782
782
|
|
|
783
783
|
- **Preserve source IDs** — REQ-XX, FR-XX, UJ-XX are emitted as first-class `id:` fields in bigpowers YAML targets (e.g., `in_scope` entries). Never silently renumber. See Step 3 ID Tracking subsection for details.
|
|
784
784
|
- **Never merge contradictory docs** — if source has both `CONTEXT.md` and `architecture.md`, create sections in bigpowers `CONTEXT.md`; don't collapse them.
|
|
785
|
-
- **ADRs are opt-in** — only create an ADR when: hard to reverse, surprising without context, result of a real trade-off. Lightweight decisions go to `specs/DECISION-
|
|
785
|
+
- **ADRs are opt-in** — only create an ADR when: hard to reverse, surprising without context, result of a real trade-off. Lightweight decisions go to `specs/DECISION-LOG_LATEST.md`.
|
|
786
786
|
- **state.yaml is always regenerated** — never migrate source STATE verbatim; bigpowers state.yaml needs its own format.
|
|
787
787
|
- **specs/ is the only output location** — no files are created outside `specs/` and `CLAUDE.md`.
|
|
788
788
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Create a detailed refactor plan with tiny commits via user interview, then save it as specs/
|
|
2
|
+
description: Create a detailed refactor plan with tiny commits via user interview, then save it as specs/REFACTOR_LATEST.md. Use when user wants to plan a refactor, create a refactoring RFC, or break a refactor into safe incremental steps.
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
|
|
@@ -7,7 +7,7 @@ description: Create a detailed refactor plan with tiny commits via user intervie
|
|
|
7
7
|
> **HARD GATE** — **HARD GATE** — Before refactoring, document the current behavior and why it is wrong. Extract one invariant that must be preserved. If you skip this, you will break things you don't expect.
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
Create a detailed refactor plan through a user interview. Save output to `specs/
|
|
10
|
+
Create a detailed refactor plan through a user interview. Save output to `specs/REFACTOR_LATEST.md`.
|
|
11
11
|
|
|
12
12
|
## Steps
|
|
13
13
|
|
|
@@ -25,7 +25,7 @@ Create a detailed refactor plan through a user interview. Save output to `specs/
|
|
|
25
25
|
|
|
26
26
|
7. Break the implementation into a plan of tiny commits. Remember Martin Fowler's advice: "make each refactoring step as small as possible, so that you can always see the program working."
|
|
27
27
|
|
|
28
|
-
8. Save the refactor plan to `specs/
|
|
28
|
+
8. Save the refactor plan to `specs/REFACTOR_LATEST.md`. Create the `specs/` directory if it doesn't exist.
|
|
29
29
|
|
|
30
30
|
<refactor-plan-template>
|
|
31
31
|
|
|
@@ -74,4 +74,4 @@ Any further notes about the refactor.
|
|
|
74
74
|
|
|
75
75
|
</refactor-plan-template>
|
|
76
76
|
|
|
77
|
-
After writing `specs/
|
|
77
|
+
After writing `specs/REFACTOR_LATEST.md`, suggest running `kickoff-branch` next to create a refactor branch.
|
|
@@ -68,7 +68,7 @@ cat package.json | jq '.dependencies,.devDependencies' 2>/dev/null
|
|
|
68
68
|
## Registry checklist
|
|
69
69
|
|
|
70
70
|
- [ ] npm / PyPI / crates.io (if applicable)
|
|
71
|
-
- [ ] Existing bigpowers skill (`bash scripts/build-skill-index.sh && rg "<intent>" specs/SKILL-SEARCH-
|
|
71
|
+
- [ ] Existing bigpowers skill (`bash scripts/build-skill-index.sh && rg "<intent>" specs/SKILL-SEARCH-INDEX_LATEST.md`)
|
|
72
72
|
- [ ] Project `docs/` and `specs/adr/`
|
|
73
73
|
- [ ] Official library documentation (quote one API detail)
|
|
74
74
|
|
|
@@ -9,7 +9,7 @@ description: Find the right bigpowers skill from natural-language intent using a
|
|
|
9
9
|
>
|
|
10
10
|
> **HARD GATE** — Do NOT use external embedding APIs or AI-based semantic search. This is a lexical-only index (ADR: zero external dependency).
|
|
11
11
|
|
|
12
|
-
Lexical search only — no embedding service (ADR: zero external dependency). The index is a flat markdown file (`specs/SKILL-SEARCH-
|
|
12
|
+
Lexical search only — no embedding service (ADR: zero external dependency). The index is a flat markdown file (`specs/SKILL-SEARCH-INDEX_LATEST.md`) built from every SKILL.md's YAML frontmatter — name, description, and key phrases. No vector DB, no API calls, no network dependency.
|
|
13
13
|
|
|
14
14
|
## When to use
|
|
15
15
|
|
|
@@ -20,16 +20,16 @@ Lexical search only — no embedding service (ADR: zero external dependency). Th
|
|
|
20
20
|
|
|
21
21
|
## Pre-flight
|
|
22
22
|
|
|
23
|
-
- [ ] Does `specs/SKILL-SEARCH-
|
|
23
|
+
- [ ] Does `specs/SKILL-SEARCH-INDEX_LATEST.md` exist? If not, run `bash scripts/build-skill-index.sh`.
|
|
24
24
|
- [ ] Is the index fresh? Check its timestamp — if > 24 hours old or after any SKILL.md change, regenerate.
|
|
25
25
|
|
|
26
26
|
## Process
|
|
27
27
|
|
|
28
|
-
1. **Refresh index if stale** — Run `bash scripts/build-skill-index.sh` if `specs/SKILL-SEARCH-
|
|
28
|
+
1. **Refresh index if stale** — Run `bash scripts/build-skill-index.sh` if `specs/SKILL-SEARCH-INDEX_LATEST.md` doesn't exist or was modified before the last SKILL.md change.
|
|
29
29
|
|
|
30
30
|
2. **Search the index** — Use ripgrep on the lexical index:
|
|
31
31
|
```
|
|
32
|
-
rg -i "<keywords>" specs/SKILL-SEARCH-
|
|
32
|
+
rg -i "<keywords>" specs/SKILL-SEARCH-INDEX_LATEST.md
|
|
33
33
|
```
|
|
34
34
|
The index contains each skill's name, description, phase, and key use-case phrases, so natural language queries work well even without embeddings.
|
|
35
35
|
|
|
@@ -47,7 +47,7 @@ Lexical search only — no embedding service (ADR: zero external dependency). Th
|
|
|
47
47
|
|
|
48
48
|
## Index Format
|
|
49
49
|
|
|
50
|
-
`specs/SKILL-SEARCH-
|
|
50
|
+
`specs/SKILL-SEARCH-INDEX_LATEST.md` contains one section per skill:
|
|
51
51
|
```markdown
|
|
52
52
|
## <skill-name>
|
|
53
53
|
- **Description:** <from frontmatter>
|
|
@@ -66,4 +66,4 @@ Lexical search only — no embedding service (ADR: zero external dependency). Th
|
|
|
66
66
|
|
|
67
67
|
## Verify
|
|
68
68
|
|
|
69
|
-
→ verify: `test -f specs/SKILL-SEARCH-
|
|
69
|
+
→ verify: `test -f specs/SKILL-SEARCH-INDEX_LATEST.md && echo OK || (bash scripts/build-skill-index.sh && test -f specs/SKILL-SEARCH-INDEX_LATEST.md && echo OK)`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Link story IDs from specs/release-plan.yaml + epic capsule directories to the implementing code and tests. Produces specs/
|
|
2
|
+
description: Link story IDs from specs/release-plan.yaml + epic capsule directories to the implementing code and tests. Produces specs/TRACEABILITY_LATEST.md. Use when you want to verify coverage of a release plan, audit which stories are implemented, or find "dark" stories with no code.
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
|
|
@@ -43,7 +43,7 @@ For each story ID:
|
|
|
43
43
|
For each tagged file with no matching story ID in release-plan.yaml:
|
|
44
44
|
- **Orphan**: code exists but story was removed or never planned — flag for cleanup
|
|
45
45
|
|
|
46
|
-
### 4. Write specs/
|
|
46
|
+
### 4. Write specs/TRACEABILITY_LATEST.md
|
|
47
47
|
|
|
48
48
|
```
|
|
49
49
|
## Story Coverage
|
|
@@ -63,6 +63,6 @@ For each tagged file with no matching story ID in release-plan.yaml:
|
|
|
63
63
|
Stories: [X] covered / [Y] dark / [Z] total
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
→ verify: `grep -c "Covered\|Dark" specs/
|
|
66
|
+
→ verify: `grep -c "Covered\|Dark" specs/TRACEABILITY_LATEST.md`
|
|
67
67
|
|
|
68
68
|
Suggest `plan-work` for each dark story found.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: assess-impact
|
|
3
|
-
description: "Analyze the blast radius of a proposed change before any code is written. Maps dependents, affected stories, and test coverage. Produces specs/
|
|
3
|
+
description: "Analyze the blast radius of a proposed change before any code is written. Maps dependents, affected stories, and test coverage. Produces specs/IMPACT_LATEST.md. Use before plan-work on any non-trivial change, when touching a shared module, or when the user asks \"what does this break?\"."
|
|
4
4
|
model: sonnet
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -55,7 +55,7 @@ grep -rn "[symbol-name]" . --include="*.test.*" --include="*.spec.*"
|
|
|
55
55
|
| Medium | 3–10 callers, partial test coverage |
|
|
56
56
|
| High | > 10 callers, or shared API/interface, or no tests |
|
|
57
57
|
|
|
58
|
-
### 6. Write specs/
|
|
58
|
+
### 6. Write specs/IMPACT_LATEST.md
|
|
59
59
|
|
|
60
60
|
```
|
|
61
61
|
## Target
|
|
@@ -78,7 +78,7 @@ grep -rn "[symbol-name]" . --include="*.test.*" --include="*.spec.*"
|
|
|
78
78
|
[Proceed / Add tests first / Discuss design]
|
|
79
79
|
```
|
|
80
80
|
|
|
81
|
-
→ verify: `grep "Risk:" specs/
|
|
81
|
+
→ verify: `grep "Risk:" specs/IMPACT_LATEST.md`
|
|
82
82
|
|
|
83
83
|
Suggest `plan-work` once risk is understood and any test gaps are noted.
|
|
84
84
|
|
|
@@ -50,7 +50,7 @@ Assess an incoming project plan for alignment with bigpowers principles, identif
|
|
|
50
50
|
|
|
51
51
|
3. **Close gaps conversationally** — for each ❌ or ⚠️, ask one question at a time. Record each answer before moving to the next.
|
|
52
52
|
|
|
53
|
-
4. **Write `specs/PLAN-
|
|
53
|
+
4. **Write `specs/PLAN-AUDIT_LATEST.md`**:
|
|
54
54
|
|
|
55
55
|
```markdown
|
|
56
56
|
# Plan Audit — <project>
|
|
@@ -87,4 +87,4 @@ NOT READY — N gaps remain; close before proceeding
|
|
|
87
87
|
|
|
88
88
|
## Verify
|
|
89
89
|
|
|
90
|
-
→ verify: `test -f specs/PLAN-
|
|
90
|
+
→ verify: `test -f specs/PLAN-AUDIT_LATEST.md && grep -q 'Verdict' specs/PLAN-AUDIT_LATEST.md && echo OK || echo FAIL`
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: define-language
|
|
3
|
-
description: "Extract a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms. Saves to specs/
|
|
3
|
+
description: "Extract a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms. Saves to specs/UBIQUITOUS_LANGUAGE_LATEST.md. Use when user wants to define domain terms, build a glossary, harden terminology, create a ubiquitous language, or mentions \"domain model\" or \"DDD\"."
|
|
4
4
|
model: sonnet
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
# Define Language
|
|
9
9
|
|
|
10
|
-
Extract and formalize domain terminology from the current conversation into a consistent glossary, saved to `specs/
|
|
10
|
+
Extract and formalize domain terminology from the current conversation into a consistent glossary, saved to `specs/UBIQUITOUS_LANGUAGE_LATEST.md`.
|
|
11
11
|
|
|
12
12
|
**Distinct from `model-domain` and `deepen-architecture`:** Use this skill to produce a canonical glossary of terms (words and definitions). Use `model-domain` to stress-test a plan through an interview that resolves domain model decisions. Use `deepen-architecture` to find module-level refactoring opportunities in the codebase.
|
|
13
13
|
|
|
@@ -21,12 +21,12 @@ Extract and formalize domain terminology from the current conversation into a co
|
|
|
21
21
|
- Different words used for the same concept (synonyms)
|
|
22
22
|
- Vague or overloaded terms
|
|
23
23
|
3. **Propose a canonical glossary** with opinionated term choices
|
|
24
|
-
4. **Write to `specs/
|
|
24
|
+
4. **Write to `specs/UBIQUITOUS_LANGUAGE_LATEST.md`** in the working directory using the format below
|
|
25
25
|
5. **Output a summary** inline in the conversation
|
|
26
26
|
|
|
27
27
|
## Output Format
|
|
28
28
|
|
|
29
|
-
Write a `specs/
|
|
29
|
+
Write a `specs/UBIQUITOUS_LANGUAGE_LATEST.md` file with this structure:
|
|
30
30
|
|
|
31
31
|
```md
|
|
32
32
|
# Ubiquitous Language
|
|
@@ -74,7 +74,7 @@ Write a `specs/UBIQUITOUS_LANGUAGE.md` file with this structure:
|
|
|
74
74
|
|
|
75
75
|
When invoked again in the same conversation:
|
|
76
76
|
|
|
77
|
-
1. Read the existing `specs/
|
|
77
|
+
1. Read the existing `specs/UBIQUITOUS_LANGUAGE_LATEST.md`
|
|
78
78
|
2. Incorporate any new terms from subsequent discussion
|
|
79
79
|
3. Update definitions if understanding has evolved
|
|
80
80
|
4. Re-flag any new ambiguities
|
|
@@ -27,7 +27,7 @@ Do NOT over-interview. If the description is clear enough to log, move on.
|
|
|
27
27
|
|
|
28
28
|
Kick off an Agent (subagent_type=Explore) to understand the relevant area. The goal is NOT to find a fix — it's to:
|
|
29
29
|
|
|
30
|
-
- Learn the domain language used in that area (check `specs/
|
|
30
|
+
- Learn the domain language used in that area (check `specs/UBIQUITOUS_LANGUAGE_LATEST.md` if present)
|
|
31
31
|
- Understand what the feature is supposed to do
|
|
32
32
|
- Identify the user-facing behavior boundary
|
|
33
33
|
|
|
@@ -98,7 +98,7 @@ For each bug, also append a detail section:
|
|
|
98
98
|
|
|
99
99
|
- **bug_id** uses full timestamp: `BUG-YYYY-MM-DDTHHMMSS` — matches the individual bug file name in `specs/bugs/`
|
|
100
100
|
- **No file paths or line numbers** — these go stale
|
|
101
|
-
- **Use the project's domain language** (check `specs/
|
|
101
|
+
- **Use the project's domain language** (check `specs/UBIQUITOUS_LANGUAGE_LATEST.md` if it exists)
|
|
102
102
|
- **Describe behaviors, not code** — "the sync service fails to apply the patch" not "applyPatch() throws"
|
|
103
103
|
- **Reproduction steps are mandatory** — if you can't determine them, ask the user
|
|
104
104
|
|
|
@@ -167,7 +167,7 @@ GSD CONTEXT.md has 6 sections: domain, decisions, canonical_refs, code_context,
|
|
|
167
167
|
|
|
168
168
|
Transform:
|
|
169
169
|
- `domain` → `plans/TECH_STACK_LATEST.md` Domain section
|
|
170
|
-
- `decisions` → scan each: if hard-to-reverse + surprising → `specs/adr/NNNN-{slug}.md`; if lightweight → `specs/DECISION-
|
|
170
|
+
- `decisions` → scan each: if hard-to-reverse + surprising → `specs/adr/NNNN-{slug}.md`; if lightweight → `specs/DECISION-LOG_LATEST.md`
|
|
171
171
|
- `canonical_refs` → Reference links in TECH_STACK
|
|
172
172
|
- `code_context` → Architecture section
|
|
173
173
|
- `deferred` → `SCOPE_LATEST.yaml` `out_of_scope` (with "(deferred from GSD)" note)
|
|
@@ -340,11 +340,11 @@ Transform:
|
|
|
340
340
|
- `[ASSUMPTION: ...]` inline tags → collected in scope YAML
|
|
341
341
|
- Out-of-scope features → `out_of_scope`
|
|
342
342
|
|
|
343
|
-
### `addendum.md` + `decision-log.md` → `specs/adr/` + `specs/DECISION-
|
|
343
|
+
### `addendum.md` + `decision-log.md` → `specs/adr/` + `specs/DECISION-LOG_LATEST.md`
|
|
344
344
|
|
|
345
345
|
Transform:
|
|
346
346
|
- Hard, irreversible, surprising decisions → individual `specs/adr/NNNN-{slug}.md`
|
|
347
|
-
- Lightweight decisions → `specs/DECISION-
|
|
347
|
+
- Lightweight decisions → `specs/DECISION-LOG_LATEST.md` (date | decision | rationale)
|
|
348
348
|
- `addendum.md` change signals → note in `SCOPE_LATEST.yaml` metadata
|
|
349
349
|
|
|
350
350
|
### `architecture.md` → `specs/tech-architecture/TECH_STACK_LATEST.md` + `specs/adr/`
|
|
@@ -387,7 +387,7 @@ Optional enhancements to offer the user after migration. Present as checkboxes.
|
|
|
387
387
|
### From BMAD
|
|
388
388
|
|
|
389
389
|
- [x] **FR-XX + UJ-XX in SCOPE_LATEST.yaml** — Rigorous traceability. (adopted: REQUIREMENTS_TRACE.yaml emitted on migration)
|
|
390
|
-
- [ ] **`specs/DECISION-
|
|
390
|
+
- [ ] **`specs/DECISION-LOG_LATEST.md`** — Lightweight decisions below ADR threshold.
|
|
391
391
|
- [x] **Adversarial review pass** — Critique epic shard before `develop-tdd`. (adopted: optional Step 6 in migration)
|
|
392
392
|
|
|
393
393
|
---
|
|
@@ -784,7 +784,7 @@ Full mapping tables: [REFERENCE-GSD.md](./REFERENCE-GSD.md) (GSD) · [REFERENCE.
|
|
|
784
784
|
|
|
785
785
|
- **Preserve source IDs** — REQ-XX, FR-XX, UJ-XX are emitted as first-class `id:` fields in bigpowers YAML targets (e.g., `in_scope` entries). Never silently renumber. See Step 3 ID Tracking subsection for details.
|
|
786
786
|
- **Never merge contradictory docs** — if source has both `CONTEXT.md` and `architecture.md`, create sections in bigpowers `CONTEXT.md`; don't collapse them.
|
|
787
|
-
- **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-
|
|
787
|
+
- **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`.
|
|
788
788
|
- **state.yaml is always regenerated** — never migrate source STATE verbatim; bigpowers state.yaml needs its own format.
|
|
789
789
|
- **specs/ is the only output location** — no files are created outside `specs/` and `CLAUDE.md`.
|
|
790
790
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plan-refactor
|
|
3
|
-
description: "Create a detailed refactor plan with tiny commits via user interview, then save it as specs/
|
|
3
|
+
description: "Create a detailed refactor plan with tiny commits via user interview, then save it as specs/REFACTOR_LATEST.md. Use when user wants to plan a refactor, create a refactoring RFC, or break a refactor into safe incremental steps."
|
|
4
4
|
model: sonnet
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@ model: sonnet
|
|
|
9
9
|
> **HARD GATE** — **HARD GATE** — Before refactoring, document the current behavior and why it is wrong. Extract one invariant that must be preserved. If you skip this, you will break things you don't expect.
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
Create a detailed refactor plan through a user interview. Save output to `specs/
|
|
12
|
+
Create a detailed refactor plan through a user interview. Save output to `specs/REFACTOR_LATEST.md`.
|
|
13
13
|
|
|
14
14
|
## Steps
|
|
15
15
|
|
|
@@ -27,7 +27,7 @@ Create a detailed refactor plan through a user interview. Save output to `specs/
|
|
|
27
27
|
|
|
28
28
|
7. Break the implementation into a plan of tiny commits. Remember Martin Fowler's advice: "make each refactoring step as small as possible, so that you can always see the program working."
|
|
29
29
|
|
|
30
|
-
8. Save the refactor plan to `specs/
|
|
30
|
+
8. Save the refactor plan to `specs/REFACTOR_LATEST.md`. Create the `specs/` directory if it doesn't exist.
|
|
31
31
|
|
|
32
32
|
<refactor-plan-template>
|
|
33
33
|
|
|
@@ -76,4 +76,4 @@ Any further notes about the refactor.
|
|
|
76
76
|
|
|
77
77
|
</refactor-plan-template>
|
|
78
78
|
|
|
79
|
-
After writing `specs/
|
|
79
|
+
After writing `specs/REFACTOR_LATEST.md`, suggest running `kickoff-branch` next to create a refactor branch.
|
|
@@ -70,7 +70,7 @@ cat package.json | jq '.dependencies,.devDependencies' 2>/dev/null
|
|
|
70
70
|
## Registry checklist
|
|
71
71
|
|
|
72
72
|
- [ ] npm / PyPI / crates.io (if applicable)
|
|
73
|
-
- [ ] Existing bigpowers skill (`bash scripts/build-skill-index.sh && rg "<intent>" specs/SKILL-SEARCH-
|
|
73
|
+
- [ ] Existing bigpowers skill (`bash scripts/build-skill-index.sh && rg "<intent>" specs/SKILL-SEARCH-INDEX_LATEST.md`)
|
|
74
74
|
- [ ] Project `docs/` and `specs/adr/`
|
|
75
75
|
- [ ] Official library documentation (quote one API detail)
|
|
76
76
|
|
|
@@ -11,7 +11,7 @@ model: haiku
|
|
|
11
11
|
>
|
|
12
12
|
> **HARD GATE** — Do NOT use external embedding APIs or AI-based semantic search. This is a lexical-only index (ADR: zero external dependency).
|
|
13
13
|
|
|
14
|
-
Lexical search only — no embedding service (ADR: zero external dependency). The index is a flat markdown file (`specs/SKILL-SEARCH-
|
|
14
|
+
Lexical search only — no embedding service (ADR: zero external dependency). The index is a flat markdown file (`specs/SKILL-SEARCH-INDEX_LATEST.md`) built from every SKILL.md's YAML frontmatter — name, description, and key phrases. No vector DB, no API calls, no network dependency.
|
|
15
15
|
|
|
16
16
|
## When to use
|
|
17
17
|
|
|
@@ -22,16 +22,16 @@ Lexical search only — no embedding service (ADR: zero external dependency). Th
|
|
|
22
22
|
|
|
23
23
|
## Pre-flight
|
|
24
24
|
|
|
25
|
-
- [ ] Does `specs/SKILL-SEARCH-
|
|
25
|
+
- [ ] Does `specs/SKILL-SEARCH-INDEX_LATEST.md` exist? If not, run `bash scripts/build-skill-index.sh`.
|
|
26
26
|
- [ ] Is the index fresh? Check its timestamp — if > 24 hours old or after any SKILL.md change, regenerate.
|
|
27
27
|
|
|
28
28
|
## Process
|
|
29
29
|
|
|
30
|
-
1. **Refresh index if stale** — Run `bash scripts/build-skill-index.sh` if `specs/SKILL-SEARCH-
|
|
30
|
+
1. **Refresh index if stale** — Run `bash scripts/build-skill-index.sh` if `specs/SKILL-SEARCH-INDEX_LATEST.md` doesn't exist or was modified before the last SKILL.md change.
|
|
31
31
|
|
|
32
32
|
2. **Search the index** — Use ripgrep on the lexical index:
|
|
33
33
|
```
|
|
34
|
-
rg -i "<keywords>" specs/SKILL-SEARCH-
|
|
34
|
+
rg -i "<keywords>" specs/SKILL-SEARCH-INDEX_LATEST.md
|
|
35
35
|
```
|
|
36
36
|
The index contains each skill's name, description, phase, and key use-case phrases, so natural language queries work well even without embeddings.
|
|
37
37
|
|
|
@@ -49,7 +49,7 @@ Lexical search only — no embedding service (ADR: zero external dependency). Th
|
|
|
49
49
|
|
|
50
50
|
## Index Format
|
|
51
51
|
|
|
52
|
-
`specs/SKILL-SEARCH-
|
|
52
|
+
`specs/SKILL-SEARCH-INDEX_LATEST.md` contains one section per skill:
|
|
53
53
|
```markdown
|
|
54
54
|
## <skill-name>
|
|
55
55
|
- **Description:** <from frontmatter>
|
|
@@ -68,4 +68,4 @@ Lexical search only — no embedding service (ADR: zero external dependency). Th
|
|
|
68
68
|
|
|
69
69
|
## Verify
|
|
70
70
|
|
|
71
|
-
→ verify: `test -f specs/SKILL-SEARCH-
|
|
71
|
+
→ verify: `test -f specs/SKILL-SEARCH-INDEX_LATEST.md && echo OK || (bash scripts/build-skill-index.sh && test -f specs/SKILL-SEARCH-INDEX_LATEST.md && echo OK)`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: trace-requirement
|
|
3
|
-
description: "Link story IDs from specs/release-plan.yaml + epic capsule directories to the implementing code and tests. Produces specs/
|
|
3
|
+
description: "Link story IDs from specs/release-plan.yaml + epic capsule directories to the implementing code and tests. Produces specs/TRACEABILITY_LATEST.md. Use when you want to verify coverage of a release plan, audit which stories are implemented, or find \"dark\" stories with no code."
|
|
4
4
|
model: haiku
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -45,7 +45,7 @@ For each story ID:
|
|
|
45
45
|
For each tagged file with no matching story ID in release-plan.yaml:
|
|
46
46
|
- **Orphan**: code exists but story was removed or never planned — flag for cleanup
|
|
47
47
|
|
|
48
|
-
### 4. Write specs/
|
|
48
|
+
### 4. Write specs/TRACEABILITY_LATEST.md
|
|
49
49
|
|
|
50
50
|
```
|
|
51
51
|
## Story Coverage
|
|
@@ -65,6 +65,6 @@ For each tagged file with no matching story ID in release-plan.yaml:
|
|
|
65
65
|
Stories: [X] covered / [Y] dark / [Z] total
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
-
→ verify: `grep -c "Covered\|Dark" specs/
|
|
68
|
+
→ verify: `grep -c "Covered\|Dark" specs/TRACEABILITY_LATEST.md`
|
|
69
69
|
|
|
70
70
|
Suggest `plan-work` for each dark story found.
|
package/.releaserc.json
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"package.json",
|
|
14
14
|
"skills-lock.json",
|
|
15
15
|
".gemini/extensions/bigpowers/gemini-extension.json",
|
|
16
|
-
"specs/SKILL-SEARCH-
|
|
16
|
+
"specs/SKILL-SEARCH-INDEX_LATEST.md"
|
|
17
17
|
],
|
|
18
18
|
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
|
|
19
19
|
}
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# [2.42.0](https://github.com/danielvm-git/bigpowers/compare/v2.41.0...v2.42.0) (2026-06-29)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **skills:** rename generated specs-root outputs to _LATEST.md suffix ([#28](https://github.com/danielvm-git/bigpowers/issues/28)) ([9982d23](https://github.com/danielvm-git/bigpowers/commit/9982d238b9b5f30f948d3ac7f4e6b44cf56f6730))
|
|
7
|
+
|
|
1
8
|
# [2.41.0](https://github.com/danielvm-git/bigpowers/compare/v2.40.0...v2.41.0) (2026-06-27)
|
|
2
9
|
|
|
3
10
|
|
package/GEMINI.md
CHANGED
|
@@ -52,3 +52,24 @@ Collection of 58 verb-noun skills, each with a SKILL.md source file and supporti
|
|
|
52
52
|
- Run tests after every change. Show evidence before declaring done.
|
|
53
53
|
- One clarifying question beats a wrong assumption baked into 200 lines.
|
|
54
54
|
- All written output (plans, specs, investigations) goes in specs/.
|
|
55
|
+
|
|
56
|
+
## bts toolchain
|
|
57
|
+
|
|
58
|
+
`bts` is installed. Prefer its verbs over ad-hoc shell commands.
|
|
59
|
+
|
|
60
|
+
| Task | Command | Avoid |
|
|
61
|
+
|------|---------|-------|
|
|
62
|
+
| Search code | `bts find --print <pattern>` | grep / find / cat |
|
|
63
|
+
| Interactive search | `bts find <pattern>` | manual grep pipes |
|
|
64
|
+
| Compress for context | `bts compress <file>` or `cmd \| bts compress` | summarising by hand |
|
|
65
|
+
| Repo map | `bts map` | listing files by hand |
|
|
66
|
+
| Library docs | `bts docs <lib>` | guessing from training data |
|
|
67
|
+
| Package source | `bts src <pkg>` | git clone |
|
|
68
|
+
| Toolchain health | `bts doctor` | which / command -v |
|
|
69
|
+
|
|
70
|
+
**Rules**
|
|
71
|
+
- Search with `bts find` before opening files to locate a symbol or pattern.
|
|
72
|
+
- Pipe anything > 200 lines through `bts compress` before adding to context.
|
|
73
|
+
- Run `bts map` when asked for a repo overview.
|
|
74
|
+
- Use `bts docs <lib>` before answering questions about library APIs.
|
|
75
|
+
- If a tool is missing, say so and run `bts doctor` — do not silently substitute.
|
package/SKILL-INDEX.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> **DO NOT EDIT** — This file is auto-generated by `scripts/generate-skill-index.sh`.
|
|
4
4
|
> Edit `SKILL.md` source files or `skills-lock.json` instead. Run `bash scripts/sync-skills.sh` to regenerate.
|
|
5
5
|
|
|
6
|
-
**Generated:** 2026-06-
|
|
6
|
+
**Generated:** 2026-06-29T16:10:24Z
|
|
7
7
|
**Skills:** 71
|
|
8
8
|
|
|
9
9
|
---
|
package/assess-impact/SKILL.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: assess-impact
|
|
3
3
|
model: sonnet
|
|
4
|
-
description: Analyze the blast radius of a proposed change before any code is written. Maps dependents, affected stories, and test coverage. Produces specs/
|
|
4
|
+
description: Analyze the blast radius of a proposed change before any code is written. Maps dependents, affected stories, and test coverage. Produces specs/IMPACT_LATEST.md. Use before plan-work on any non-trivial change, when touching a shared module, or when the user asks "what does this break?".
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Assess Impact
|
|
@@ -54,7 +54,7 @@ grep -rn "[symbol-name]" . --include="*.test.*" --include="*.spec.*"
|
|
|
54
54
|
| Medium | 3–10 callers, partial test coverage |
|
|
55
55
|
| High | > 10 callers, or shared API/interface, or no tests |
|
|
56
56
|
|
|
57
|
-
### 6. Write specs/
|
|
57
|
+
### 6. Write specs/IMPACT_LATEST.md
|
|
58
58
|
|
|
59
59
|
```
|
|
60
60
|
## Target
|
|
@@ -77,7 +77,7 @@ grep -rn "[symbol-name]" . --include="*.test.*" --include="*.spec.*"
|
|
|
77
77
|
[Proceed / Add tests first / Discuss design]
|
|
78
78
|
```
|
|
79
79
|
|
|
80
|
-
→ verify: `grep "Risk:" specs/
|
|
80
|
+
→ verify: `grep "Risk:" specs/IMPACT_LATEST.md`
|
|
81
81
|
|
|
82
82
|
Suggest `plan-work` once risk is understood and any test gaps are noted.
|
|
83
83
|
|
package/audit-plan/SKILL.md
CHANGED
|
@@ -49,7 +49,7 @@ Assess an incoming project plan for alignment with bigpowers principles, identif
|
|
|
49
49
|
|
|
50
50
|
3. **Close gaps conversationally** — for each ❌ or ⚠️, ask one question at a time. Record each answer before moving to the next.
|
|
51
51
|
|
|
52
|
-
4. **Write `specs/PLAN-
|
|
52
|
+
4. **Write `specs/PLAN-AUDIT_LATEST.md`**:
|
|
53
53
|
|
|
54
54
|
```markdown
|
|
55
55
|
# Plan Audit — <project>
|
|
@@ -86,4 +86,4 @@ NOT READY — N gaps remain; close before proceeding
|
|
|
86
86
|
|
|
87
87
|
## Verify
|
|
88
88
|
|
|
89
|
-
→ verify: `test -f specs/PLAN-
|
|
89
|
+
→ verify: `test -f specs/PLAN-AUDIT_LATEST.md && grep -q 'Verdict' specs/PLAN-AUDIT_LATEST.md && echo OK || echo FAIL`
|
package/define-language/SKILL.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: define-language
|
|
3
3
|
model: sonnet
|
|
4
|
-
description: Extract a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms. Saves to specs/
|
|
4
|
+
description: Extract a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms. Saves to specs/UBIQUITOUS_LANGUAGE_LATEST.md. Use when user wants to define domain terms, build a glossary, harden terminology, create a ubiquitous language, or mentions "domain model" or "DDD".
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Define Language
|
|
8
8
|
|
|
9
|
-
Extract and formalize domain terminology from the current conversation into a consistent glossary, saved to `specs/
|
|
9
|
+
Extract and formalize domain terminology from the current conversation into a consistent glossary, saved to `specs/UBIQUITOUS_LANGUAGE_LATEST.md`.
|
|
10
10
|
|
|
11
11
|
**Distinct from `model-domain` and `deepen-architecture`:** Use this skill to produce a canonical glossary of terms (words and definitions). Use `model-domain` to stress-test a plan through an interview that resolves domain model decisions. Use `deepen-architecture` to find module-level refactoring opportunities in the codebase.
|
|
12
12
|
|
|
@@ -20,12 +20,12 @@ Extract and formalize domain terminology from the current conversation into a co
|
|
|
20
20
|
- Different words used for the same concept (synonyms)
|
|
21
21
|
- Vague or overloaded terms
|
|
22
22
|
3. **Propose a canonical glossary** with opinionated term choices
|
|
23
|
-
4. **Write to `specs/
|
|
23
|
+
4. **Write to `specs/UBIQUITOUS_LANGUAGE_LATEST.md`** in the working directory using the format below
|
|
24
24
|
5. **Output a summary** inline in the conversation
|
|
25
25
|
|
|
26
26
|
## Output Format
|
|
27
27
|
|
|
28
|
-
Write a `specs/
|
|
28
|
+
Write a `specs/UBIQUITOUS_LANGUAGE_LATEST.md` file with this structure:
|
|
29
29
|
|
|
30
30
|
```md
|
|
31
31
|
# Ubiquitous Language
|
|
@@ -73,7 +73,7 @@ Write a `specs/UBIQUITOUS_LANGUAGE.md` file with this structure:
|
|
|
73
73
|
|
|
74
74
|
When invoked again in the same conversation:
|
|
75
75
|
|
|
76
|
-
1. Read the existing `specs/
|
|
76
|
+
1. Read the existing `specs/UBIQUITOUS_LANGUAGE_LATEST.md`
|
|
77
77
|
2. Incorporate any new terms from subsequent discussion
|
|
78
78
|
3. Update definitions if understanding has evolved
|
|
79
79
|
4. Re-flag any new ambiguities
|
package/inspect-quality/SKILL.md
CHANGED
|
@@ -26,7 +26,7 @@ Do NOT over-interview. If the description is clear enough to log, move on.
|
|
|
26
26
|
|
|
27
27
|
Kick off an Agent (subagent_type=Explore) to understand the relevant area. The goal is NOT to find a fix — it's to:
|
|
28
28
|
|
|
29
|
-
- Learn the domain language used in that area (check `specs/
|
|
29
|
+
- Learn the domain language used in that area (check `specs/UBIQUITOUS_LANGUAGE_LATEST.md` if present)
|
|
30
30
|
- Understand what the feature is supposed to do
|
|
31
31
|
- Identify the user-facing behavior boundary
|
|
32
32
|
|
|
@@ -97,7 +97,7 @@ For each bug, also append a detail section:
|
|
|
97
97
|
|
|
98
98
|
- **bug_id** uses full timestamp: `BUG-YYYY-MM-DDTHHMMSS` — matches the individual bug file name in `specs/bugs/`
|
|
99
99
|
- **No file paths or line numbers** — these go stale
|
|
100
|
-
- **Use the project's domain language** (check `specs/
|
|
100
|
+
- **Use the project's domain language** (check `specs/UBIQUITOUS_LANGUAGE_LATEST.md` if it exists)
|
|
101
101
|
- **Describe behaviors, not code** — "the sync service fails to apply the patch" not "applyPatch() throws"
|
|
102
102
|
- **Reproduction steps are mandatory** — if you can't determine them, ask the user
|
|
103
103
|
|
|
@@ -61,7 +61,7 @@ GSD CONTEXT.md has 6 sections: domain, decisions, canonical_refs, code_context,
|
|
|
61
61
|
|
|
62
62
|
Transform:
|
|
63
63
|
- `domain` → `plans/TECH_STACK_LATEST.md` Domain section
|
|
64
|
-
- `decisions` → scan each: if hard-to-reverse + surprising → `specs/adr/NNNN-{slug}.md`; if lightweight → `specs/DECISION-
|
|
64
|
+
- `decisions` → scan each: if hard-to-reverse + surprising → `specs/adr/NNNN-{slug}.md`; if lightweight → `specs/DECISION-LOG_LATEST.md`
|
|
65
65
|
- `canonical_refs` → Reference links in TECH_STACK
|
|
66
66
|
- `code_context` → Architecture section
|
|
67
67
|
- `deferred` → `SCOPE_LATEST.yaml` `out_of_scope` (with "(deferred from GSD)" note)
|
|
@@ -100,11 +100,11 @@ Transform:
|
|
|
100
100
|
- `[ASSUMPTION: ...]` inline tags → collected in scope YAML
|
|
101
101
|
- Out-of-scope features → `out_of_scope`
|
|
102
102
|
|
|
103
|
-
### `addendum.md` + `decision-log.md` → `specs/adr/` + `specs/DECISION-
|
|
103
|
+
### `addendum.md` + `decision-log.md` → `specs/adr/` + `specs/DECISION-LOG_LATEST.md`
|
|
104
104
|
|
|
105
105
|
Transform:
|
|
106
106
|
- Hard, irreversible, surprising decisions → individual `specs/adr/NNNN-{slug}.md`
|
|
107
|
-
- Lightweight decisions → `specs/DECISION-
|
|
107
|
+
- Lightweight decisions → `specs/DECISION-LOG_LATEST.md` (date | decision | rationale)
|
|
108
108
|
- `addendum.md` change signals → note in `SCOPE_LATEST.yaml` metadata
|
|
109
109
|
|
|
110
110
|
### `architecture.md` → `specs/tech-architecture/TECH_STACK_LATEST.md` + `specs/adr/`
|
|
@@ -147,7 +147,7 @@ Optional enhancements to offer the user after migration. Present as checkboxes.
|
|
|
147
147
|
### From BMAD
|
|
148
148
|
|
|
149
149
|
- [x] **FR-XX + UJ-XX in SCOPE_LATEST.yaml** — Rigorous traceability. (adopted: REQUIREMENTS_TRACE.yaml emitted on migration)
|
|
150
|
-
- [ ] **`specs/DECISION-
|
|
150
|
+
- [ ] **`specs/DECISION-LOG_LATEST.md`** — Lightweight decisions below ADR threshold.
|
|
151
151
|
- [x] **Adversarial review pass** — Critique epic shard before `develop-tdd`. (adopted: optional Step 6 in migration)
|
|
152
152
|
|
|
153
153
|
---
|
|
@@ -544,7 +544,7 @@ Full mapping tables: [REFERENCE-GSD.md](./REFERENCE-GSD.md) (GSD) · [REFERENCE.
|
|
|
544
544
|
|
|
545
545
|
- **Preserve source IDs** — REQ-XX, FR-XX, UJ-XX are emitted as first-class `id:` fields in bigpowers YAML targets (e.g., `in_scope` entries). Never silently renumber. See Step 3 ID Tracking subsection for details.
|
|
546
546
|
- **Never merge contradictory docs** — if source has both `CONTEXT.md` and `architecture.md`, create sections in bigpowers `CONTEXT.md`; don't collapse them.
|
|
547
|
-
- **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-
|
|
547
|
+
- **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`.
|
|
548
548
|
- **state.yaml is always regenerated** — never migrate source STATE verbatim; bigpowers state.yaml needs its own format.
|
|
549
549
|
- **specs/ is the only output location** — no files are created outside `specs/` and `CLAUDE.md`.
|
|
550
550
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bigpowers",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.42.0",
|
|
4
4
|
"description": "70 agent skills for spec-driven, test-first software development by solo developers",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"sync": "bash scripts/sync-skills.sh",
|
|
10
10
|
"validate-specs": "bash scripts/validate-specs-yaml.sh",
|
|
11
11
|
"enrich-epics": "bash scripts/enrich-epics-from-archive.sh",
|
|
12
|
-
"version": "bash scripts/sync-skills.sh && git add .gemini/extensions/bigpowers/gemini-extension.json specs/SKILL-SEARCH-
|
|
12
|
+
"version": "bash scripts/sync-skills.sh && git add .gemini/extensions/bigpowers/gemini-extension.json specs/SKILL-SEARCH-INDEX_LATEST.md",
|
|
13
13
|
"install": "bash scripts/install.sh",
|
|
14
14
|
"postinstall": "bash scripts/sync-skills.sh && bash scripts/install.sh",
|
|
15
15
|
"release": "semantic-release",
|
package/plan-refactor/SKILL.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plan-refactor
|
|
3
3
|
model: sonnet
|
|
4
|
-
description: Create a detailed refactor plan with tiny commits via user interview, then save it as specs/
|
|
4
|
+
description: Create a detailed refactor plan with tiny commits via user interview, then save it as specs/REFACTOR_LATEST.md. Use when user wants to plan a refactor, create a refactoring RFC, or break a refactor into safe incremental steps.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Plan Refactor
|
|
8
8
|
> **HARD GATE** — **HARD GATE** — Before refactoring, document the current behavior and why it is wrong. Extract one invariant that must be preserved. If you skip this, you will break things you don't expect.
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
Create a detailed refactor plan through a user interview. Save output to `specs/
|
|
11
|
+
Create a detailed refactor plan through a user interview. Save output to `specs/REFACTOR_LATEST.md`.
|
|
12
12
|
|
|
13
13
|
## Steps
|
|
14
14
|
|
|
@@ -26,7 +26,7 @@ Create a detailed refactor plan through a user interview. Save output to `specs/
|
|
|
26
26
|
|
|
27
27
|
7. Break the implementation into a plan of tiny commits. Remember Martin Fowler's advice: "make each refactoring step as small as possible, so that you can always see the program working."
|
|
28
28
|
|
|
29
|
-
8. Save the refactor plan to `specs/
|
|
29
|
+
8. Save the refactor plan to `specs/REFACTOR_LATEST.md`. Create the `specs/` directory if it doesn't exist.
|
|
30
30
|
|
|
31
31
|
<refactor-plan-template>
|
|
32
32
|
|
|
@@ -75,4 +75,4 @@ Any further notes about the refactor.
|
|
|
75
75
|
|
|
76
76
|
</refactor-plan-template>
|
|
77
77
|
|
|
78
|
-
After writing `specs/
|
|
78
|
+
After writing `specs/REFACTOR_LATEST.md`, suggest running `kickoff-branch` next to create a refactor branch.
|
|
@@ -14,7 +14,7 @@ cat package.json | jq '.dependencies,.devDependencies' 2>/dev/null
|
|
|
14
14
|
## Registry checklist
|
|
15
15
|
|
|
16
16
|
- [ ] npm / PyPI / crates.io (if applicable)
|
|
17
|
-
- [ ] Existing bigpowers skill (`bash scripts/build-skill-index.sh && rg "<intent>" specs/SKILL-SEARCH-
|
|
17
|
+
- [ ] Existing bigpowers skill (`bash scripts/build-skill-index.sh && rg "<intent>" specs/SKILL-SEARCH-INDEX_LATEST.md`)
|
|
18
18
|
- [ ] Project `docs/` and `specs/adr/`
|
|
19
19
|
- [ ] Official library documentation (quote one API detail)
|
|
20
20
|
|
package/search-skills/SKILL.md
CHANGED
|
@@ -10,7 +10,7 @@ model: haiku
|
|
|
10
10
|
>
|
|
11
11
|
> **HARD GATE** — Do NOT use external embedding APIs or AI-based semantic search. This is a lexical-only index (ADR: zero external dependency).
|
|
12
12
|
|
|
13
|
-
Lexical search only — no embedding service (ADR: zero external dependency). The index is a flat markdown file (`specs/SKILL-SEARCH-
|
|
13
|
+
Lexical search only — no embedding service (ADR: zero external dependency). The index is a flat markdown file (`specs/SKILL-SEARCH-INDEX_LATEST.md`) built from every SKILL.md's YAML frontmatter — name, description, and key phrases. No vector DB, no API calls, no network dependency.
|
|
14
14
|
|
|
15
15
|
## When to use
|
|
16
16
|
|
|
@@ -21,16 +21,16 @@ Lexical search only — no embedding service (ADR: zero external dependency). Th
|
|
|
21
21
|
|
|
22
22
|
## Pre-flight
|
|
23
23
|
|
|
24
|
-
- [ ] Does `specs/SKILL-SEARCH-
|
|
24
|
+
- [ ] Does `specs/SKILL-SEARCH-INDEX_LATEST.md` exist? If not, run `bash scripts/build-skill-index.sh`.
|
|
25
25
|
- [ ] Is the index fresh? Check its timestamp — if > 24 hours old or after any SKILL.md change, regenerate.
|
|
26
26
|
|
|
27
27
|
## Process
|
|
28
28
|
|
|
29
|
-
1. **Refresh index if stale** — Run `bash scripts/build-skill-index.sh` if `specs/SKILL-SEARCH-
|
|
29
|
+
1. **Refresh index if stale** — Run `bash scripts/build-skill-index.sh` if `specs/SKILL-SEARCH-INDEX_LATEST.md` doesn't exist or was modified before the last SKILL.md change.
|
|
30
30
|
|
|
31
31
|
2. **Search the index** — Use ripgrep on the lexical index:
|
|
32
32
|
```
|
|
33
|
-
rg -i "<keywords>" specs/SKILL-SEARCH-
|
|
33
|
+
rg -i "<keywords>" specs/SKILL-SEARCH-INDEX_LATEST.md
|
|
34
34
|
```
|
|
35
35
|
The index contains each skill's name, description, phase, and key use-case phrases, so natural language queries work well even without embeddings.
|
|
36
36
|
|
|
@@ -48,7 +48,7 @@ Lexical search only — no embedding service (ADR: zero external dependency). Th
|
|
|
48
48
|
|
|
49
49
|
## Index Format
|
|
50
50
|
|
|
51
|
-
`specs/SKILL-SEARCH-
|
|
51
|
+
`specs/SKILL-SEARCH-INDEX_LATEST.md` contains one section per skill:
|
|
52
52
|
```markdown
|
|
53
53
|
## <skill-name>
|
|
54
54
|
- **Description:** <from frontmatter>
|
|
@@ -67,4 +67,4 @@ Lexical search only — no embedding service (ADR: zero external dependency). Th
|
|
|
67
67
|
|
|
68
68
|
## Verify
|
|
69
69
|
|
|
70
|
-
→ verify: `test -f specs/SKILL-SEARCH-
|
|
70
|
+
→ verify: `test -f specs/SKILL-SEARCH-INDEX_LATEST.md && echo OK || (bash scripts/build-skill-index.sh && test -f specs/SKILL-SEARCH-INDEX_LATEST.md && echo OK)`
|
package/skills-lock.json
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
"path": "align-grid/SKILL.md"
|
|
8
8
|
},
|
|
9
9
|
"assess-impact": {
|
|
10
|
-
"description": "Analyze the blast radius of a proposed change before any code is written. Maps dependents, affected stories, and test coverage. Produces specs/
|
|
11
|
-
"sha256": "
|
|
10
|
+
"description": "Analyze the blast radius of a proposed change before any code is written. Maps dependents, affected stories, and test coverage. Produces specs/IMPACT_LATEST.md. Use before plan-work on any non-trivial change, when touching a shared module, or when the user asks \"what does this break?\".",
|
|
11
|
+
"sha256": "29183a878aa2cb0d",
|
|
12
12
|
"path": "assess-impact/SKILL.md"
|
|
13
13
|
},
|
|
14
14
|
"audit-code": {
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"audit-plan": {
|
|
20
20
|
"description": "Evaluate an incoming project plan against bigpowers principles and conventions, surface gaps, and produce a READY/NOT READY verdict before engagement begins. Use when a new project arrives, when adapting a foreign plan, or before running seed-conventions on an unfamiliar codebase.",
|
|
21
|
-
"sha256": "
|
|
21
|
+
"sha256": "571ab4f5ae9c7c13",
|
|
22
22
|
"path": "audit-plan/SKILL.md"
|
|
23
23
|
},
|
|
24
24
|
"build-epic": {
|
|
@@ -52,8 +52,8 @@
|
|
|
52
52
|
"path": "deepen-architecture/SKILL.md"
|
|
53
53
|
},
|
|
54
54
|
"define-language": {
|
|
55
|
-
"description": "Extract a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms. Saves to specs/
|
|
56
|
-
"sha256": "
|
|
55
|
+
"description": "Extract a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms. Saves to specs/UBIQUITOUS_LANGUAGE_LATEST.md. Use when user wants to define domain terms, build a glossary, harden terminology, create a ubiquitous language, or mentions \"domain model\" or \"DDD\".",
|
|
56
|
+
"sha256": "bffe0227335e5a41",
|
|
57
57
|
"path": "define-language/SKILL.md"
|
|
58
58
|
},
|
|
59
59
|
"define-success": {
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
},
|
|
144
144
|
"inspect-quality": {
|
|
145
145
|
"description": "Interactive QA session where user reports bugs or issues conversationally, and the agent logs them to specs/bugs/registry.yaml with a structured audit schema. Explores the codebase in the background for context and domain language. Use when user wants to report bugs, do QA, or mentions \"QA session\".",
|
|
146
|
-
"sha256": "
|
|
146
|
+
"sha256": "de13d11018beab6a",
|
|
147
147
|
"path": "inspect-quality/SKILL.md"
|
|
148
148
|
},
|
|
149
149
|
"investigate-bug": {
|
|
@@ -182,8 +182,8 @@
|
|
|
182
182
|
"path": "organize-workspace/SKILL.md"
|
|
183
183
|
},
|
|
184
184
|
"plan-refactor": {
|
|
185
|
-
"description": "Create a detailed refactor plan with tiny commits via user interview, then save it as specs/
|
|
186
|
-
"sha256": "
|
|
185
|
+
"description": "Create a detailed refactor plan with tiny commits via user interview, then save it as specs/REFACTOR_LATEST.md. Use when user wants to plan a refactor, create a refactoring RFC, or break a refactor into safe incremental steps.",
|
|
186
|
+
"sha256": "2785dc22454f0104",
|
|
187
187
|
"path": "plan-refactor/SKILL.md"
|
|
188
188
|
},
|
|
189
189
|
"plan-release": {
|
|
@@ -253,7 +253,7 @@
|
|
|
253
253
|
},
|
|
254
254
|
"search-skills": {
|
|
255
255
|
"description": "Find the right bigpowers skill from natural-language intent using a local lexical index over SKILL.md frontmatter. Use when unsure which skill to invoke, or at start of research-first.",
|
|
256
|
-
"sha256": "
|
|
256
|
+
"sha256": "5e5135b53c15f532",
|
|
257
257
|
"path": "search-skills/SKILL.md"
|
|
258
258
|
},
|
|
259
259
|
"security-review": {
|
|
@@ -312,8 +312,8 @@
|
|
|
312
312
|
"path": "terse-mode/SKILL.md"
|
|
313
313
|
},
|
|
314
314
|
"trace-requirement": {
|
|
315
|
-
"description": "Link story IDs from specs/release-plan.yaml + epic capsule directories to the implementing code and tests. Produces specs/
|
|
316
|
-
"sha256": "
|
|
315
|
+
"description": "Link story IDs from specs/release-plan.yaml + epic capsule directories to the implementing code and tests. Produces specs/TRACEABILITY_LATEST.md. Use when you want to verify coverage of a release plan, audit which stories are implemented, or find \"dark\" stories with no code.",
|
|
316
|
+
"sha256": "4955b4bc05bb41bc",
|
|
317
317
|
"path": "trace-requirement/SKILL.md"
|
|
318
318
|
},
|
|
319
319
|
"using-bigpowers": {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: trace-requirement
|
|
3
3
|
model: haiku
|
|
4
|
-
description: Link story IDs from specs/release-plan.yaml + epic capsule directories to the implementing code and tests. Produces specs/
|
|
4
|
+
description: Link story IDs from specs/release-plan.yaml + epic capsule directories to the implementing code and tests. Produces specs/TRACEABILITY_LATEST.md. Use when you want to verify coverage of a release plan, audit which stories are implemented, or find "dark" stories with no code.
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# Trace Requirement
|
|
@@ -44,7 +44,7 @@ For each story ID:
|
|
|
44
44
|
For each tagged file with no matching story ID in release-plan.yaml:
|
|
45
45
|
- **Orphan**: code exists but story was removed or never planned — flag for cleanup
|
|
46
46
|
|
|
47
|
-
### 4. Write specs/
|
|
47
|
+
### 4. Write specs/TRACEABILITY_LATEST.md
|
|
48
48
|
|
|
49
49
|
```
|
|
50
50
|
## Story Coverage
|
|
@@ -64,6 +64,6 @@ For each tagged file with no matching story ID in release-plan.yaml:
|
|
|
64
64
|
Stories: [X] covered / [Y] dark / [Z] total
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
→ verify: `grep -c "Covered\|Dark" specs/
|
|
67
|
+
→ verify: `grep -c "Covered\|Dark" specs/TRACEABILITY_LATEST.md`
|
|
68
68
|
|
|
69
69
|
Suggest `plan-work` for each dark story found.
|