project-iris 0.6.7 → 0.6.9
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/flows/aidlc/agents/construction-agent.md +14 -0
- package/flows/aidlc/agents/master-agent.md +16 -1
- package/flows/aidlc/memory-bank.yaml +2 -2
- package/flows/aidlc/skills/construction/bolt-start.md +16 -657
- package/flows/aidlc/skills/construction/refs/bolt-output.md +106 -0
- package/flows/aidlc/skills/construction/refs/construction-log.md +55 -0
- package/flows/aidlc/skills/construction/refs/figma-integration.md +363 -0
- package/flows/aidlc/skills/construction/refs/story-execution.md +167 -0
- package/flows/aidlc/skills/inception/refs/figma-story-refs.md +119 -0
- package/flows/aidlc/skills/inception/refs/measurement-criteria.md +123 -0
- package/flows/aidlc/skills/inception/refs/nfr-categories.md +144 -0
- package/flows/aidlc/skills/inception/refs/risk-categories.md +134 -0
- package/flows/aidlc/skills/inception/requirements.md +6 -257
- package/flows/aidlc/skills/inception/risks.md +3 -129
- package/flows/aidlc/skills/inception/story-create.md +48 -121
- package/package.json +1 -1
|
@@ -195,363 +195,12 @@ Scan the bolt's unit name, story titles, and story descriptions for these signal
|
|
|
195
195
|
|
|
196
196
|
This is not a hard requirement - use judgment on which principles apply to the current task.
|
|
197
197
|
|
|
198
|
-
### 4c. Figma
|
|
198
|
+
### 4c. Figma Design Integration (Conditional - Per Story)
|
|
199
199
|
|
|
200
|
-
|
|
200
|
+
**⛔ HARD GATE**: UI stories with `figma_frames` MUST have design specs extracted before coding. Figma scope MUST be enforced per-story.
|
|
201
201
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
**Supported Figma URL format:**
|
|
205
|
-
|
|
206
|
-
- Design file: `https://www.figma.com/design/{file-id}/{file-name}?node-id={node-id}&t={token}`
|
|
207
|
-
|
|
208
|
-
**When `figma_frames` is present:**
|
|
209
|
-
|
|
210
|
-
```text
|
|
211
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
212
|
-
│ FIGMA FRAMES DETECTED │
|
|
213
|
-
│ │
|
|
214
|
-
│ Story: {story-id} │
|
|
215
|
-
│ Frames: {count} Figma frame(s) │
|
|
216
|
-
│ │
|
|
217
|
-
│ Action: Use Figma MCP to fetch design and flow data │
|
|
218
|
-
└─────────────────────────────────────────────────────────────┘
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
**Figma MCP Integration:**
|
|
222
|
-
|
|
223
|
-
Use the Figma MCP tool to read design specifications. The MCP server is configured via:
|
|
224
|
-
`claude mcp add --transport http figma https://mcp.figma.com/mcp`
|
|
225
|
-
|
|
226
|
-
### 4c-1. Extract Design Specs (Per Frame)
|
|
227
|
-
|
|
228
|
-
For EACH Figma frame URL, extract:
|
|
229
|
-
|
|
230
|
-
```text
|
|
231
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
232
|
-
│ DESIGN SPECS EXTRACTION │
|
|
233
|
-
│ │
|
|
234
|
-
│ For each frame, extract: │
|
|
235
|
-
│ │
|
|
236
|
-
│ 1. Layout & Structure │
|
|
237
|
-
│ - Component hierarchy (parent/child relationships) │
|
|
238
|
-
│ - Spacing values (padding, margins, gaps) │
|
|
239
|
-
│ - Alignment and positioning │
|
|
240
|
-
│ │
|
|
241
|
-
│ 2. Visual Styling │
|
|
242
|
-
│ - Colors (exact hex values, opacity) │
|
|
243
|
-
│ - Typography (font family, size, weight, line height) │
|
|
244
|
-
│ - Border radius, shadows, effects │
|
|
245
|
-
│ │
|
|
246
|
-
│ 3. Component States │
|
|
247
|
-
│ - Default, hover, active, disabled, focus states │
|
|
248
|
-
│ - Loading states and skeletons │
|
|
249
|
-
│ - Error and success states │
|
|
250
|
-
│ │
|
|
251
|
-
│ 4. Responsive Variants (if defined) │
|
|
252
|
-
│ - Mobile, tablet, desktop variations │
|
|
253
|
-
│ - Breakpoint-specific layouts │
|
|
254
|
-
└─────────────────────────────────────────────────────────────┘
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
### 4c-2. Extract Interaction Flows
|
|
258
|
-
|
|
259
|
-
**Figma prototype connections MAY define interaction flows - but many designs don't have them.**
|
|
260
|
-
|
|
261
|
-
**Step 1: Check for prototype connections via Figma MCP**
|
|
262
|
-
|
|
263
|
-
```text
|
|
264
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
265
|
-
│ PROTOTYPE CONNECTION CHECK │
|
|
266
|
-
│ │
|
|
267
|
-
│ Query Figma MCP for prototype data on each frame. │
|
|
268
|
-
│ Prototype connections include: │
|
|
269
|
-
│ - Navigation triggers (which element → which frame) │
|
|
270
|
-
│ - Transition types (push, overlay, swap) │
|
|
271
|
-
│ - Overlay settings (dismiss on click outside, etc.) │
|
|
272
|
-
└─────────────────────────────────────────────────────────────┘
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
**Step 2: Determine flow source (in priority order)**
|
|
276
|
-
|
|
277
|
-
```text
|
|
278
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
279
|
-
│ FLOW SOURCE PRIORITY │
|
|
280
|
-
│ │
|
|
281
|
-
│ 1. Figma prototype connections (if they exist) │
|
|
282
|
-
│ → Extract automatically from Figma MCP │
|
|
283
|
-
│ │
|
|
284
|
-
│ 2. Manual flow definition in story (if provided) │
|
|
285
|
-
│ → Read from story's `interaction_flows` field │
|
|
286
|
-
│ │
|
|
287
|
-
│ 3. No flow information available │
|
|
288
|
-
│ → Ask user OR infer from button labels │
|
|
289
|
-
└─────────────────────────────────────────────────────────────┘
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
### 4c-2a. If Prototype Connections Exist in Figma
|
|
293
|
-
|
|
294
|
-
Extract interaction data:
|
|
295
|
-
|
|
296
|
-
- Navigation actions (which element → destination frame)
|
|
297
|
-
- Overlay triggers (modals, bottom sheets, tooltips)
|
|
298
|
-
- Transition types and animations
|
|
299
|
-
- Dismiss behaviors
|
|
300
|
-
|
|
301
|
-
### 4c-2b. If NO Prototype Connections in Figma
|
|
302
|
-
|
|
303
|
-
**Check story for manual `interaction_flows` definition:**
|
|
304
|
-
|
|
305
|
-
```yaml
|
|
306
|
-
# In story frontmatter or body
|
|
307
|
-
interaction_flows:
|
|
308
|
-
- screen: login-form
|
|
309
|
-
interactions:
|
|
310
|
-
- element: "Sign Up button"
|
|
311
|
-
action: navigate
|
|
312
|
-
target: registration-form
|
|
313
|
-
- element: "Forgot Password link"
|
|
314
|
-
action: overlay
|
|
315
|
-
target: forgot-password-modal
|
|
316
|
-
```
|
|
317
|
-
|
|
318
|
-
**If manual flows exist:** Use them to build the interaction map.
|
|
319
|
-
|
|
320
|
-
**If NO flows defined anywhere:**
|
|
321
|
-
|
|
322
|
-
```text
|
|
323
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
324
|
-
│ NO INTERACTION FLOW DEFINED │
|
|
325
|
-
│ │
|
|
326
|
-
│ Story: {story-id} │
|
|
327
|
-
│ Figma frames: {count} (no prototype connections found) │
|
|
328
|
-
│ Manual flows: Not defined │
|
|
329
|
-
│ │
|
|
330
|
-
│ Options: │
|
|
331
|
-
│ 1 - Define interactions now (I'll ask about each button) │
|
|
332
|
-
│ 2 - Infer from button labels (best guess) │
|
|
333
|
-
│ 3 - Implement as static screens (no navigation wiring) │
|
|
334
|
-
└─────────────────────────────────────────────────────────────┘
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
**Option 1 - Define interactions:** Ask user about each interactive element:
|
|
338
|
-
|
|
339
|
-
```text
|
|
340
|
-
I found these interactive elements in the Figma frames:
|
|
341
|
-
- "Sign Up" button
|
|
342
|
-
- "Forgot Password" link
|
|
343
|
-
- "Login" button
|
|
344
|
-
|
|
345
|
-
For each element, what should happen on click?
|
|
346
|
-
```
|
|
347
|
-
|
|
348
|
-
**Option 2 - Infer from labels:** Make reasonable assumptions:
|
|
349
|
-
|
|
350
|
-
- "Submit", "Save", "Login" → form submission
|
|
351
|
-
- "Cancel", "Close", "X" → close/go back
|
|
352
|
-
- "Sign Up", "Register" → navigate to registration
|
|
353
|
-
- "Learn More", "View Details" → navigate to detail screen
|
|
354
|
-
|
|
355
|
-
**Option 3 - Static screens:** Implement visuals only, user wires navigation later.
|
|
356
|
-
|
|
357
|
-
### 4c-2c. Output: Interaction Map
|
|
358
|
-
|
|
359
|
-
After determining flows (from any source), build the interaction map:
|
|
360
|
-
|
|
361
|
-
```markdown
|
|
362
|
-
### Interaction Map: {story-id}
|
|
363
|
-
|
|
364
|
-
**Flow Source:** {Figma prototype | Manual definition | Inferred | Static}
|
|
365
|
-
|
|
366
|
-
#### Screen: {frame-name-1}
|
|
367
|
-
| Element | Action | Target | Type |
|
|
368
|
-
|---------|--------|--------|------|
|
|
369
|
-
| "Sign Up" button | on-click | registration-form | navigate |
|
|
370
|
-
| "Forgot Password" link | on-click | forgot-password-modal | overlay |
|
|
371
|
-
|
|
372
|
-
#### Navigation Flow
|
|
373
|
-
|
|
374
|
-
login-screen
|
|
375
|
-
├── "Sign Up" → registration-form
|
|
376
|
-
├── "Forgot Password" → forgot-password-modal (overlay)
|
|
377
|
-
└── "Login" → dashboard (on success)
|
|
378
|
-
```
|
|
379
|
-
|
|
380
|
-
### 4c-3. If Figma MCP is not available
|
|
381
|
-
|
|
382
|
-
```text
|
|
383
|
-
⚠️ Figma MCP not configured - cannot fetch design specs
|
|
384
|
-
Story {story-id} has figma_frames but Figma MCP is unavailable.
|
|
385
|
-
|
|
386
|
-
Options:
|
|
387
|
-
1 - Continue using ui-patterns.md guidelines (design may not match)
|
|
388
|
-
2 - Stop and configure Figma MCP first
|
|
389
|
-
|
|
390
|
-
To configure: Run `claude mcp add --transport http figma https://mcp.figma.com/mcp`
|
|
391
|
-
Then authenticate via `/mcp` in Claude Code.
|
|
392
|
-
```
|
|
393
|
-
|
|
394
|
-
### 4c-4. Design-First Implementation Rule
|
|
395
|
-
|
|
396
|
-
**⛔ HARD GATE - UI FIDELITY ENFORCEMENT**
|
|
397
|
-
|
|
398
|
-
```text
|
|
399
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
400
|
-
│ UI FIDELITY - NON-NEGOTIABLE │
|
|
401
|
-
│ │
|
|
402
|
-
│ ⛔ FORBIDDEN: Approximating colors (use exact hex values) │
|
|
403
|
-
│ ⛔ FORBIDDEN: Guessing spacing (use exact px/rem values) │
|
|
404
|
-
│ ⛔ FORBIDDEN: Substituting fonts (use exact font family) │
|
|
405
|
-
│ ⛔ FORBIDDEN: Changing layout structure from Figma │
|
|
406
|
-
│ ⛔ FORBIDDEN: Adding/removing elements not in design │
|
|
407
|
-
│ │
|
|
408
|
-
│ The implementation MUST be pixel-perfect to the Figma. │
|
|
409
|
-
│ If deviation is required, STOP and ask the user first. │
|
|
410
|
-
└─────────────────────────────────────────────────────────────┘
|
|
411
|
-
```
|
|
412
|
-
|
|
413
|
-
When a story has `figma_frames`:
|
|
414
|
-
|
|
415
|
-
1. **Fetch ALL frames for THIS story FIRST** before writing any UI code
|
|
416
|
-
2. **Build the interaction map** to understand the complete flow
|
|
417
|
-
3. **Extract EXACT values** from Figma MCP response:
|
|
418
|
-
- Colors: Use exact hex values (e.g., `#1A1A1A`, not "dark gray")
|
|
419
|
-
- Spacing: Use exact pixel/rem values (e.g., `16px`, not "some padding")
|
|
420
|
-
- Typography: Use exact font-family, font-size, font-weight, line-height
|
|
421
|
-
- Border radius: Use exact values (e.g., `8px`, not "rounded")
|
|
422
|
-
- Shadows: Use exact shadow values from design
|
|
423
|
-
4. **Match the design exactly** - Figma specs override ui-patterns.md defaults
|
|
424
|
-
5. **Implement navigation** - wire up all interactions as defined in Figma
|
|
425
|
-
6. **If you MUST deviate** from design:
|
|
426
|
-
- STOP and ask the user first
|
|
427
|
-
- Document the deviation and reason in code comments
|
|
428
|
-
- Get explicit approval before proceeding
|
|
429
|
-
|
|
430
|
-
**Post-Implementation Fidelity Check:**
|
|
431
|
-
|
|
432
|
-
After implementing UI code, verify against Figma:
|
|
433
|
-
|
|
434
|
-
```text
|
|
435
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
436
|
-
│ FIDELITY CHECKLIST │
|
|
437
|
-
│ │
|
|
438
|
-
│ □ Colors match exactly (compare hex values) │
|
|
439
|
-
│ □ Spacing matches exactly (padding, margin, gap) │
|
|
440
|
-
│ □ Typography matches exactly (font, size, weight) │
|
|
441
|
-
│ □ Layout structure matches (flexbox/grid arrangement) │
|
|
442
|
-
│ □ Component hierarchy matches (nesting, order) │
|
|
443
|
-
│ □ Interactive states implemented (hover, focus, active) │
|
|
444
|
-
│ □ Responsive behavior matches (if defined in Figma) │
|
|
445
|
-
└─────────────────────────────────────────────────────────────┘
|
|
446
|
-
```
|
|
447
|
-
|
|
448
|
-
### 4c-5. When NO `figma_frames` Exists (Story-Level Collection)
|
|
449
|
-
|
|
450
|
-
**⛔ HARD GATE - DO NOT SKIP FOR UI STORIES**
|
|
451
|
-
|
|
452
|
-
If a story has UI signals (detected in Step 4b) but NO `figma_frames` in frontmatter:
|
|
453
|
-
|
|
454
|
-
```text
|
|
455
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
456
|
-
│ UI STORY WITHOUT FIGMA FRAMES │
|
|
457
|
-
│ │
|
|
458
|
-
│ Story: {story-id} - {title} │
|
|
459
|
-
│ UI Detected: {signal found} │
|
|
460
|
-
│ Figma Frames: Not defined in story frontmatter │
|
|
461
|
-
│ │
|
|
462
|
-
│ Would you like to provide Figma design for THIS story? │
|
|
463
|
-
│ │
|
|
464
|
-
│ 1 - Yes, I'll provide Figma frame URL(s) for this story │
|
|
465
|
-
│ 2 - No, continue without Figma (use ui-patterns.md) │
|
|
466
|
-
└─────────────────────────────────────────────────────────────┘
|
|
467
|
-
```
|
|
468
|
-
|
|
469
|
-
**If user selects "Yes":**
|
|
470
|
-
|
|
471
|
-
```text
|
|
472
|
-
Please provide Figma frame URL(s) for story: {story-id}
|
|
473
|
-
|
|
474
|
-
⚠️ IMPORTANT: Only provide frames relevant to THIS story's scope:
|
|
475
|
-
{list acceptance criteria titles from story}
|
|
476
|
-
|
|
477
|
-
Supported format:
|
|
478
|
-
- Design file: https://www.figma.com/design/{file-id}/{name}?node-id={node-id}&t={token}
|
|
479
|
-
|
|
480
|
-
Enter URL(s) (one per line, empty line to finish):
|
|
481
|
-
```
|
|
482
|
-
|
|
483
|
-
**After collecting URLs:**
|
|
484
|
-
|
|
485
|
-
1. Update the story file's `figma_frames` frontmatter with provided URLs
|
|
486
|
-
2. Proceed with Figma MCP integration (Step 4c-1 onwards)
|
|
487
|
-
|
|
488
|
-
**If user selects "No":**
|
|
489
|
-
|
|
490
|
-
Fall back to ui-patterns.md guidelines (Step 4b). Generate UI based on:
|
|
491
|
-
|
|
492
|
-
1. Acceptance criteria in the story
|
|
493
|
-
2. Project's ux-guide.md (component library, styling approach)
|
|
494
|
-
3. ui-patterns.md design principles
|
|
495
|
-
|
|
496
|
-
### 4c-6. Figma Scope Enforcement (CRITICAL)
|
|
497
|
-
|
|
498
|
-
**⛔ HARD GATE - STORY SCOPE BOUNDARY**
|
|
499
|
-
|
|
500
|
-
```text
|
|
501
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
502
|
-
│ FIGMA SCOPE ENFORCEMENT - NON-NEGOTIABLE │
|
|
503
|
-
│ │
|
|
504
|
-
│ ⛔ FORBIDDEN: Implementing screens beyond current story │
|
|
505
|
-
│ ⛔ FORBIDDEN: Building "all screens" from a Figma file │
|
|
506
|
-
│ ⛔ FORBIDDEN: Assuming Figma file scope = story scope │
|
|
507
|
-
│ │
|
|
508
|
-
│ Each story has its own scope. Figma frames provided for a │
|
|
509
|
-
│ story ONLY apply to that story's acceptance criteria. │
|
|
510
|
-
└─────────────────────────────────────────────────────────────┘
|
|
511
|
-
```
|
|
512
|
-
|
|
513
|
-
**When user provides a Figma URL:**
|
|
514
|
-
|
|
515
|
-
**Step 1: Check if URL has multiple distinct screens/frames**
|
|
516
|
-
|
|
517
|
-
**Step 2: If multiple screens detected**, ask user to map them:
|
|
518
|
-
|
|
519
|
-
```text
|
|
520
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
521
|
-
│ MULTIPLE SCREENS DETECTED │
|
|
522
|
-
│ │
|
|
523
|
-
│ The Figma URL contains {n} distinct screens/frames. │
|
|
524
|
-
│ Current story: {story-id} - {title} │
|
|
525
|
-
│ │
|
|
526
|
-
│ Which screen(s) apply to THIS story? │
|
|
527
|
-
│ │
|
|
528
|
-
│ Detected frames: │
|
|
529
|
-
│ 1. {frame-name-1} (node-id: {id}) │
|
|
530
|
-
│ 2. {frame-name-2} (node-id: {id}) │
|
|
531
|
-
│ 3. {frame-name-3} (node-id: {id}) │
|
|
532
|
-
│ ... │
|
|
533
|
-
│ │
|
|
534
|
-
│ Enter frame numbers for this story (e.g., "1, 2"): │
|
|
535
|
-
└─────────────────────────────────────────────────────────────┘
|
|
536
|
-
```
|
|
537
|
-
|
|
538
|
-
**Step 3: Only implement the selected frames** for current story
|
|
539
|
-
|
|
540
|
-
**Step 4: Other frames belong to other stories** - do NOT implement them now
|
|
541
|
-
|
|
542
|
-
**Scope Validation Before Implementation:**
|
|
543
|
-
|
|
544
|
-
Before writing any UI code, verify:
|
|
545
|
-
|
|
546
|
-
```text
|
|
547
|
-
Story: {story-id}
|
|
548
|
-
Acceptance Criteria: {list from story file}
|
|
549
|
-
Figma Frames Selected: {list selected frames}
|
|
550
|
-
|
|
551
|
-
✓ All selected frames relate to this story's acceptance criteria
|
|
552
|
-
✓ No frames selected that belong to other stories
|
|
553
|
-
✓ Scope is bounded to THIS story only
|
|
554
|
-
```
|
|
202
|
+
> **Read `.iris/aidlc/skills/construction/refs/figma-integration.md` and follow its instructions.**
|
|
203
|
+
> This covers: frame extraction, design specs, interaction flows, UI fidelity, scope enforcement.
|
|
555
204
|
|
|
556
205
|
### 5. Determine Current Stage
|
|
557
206
|
|
|
@@ -681,165 +330,12 @@ Each bolt type specifies its own stages and required artifacts. Refer to:
|
|
|
681
330
|
|
|
682
331
|
### 7b. Story-by-Story Execution (Code Generation Stages) - HARD GATE
|
|
683
332
|
|
|
684
|
-
**⛔ HARD GATE -
|
|
685
|
-
|
|
686
|
-
```text
|
|
687
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
688
|
-
│ STORY-BY-STORY EXECUTION - NON-NEGOTIABLE │
|
|
689
|
-
│ │
|
|
690
|
-
│ ⛔ FORBIDDEN: Implementing multiple stories at once │
|
|
691
|
-
│ ⛔ FORBIDDEN: Skipping story file reads │
|
|
692
|
-
│ ⛔ FORBIDDEN: Not updating stories_progress in bolt file │
|
|
693
|
-
│ │
|
|
694
|
-
│ You MUST process stories ONE AT A TIME in sequence. │
|
|
695
|
-
│ Each story requires its own announce → read → implement → │
|
|
696
|
-
│ update cycle. Batch implementation = broken traceability. │
|
|
697
|
-
└─────────────────────────────────────────────────────────────┘
|
|
698
|
-
```
|
|
699
|
-
|
|
700
|
-
**For EACH story in bolt's stories array, execute this exact sequence:**
|
|
701
|
-
|
|
702
|
-
```text
|
|
703
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
704
|
-
│ STORY EXECUTION LOOP (repeat for each story) │
|
|
705
|
-
│ │
|
|
706
|
-
│ STEP A: Announce start │
|
|
707
|
-
│ Output: "⏳ Story {n}/{total}: {story-id} - {title}" │
|
|
708
|
-
│ │
|
|
709
|
-
│ STEP B: Read story file (MANDATORY) │
|
|
710
|
-
│ Action: Read {intent}/units/{unit}/stories/{story-id}.md │
|
|
711
|
-
│ Purpose: Extract acceptance criteria for implementation │
|
|
712
|
-
│ │
|
|
713
|
-
│ STEP C: Implement code for THIS story only │
|
|
714
|
-
│ Action: Create/modify code to satisfy acceptance criteria │
|
|
715
|
-
│ Add traceability: // Story: {story-id} │
|
|
716
|
-
│ │
|
|
717
|
-
│ STEP D: Update bolt file stories_progress (MANDATORY) │
|
|
718
|
-
│ Action: Edit bolt.md to mark story progress │
|
|
719
|
-
│ │
|
|
720
|
-
│ STEP E: Update story FILE status (MANDATORY) │
|
|
721
|
-
│ Action: Edit story file frontmatter │
|
|
722
|
-
│ Path: {intent}/units/{unit}/stories/{story-id}.md │
|
|
723
|
-
│ Update: status: {current} → implemented │
|
|
724
|
-
│ ⚠️ This is the STORY FILE, not bolt.md │
|
|
725
|
-
│ │
|
|
726
|
-
│ STEP F: Announce completion │
|
|
727
|
-
│ Output: "✅ Story {story-id}: Implemented → `{files}`" │
|
|
728
|
-
│ │
|
|
729
|
-
│ STEP G: Show updated progress list │
|
|
730
|
-
│ Then proceed to next story (back to STEP A) │
|
|
731
|
-
└─────────────────────────────────────────────────────────────┘
|
|
732
|
-
```
|
|
733
|
-
|
|
734
|
-
**Story Progress Display (show after EACH story completion):**
|
|
735
|
-
|
|
736
|
-
```markdown
|
|
737
|
-
### Story Progress ({completed}/{total})
|
|
738
|
-
|
|
739
|
-
1. ✅ **{SSS}-{story-slug}**: Implemented → `{files}`
|
|
740
|
-
2. ✅ **{SSS}-{story-slug}**: Implemented → `{files}`
|
|
741
|
-
3. ⏳ **{SSS}-{story-slug}**: In Progress
|
|
742
|
-
4. [ ] **{SSS}-{story-slug}**: Pending
|
|
743
|
-
5. [ ] **{SSS}-{story-slug}**: Pending
|
|
744
|
-
6. [ ] **{SSS}-{story-slug}**: Pending
|
|
745
|
-
```
|
|
746
|
-
|
|
747
|
-
### 7b-1. Story File Update (HARD GATE)
|
|
748
|
-
|
|
749
|
-
**⛔ HARD GATE - STORY FILE UPDATE REQUIRED AFTER EACH STORY**
|
|
750
|
-
|
|
751
|
-
```text
|
|
752
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
753
|
-
│ STORY FILE UPDATE - NON-NEGOTIABLE │
|
|
754
|
-
│ │
|
|
755
|
-
│ After implementing code for a story, you MUST: │
|
|
756
|
-
│ 1. Use Edit tool to update the STORY FILE (not bolt.md) │
|
|
757
|
-
│ 2. Change frontmatter: status: {current} → implemented │
|
|
758
|
-
│ 3. Verify the edit was applied │
|
|
759
|
-
│ │
|
|
760
|
-
│ Path: {intent}/units/{unit}/stories/{story-id}.md │
|
|
761
|
-
│ │
|
|
762
|
-
│ ⛔ FORBIDDEN: Moving to next story without updating file │
|
|
763
|
-
│ ⛔ FORBIDDEN: Only updating bolt.md, not story file │
|
|
764
|
-
│ ⛔ FORBIDDEN: Batch updating at stage end │
|
|
765
|
-
└─────────────────────────────────────────────────────────────┘
|
|
766
|
-
```
|
|
767
|
-
|
|
768
|
-
**Story status values during code generation:**
|
|
333
|
+
**⛔ HARD GATE**: Stories MUST be executed one-by-one with progress tracking. Batch implementation is FORBIDDEN.
|
|
769
334
|
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
```text
|
|
776
|
-
✅ Story file updated: {story-id}.md
|
|
777
|
-
- status: {old-status} → implemented
|
|
778
|
-
```
|
|
779
|
-
|
|
780
|
-
### 7b-2. Bolt File Update (After Story File)
|
|
781
|
-
|
|
782
|
-
**Update bolt file after EACH story (not at the end):**
|
|
783
|
-
|
|
784
|
-
```yaml
|
|
785
|
-
stories_progress:
|
|
786
|
-
- id: 001-database-init
|
|
787
|
-
status: complete
|
|
788
|
-
implemented_at: {timestamp}
|
|
789
|
-
- id: 002-schema-tables
|
|
790
|
-
status: complete
|
|
791
|
-
implemented_at: {timestamp}
|
|
792
|
-
- id: 003-crud-operations
|
|
793
|
-
status: in-progress
|
|
794
|
-
- id: 004-query-helpers
|
|
795
|
-
status: pending
|
|
796
|
-
```
|
|
797
|
-
|
|
798
|
-
**Why This Pattern Exists:**
|
|
799
|
-
|
|
800
|
-
1. **Traceability**: Each piece of code maps to a specific story
|
|
801
|
-
2. **Resumability**: If interrupted, we know exactly where to continue
|
|
802
|
-
3. **Verification**: We can validate that ALL stories were addressed
|
|
803
|
-
4. **Visibility**: User sees clear progress through the work
|
|
804
|
-
5. **Quality**: Reading acceptance criteria prevents missed requirements
|
|
805
|
-
|
|
806
|
-
### 7c. Final Regression Check (After All Stories Implemented)
|
|
807
|
-
|
|
808
|
-
**⛔ REQUIRED: After implementing all stories, verify no regressions**
|
|
809
|
-
|
|
810
|
-
```text
|
|
811
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
812
|
-
│ REGRESSION CHECK - BEFORE STAGE CHECKPOINT │
|
|
813
|
-
│ │
|
|
814
|
-
│ After ALL stories are implemented, you MUST verify: │
|
|
815
|
-
│ 1. Re-read acceptance criteria from FIRST story │
|
|
816
|
-
│ 2. Verify the implementation still satisfies those ACs │
|
|
817
|
-
│ 3. Repeat for each story in order │
|
|
818
|
-
│ 4. Report any regressions found │
|
|
819
|
-
│ │
|
|
820
|
-
│ Later stories may have broken earlier implementations. │
|
|
821
|
-
│ Catch this BEFORE moving to Testing stage. │
|
|
822
|
-
└─────────────────────────────────────────────────────────────┘
|
|
823
|
-
```
|
|
824
|
-
|
|
825
|
-
**Regression Check Output:**
|
|
826
|
-
|
|
827
|
-
```text
|
|
828
|
-
### Regression Check ({stories_count} stories)
|
|
829
|
-
|
|
830
|
-
1. ✅ **{story-1}**: All ACs still valid
|
|
831
|
-
2. ✅ **{story-2}**: All ACs still valid
|
|
832
|
-
3. ⚠️ **{story-3}**: AC2 regression - {description} → FIX REQUIRED
|
|
833
|
-
4. ✅ **{story-4}**: All ACs still valid
|
|
834
|
-
|
|
835
|
-
{If regressions found: Fix before proceeding to checkpoint}
|
|
836
|
-
```
|
|
837
|
-
|
|
838
|
-
**Why This Check Exists:**
|
|
839
|
-
|
|
840
|
-
- Story N implementation may modify shared code
|
|
841
|
-
- Changes could invalidate Story 1-N-1 acceptance criteria
|
|
842
|
-
- Catching regressions early prevents cascade failures in Testing stage
|
|
335
|
+
> **Read `.iris/aidlc/skills/construction/refs/story-execution.md` and follow its instructions exactly.**
|
|
336
|
+
> Covers: sequential story loop (announce → read → implement → update), story file updates, bolt progress updates, and regression check.
|
|
337
|
+
>
|
|
338
|
+
> ⚠️ You MUST use the Read tool to load this file NOW. Do not proceed to Step 8 without completing the story execution loop defined in that file.
|
|
843
339
|
|
|
844
340
|
### 8. Handle Checkpoints (As Defined by Bolt Type)
|
|
845
341
|
|
|
@@ -1018,156 +514,19 @@ After running the command, verify the changes were applied correctly:
|
|
|
1018
514
|
|
|
1019
515
|
## Update Construction Log (HARD GATE)
|
|
1020
516
|
|
|
1021
|
-
**⛔ HARD GATE
|
|
1022
|
-
|
|
1023
|
-
```text
|
|
1024
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
1025
|
-
│ CONSTRUCTION LOG - NON-NEGOTIABLE │
|
|
1026
|
-
│ │
|
|
1027
|
-
│ You MUST update the construction log at these points: │
|
|
1028
|
-
│ 1. On first bolt start → Create log using template │
|
|
1029
|
-
│ 2. On bolt start → Add "started" entry │
|
|
1030
|
-
│ 3. On stage completion → Add "stage-complete" entry │
|
|
1031
|
-
│ 4. On bolt completion → Add "completed" entry │
|
|
1032
|
-
│ │
|
|
1033
|
-
│ ⛔ FORBIDDEN: Starting bolt work without log entry │
|
|
1034
|
-
│ ⛔ FORBIDDEN: Completing stage without log entry │
|
|
1035
|
-
│ ⛔ FORBIDDEN: Completing bolt without log entry │
|
|
1036
|
-
│ │
|
|
1037
|
-
│ The construction log provides audit trail for the unit. │
|
|
1038
|
-
│ No log entry = no evidence the work happened. │
|
|
1039
|
-
└─────────────────────────────────────────────────────────────┘
|
|
1040
|
-
```
|
|
1041
|
-
|
|
1042
|
-
### Location
|
|
1043
|
-
|
|
1044
|
-
`{unit-path}/construction-log.md`
|
|
1045
|
-
|
|
1046
|
-
### On First Bolt Start
|
|
1047
|
-
|
|
1048
|
-
If construction log doesn't exist, create it using template:
|
|
1049
|
-
`.iris/aidlc/templates/construction/construction-log-template.md`
|
|
1050
|
-
|
|
1051
|
-
### On Bolt Start
|
|
1052
|
-
|
|
1053
|
-
```markdown
|
|
1054
|
-
- **{ISO-8601-timestamp}**: {bolt-id} started - Stage 1: {stage-name}
|
|
1055
|
-
```
|
|
517
|
+
**⛔ HARD GATE**: You MUST update the construction log on bolt start, stage completion, and bolt completion. No log entry = no evidence the work happened.
|
|
1056
518
|
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
- **{ISO-8601-timestamp}**: {bolt-id} stage-complete - {stage-name} → {next-stage}
|
|
1061
|
-
```
|
|
1062
|
-
|
|
1063
|
-
### On Bolt Completion
|
|
1064
|
-
|
|
1065
|
-
```markdown
|
|
1066
|
-
- **{ISO-8601-timestamp}**: {bolt-id} completed - All {n} stages done
|
|
1067
|
-
```
|
|
519
|
+
> **Read `.iris/aidlc/skills/construction/refs/construction-log.md` and follow its instructions.**
|
|
520
|
+
>
|
|
521
|
+
> ⚠️ You MUST use the Read tool to load this file. Missing log entries = no audit trail of work done.
|
|
1068
522
|
|
|
1069
523
|
---
|
|
1070
524
|
|
|
1071
|
-
## Output
|
|
1072
|
-
|
|
1073
|
-
```markdown
|
|
1074
|
-
## Executing Bolt: {bolt-id}
|
|
1075
|
-
|
|
1076
|
-
### Current Stage: {stage-name}
|
|
1077
|
-
**Type**: {bolt-type}
|
|
1078
|
-
**Progress**: Stage {n} of {total}
|
|
1079
|
-
|
|
1080
|
-
### Story Progress ({completed}/{total})
|
|
525
|
+
## Output & Completion
|
|
1081
526
|
|
|
1082
|
-
|
|
1083
|
-
2. ✅ **{SSS}-{story-slug}**: Implemented → `{files}`
|
|
1084
|
-
3. ⏳ **{SSS}-{story-slug}**: In Progress
|
|
1085
|
-
4. [ ] **{SSS}-{story-slug}**: Pending
|
|
527
|
+
> **Read `.iris/aidlc/skills/construction/refs/bolt-output.md`** for output templates (stage execution + bolt completed), post-bolt action menu, and completion checklist.
|
|
1086
528
|
|
|
1087
|
-
|
|
1088
|
-
1. ✅ {activity 1}
|
|
1089
|
-
2. ✅ {activity 2}
|
|
1090
|
-
3. ⏳ {activity 3 - in progress}
|
|
1091
|
-
|
|
1092
|
-
### Artifacts Created
|
|
1093
|
-
- `{path/to/artifact}` - {description}
|
|
1094
|
-
|
|
1095
|
-
---
|
|
1096
|
-
|
|
1097
|
-
### Checkpoint (if defined by bolt type)
|
|
1098
|
-
> "{checkpoint prompt from bolt type definition}"
|
|
1099
|
-
```
|
|
1100
|
-
|
|
1101
|
-
---
|
|
1102
|
-
|
|
1103
|
-
## Output (Bolt Completed)
|
|
1104
|
-
|
|
1105
|
-
```markdown
|
|
1106
|
-
## Bolt Complete: {bolt-id}
|
|
1107
|
-
|
|
1108
|
-
### Summary
|
|
1109
|
-
- **Type**: {bolt-type}
|
|
1110
|
-
- **Duration**: {time elapsed}
|
|
1111
|
-
- **Stages Completed**: {all stages from bolt type}
|
|
1112
|
-
|
|
1113
|
-
### Artifacts Produced
|
|
1114
|
-
{List artifacts as defined by bolt type}
|
|
1115
|
-
|
|
1116
|
-
### Stories Delivered
|
|
1117
|
-
- ✅ **{SSS}-{story-slug}**: Complete
|
|
1118
|
-
- ✅ **{SSS}-{story-slug}**: Complete
|
|
1119
|
-
|
|
1120
|
-
### Actions
|
|
1121
|
-
|
|
1122
|
-
1 - **next**: Start next bolt
|
|
1123
|
-
2 - **list**: Review all bolts for this unit
|
|
1124
|
-
3 - **operations**: Proceed to Operations (if all complete)
|
|
1125
|
-
|
|
1126
|
-
**Type a number or press Enter for suggested action.**
|
|
1127
|
-
```
|
|
1128
|
-
|
|
1129
|
-
---
|
|
1130
|
-
|
|
1131
|
-
## CRITICAL: Post-Bolt Options (NEVER SKIP)
|
|
1132
|
-
|
|
1133
|
-
**After EVERY bolt completion, you MUST present the Actions menu above.**
|
|
1134
|
-
|
|
1135
|
-
```text
|
|
1136
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
1137
|
-
│ BOLT COMPLETED │
|
|
1138
|
-
│ → You MUST show the Actions menu (1-next, 2-list, 3-ops) │
|
|
1139
|
-
│ → Do NOT just ask "approve to continue?" │
|
|
1140
|
-
│ → Let the user CHOOSE their next action │
|
|
1141
|
-
└─────────────────────────────────────────────────────────────┘
|
|
1142
|
-
```
|
|
1143
|
-
|
|
1144
|
-
**Failure Mode**: Asking "Ready to proceed to next bolt?" without showing options
|
|
1145
|
-
**Correct Behavior**: Always show numbered Actions list and wait for user choice
|
|
1146
|
-
|
|
1147
|
-
---
|
|
1148
|
-
|
|
1149
|
-
## Bolt Completion Checklist
|
|
1150
|
-
|
|
1151
|
-
**Use this checklist to verify all completion tasks are done:**
|
|
1152
|
-
|
|
1153
|
-
```text
|
|
1154
|
-
□ Bolt file updated:
|
|
1155
|
-
□ status: complete
|
|
1156
|
-
□ completed: {timestamp}
|
|
1157
|
-
□ current_stage: null
|
|
1158
|
-
|
|
1159
|
-
□ Stories updated (Step 10):
|
|
1160
|
-
□ Each story in bolt's stories array:
|
|
1161
|
-
□ status: complete
|
|
1162
|
-
□ implemented: true
|
|
1163
|
-
|
|
1164
|
-
□ Status cascade checked (Step 11):
|
|
1165
|
-
□ Unit status updated if all bolts complete
|
|
1166
|
-
□ Intent status updated if all units complete
|
|
1167
|
-
|
|
1168
|
-
□ Construction log updated:
|
|
1169
|
-
□ "{bolt-id} completed" entry added
|
|
1170
|
-
```
|
|
529
|
+
**CRITICAL**: After EVERY bolt completion, present the Actions menu (1-next, 2-list, 3-ops). Do NOT skip.
|
|
1171
530
|
|
|
1172
531
|
---
|
|
1173
532
|
|