bigpowers 2.2.0 → 2.4.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 +16 -0
- package/.pi/prompts/assess-impact.md +76 -0
- package/.pi/prompts/audit-code.md +156 -0
- package/.pi/prompts/build-epic.md +44 -0
- package/.pi/prompts/change-request.md +105 -0
- package/.pi/prompts/commit-message.md +135 -0
- package/.pi/prompts/compose-workflow.md +40 -0
- package/.pi/prompts/craft-skill.md +150 -0
- package/.pi/prompts/deepen-architecture.md +235 -0
- package/.pi/prompts/define-language.md +79 -0
- package/.pi/prompts/define-success.md +62 -0
- package/.pi/prompts/delegate-task.md +76 -0
- package/.pi/prompts/design-interface.md +96 -0
- package/.pi/prompts/develop-tdd.md +375 -0
- package/.pi/prompts/diagnose-root.md +23 -0
- package/.pi/prompts/dispatch-agents.md +83 -0
- package/.pi/prompts/edit-document.md +22 -0
- package/.pi/prompts/elaborate-spec.md +81 -0
- package/.pi/prompts/enforce-first.md +77 -0
- package/.pi/prompts/evolve-skill.md +38 -0
- package/.pi/prompts/execute-plan.md +54 -0
- package/.pi/prompts/fix-bug.md +36 -0
- package/.pi/prompts/grill-me.md +95 -0
- package/.pi/prompts/grill-with-docs.md +37 -0
- package/.pi/prompts/guard-git.md +212 -0
- package/.pi/prompts/hook-commits.md +93 -0
- package/.pi/prompts/inspect-quality.md +105 -0
- package/.pi/prompts/investigate-bug.md +117 -0
- package/.pi/prompts/kickoff-branch.md +99 -0
- package/.pi/prompts/map-codebase.md +70 -0
- package/.pi/prompts/migrate-spec.md +482 -0
- package/.pi/prompts/model-domain.md +227 -0
- package/.pi/prompts/orchestrate-project.md +161 -0
- package/.pi/prompts/organize-workspace.md +159 -0
- package/.pi/prompts/plan-refactor.md +77 -0
- package/.pi/prompts/plan-release.md +145 -0
- package/.pi/prompts/plan-work.md +161 -0
- package/.pi/prompts/release-branch.md +158 -0
- package/.pi/prompts/request-review.md +70 -0
- package/.pi/prompts/research-first.md +62 -0
- package/.pi/prompts/reset-baseline.md +20 -0
- package/.pi/prompts/respond-review.md +70 -0
- package/.pi/prompts/run-evals.md +56 -0
- package/.pi/prompts/run-planning.md +26 -0
- package/.pi/prompts/scope-work.md +23 -0
- package/.pi/prompts/search-skills.md +21 -0
- package/.pi/prompts/seed-conventions.md +132 -0
- package/.pi/prompts/session-state.md +146 -0
- package/.pi/prompts/setup-environment.md +23 -0
- package/.pi/prompts/simulate-agents.md +25 -0
- package/.pi/prompts/slice-tasks.md +23 -0
- package/.pi/prompts/spike-prototype.md +94 -0
- package/.pi/prompts/stocktake-skills.md +40 -0
- package/.pi/prompts/survey-context.md +129 -0
- package/.pi/prompts/terse-mode.md +37 -0
- package/.pi/prompts/trace-requirement.md +68 -0
- package/.pi/prompts/using-bigpowers.md +105 -0
- package/.pi/prompts/validate-fix.md +98 -0
- package/.pi/prompts/verify-work.md +125 -0
- package/.pi/prompts/visual-dashboard.md +51 -0
- package/.pi/prompts/wire-observability.md +92 -0
- package/.pi/prompts/write-document.md +244 -0
- package/.pi/skills/assess-impact/SKILL.md +77 -0
- package/.pi/skills/audit-code/SKILL.md +157 -0
- package/.pi/skills/build-epic/SKILL.md +45 -0
- package/.pi/skills/change-request/SKILL.md +106 -0
- package/.pi/skills/commit-message/SKILL.md +136 -0
- package/.pi/skills/compose-workflow/SKILL.md +41 -0
- package/.pi/skills/craft-skill/SKILL.md +151 -0
- package/.pi/skills/deepen-architecture/SKILL.md +236 -0
- package/.pi/skills/define-language/SKILL.md +80 -0
- package/.pi/skills/define-success/SKILL.md +63 -0
- package/.pi/skills/delegate-task/SKILL.md +77 -0
- package/.pi/skills/design-interface/SKILL.md +97 -0
- package/.pi/skills/develop-tdd/SKILL.md +376 -0
- package/.pi/skills/diagnose-root/SKILL.md +24 -0
- package/.pi/skills/dispatch-agents/SKILL.md +84 -0
- package/.pi/skills/edit-document/SKILL.md +23 -0
- package/.pi/skills/elaborate-spec/SKILL.md +82 -0
- package/.pi/skills/enforce-first/SKILL.md +78 -0
- package/.pi/skills/evolve-skill/SKILL.md +39 -0
- package/.pi/skills/execute-plan/SKILL.md +55 -0
- package/.pi/skills/fix-bug/SKILL.md +37 -0
- package/.pi/skills/grill-me/SKILL.md +96 -0
- package/.pi/skills/grill-with-docs/SKILL.md +38 -0
- package/.pi/skills/guard-git/SKILL.md +213 -0
- package/.pi/skills/hook-commits/SKILL.md +94 -0
- package/.pi/skills/inspect-quality/SKILL.md +106 -0
- package/.pi/skills/investigate-bug/SKILL.md +118 -0
- package/.pi/skills/kickoff-branch/SKILL.md +100 -0
- package/.pi/skills/map-codebase/SKILL.md +71 -0
- package/.pi/skills/migrate-spec/SKILL.md +483 -0
- package/.pi/skills/model-domain/SKILL.md +228 -0
- package/.pi/skills/orchestrate-project/SKILL.md +162 -0
- package/.pi/skills/organize-workspace/SKILL.md +160 -0
- package/.pi/skills/plan-refactor/SKILL.md +78 -0
- package/.pi/skills/plan-release/SKILL.md +146 -0
- package/.pi/skills/plan-work/SKILL.md +162 -0
- package/.pi/skills/release-branch/SKILL.md +159 -0
- package/.pi/skills/request-review/SKILL.md +71 -0
- package/.pi/skills/research-first/SKILL.md +63 -0
- package/.pi/skills/reset-baseline/SKILL.md +21 -0
- package/.pi/skills/respond-review/SKILL.md +71 -0
- package/.pi/skills/run-evals/SKILL.md +57 -0
- package/.pi/skills/run-planning/SKILL.md +27 -0
- package/.pi/skills/scope-work/SKILL.md +24 -0
- package/.pi/skills/search-skills/SKILL.md +22 -0
- package/.pi/skills/seed-conventions/SKILL.md +133 -0
- package/.pi/skills/session-state/SKILL.md +147 -0
- package/.pi/skills/setup-environment/SKILL.md +24 -0
- package/.pi/skills/simulate-agents/SKILL.md +26 -0
- package/.pi/skills/slice-tasks/SKILL.md +24 -0
- package/.pi/skills/spike-prototype/SKILL.md +95 -0
- package/.pi/skills/stocktake-skills/SKILL.md +41 -0
- package/.pi/skills/survey-context/SKILL.md +130 -0
- package/.pi/skills/terse-mode/SKILL.md +38 -0
- package/.pi/skills/trace-requirement/SKILL.md +69 -0
- package/.pi/skills/using-bigpowers/SKILL.md +106 -0
- package/.pi/skills/validate-fix/SKILL.md +99 -0
- package/.pi/skills/verify-work/SKILL.md +126 -0
- package/.pi/skills/visual-dashboard/SKILL.md +52 -0
- package/.pi/skills/wire-observability/SKILL.md +93 -0
- package/.pi/skills/write-document/SKILL.md +245 -0
- package/CHANGELOG.md +14 -0
- package/README.md +27 -1
- package/deepen-architecture/SKILL.md +2 -0
- package/define-language/SKILL.md +2 -0
- package/diagnose-root/SKILL.md +2 -0
- package/edit-document/SKILL.md +2 -0
- package/fix-bug/SKILL.md +3 -1
- package/grill-me/SKILL.md +3 -1
- package/grill-with-docs/SKILL.md +3 -1
- package/investigate-bug/SKILL.md +5 -11
- package/map-codebase/SKILL.md +3 -1
- package/model-domain/SKILL.md +2 -0
- package/package.json +11 -2
- package/plan-release/SKILL.md +1 -1
- package/plan-work/SKILL.md +3 -1
- package/release-branch/SKILL.md +4 -2
- package/run-planning/SKILL.md +3 -2
- package/scope-work/SKILL.md +3 -1
- package/scripts/sync-skills.sh +48 -3
- package/scripts/validate-doctrine.sh +24 -9
- package/seed-conventions/SKILL.md +2 -0
- package/slice-tasks/SKILL.md +3 -1
- package/survey-context/SKILL.md +3 -1
- package/write-document/SKILL.md +2 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: model-domain
|
|
3
|
+
description: "Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates specs/tech-architecture/tech-stack.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
|
+
|
|
7
|
+
# Model Domain
|
|
8
|
+
|
|
9
|
+
**Distinct from `define-language` and `deepen-architecture`:** Use this skill to stress-test a plan through a grilling interview that resolves domain model decisions and captures invariants. Use `define-language` to produce a canonical glossary of terms. Use `deepen-architecture` to find module-level refactoring opportunities in code.
|
|
10
|
+
|
|
11
|
+
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.
|
|
12
|
+
|
|
13
|
+
> **HARD GATE** — Capture invariants (what MUST always be true) and state machines (what transitions are legal) for core entities. If these are fuzzy, design will fail.
|
|
14
|
+
|
|
15
|
+
Ask the questions one at a time, waiting for feedback on each question before continuing.
|
|
16
|
+
|
|
17
|
+
If a question can be answered by exploring the codebase, explore the codebase instead.
|
|
18
|
+
|
|
19
|
+
## Domain awareness
|
|
20
|
+
|
|
21
|
+
During codebase exploration, also look for existing documentation:
|
|
22
|
+
|
|
23
|
+
### File structure
|
|
24
|
+
|
|
25
|
+
Most repos have a single context:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
/
|
|
29
|
+
├── specs/
|
|
30
|
+
│ ├── CONTEXT.md
|
|
31
|
+
│ └── adr/
|
|
32
|
+
│ ├── 0001-event-sourced-orders.md
|
|
33
|
+
│ └── 0002-postgres-for-write-model.md
|
|
34
|
+
└── src/
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
If a `specs/tech-architecture/tech-stack.md` exists, the repo has multiple contexts. The map points to where each one lives:
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
/
|
|
41
|
+
├── specs/
|
|
42
|
+
│ ├── CONTEXT-MAP.md
|
|
43
|
+
│ └── adr/ ← system-wide decisions
|
|
44
|
+
└── src/
|
|
45
|
+
├── ordering/
|
|
46
|
+
│ └── specs/
|
|
47
|
+
│ ├── CONTEXT.md
|
|
48
|
+
│ └── adr/ ← context-specific decisions
|
|
49
|
+
└── billing/
|
|
50
|
+
└── specs/
|
|
51
|
+
├── CONTEXT.md
|
|
52
|
+
└── adr/
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Create files lazily — only when you have something to write. If no `specs/tech-architecture/tech-stack.md` exists, create it when the first term is resolved. If no `specs/adr/` exists, create it when the first ADR is needed.
|
|
56
|
+
|
|
57
|
+
## During the session
|
|
58
|
+
|
|
59
|
+
### Challenge against the glossary
|
|
60
|
+
|
|
61
|
+
When the user uses a term that conflicts with the existing language in `specs/tech-architecture/tech-stack.md`, call it out immediately. "Your glossary defines 'cancellation' as X, but you seem to mean Y — which is it?"
|
|
62
|
+
|
|
63
|
+
### Sharpen fuzzy language
|
|
64
|
+
|
|
65
|
+
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."
|
|
66
|
+
|
|
67
|
+
### Discuss concrete scenarios
|
|
68
|
+
|
|
69
|
+
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.
|
|
70
|
+
|
|
71
|
+
### Cross-reference with code
|
|
72
|
+
|
|
73
|
+
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?"
|
|
74
|
+
|
|
75
|
+
### Update specs/tech-architecture/tech-stack.md inline
|
|
76
|
+
|
|
77
|
+
When a term is resolved, update `specs/tech-architecture/tech-stack.md` right there. Don't batch these up — capture them as they happen. Use the format in [CONTEXT-FORMAT.md](./CONTEXT-FORMAT.md).
|
|
78
|
+
|
|
79
|
+
Don't couple `specs/tech-architecture/tech-stack.md` to implementation details. Only include terms that are meaningful to domain experts.
|
|
80
|
+
|
|
81
|
+
### Offer ADRs sparingly
|
|
82
|
+
|
|
83
|
+
Only offer to create an ADR when all three are true:
|
|
84
|
+
|
|
85
|
+
1. **Hard to reverse** — the cost of changing your mind later is meaningful
|
|
86
|
+
2. **Surprising without context** — a future reader will wonder "why did they do it this way?"
|
|
87
|
+
3. **The result of a real trade-off** — there were genuine alternatives and you picked one for specific reasons
|
|
88
|
+
|
|
89
|
+
If any of the three is missing, skip the ADR. Use the format in [ADR-FORMAT.md](./ADR-FORMAT.md).
|
|
90
|
+
|
|
91
|
+
## Concurrency safety audit
|
|
92
|
+
|
|
93
|
+
When the plan touches shared state, async, or multi-threaded code:
|
|
94
|
+
|
|
95
|
+
- [ ] List every **shared mutable** location (globals, singletons, module-level caches).
|
|
96
|
+
- [ ] For each: who reads, who writes, synchronization mechanism (lock, actor, immutable copy).
|
|
97
|
+
- [ ] Flag **race risks** (check-then-act, non-atomic read-modify-write) with severity.
|
|
98
|
+
- [ ] Record findings in `specs/tech-architecture/tech-stack.md` under `## Concurrency` or in an ADR if architectural.
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
# ADR Format
|
|
103
|
+
|
|
104
|
+
ADRs live in `docs/adr/` and use sequential numbering: `0001-slug.md`, `0002-slug.md`, etc.
|
|
105
|
+
|
|
106
|
+
Create the `docs/adr/` directory lazily — only when the first ADR is needed.
|
|
107
|
+
|
|
108
|
+
## Template
|
|
109
|
+
|
|
110
|
+
```md
|
|
111
|
+
# {Short title of the decision}
|
|
112
|
+
|
|
113
|
+
{1-3 sentences: what's the context, what did we decide, and why.}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
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.
|
|
117
|
+
|
|
118
|
+
## Optional sections
|
|
119
|
+
|
|
120
|
+
Only include these when they add genuine value. Most ADRs won't need them.
|
|
121
|
+
|
|
122
|
+
- **Status** frontmatter (`proposed | accepted | deprecated | superseded by ADR-NNNN`) — useful when decisions are revisited
|
|
123
|
+
- **Considered Options** — only when the rejected alternatives are worth remembering
|
|
124
|
+
- **Consequences** — only when non-obvious downstream effects need to be called out
|
|
125
|
+
|
|
126
|
+
## Numbering
|
|
127
|
+
|
|
128
|
+
Scan `docs/adr/` for the highest existing number and increment by one.
|
|
129
|
+
|
|
130
|
+
## When to offer an ADR
|
|
131
|
+
|
|
132
|
+
All three of these must be true:
|
|
133
|
+
|
|
134
|
+
1. **Hard to reverse** — the cost of changing your mind later is meaningful
|
|
135
|
+
2. **Surprising without context** — a future reader will look at the code and wonder "why on earth did they do it this way?"
|
|
136
|
+
3. **The result of a real trade-off** — there were genuine alternatives and you picked one for specific reasons
|
|
137
|
+
|
|
138
|
+
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."
|
|
139
|
+
|
|
140
|
+
### What qualifies
|
|
141
|
+
|
|
142
|
+
- **Architectural shape.** "We're using a monorepo." "The write model is event-sourced, the read model is projected into Postgres."
|
|
143
|
+
- **Integration patterns between contexts.** "Ordering and Billing communicate via domain events, not synchronous HTTP."
|
|
144
|
+
- **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.
|
|
145
|
+
- **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.
|
|
146
|
+
- **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.
|
|
147
|
+
- **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."
|
|
148
|
+
- **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.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
# CONTEXT.md Format
|
|
153
|
+
|
|
154
|
+
## Structure
|
|
155
|
+
|
|
156
|
+
```md
|
|
157
|
+
# {Context Name}
|
|
158
|
+
|
|
159
|
+
{One or two sentence description of what this context is and why it exists.}
|
|
160
|
+
|
|
161
|
+
## Language
|
|
162
|
+
|
|
163
|
+
**Order**:
|
|
164
|
+
A customer's request to purchase one or more items.
|
|
165
|
+
_Avoid_: Purchase, transaction
|
|
166
|
+
|
|
167
|
+
**Invoice**:
|
|
168
|
+
A request for payment sent to a customer after delivery.
|
|
169
|
+
_Avoid_: Bill, payment request
|
|
170
|
+
|
|
171
|
+
**Customer**:
|
|
172
|
+
A person or organization that places orders.
|
|
173
|
+
_Avoid_: Client, buyer, account
|
|
174
|
+
|
|
175
|
+
## Relationships
|
|
176
|
+
|
|
177
|
+
- An **Order** produces one or more **Invoices**
|
|
178
|
+
- An **Invoice** belongs to exactly one **Customer**
|
|
179
|
+
|
|
180
|
+
## Example dialogue
|
|
181
|
+
|
|
182
|
+
> **Dev:** "When a **Customer** places an **Order**, do we create the **Invoice** immediately?"
|
|
183
|
+
> **Domain expert:** "No — an **Invoice** is only generated once a **Fulfillment** is confirmed."
|
|
184
|
+
|
|
185
|
+
## Flagged ambiguities
|
|
186
|
+
|
|
187
|
+
- "account" was used to mean both **Customer** and **User** — resolved: these are distinct concepts.
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Rules
|
|
191
|
+
|
|
192
|
+
- **Be opinionated.** When multiple words exist for the same concept, pick the best one and list the others as aliases to avoid.
|
|
193
|
+
- **Flag conflicts explicitly.** If a term is used ambiguously, call it out in "Flagged ambiguities" with a clear resolution.
|
|
194
|
+
- **Keep definitions tight.** One sentence max. Define what it IS, not what it does.
|
|
195
|
+
- **Show relationships.** Use bold term names and express cardinality where obvious.
|
|
196
|
+
- **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.
|
|
197
|
+
- **Group terms under subheadings** when natural clusters emerge. If all terms belong to a single cohesive area, a flat list is fine.
|
|
198
|
+
- **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.
|
|
199
|
+
|
|
200
|
+
## Single vs multi-context repos
|
|
201
|
+
|
|
202
|
+
**Single context (most repos):** One `CONTEXT.md` at the repo root.
|
|
203
|
+
|
|
204
|
+
**Multiple contexts:** A `CONTEXT-MAP.md` at the repo root lists the contexts, where they live, and how they relate to each other:
|
|
205
|
+
|
|
206
|
+
```md
|
|
207
|
+
# Context Map
|
|
208
|
+
|
|
209
|
+
## Contexts
|
|
210
|
+
|
|
211
|
+
- [Ordering](./src/ordering/CONTEXT.md) — receives and tracks customer orders
|
|
212
|
+
- [Billing](./src/billing/CONTEXT.md) — generates invoices and processes payments
|
|
213
|
+
- [Fulfillment](./src/fulfillment/CONTEXT.md) — manages warehouse picking and shipping
|
|
214
|
+
|
|
215
|
+
## Relationships
|
|
216
|
+
|
|
217
|
+
- **Ordering → Fulfillment**: Ordering emits `OrderPlaced` events; Fulfillment consumes them to start picking
|
|
218
|
+
- **Fulfillment → Billing**: Fulfillment emits `ShipmentDispatched` events; Billing consumes them to generate invoices
|
|
219
|
+
- **Ordering ↔ Billing**: Shared types for `CustomerId` and `Money`
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
The skill infers which structure applies:
|
|
223
|
+
|
|
224
|
+
- If `CONTEXT-MAP.md` exists, read it to find contexts
|
|
225
|
+
- If only a root `CONTEXT.md` exists, single context
|
|
226
|
+
- If neither exists, create a root `CONTEXT.md` lazily when the first term is resolved
|
|
227
|
+
|
|
228
|
+
When multiple contexts exist, infer which one the current topic relates to. If unclear, ask.
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orchestrate-project
|
|
3
|
+
description: "Meta-skill that enforces the 6-phase core loop (discover → elaborate → plan → build → verify → release) with hard gates. Use to coordinate multi-phase projects with guaranteed quality checkpoints. One-time command for the entire project lifecycle."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
# Orchestrate
|
|
8
|
+
> **HARD GATE** — **HARD GATE** — Do NOT invoke orchestrate-project unless you have a clear multi-phase workflow. Single-skill tasks should use dedicated skills instead. Orchestrate is for complex, multi-stage work that requires coordination across phases.
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
The orchestrate skill coordinates projects through a prescriptive 6-phase core loop with hard gates, ensuring consistent quality and preventing scope creep.
|
|
12
|
+
|
|
13
|
+
## Quick Start
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# Start a new project (initializes specs/ YAML cockpit and begins discover phase)
|
|
17
|
+
claude /orchestrate --mode standard
|
|
18
|
+
|
|
19
|
+
# Or resume an existing project at the current phase
|
|
20
|
+
claude /orchestrate --mode standard --resume
|
|
21
|
+
|
|
22
|
+
# For low-risk scenarios (hotfixes, refactors on well-tested code)
|
|
23
|
+
claude /orchestrate --mode fast-track
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## The 6-Phase Core Loop
|
|
27
|
+
|
|
28
|
+
1. **DISCOVER** (3-6 hours): Understand problem. Deliverables: `requirements/VISION_LATEST.yaml`, `requirements/SCOPE_LATEST.yaml`, `plans/TECH_STACK_LATEST.md`.
|
|
29
|
+
2. **ELABORATE** (3-6 hours): Research solutions. Deliverables: Prior art in scope YAML, ADRs in `specs/adr/`.
|
|
30
|
+
3. **PLAN** (2-4 hours): Write verifiable plan. Deliverables: `release-plan.yaml`, `epics/eNN-*.yaml` with `verify:` per task.
|
|
31
|
+
4. **BUILD** (1-8 hours): Execute plan. Runs build-epic once per story in WSJF order. Deliverables: Code; update `execution-status.yaml`.
|
|
32
|
+
5. **VERIFY** (1-3 hours): Validate success criteria. Deliverables: UAT evidence, `specs/EVALS-*.md` if used.
|
|
33
|
+
6. **RELEASE** (30 min - 2 hours): Ship to production. Deliverables: Release tag (vX.Y.Z), `state.yaml` `release.last_tag`.
|
|
34
|
+
|
|
35
|
+
See [REFERENCE.md](REFERENCE.md) for detailed phase specifications and gate types.
|
|
36
|
+
|
|
37
|
+
## How Orchestrate Works
|
|
38
|
+
|
|
39
|
+
1. **Maintains state.yaml** — Tracks current phase, `active_epic`, `active_flow`, decisions, risks.
|
|
40
|
+
2. **Spawns appropriate skills** — Routes by `model:` frontmatter. Decisions pass only via `specs/state.yaml` `handoff` between spawns.
|
|
41
|
+
3. **Methodology lenses** — If `specs/tech-architecture/test.md` or ADRs exist, apply at phase gates.
|
|
42
|
+
4. **Enforces gates** — Hard stops if success criteria not met.
|
|
43
|
+
5. **The Gatekeeper** — Between stories in BUILD: read `specs/execution-status.yaml`; previous story must be `done` before starting the next; use `build-epic` for the 8-step epic cycle.
|
|
44
|
+
6. **Pauses for confirmation** — After each phase, asks "Ready to proceed?".
|
|
45
|
+
7. **Snapshots** — `bash scripts/bp-yaml-snapshot.sh` before major release cuts.
|
|
46
|
+
|
|
47
|
+
## Orchestration Modes
|
|
48
|
+
|
|
49
|
+
- **Standard**: Enforce all gates. Use for new features and major refactors.
|
|
50
|
+
- **Fast-Track**: Skip negotiable gates. Use for hotfixes and minor improvements.
|
|
51
|
+
- **Ad-Hoc**: Warnings only. Use for prototyping and spikes (non-production).
|
|
52
|
+
|
|
53
|
+
See [REFERENCE.md](REFERENCE.md) for full mode behaviors.
|
|
54
|
+
|
|
55
|
+
## Verification
|
|
56
|
+
|
|
57
|
+
All phases complete with artifacts:
|
|
58
|
+
```bash
|
|
59
|
+
verify: test -f specs/state.yaml && test -f specs/release-plan.yaml && test -f specs/product/SCOPE_LATEST.yaml && ls specs/epics/*.yaml 1>/dev/null && echo "✅ All phases complete"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
# Orchestrate Reference: Phases, Modes, and Workflows
|
|
65
|
+
|
|
66
|
+
Detailed documentation for the `orchestrate-project` meta-skill.
|
|
67
|
+
|
|
68
|
+
## The 6-Phase Core Loop
|
|
69
|
+
|
|
70
|
+
### PHASE 1: DISCOVER
|
|
71
|
+
- **Goal**: Understand the problem completely and map existing context.
|
|
72
|
+
- **Deliverables**: `requirements/VISION_LATEST.yaml`, `requirements/SCOPE_LATEST.yaml`, `plans/TECH_STACK_LATEST.md`.
|
|
73
|
+
- **Skills**: `survey-context`, `elaborate-spec`, `grill-me`.
|
|
74
|
+
- **Gate**: Confirm ("Is the problem clear?").
|
|
75
|
+
|
|
76
|
+
### PHASE 2: ELABORATE
|
|
77
|
+
- **Goal**: Research solutions and lock architectural design.
|
|
78
|
+
- **Deliverables**: Prior art in scope YAML, ADRs in `specs/adr/`.
|
|
79
|
+
- **Skills**: `grill-me`, `model-domain`, `define-language`, `deepen-architecture`, `design-interface`.
|
|
80
|
+
- **Gate**: Quality ≥94% (via `request-review`) + Confirm ("Are decisions locked?").
|
|
81
|
+
|
|
82
|
+
### PHASE 3: PLAN
|
|
83
|
+
- **Goal**: Write a verifiable implementation plan with success criteria.
|
|
84
|
+
- **Deliverables**: `release-plan.yaml`, `epics/eNN-*.yaml` with `verify:` per task.
|
|
85
|
+
- **Skills**: `scope-work`, `slice-tasks`, `define-success`, `plan-work`.
|
|
86
|
+
- **Gate**: Quality (request-review ≥94%) + slopcheck [SUS]/[SLOP].
|
|
87
|
+
|
|
88
|
+
### PHASE 4: BUILD
|
|
89
|
+
- **Goal**: Execute the plan story-by-story using the 8-step `build-epic` cycle with TDD and vertical slices.
|
|
90
|
+
- **Deliverables**: Code; `execution-status.yaml` updated per story; `specs/metrics/cycle-times.yaml` row per story.
|
|
91
|
+
- **Skills**: `build-epic` (conductor) → per-story: `survey-context`, `plan-work`, `kickoff-branch`, `develop-tdd`, `verify-work`, `audit-code`, `commit-message`, `release-branch`.
|
|
92
|
+
- **BCP tracking**: `plan-release` sizes each story in Business Complexity Points (BCP) before the build queue; `plan-work` confirms and writes the size to `state.yaml` as `epic_cycle.story_bcps`. See `docs/references/bcp.md` for the canonical sizing method.
|
|
93
|
+
- **Timestamps**: `survey-context` stamps `metrics.story_start`; `release-branch` stamps `metrics.story_end` and writes BCP/hr to `specs/metrics/cycle-times.yaml`.
|
|
94
|
+
- **next_skill**: Each critical-path skill writes `handoff.next_skill` to `state.yaml`. Agents resume by reading `state.yaml` — no guessing.
|
|
95
|
+
- **Dashboard**: `npm run dashboard` (TUI) or `npm run dashboard:web` (browser, port 7742) shows live pipeline, epic queue, BCP metrics, and cycle-time ledger.
|
|
96
|
+
- **Gate**: Integration tests PASS; all 8 build-epic steps completed per story.
|
|
97
|
+
|
|
98
|
+
### PHASE 5: VERIFY
|
|
99
|
+
- **Goal**: Validate success criteria and ensure production readiness.
|
|
100
|
+
- **Deliverables**: UAT evidence, eval results.
|
|
101
|
+
- **Skills**: `run-evals`, `verify-work`, `audit-code`, `request-review` (optional).
|
|
102
|
+
- **Gate**: Verification Script confirmed; `verify-work` not on `main`/`master`.
|
|
103
|
+
|
|
104
|
+
### PHASE 6: RELEASE (Integrate)
|
|
105
|
+
- **Goal**: Ship to `main` with full traceability.
|
|
106
|
+
- **Deliverables**: Release tag (vX.Y.Z), release notes via semantic-release.
|
|
107
|
+
- **Skills**: `commit-message`, `release-branch`.
|
|
108
|
+
- **Git arc**:
|
|
109
|
+
1. Plan on `main` (Discover / Plan)
|
|
110
|
+
2. `kickoff-branch` → worktree + feature branch + clean baseline
|
|
111
|
+
3. Build / Verify / Review on feature branch
|
|
112
|
+
4. Integrate: **solo-local** (`scripts/land-branch.sh`) or **team-pr** (`gh pr create` → squash merge)
|
|
113
|
+
5. Cleanup worktree; **end on `main`** in primary repo root
|
|
114
|
+
- **Gate**: Safety ("About to land on main. Confirm?").
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Orchestration Modes
|
|
119
|
+
|
|
120
|
+
### Mode 1: Standard (Enforce All Gates)
|
|
121
|
+
**Use Case**: New features, major refactors, architectural changes.
|
|
122
|
+
**Behavior**:
|
|
123
|
+
- All Confirm gates require explicit user approval.
|
|
124
|
+
- All Quality gates are hard stops if threshold is not met.
|
|
125
|
+
- No shortcuts or phase skipping.
|
|
126
|
+
|
|
127
|
+
### Mode 2: Fast-Track (Skip Negotiable Gates)
|
|
128
|
+
**Use Case**: Hotfixes, minor improvements, refactors on well-tested code.
|
|
129
|
+
**Behavior**:
|
|
130
|
+
- Skip Discover if `requirements/SCOPE_LATEST.yaml` exists.
|
|
131
|
+
- Skip Elaborate if design decisions are already locked.
|
|
132
|
+
- Skip Verify if coverage ≥95% + all tests PASS.
|
|
133
|
+
- Soft gates auto-approve if baseline conditions are met.
|
|
134
|
+
|
|
135
|
+
### Mode 3: Ad-Hoc (Legacy, Warnings Only)
|
|
136
|
+
**Use Case**: Exploration, prototyping, spikes (NOT for production).
|
|
137
|
+
**Behavior**:
|
|
138
|
+
- Gates emit warnings but do not block execution.
|
|
139
|
+
- User can manually skip any phase.
|
|
140
|
+
- No enforced quality thresholds.
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Gate & Checkpoint Types
|
|
145
|
+
*See `docs/references/gates.md` and `docs/references/checkpoints.md` for full specs.*
|
|
146
|
+
|
|
147
|
+
- **Confirm**: Requires human "yes/no" decision.
|
|
148
|
+
- **Quality**: Automated threshold check (e.g., coverage, audit score).
|
|
149
|
+
- **Safety**: Destructive actions require risk acknowledgment.
|
|
150
|
+
- **Transition**: Mandatory artifact presence check.
|
|
151
|
+
- **slopcheck**: Identification of [SUS] (Suspicious) or [SLOP] (High-risk) packages.
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Error Recovery & State
|
|
156
|
+
Orchestrate maintains `specs/state.yaml` to track:
|
|
157
|
+
- **Current flow / epic**: `active_flow`, `active_epic_id`, `epic_cycle`.
|
|
158
|
+
- **Handoff**: `last_step_completed`, `open_decisions`, `required_reading`, `next_skill`.
|
|
159
|
+
- **Git**: `branch`, `hash` for session continuity.
|
|
160
|
+
- **Progress**: Story status lives in `execution-status.yaml` only.
|
|
161
|
+
|
|
162
|
+
In the event of a crash or exit, run `claude /orchestrate --resume` to pick up exactly where the session left off.
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: organize-workspace
|
|
3
|
+
description: "Scans the active workspace for disposable artifacts—logs, caches, stale build output, and stray draft markdown—and proposes consolidation of scattered assets. Produces a reviewable list, asks for explicit confirmation before any delete or move, and optionally revises .gitignore. Use when the user says "clean my room", "organize workspace", "workspace cleanup", "remove temp files", "organize assets", "gitignore", or wants a safe tidy pass."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
# Organize Workspace
|
|
8
|
+
> **HARD GATE** — **HARD GATE** — Workspace structure must reflect domain structure. If the codebase feels disorganized, flag it. Disorganization != 'just a style thing;' it is a signal of domain misalignment.
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## Principles
|
|
12
|
+
|
|
13
|
+
- **Read-only first**: inventory and size (`du`, `ls -la`) before any change.
|
|
14
|
+
- **Never delete or move** without a numbered list and **explicit user approval** (item-level or "approve all").
|
|
15
|
+
- **Prefer `fd` / `ripgrep` / `find`** in that order; avoid blind `rm -rf` on vague globs.
|
|
16
|
+
- **Do not** touch `.git/`, `node_modules/`, `venv/`, `.env*`, or SSH keys; flag them only if the user asked about them.
|
|
17
|
+
- Confirm prompts in the **user's language** if they are not writing in English.
|
|
18
|
+
|
|
19
|
+
## 1. Establish scope
|
|
20
|
+
|
|
21
|
+
- Default: **current project root** (where the user is working) or the path they name.
|
|
22
|
+
- Record OS (macOS vs Linux) for ignore patterns (e.g. `.DS_Store`).
|
|
23
|
+
|
|
24
|
+
## 2. Classify candidates (scan)
|
|
25
|
+
|
|
26
|
+
Group findings under these **buckets**:
|
|
27
|
+
|
|
28
|
+
| Bucket | Examples | Typical action |
|
|
29
|
+
|--------|----------|----------------|
|
|
30
|
+
| **Logs & temp** | `*.log`, `logs/`, `tmp/`, `temp/`, `*.pid` | Delete after confirm |
|
|
31
|
+
| **Build / cache** | `dist/`, `build/`, `.next/`, `coverage/`, `.turbo/` | Delete if rebuildable |
|
|
32
|
+
| **Package caches** | root `.cache/`, `__pycache__/` | Offer delete |
|
|
33
|
+
| **Stray drafts** | root-level `*.md` named `draft`, `scratch`, `temp` | User picks: delete, move to `specs/`, or keep |
|
|
34
|
+
| **Duplicate / dump dirs** | `old/`, `backup/`, `copy/`, `*_backup` | List + ask |
|
|
35
|
+
|
|
36
|
+
Use quick size hints: `du -sh` per top-level dir; sort large items first.
|
|
37
|
+
|
|
38
|
+
## 3. Assets & data (organize, not only delete)
|
|
39
|
+
|
|
40
|
+
If the user wants **organization**:
|
|
41
|
+
|
|
42
|
+
1. Propose a **single convention**, e.g.:
|
|
43
|
+
- `assets/` — images, fonts, static media
|
|
44
|
+
- `data/` — JSON, CSV, fixtures, samples
|
|
45
|
+
- `specs/` — all planning and domain documents
|
|
46
|
+
2. For each cluster of loose files, suggest **one target path** and a short rationale.
|
|
47
|
+
3. Use **git-aware moves** when in a repo: `git mv` if tracked; otherwise `mv` and report.
|
|
48
|
+
4. Never move secrets or production DB dumps into `docs/` or public `assets/`.
|
|
49
|
+
|
|
50
|
+
## 4. Present the plan
|
|
51
|
+
|
|
52
|
+
Output a table or numbered list:
|
|
53
|
+
|
|
54
|
+
- Path
|
|
55
|
+
- Kind (log / build / draft / asset / other)
|
|
56
|
+
- Approx size
|
|
57
|
+
- Proposed action: **delete** | **move to …** | **keep**
|
|
58
|
+
|
|
59
|
+
Ask: *"Delete items 1–3? Move 4–5? Skip 6?"*
|
|
60
|
+
|
|
61
|
+
## 5. Execute after approval
|
|
62
|
+
|
|
63
|
+
- Deletes: on macOS, prefer a Trash-capable tool (e.g. `trash` from Homebrew) if installed; else `rm` with paths echoed back.
|
|
64
|
+
- Moves: create dirs with `mkdir -p` first; one batch at a time.
|
|
65
|
+
- **Verify**: re-run listing on affected parents; if anything failed, report stderr.
|
|
66
|
+
|
|
67
|
+
## 6. Post-cleanup and `.gitignore` revision
|
|
68
|
+
|
|
69
|
+
Do this when the repo is under Git and the cleanup surfaced **untracked** noise:
|
|
70
|
+
|
|
71
|
+
1. **Inventory ignore sources**: root `.gitignore`, `.git/info/exclude`, any subpackage `.gitignore` files.
|
|
72
|
+
2. **Map findings to rules**: for each deleted or recurring artifact class, check whether a pattern already exists; note gaps.
|
|
73
|
+
3. **Propose a patch**: list only **concrete** changes — `+` add / `-` remove / `~` reword — with one-line why.
|
|
74
|
+
4. **User must approve** the exact diff before editing the file.
|
|
75
|
+
5. **Verify**: run `git check-ignore -v <path>` on 2–3 representative paths.
|
|
76
|
+
|
|
77
|
+
See [REFERENCE.md](REFERENCE.md) for shell patterns, `.gitignore` mechanics, and safety checks.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
# clean-my-room — reference patterns
|
|
82
|
+
|
|
83
|
+
Optional commands for the agent. Adapt paths; **dry-run** before bulk delete.
|
|
84
|
+
|
|
85
|
+
## Discover large top-level entries
|
|
86
|
+
|
|
87
|
+
```sh
|
|
88
|
+
du -sh ./* .[!.]* 2>/dev/null | sort -hr | head -30
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Find common logs (respect `.gitignore` when using fd)
|
|
92
|
+
|
|
93
|
+
```sh
|
|
94
|
+
fd -t f '\.log$' . 2>/dev/null
|
|
95
|
+
fd 'npm-debug' . 2>/dev/null
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Find build-like dirs (review list before `rm -rf`)
|
|
99
|
+
|
|
100
|
+
```sh
|
|
101
|
+
fd -t d '^(dist|build|out|target|\.next|coverage)$' . --max-depth 3 2>/dev/null
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Stray markdown at repo root (heuristic)
|
|
105
|
+
|
|
106
|
+
```sh
|
|
107
|
+
ls -1 ./*.md 2>/dev/null
|
|
108
|
+
fd -t f '^(draft|scratch|untitled|TODO|notes)' . --max-depth 1 2>/dev/null
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Git-safe moves
|
|
112
|
+
|
|
113
|
+
```sh
|
|
114
|
+
git status -sb
|
|
115
|
+
git check-ignore -v <path> # was ignored?
|
|
116
|
+
# Tracked: git mv old new
|
|
117
|
+
# Untracked: mkdir -p … && mv old new
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## `.gitignore` revision (after cleanup)
|
|
121
|
+
|
|
122
|
+
**Goal:** stop regenerated junk from polluting `git status`, without hiding real source.
|
|
123
|
+
|
|
124
|
+
1. **Read** root `.gitignore` and, in monorepos, `apps/*/.gitignore` / `packages/*/.gitignore` as needed. Check **`.git/info/exclude`** for machine-only rules that should *not* be committed (keep personal noise there; don’t copy into shared `.gitignore` unless the team agrees).
|
|
125
|
+
2. **Per-path checks** (last match wins; shows which file defined the rule):
|
|
126
|
+
|
|
127
|
+
```sh
|
|
128
|
+
git check-ignore -v path/to/artifact
|
|
129
|
+
git status -u --ignored # optional: see ignored names (noisy)
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
3. **Pattern style**
|
|
133
|
+
- Leading `/` = relative to the `.gitignore`’s directory (e.g. `/dist/` = only that folder at that level, not all nested `dist` unless intended).
|
|
134
|
+
- `**` for deep trees, e.g. `**/*.log`, when noise appears at many depths.
|
|
135
|
+
- **Negation** (`!`) is tricky: later rules, parent dirs, and `git add -f` interact—prefer narrow positive ignores over `!` unless you already use negation in that file.
|
|
136
|
+
4. **Do not** add rules that would ignore: application source, small JSON/YAML config the repo tracks, or `!important` assets. When unsure, run `git check-ignore -v` on a *known good* file that must stay tracked.
|
|
137
|
+
5. **Tracked but should be ignored** (user already committed `build/` once): this skill does not silently fix history; flag `git rm -r --cached <path>` + `.gitignore` as a **separate** explicit step the user must approve.
|
|
138
|
+
6. **Global excludes** (optional heads-up for “why is this still ignored?”):
|
|
139
|
+
|
|
140
|
+
```sh
|
|
141
|
+
git config --get core.excludesfile
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Safety: never pass through these in automated deletes
|
|
145
|
+
|
|
146
|
+
- `.git/`, `.svn/`, `.hg/`
|
|
147
|
+
- `node_modules/`, `vendor/`, `venv/`, `.venv/`, `__pypackages__/`
|
|
148
|
+
- Files matching `.env`, `.env.*` (except `.env.example` if intentional)
|
|
149
|
+
- `~/.ssh`, `id_rsa*`, `*.pem` inside project trees
|
|
150
|
+
|
|
151
|
+
## Post-deploy / server-ish extras (name buckets to stack)
|
|
152
|
+
|
|
153
|
+
- Docker: dangling images/volumes (only if user asked for Docker cleanup; requires `docker` context).
|
|
154
|
+
- CI: `*.log` under `build/`, artifact dirs from previous runs.
|
|
155
|
+
- K8s: local `*.kube`, tmp kubeconfigs—list only; do not delete without confirmation.
|
|
156
|
+
|
|
157
|
+
## Inspiration
|
|
158
|
+
|
|
159
|
+
- Same **inventory → plan → confirm → act** flow as [post-deploy environment cleanup](https://mcpmarket.com/tools/skills/post-deploy-environment-cleanup) style workflows.
|
|
160
|
+
- [Agent template public](https://github.com/matsuni-kk/agent_template_public): honor **Flow** (draft) vs **Stock** (stable); do not “clean” user drafts from Flow without explicit approval.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan-refactor
|
|
3
|
+
description: "Create a detailed refactor plan with tiny commits via user interview, then save it as specs/REFACTOR.md. Use when user wants to plan a refactor, create a refactoring RFC, or break a refactor into safe incremental steps."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
# Plan Refactor
|
|
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
|
+
|
|
10
|
+
|
|
11
|
+
Create a detailed refactor plan through a user interview. Save output to `specs/REFACTOR.md`.
|
|
12
|
+
|
|
13
|
+
## Steps
|
|
14
|
+
|
|
15
|
+
1. Ask the user for a long, detailed description of the problem they want to solve and any potential ideas for solutions.
|
|
16
|
+
|
|
17
|
+
2. Explore the repo to verify their assertions and understand the current state of the codebase.
|
|
18
|
+
|
|
19
|
+
3. Ask whether they have considered other options, and present other options to them.
|
|
20
|
+
|
|
21
|
+
4. Interview the user about the implementation. Be extremely detailed and thorough.
|
|
22
|
+
|
|
23
|
+
5. Hammer out the exact scope of the implementation. Work out what you plan to change and what you plan not to change.
|
|
24
|
+
|
|
25
|
+
6. Look in the codebase to check for test coverage of this area. If there is insufficient test coverage, ask the user what their plans for testing are.
|
|
26
|
+
|
|
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
|
+
|
|
29
|
+
8. Save the refactor plan to `specs/REFACTOR.md`. Create the `specs/` directory if it doesn't exist.
|
|
30
|
+
|
|
31
|
+
<refactor-plan-template>
|
|
32
|
+
|
|
33
|
+
## Problem Statement
|
|
34
|
+
|
|
35
|
+
The problem that the developer is facing, from the developer's perspective.
|
|
36
|
+
|
|
37
|
+
## Solution
|
|
38
|
+
|
|
39
|
+
The solution to the problem, from the developer's perspective.
|
|
40
|
+
|
|
41
|
+
## Commits
|
|
42
|
+
|
|
43
|
+
A LONG, detailed implementation plan. Write the plan in plain English, breaking down the implementation into the tiniest commits possible. Each commit should leave the codebase in a working state.
|
|
44
|
+
|
|
45
|
+
Each commit entry follows this format:
|
|
46
|
+
```
|
|
47
|
+
N. <commit description> → verify: <runnable command>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Decision Document
|
|
51
|
+
|
|
52
|
+
A list of implementation decisions that were made:
|
|
53
|
+
|
|
54
|
+
- The modules that will be built/modified
|
|
55
|
+
- The interfaces of those modules that will be modified
|
|
56
|
+
- Technical clarifications from the developer
|
|
57
|
+
- Architectural decisions
|
|
58
|
+
- Schema changes, API contracts, specific interactions
|
|
59
|
+
|
|
60
|
+
Do NOT include specific file paths or code snippets. They may end up being outdated very quickly.
|
|
61
|
+
|
|
62
|
+
## Testing Decisions
|
|
63
|
+
|
|
64
|
+
- A description of what makes a good test (only test external behavior, not implementation details)
|
|
65
|
+
- Which modules will be tested
|
|
66
|
+
- Prior art for the tests (i.e. similar types of tests in the codebase)
|
|
67
|
+
|
|
68
|
+
## Out of Scope
|
|
69
|
+
|
|
70
|
+
A description of the things that are out of scope for this refactor.
|
|
71
|
+
|
|
72
|
+
## Further Notes (optional)
|
|
73
|
+
|
|
74
|
+
Any further notes about the refactor.
|
|
75
|
+
|
|
76
|
+
</refactor-plan-template>
|
|
77
|
+
|
|
78
|
+
After writing `specs/REFACTOR.md`, suggest running `kickoff-branch` next to create a refactor branch.
|