specsmd 0.0.0-dev.4 → 0.0.0-dev.41
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/README.md +10 -2
- package/flows/aidlc/commands/construction-agent.md +5 -1
- package/flows/aidlc/commands/inception-agent.md +4 -0
- package/flows/aidlc/commands/master-agent.md +4 -0
- package/flows/aidlc/commands/operations-agent.md +4 -0
- package/flows/aidlc/memory-bank.yaml +2 -1
- package/{scripts → flows/aidlc/scripts}/artifact-validator.js +3 -3
- package/{scripts → flows/aidlc/scripts}/bolt-complete.js +35 -4
- package/{scripts → flows/aidlc/scripts}/status-integrity.js +4 -4
- package/flows/aidlc/skills/construction/bolt-list.md +1 -1
- package/flows/aidlc/skills/construction/bolt-start.md +2 -2
- package/flows/aidlc/skills/construction/bolt-status.md +1 -1
- package/flows/aidlc/skills/construction/prototype-apply.md +305 -0
- package/flows/aidlc/skills/inception/bolt-plan.md +15 -2
- package/flows/aidlc/skills/inception/vibe-to-spec.md +406 -0
- package/flows/aidlc/skills/master/analyze-context.md +1 -1
- package/flows/aidlc/templates/construction/bolt-template.md +22 -1
- package/flows/aidlc/templates/construction/bolt-types/ddd-construction-bolt.md +73 -11
- package/flows/aidlc/templates/construction/bolt-types/simple-construction-bolt.md +5 -0
- package/flows/aidlc/templates/standards/decision-index-template.md +32 -0
- package/flows/simple/README.md +190 -0
- package/flows/simple/agents/agent.md +404 -0
- package/flows/simple/commands/agent.md +60 -0
- package/flows/simple/context-config.yaml +34 -0
- package/flows/simple/memory-bank.yaml +66 -0
- package/flows/simple/quick-start.md +231 -0
- package/flows/simple/skills/design.md +96 -0
- package/flows/simple/skills/execute.md +190 -0
- package/flows/simple/skills/requirements.md +94 -0
- package/flows/simple/skills/tasks.md +136 -0
- package/flows/simple/templates/design-template.md +138 -0
- package/flows/simple/templates/requirements-template.md +85 -0
- package/flows/simple/templates/tasks-template.md +104 -0
- package/lib/analytics/tracker.js +6 -2
- package/lib/constants.js +4 -6
- package/lib/installer.js +3 -14
- package/lib/installers/KiroInstaller.js +55 -0
- package/lib/installers/OpenCodeInstaller.js +9 -1
- package/lib/installers/ToolInstaller.js +4 -1
- package/lib/installers/WindsurfInstaller.js +0 -54
- package/package.json +2 -2
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
# Skill: Vibe to Spec
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
## Progress Display
|
|
6
|
+
|
|
7
|
+
Show at start of this skill:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
### Inception Progress
|
|
11
|
+
- [ ] Prototype analyzed ← current
|
|
12
|
+
- [ ] Design system extracted
|
|
13
|
+
- [ ] Components cataloged
|
|
14
|
+
- [ ] Requirements derived
|
|
15
|
+
- [ ] Ready for standard inception flow
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Checkpoints in This Skill
|
|
21
|
+
|
|
22
|
+
| Checkpoint | Purpose | Wait For |
|
|
23
|
+
|------------|---------|----------|
|
|
24
|
+
| Checkpoint 1 | Prototype inventory review | User confirmation |
|
|
25
|
+
| Checkpoint 2 | Design system approval | User approval |
|
|
26
|
+
| Checkpoint 3 | Derived requirements review | User approval |
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Goal
|
|
31
|
+
|
|
32
|
+
Convert a vibe-coded prototype (screenshots, HTML exports, or design mockups) into formal specsmd artifacts that feed into the standard inception workflow.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Input
|
|
37
|
+
|
|
38
|
+
- **Required**: Path to prototype folder (e.g., `proto/`, `mockups/`, `discovery/`)
|
|
39
|
+
- **Required**: `.specsmd/aidlc/memory-bank.yaml` - artifact schema
|
|
40
|
+
- **Optional**: Intent name to associate with (creates new if not provided)
|
|
41
|
+
- **Optional**: Existing design system to extend
|
|
42
|
+
|
|
43
|
+
**Supported Prototype Formats**:
|
|
44
|
+
- PNG/JPG screenshots
|
|
45
|
+
- HTML exports (with associated CSS/JS in `_files` folders)
|
|
46
|
+
- Figma exports
|
|
47
|
+
- PDF mockups
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Process
|
|
52
|
+
|
|
53
|
+
### Step 1: Inventory Prototype Assets
|
|
54
|
+
|
|
55
|
+
Scan the prototype folder and catalog all assets:
|
|
56
|
+
|
|
57
|
+
```text
|
|
58
|
+
## Prototype Inventory
|
|
59
|
+
|
|
60
|
+
Scanning: {prototype-path}
|
|
61
|
+
|
|
62
|
+
### Screenshots Found
|
|
63
|
+
- {filename}.png - {brief description based on visual analysis}
|
|
64
|
+
- ...
|
|
65
|
+
|
|
66
|
+
### HTML Exports Found
|
|
67
|
+
- {filename}.html - {title or main heading}
|
|
68
|
+
- ...
|
|
69
|
+
|
|
70
|
+
### Asset Folders
|
|
71
|
+
- {filename}_files/ - CSS, JS, images
|
|
72
|
+
- ...
|
|
73
|
+
|
|
74
|
+
Total: {n} screens identified
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Checkpoint 1**: Present inventory for user confirmation.
|
|
78
|
+
|
|
79
|
+
```text
|
|
80
|
+
I found {n} screens in your prototype. Here's what I see:
|
|
81
|
+
|
|
82
|
+
1. {screen-1-description}
|
|
83
|
+
2. {screen-2-description}
|
|
84
|
+
...
|
|
85
|
+
|
|
86
|
+
Is this complete? Are there screens I'm missing or misinterpreting?
|
|
87
|
+
1 - Yes, continue analysis
|
|
88
|
+
2 - Let me clarify (provide corrections)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Wait for user response.**
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
### Step 2: Analyze Each Screen
|
|
96
|
+
|
|
97
|
+
For each screen, extract:
|
|
98
|
+
|
|
99
|
+
**Visual Analysis** (use image analysis capabilities):
|
|
100
|
+
- Layout structure (sidebar, main content, header, footer)
|
|
101
|
+
- Color palette (primary, secondary, accent, background)
|
|
102
|
+
- Typography (headings, body text, labels)
|
|
103
|
+
- Component patterns (buttons, inputs, cards, lists)
|
|
104
|
+
- Interactive elements (forms, menus, modals)
|
|
105
|
+
|
|
106
|
+
**HTML Analysis** (if available):
|
|
107
|
+
- Component structure from markup
|
|
108
|
+
- CSS classes and styling patterns
|
|
109
|
+
- JavaScript interactions
|
|
110
|
+
|
|
111
|
+
**Output per screen**:
|
|
112
|
+
```markdown
|
|
113
|
+
### Screen: {screen-name}
|
|
114
|
+
**Source**: {filename}
|
|
115
|
+
**Purpose**: {inferred purpose}
|
|
116
|
+
|
|
117
|
+
#### Layout
|
|
118
|
+
- Structure: {e.g., sidebar-main, header-content-footer}
|
|
119
|
+
- Responsive hints: {any visible breakpoint patterns}
|
|
120
|
+
|
|
121
|
+
#### Components Identified
|
|
122
|
+
- [ ] {component-1}: {description}
|
|
123
|
+
- [ ] {component-2}: {description}
|
|
124
|
+
|
|
125
|
+
#### Interactions
|
|
126
|
+
- {interaction-1}: {trigger} → {result}
|
|
127
|
+
|
|
128
|
+
#### Design Tokens
|
|
129
|
+
- Primary color: {hex}
|
|
130
|
+
- Text color: {hex}
|
|
131
|
+
- Background: {hex}
|
|
132
|
+
- Border radius: {px}
|
|
133
|
+
- Spacing unit: {px}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
### Step 3: Synthesize Design System
|
|
139
|
+
|
|
140
|
+
Combine analysis from all screens into a unified design system:
|
|
141
|
+
|
|
142
|
+
```markdown
|
|
143
|
+
## Design System: {prototype-name}
|
|
144
|
+
|
|
145
|
+
### Color Palette
|
|
146
|
+
| Token | Value | Usage |
|
|
147
|
+
|-------|-------|-------|
|
|
148
|
+
| primary | {hex} | Buttons, links, accents |
|
|
149
|
+
| secondary | {hex} | Secondary actions |
|
|
150
|
+
| background | {hex} | Page background |
|
|
151
|
+
| surface | {hex} | Card backgrounds |
|
|
152
|
+
| text-primary | {hex} | Main text |
|
|
153
|
+
| text-secondary | {hex} | Muted text |
|
|
154
|
+
| border | {hex} | Borders, dividers |
|
|
155
|
+
| success | {hex} | Success states |
|
|
156
|
+
| error | {hex} | Error states |
|
|
157
|
+
|
|
158
|
+
### Typography
|
|
159
|
+
| Element | Font | Size | Weight |
|
|
160
|
+
|---------|------|------|--------|
|
|
161
|
+
| h1 | {font} | {size} | {weight} |
|
|
162
|
+
| h2 | {font} | {size} | {weight} |
|
|
163
|
+
| body | {font} | {size} | {weight} |
|
|
164
|
+
| label | {font} | {size} | {weight} |
|
|
165
|
+
| caption | {font} | {size} | {weight} |
|
|
166
|
+
|
|
167
|
+
### Spacing Scale
|
|
168
|
+
- xs: {px}
|
|
169
|
+
- sm: {px}
|
|
170
|
+
- md: {px}
|
|
171
|
+
- lg: {px}
|
|
172
|
+
- xl: {px}
|
|
173
|
+
|
|
174
|
+
### Border Radius
|
|
175
|
+
- sm: {px}
|
|
176
|
+
- md: {px}
|
|
177
|
+
- lg: {px}
|
|
178
|
+
- full: 9999px
|
|
179
|
+
|
|
180
|
+
### Shadows
|
|
181
|
+
- sm: {shadow}
|
|
182
|
+
- md: {shadow}
|
|
183
|
+
- lg: {shadow}
|
|
184
|
+
|
|
185
|
+
### Component Patterns
|
|
186
|
+
{list of reusable patterns identified}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**Checkpoint 2**: Present design system for approval.
|
|
190
|
+
|
|
191
|
+
```text
|
|
192
|
+
### Design System Review
|
|
193
|
+
|
|
194
|
+
I've extracted the following design system from your prototype:
|
|
195
|
+
|
|
196
|
+
{full design system}
|
|
197
|
+
|
|
198
|
+
Does this accurately capture your prototype's visual language?
|
|
199
|
+
1 - Yes, continue to derive requirements
|
|
200
|
+
2 - Need adjustments (specify what's wrong)
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**Wait for user response.**
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
### Step 4: Catalog Components
|
|
208
|
+
|
|
209
|
+
Create a component catalog from the prototype:
|
|
210
|
+
|
|
211
|
+
```markdown
|
|
212
|
+
## Component Catalog: {prototype-name}
|
|
213
|
+
|
|
214
|
+
### Navigation Components
|
|
215
|
+
- **Sidebar**: {description, screens where found}
|
|
216
|
+
- **Header**: {description}
|
|
217
|
+
- **Breadcrumb**: {description}
|
|
218
|
+
|
|
219
|
+
### Form Components
|
|
220
|
+
- **Text Input**: {variants, validation states}
|
|
221
|
+
- **Button**: {variants: primary, secondary, ghost}
|
|
222
|
+
- **Select/Dropdown**: {description}
|
|
223
|
+
- **Checkbox/Radio**: {description}
|
|
224
|
+
|
|
225
|
+
### Display Components
|
|
226
|
+
- **Card**: {variants}
|
|
227
|
+
- **List**: {variants}
|
|
228
|
+
- **Table**: {if present}
|
|
229
|
+
- **Modal/Dialog**: {if present}
|
|
230
|
+
|
|
231
|
+
### Feedback Components
|
|
232
|
+
- **Toast/Notification**: {if present}
|
|
233
|
+
- **Loading States**: {spinners, skeletons}
|
|
234
|
+
- **Empty States**: {if present}
|
|
235
|
+
- **Error States**: {if present}
|
|
236
|
+
|
|
237
|
+
### Layout Components
|
|
238
|
+
- **Container**: {max-width, padding}
|
|
239
|
+
- **Grid**: {columns, gaps}
|
|
240
|
+
- **Stack**: {spacing patterns}
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
### Step 5: Map User Flows
|
|
246
|
+
|
|
247
|
+
Identify user flows from screen sequences:
|
|
248
|
+
|
|
249
|
+
```markdown
|
|
250
|
+
## User Flows
|
|
251
|
+
|
|
252
|
+
### Flow 1: {flow-name}
|
|
253
|
+
**Screens**: {screen-1} → {screen-2} → {screen-3}
|
|
254
|
+
**Goal**: {what user accomplishes}
|
|
255
|
+
**Steps**:
|
|
256
|
+
1. User sees {screen-1}, {action}
|
|
257
|
+
2. System shows {screen-2}
|
|
258
|
+
3. User {action}
|
|
259
|
+
4. System {result}
|
|
260
|
+
|
|
261
|
+
### Flow 2: {flow-name}
|
|
262
|
+
...
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
### Step 6: Derive Requirements
|
|
268
|
+
|
|
269
|
+
Transform visual analysis into formal requirements:
|
|
270
|
+
|
|
271
|
+
```markdown
|
|
272
|
+
## Derived Requirements
|
|
273
|
+
|
|
274
|
+
### Functional Requirements (from prototype)
|
|
275
|
+
|
|
276
|
+
#### FR-P1: {Component/Feature Name}
|
|
277
|
+
- **Source**: {screenshot reference}
|
|
278
|
+
- **Description**: {what it does based on visual}
|
|
279
|
+
- **Acceptance Criteria**:
|
|
280
|
+
- [ ] {visual criterion 1}
|
|
281
|
+
- [ ] {visual criterion 2}
|
|
282
|
+
- **Components**: {list of components needed}
|
|
283
|
+
- **Priority**: {inferred from prominence}
|
|
284
|
+
|
|
285
|
+
#### FR-P2: {Component/Feature Name}
|
|
286
|
+
...
|
|
287
|
+
|
|
288
|
+
### Non-Functional Requirements (inferred)
|
|
289
|
+
|
|
290
|
+
#### NFR-P1: Visual Consistency
|
|
291
|
+
- Design system must be applied consistently
|
|
292
|
+
- All components follow extracted patterns
|
|
293
|
+
|
|
294
|
+
#### NFR-P2: Responsive Design
|
|
295
|
+
- {any responsive hints from prototype}
|
|
296
|
+
|
|
297
|
+
### Open Questions
|
|
298
|
+
- {things that aren't clear from prototype}
|
|
299
|
+
- {interactions that need clarification}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
**Checkpoint 3**: Present derived requirements.
|
|
303
|
+
|
|
304
|
+
```text
|
|
305
|
+
### Derived Requirements Review
|
|
306
|
+
|
|
307
|
+
Based on your prototype, I've derived these requirements:
|
|
308
|
+
|
|
309
|
+
{full requirements list}
|
|
310
|
+
|
|
311
|
+
### Open Questions
|
|
312
|
+
{list of clarifications needed}
|
|
313
|
+
|
|
314
|
+
How should we proceed?
|
|
315
|
+
1 - Requirements look good, create intent and continue inception
|
|
316
|
+
2 - Need to adjust requirements
|
|
317
|
+
3 - Answer open questions first
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
**Wait for user response.**
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
## Output
|
|
325
|
+
|
|
326
|
+
### Artifacts Created
|
|
327
|
+
|
|
328
|
+
Save to `memory-bank/prototypes/{prototype-name}/`:
|
|
329
|
+
|
|
330
|
+
1. **screen-inventory.md** - Catalog of all screens
|
|
331
|
+
2. **design-system.md** - Extracted design tokens and patterns
|
|
332
|
+
3. **component-catalog.md** - Component inventory
|
|
333
|
+
4. **user-flows.md** - Identified user flows
|
|
334
|
+
5. **derived-requirements.md** - Requirements ready for inception
|
|
335
|
+
|
|
336
|
+
### Summary Output
|
|
337
|
+
|
|
338
|
+
```markdown
|
|
339
|
+
## Vibe-to-Spec Complete: {prototype-name}
|
|
340
|
+
|
|
341
|
+
### Prototype Analysis
|
|
342
|
+
- **Screens analyzed**: {n}
|
|
343
|
+
- **Components identified**: {n}
|
|
344
|
+
- **User flows mapped**: {n}
|
|
345
|
+
- **Requirements derived**: {n}
|
|
346
|
+
|
|
347
|
+
### Artifacts Created
|
|
348
|
+
- `memory-bank/prototypes/{name}/screen-inventory.md`
|
|
349
|
+
- `memory-bank/prototypes/{name}/design-system.md`
|
|
350
|
+
- `memory-bank/prototypes/{name}/component-catalog.md`
|
|
351
|
+
- `memory-bank/prototypes/{name}/user-flows.md`
|
|
352
|
+
- `memory-bank/prototypes/{name}/derived-requirements.md`
|
|
353
|
+
|
|
354
|
+
### Next Steps
|
|
355
|
+
|
|
356
|
+
1 - **intent-create**: Create intent using derived requirements
|
|
357
|
+
2 - **requirements**: Refine requirements with standard flow
|
|
358
|
+
3 - **review**: Review all prototype artifacts
|
|
359
|
+
|
|
360
|
+
### Suggested Next Step
|
|
361
|
+
→ **intent-create** - Create intent "{suggested-name}" from prototype
|
|
362
|
+
|
|
363
|
+
**Type a number or press Enter for suggested action.**
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
## Integration with Inception Flow
|
|
369
|
+
|
|
370
|
+
After vibe-to-spec completes:
|
|
371
|
+
|
|
372
|
+
1. **intent-create** can reference `derived-requirements.md`
|
|
373
|
+
2. **requirements** skill can import and refine FR-P* items
|
|
374
|
+
3. **context** skill can use component catalog for system boundaries
|
|
375
|
+
4. **units** skill can organize by identified flows
|
|
376
|
+
5. **stories** skill can generate from user flow mapping
|
|
377
|
+
|
|
378
|
+
---
|
|
379
|
+
|
|
380
|
+
## Construction Phase Reference
|
|
381
|
+
|
|
382
|
+
When Construction Agent starts a bolt that references this prototype:
|
|
383
|
+
|
|
384
|
+
1. Load `design-system.md` for styling decisions
|
|
385
|
+
2. Reference `component-catalog.md` for component specs
|
|
386
|
+
3. Use screenshots as visual acceptance criteria
|
|
387
|
+
4. Apply extracted design tokens to implementation
|
|
388
|
+
5. **Use frontend-design skill if available** - When implementing UI components, invoke the `/frontend-design` skill for high-quality, production-grade frontend code that avoids generic AI aesthetics
|
|
389
|
+
|
|
390
|
+
---
|
|
391
|
+
|
|
392
|
+
## Test Contract
|
|
393
|
+
|
|
394
|
+
```yaml
|
|
395
|
+
input: Prototype folder with screenshots/HTML
|
|
396
|
+
output:
|
|
397
|
+
- screen-inventory.md
|
|
398
|
+
- design-system.md
|
|
399
|
+
- component-catalog.md
|
|
400
|
+
- user-flows.md
|
|
401
|
+
- derived-requirements.md
|
|
402
|
+
checkpoints: 3
|
|
403
|
+
- Checkpoint 1: Prototype inventory confirmed
|
|
404
|
+
- Checkpoint 2: Design system approved
|
|
405
|
+
- Checkpoint 3: Derived requirements approved
|
|
406
|
+
```
|
|
@@ -53,7 +53,7 @@ For recent/active intents:
|
|
|
53
53
|
Check `schema.bolts` directory:
|
|
54
54
|
|
|
55
55
|
- Are there bolt instance files?
|
|
56
|
-
- What is their status? (planned, in-progress,
|
|
56
|
+
- What is their status? (planned, in-progress, complete)
|
|
57
57
|
- What stage are in-progress bolts at?
|
|
58
58
|
|
|
59
59
|
### 5. Determine Phase
|
|
@@ -57,6 +57,27 @@ complexity:
|
|
|
57
57
|
|
|
58
58
|
---
|
|
59
59
|
|
|
60
|
+
## Required Frontmatter Fields (VALIDATION CHECKLIST)
|
|
61
|
+
|
|
62
|
+
Before creating a bolt, verify ALL required fields are present:
|
|
63
|
+
|
|
64
|
+
| Field | Required | Description |
|
|
65
|
+
|-------|----------|-------------|
|
|
66
|
+
| `id` | **YES** | Bolt identifier (format: `{BBB}-{unit-name}`) |
|
|
67
|
+
| `unit` | **YES** | Parent unit ID |
|
|
68
|
+
| `intent` | **YES** | Parent intent ID |
|
|
69
|
+
| `type` | **YES** | Bolt type (`ddd-construction-bolt` or `simple-construction-bolt`) |
|
|
70
|
+
| `status` | **YES** | Current status (`planned`, `in-progress`, `complete`, `blocked`) |
|
|
71
|
+
| `stories` | **YES** | Array of story IDs included in this bolt |
|
|
72
|
+
| `created` | **YES** | Creation timestamp |
|
|
73
|
+
| `requires_bolts` | **YES** | Array of bolt IDs this depends on (can be empty `[]`) |
|
|
74
|
+
| `enables_bolts` | **YES** | Array of bolt IDs waiting on this (can be empty `[]`) |
|
|
75
|
+
| `complexity` | **YES** | Complexity assessment block |
|
|
76
|
+
|
|
77
|
+
**If any required field is missing, the bolt is INVALID.**
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
60
81
|
## Content
|
|
61
82
|
|
|
62
83
|
```markdown
|
|
@@ -113,7 +134,7 @@ complexity:
|
|
|
113
134
|
|
|
114
135
|
- **planned**: Bolt created, not started
|
|
115
136
|
- **in-progress**: Currently being executed
|
|
116
|
-
- **
|
|
137
|
+
- **complete**: All stages done
|
|
117
138
|
- **blocked**: Cannot proceed due to dependency
|
|
118
139
|
|
|
119
140
|
---
|
|
@@ -272,6 +272,7 @@ Suggest an ADR when you identify:
|
|
|
272
272
|
3 - **Identify ADR-worthy decisions**: Create decision list
|
|
273
273
|
4 - **Present opportunities to user**: Get user selection
|
|
274
274
|
5 - **Create ADR documents**: Generate selected ADRs
|
|
275
|
+
6 - **Update decision index**: Add entries to `memory-bank/standards/decision-index.md`
|
|
275
276
|
|
|
276
277
|
**Artifact**: `adr-{number}-{slug}.md` (zero or more)
|
|
277
278
|
**Template**: `.specsmd/aidlc/templates/construction/bolt-types/ddd-construction-bolt/adr-template.md`
|
|
@@ -282,7 +283,8 @@ Suggest an ADR when you identify:
|
|
|
282
283
|
1. Review stories, domain model, and technical design
|
|
283
284
|
2. Compare against loaded project standards
|
|
284
285
|
3. If decision-worthy patterns detected, present opportunities to user
|
|
285
|
-
4. Handle user response
|
|
286
|
+
4. Handle user response (create selected ADRs or skip)
|
|
287
|
+
5. Update decision index (if ADRs created) and proceed to checkpoint
|
|
286
288
|
|
|
287
289
|
**Step 3 Output Format**:
|
|
288
290
|
|
|
@@ -299,10 +301,36 @@ Would you like to create ADRs for any of these? (Enter numbers, "all", or "skip"
|
|
|
299
301
|
|
|
300
302
|
**Step 4 Decision Handling**:
|
|
301
303
|
|
|
302
|
-
- **User selects numbers or "all"** → Generate ADRs using template, then
|
|
304
|
+
- **User selects numbers or "all"** → Generate ADRs using template, then update decision index
|
|
303
305
|
- **User selects "skip"** → Proceed to checkpoint with "No ADRs created"
|
|
304
306
|
- **No ADR opportunities identified** → Auto-proceed to checkpoint with "No ADR-worthy decisions found"
|
|
305
307
|
|
|
308
|
+
**Step 5 Decision Index Update**:
|
|
309
|
+
|
|
310
|
+
For each ADR created, add an entry to `memory-bank/standards/decision-index.md`:
|
|
311
|
+
|
|
312
|
+
1. If `decision-index.md` doesn't exist, create it from template: `.specsmd/aidlc/templates/standards/decision-index-template.md`
|
|
313
|
+
2. Add entry for each ADR in the following format:
|
|
314
|
+
|
|
315
|
+
```markdown
|
|
316
|
+
### ADR-{n}: {title}
|
|
317
|
+
- **Status**: {status from ADR frontmatter}
|
|
318
|
+
- **Date**: {YYYY-MM-DD from ADR created timestamp}
|
|
319
|
+
- **Bolt**: {bolt-id} ({unit-name})
|
|
320
|
+
- **Path**: `bolts/{bolt-id}/adr-{n}-{slug}.md`
|
|
321
|
+
- **Summary**: {First sentence from Context section}. {First sentence from Decision section}.
|
|
322
|
+
- **Read when**: {Generate guidance based on the ADR's domain - describe scenarios when agents should read this ADR}
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
Update frontmatter: increment `total_decisions`, update `last_updated` timestamp
|
|
326
|
+
|
|
327
|
+
**"Read when" Guidance Examples**:
|
|
328
|
+
|
|
329
|
+
- "Working on authentication flows or session management"
|
|
330
|
+
- "Implementing caching strategies or data persistence patterns"
|
|
331
|
+
- "Designing API contracts or integration points"
|
|
332
|
+
- "Handling error cases or implementing retry logic"
|
|
333
|
+
|
|
306
334
|
**Example ADR**:
|
|
307
335
|
|
|
308
336
|
```markdown
|
|
@@ -330,6 +358,7 @@ Implement CQRS pattern with separate read models for task queries.
|
|
|
330
358
|
- [ ] Project standards compared
|
|
331
359
|
- [ ] User presented with ADR opportunities (if any)
|
|
332
360
|
- [ ] Selected ADRs created (or explicitly skipped)
|
|
361
|
+
- [ ] Decision index updated (if ADRs were created)
|
|
333
362
|
|
|
334
363
|
**Important**: Do not force ADRs. Only suggest when there's genuine value. Simple bolts with straightforward decisions don't need ADRs.
|
|
335
364
|
|
|
@@ -495,6 +524,37 @@ status: in-progress
|
|
|
495
524
|
|
|
496
525
|
## Bolt Context Loading
|
|
497
526
|
|
|
527
|
+
### Prior Decision Lookup (All Stages)
|
|
528
|
+
|
|
529
|
+
**Before starting any stage**, scan the decision index for relevant prior ADRs:
|
|
530
|
+
|
|
531
|
+
1. Read `memory-bank/standards/decision-index.md` (if it exists)
|
|
532
|
+
2. Match the current bolt's domain/scope against "Read when" fields
|
|
533
|
+
3. Load full ADRs for any matching entries
|
|
534
|
+
4. Consider these decisions as constraints or guidance for the current work
|
|
535
|
+
|
|
536
|
+
**Example**: If working on a bolt for "user-service" and the decision index contains:
|
|
537
|
+
|
|
538
|
+
```text
|
|
539
|
+
### ADR-001: Use JWT for Authentication
|
|
540
|
+
- **Read when**: Working on authentication flows or user services
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
→ Load and consider `ADR-001` before starting design work.
|
|
544
|
+
|
|
545
|
+
**Present relevant ADRs to user** at bolt start:
|
|
546
|
+
|
|
547
|
+
```text
|
|
548
|
+
## Relevant Prior Decisions
|
|
549
|
+
|
|
550
|
+
Found {n} ADR(s) that may apply to this bolt:
|
|
551
|
+
- ADR-001: Use JWT for Authentication → [View](bolts/001-auth-service/adr-001-jwt-auth.md)
|
|
552
|
+
|
|
553
|
+
These decisions may constrain or guide your approach. Proceed? (y/n)
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
### Bolt Folder Artifacts (Stages 4-5)
|
|
557
|
+
|
|
498
558
|
For stages that build on previous work (Stage 4: Implement, Stage 5: Test), load all artifacts from the bolt folder:
|
|
499
559
|
|
|
500
560
|
**Location**: `memory-bank/bolts/{bolt-id}/`
|
|
@@ -515,14 +575,16 @@ This ensures the implementation and test stages have full context from earlier d
|
|
|
515
575
|
1. **Load bolt instance** from path defined by `schema.bolts`
|
|
516
576
|
2. **Read `bolt_type` field** (e.g., `ddd-construction-bolt`)
|
|
517
577
|
3. **Load this definition** from `.specsmd/aidlc/templates/construction/bolt-types/`
|
|
518
|
-
4. **
|
|
519
|
-
5. **
|
|
520
|
-
6. **
|
|
521
|
-
7. **
|
|
522
|
-
8.
|
|
523
|
-
9. **
|
|
524
|
-
10.
|
|
525
|
-
|
|
526
|
-
|
|
578
|
+
4. **Scan decision index** for relevant prior ADRs (see Prior Decision Lookup)
|
|
579
|
+
5. **Present relevant ADRs** to user if any found, get confirmation to proceed
|
|
580
|
+
6. **Check `current_stage`** in bolt instance
|
|
581
|
+
7. **Load bolt folder artifacts** if stage requires previous context (see Bolt Folder Artifacts)
|
|
582
|
+
8. **Execute stage** following activities defined here
|
|
583
|
+
9. **Create artifacts** using templates
|
|
584
|
+
10. **⛔ STOP and present completion summary** - DO NOT continue automatically
|
|
585
|
+
11. **Wait for user confirmation** - user must explicitly approve (e.g., "continue", "proceed", "next")
|
|
586
|
+
12. **Only after approval**: Update bolt state and advance to next stage
|
|
587
|
+
|
|
588
|
+
**⛔ CRITICAL**: Steps 10-11 are MANDATORY. Never skip the human checkpoint. Never auto-advance.
|
|
527
589
|
|
|
528
590
|
The Construction Agent is **bolt-type agnostic** - it reads stages from this file and executes them.
|
|
@@ -270,6 +270,11 @@ created: {YYYY-MM-DDTHH:MM:SSZ}
|
|
|
270
270
|
- **Tests**: {passed}/{total} passed
|
|
271
271
|
- **Coverage**: {percentage}%
|
|
272
272
|
|
|
273
|
+
### Test Files
|
|
274
|
+
|
|
275
|
+
- [x] `{path/to/test-file.test.ts}` - {what this test file covers}
|
|
276
|
+
- [x] `{path/to/another.test.ts}` - {what this test file covers}
|
|
277
|
+
|
|
273
278
|
### Acceptance Criteria Validation
|
|
274
279
|
|
|
275
280
|
- ✅/❌ **{Criterion}**: {Status}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
last_updated: {YYYY-MM-DDTHH:MM:SSZ}
|
|
3
|
+
total_decisions: 0
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Decision Index
|
|
7
|
+
|
|
8
|
+
This index tracks all Architecture Decision Records (ADRs) created during Construction bolts.
|
|
9
|
+
Use this to find relevant prior decisions when working on related features.
|
|
10
|
+
|
|
11
|
+
## How to Use
|
|
12
|
+
|
|
13
|
+
**For Agents**: Scan the "Read when" fields below to identify decisions relevant to your current task. Before implementing new features, check if existing ADRs constrain or guide your approach. Load the full ADR for matching entries.
|
|
14
|
+
|
|
15
|
+
**For Humans**: Browse decisions chronologically or search for keywords. Each entry links to the full ADR with complete context, alternatives considered, and consequences.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Decisions
|
|
20
|
+
|
|
21
|
+
<!-- Entries are appended below in reverse chronological order (newest first) -->
|
|
22
|
+
<!-- Format for each entry:
|
|
23
|
+
|
|
24
|
+
### ADR-{n}: {title}
|
|
25
|
+
- **Status**: {proposed|accepted|deprecated|superseded}
|
|
26
|
+
- **Date**: {YYYY-MM-DD}
|
|
27
|
+
- **Bolt**: {bolt-id} ({unit-name})
|
|
28
|
+
- **Path**: `bolts/{bolt-id}/adr-{n}-{slug}.md`
|
|
29
|
+
- **Summary**: {First sentence from Context}. {First sentence from Decision}.
|
|
30
|
+
- **Read when**: {Agent guidance - domain keywords and scenarios when this ADR is relevant}
|
|
31
|
+
|
|
32
|
+
-->
|