specsmd 0.0.0-dev.3 → 0.0.0-dev.31
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 +31 -3
- package/flows/aidlc/skills/construction/bolt-status.md +1 -1
- package/flows/aidlc/skills/inception/bolt-plan.md +15 -2
- 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 +69 -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 +178 -0
- package/flows/simple/agents/agent.md +356 -0
- package/flows/simple/commands/agent.md +56 -0
- package/flows/simple/context-config.yaml +34 -0
- package/flows/simple/memory-bank.yaml +66 -0
- package/flows/simple/quick-start.md +219 -0
- package/flows/simple/skills/design.md +94 -0
- package/flows/simple/skills/execute.md +181 -0
- package/flows/simple/skills/requirements.md +94 -0
- package/flows/simple/skills/tasks.md +133 -0
- package/flows/simple/templates/design-template.md +133 -0
- package/flows/simple/templates/requirements-template.md +85 -0
- package/flows/simple/templates/tasks-template.md +99 -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 +43 -0
- package/lib/installers/WindsurfInstaller.js +0 -54
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -29,8 +29,9 @@ Track your AI-DLC progress with our sidebar extension for VS Code and compatible
|
|
|
29
29
|
> **Note:** Works with any VS Code-based IDE including [Cursor](https://cursor.sh), [Google Antigravity](https://antigravity.google), [Windsurf](https://codeium.com/windsurf), and others.
|
|
30
30
|
|
|
31
31
|
**Install from:**
|
|
32
|
-
- [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=fabriqaai.specsmd)
|
|
33
|
-
- [
|
|
32
|
+
- [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=fabriqaai.specsmd) — VS Code, GitHub Codespaces
|
|
33
|
+
- [Open VSX Registry](https://open-vsx.org/extension/fabriqaai/specsmd) — Cursor, Windsurf, Amazon Kiro, Google Antigravity, VSCodium, Gitpod, Google IDX
|
|
34
|
+
- [GitHub Releases (VSIX)](https://github.com/fabriqaai/specs.md/releases) — Manual installation
|
|
34
35
|
|
|
35
36
|
---
|
|
36
37
|
|
|
@@ -306,6 +307,13 @@ Specs and Memory Bank provide structured context for AI agents. Agents reload co
|
|
|
306
307
|
| **Cursor** | Full support | Rules in `.cursor/rules/` (`.mdc` format) |
|
|
307
308
|
| **GitHub Copilot** | Full support | Agents in `.github/agents/` (`.agent.md` format) |
|
|
308
309
|
| **Google Antigravity** | Full support | Agents in `.agent/agents/` |
|
|
310
|
+
| **Windsurf** | Full support | Workflows in `.windsurf/workflows/` |
|
|
311
|
+
| **Amazon Kiro** | Full support | Steering in `.kiro/steering/` |
|
|
312
|
+
| **Gemini CLI** | Full support | Commands in `.gemini/commands/` (`.toml` format) |
|
|
313
|
+
| **Cline** | Full support | Rules in `.clinerules/` |
|
|
314
|
+
| **Roo Code** | Full support | Commands in `.roo/commands/` |
|
|
315
|
+
| **OpenAI Codex** | Full support | Config in `.codex/` |
|
|
316
|
+
| **OpenCode** | Full support | Agents in `.opencode/agent/` |
|
|
309
317
|
|
|
310
318
|
---
|
|
311
319
|
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Building phase agent - execute bolts through DDD stages (model, test, implement)
|
|
3
|
+
---
|
|
4
|
+
|
|
1
5
|
# Activate Construction Agent
|
|
2
6
|
|
|
3
7
|
**Command**: `/specsmd-construction-agent`
|
|
@@ -25,7 +29,7 @@ You are now the **Construction Agent** for specsmd AI-DLC.
|
|
|
25
29
|
1. **Read Schema**: `.specsmd/aidlc/memory-bank.yaml`
|
|
26
30
|
2. **Verify Unit**: Check unit exists and has completed inception
|
|
27
31
|
3. **Load Bolts**: Find bolts for this unit
|
|
28
|
-
4. **Determine State**: Check which bolts are planned/in-progress/
|
|
32
|
+
4. **Determine State**: Check which bolts are planned/in-progress/complete
|
|
29
33
|
5. **Present Menu or Continue**: Show status or continue active bolt
|
|
30
34
|
|
|
31
35
|
---
|
|
@@ -81,13 +81,14 @@ schema:
|
|
|
81
81
|
story-index: "memory-bank/story-index.md"
|
|
82
82
|
inception-log: "memory-bank/intents/{intent-name}/inception-log.md"
|
|
83
83
|
construction-log: "memory-bank/intents/{intent-name}/units/{unit-name}/construction-log.md"
|
|
84
|
+
decision-index: "memory-bank/standards/decision-index.md"
|
|
84
85
|
|
|
85
86
|
# Agent Ownership
|
|
86
87
|
# Note: Both Inception and Construction can plan/create bolts
|
|
87
88
|
# Inception: initial planning, Construction: replanning during execution
|
|
88
89
|
ownership:
|
|
89
90
|
inception: [intents, units, stories, story-index, bolts] # Plans bolts initially
|
|
90
|
-
construction: [units, bolts]
|
|
91
|
+
construction: [units, bolts, decision-index] # Executes, can replan bolts, maintains decision index
|
|
91
92
|
operations: [operations]
|
|
92
93
|
|
|
93
94
|
# Global Story Index Options
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
* - Timestamp format (ISO 8601 without milliseconds)
|
|
11
11
|
*
|
|
12
12
|
* Usage:
|
|
13
|
-
* node .specsmd/scripts/artifact-validator.js
|
|
14
|
-
* node .specsmd/scripts/artifact-validator.js --json
|
|
15
|
-
* node .specsmd/scripts/artifact-validator.js --fix
|
|
13
|
+
* node .specsmd/aidlc/scripts/artifact-validator.js
|
|
14
|
+
* node .specsmd/aidlc/scripts/artifact-validator.js --json
|
|
15
|
+
* node .specsmd/aidlc/scripts/artifact-validator.js --fix
|
|
16
16
|
*
|
|
17
17
|
* Cross-platform: Works on Linux, macOS, Windows via Node.js
|
|
18
18
|
*/
|
|
@@ -115,11 +115,11 @@
|
|
|
115
115
|
*
|
|
116
116
|
* From agent skill (bolt-start.md Step 10):
|
|
117
117
|
*
|
|
118
|
-
* node .specsmd/scripts/bolt-complete.js 016-analytics-tracker
|
|
118
|
+
* node .specsmd/aidlc/scripts/bolt-complete.js 016-analytics-tracker
|
|
119
119
|
*
|
|
120
120
|
* With optional stage name:
|
|
121
121
|
*
|
|
122
|
-
* node .specsmd/scripts/bolt-complete.js 016-analytics-tracker --last-stage test
|
|
122
|
+
* node .specsmd/aidlc/scripts/bolt-complete.js 016-analytics-tracker --last-stage test
|
|
123
123
|
*
|
|
124
124
|
* ═══════════════════════════════════════════════════════════════════════════════
|
|
125
125
|
*/
|
|
@@ -510,6 +510,29 @@ async function updateIntentStatus(bolt) {
|
|
|
510
510
|
return { updated: false };
|
|
511
511
|
}
|
|
512
512
|
|
|
513
|
+
/**
|
|
514
|
+
* Validate bolt status before allowing completion
|
|
515
|
+
*
|
|
516
|
+
* Pre-flight checks to ensure:
|
|
517
|
+
* - Bolt is in "in-progress" status (can't complete already-complete or not-started bolts)
|
|
518
|
+
* - Bolt has not already been completed
|
|
519
|
+
*/
|
|
520
|
+
function validateBoltStatus(bolt) {
|
|
521
|
+
const status = bolt.frontmatter.status || 'unknown';
|
|
522
|
+
|
|
523
|
+
// Cannot complete a bolt that's already complete
|
|
524
|
+
if (status === 'complete') {
|
|
525
|
+
return { valid: false, reason: 'Bolt is already complete' };
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
// Bolt should be in-progress before completing
|
|
529
|
+
if (status !== 'in-progress') {
|
|
530
|
+
return { valid: false, reason: `Bolt status is "${status}", expected "in-progress"` };
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
return { valid: true };
|
|
534
|
+
}
|
|
535
|
+
|
|
513
536
|
/**
|
|
514
537
|
* Main: Mark bolt as complete with all dependent updates
|
|
515
538
|
*/
|
|
@@ -522,6 +545,14 @@ async function boltMarkComplete(boltId, lastStage) {
|
|
|
522
545
|
// Step 1: Read bolt file
|
|
523
546
|
const bolt = await readBolt(boltId);
|
|
524
547
|
|
|
548
|
+
// Step 1.5: Validate bolt status before proceeding
|
|
549
|
+
const validation = validateBoltStatus(bolt);
|
|
550
|
+
if (!validation.valid) {
|
|
551
|
+
console.error(`\n${colors.red}Error:${colors.reset} ${validation.reason}`);
|
|
552
|
+
console.error(`${colors.dim}Use bolt-status command to check current state.${colors.reset}`);
|
|
553
|
+
return 1;
|
|
554
|
+
}
|
|
555
|
+
|
|
525
556
|
console.log(`${colors.dim}Bolt: ${bolt.id}${colors.reset}`);
|
|
526
557
|
console.log(`${colors.dim}Intent: ${bolt.frontmatter.intent}${colors.reset}`);
|
|
527
558
|
console.log(`${colors.dim}Unit: ${bolt.frontmatter.unit}${colors.reset}`);
|
|
@@ -537,11 +568,11 @@ async function boltMarkComplete(boltId, lastStage) {
|
|
|
537
568
|
console.log(`\n${colors.dim}Stories: ${colors.green}${storyResults.updated} updated${colors.reset}, ${colors.dim}${storyResults.skipped} skipped${colors.reset}${storyResults.errors > 0 ? `, ${colors.red}${storyResults.errors} errors${colors.reset}` : ''}\n`);
|
|
538
569
|
|
|
539
570
|
// Step 4: Update unit status
|
|
540
|
-
|
|
571
|
+
await updateUnitStatus(bolt);
|
|
541
572
|
console.log();
|
|
542
573
|
|
|
543
574
|
// Step 5: Update intent status
|
|
544
|
-
|
|
575
|
+
await updateIntentStatus(bolt);
|
|
545
576
|
console.log();
|
|
546
577
|
|
|
547
578
|
// Final summary
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* Status must cascade correctly: Bolt complete → Stories complete → Unit complete → Intent complete
|
|
8
8
|
*
|
|
9
9
|
* Usage:
|
|
10
|
-
* node .specsmd/scripts/status-integrity.js
|
|
11
|
-
* node .specsmd/scripts/status-integrity.js --fix
|
|
10
|
+
* node .specsmd/aidlc/scripts/status-integrity.js
|
|
11
|
+
* node .specsmd/aidlc/scripts/status-integrity.js --fix
|
|
12
12
|
*
|
|
13
13
|
* Cross-platform: Works on Linux, macOS, Windows via Node.js
|
|
14
14
|
*/
|
|
@@ -584,8 +584,8 @@ Options:
|
|
|
584
584
|
--help, -h Show this help message
|
|
585
585
|
|
|
586
586
|
Examples:
|
|
587
|
-
node .specsmd/scripts/status-integrity.js
|
|
588
|
-
node .specsmd/scripts/status-integrity.js --fix
|
|
587
|
+
node .specsmd/aidlc/scripts/status-integrity.js
|
|
588
|
+
node .specsmd/aidlc/scripts/status-integrity.js --fix
|
|
589
589
|
`);
|
|
590
590
|
process.exit(0);
|
|
591
591
|
}
|
|
@@ -182,6 +182,23 @@ Ready to proceed?
|
|
|
182
182
|
|
|
183
183
|
If the bolt type specifies automatic validation criteria, follow those rules.
|
|
184
184
|
|
|
185
|
+
### 8b. Final Stage Checkpoint (CRITICAL RE-READ)
|
|
186
|
+
|
|
187
|
+
**⚠️ If this is the FINAL stage of the bolt**, before presenting completion:
|
|
188
|
+
|
|
189
|
+
1. **STOP** and re-read **Step 10** from this skill
|
|
190
|
+
2. This step is often skipped due to context distance - re-reading prevents this
|
|
191
|
+
3. Do NOT report bolt as complete until you have executed Step 10
|
|
192
|
+
|
|
193
|
+
```text
|
|
194
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
195
|
+
│ FINAL STAGE DETECTED │
|
|
196
|
+
│ → Re-read Step 10 NOW │
|
|
197
|
+
│ → You MUST run: node .specsmd/aidlc/scripts/bolt-complete.js │
|
|
198
|
+
│ → Do NOT manually edit story files │
|
|
199
|
+
└─────────────────────────────────────────────────────────────┘
|
|
200
|
+
```
|
|
201
|
+
|
|
185
202
|
### 9. Update Bolt File on Stage Completion
|
|
186
203
|
|
|
187
204
|
**Trigger**: After EACH stage completion (not just final stage).
|
|
@@ -210,14 +227,25 @@ stages_completed:
|
|
|
210
227
|
|
|
211
228
|
---
|
|
212
229
|
|
|
213
|
-
### 10. Mark Bolt Complete (
|
|
230
|
+
### 10. Mark Bolt Complete (HARD GATE - MANDATORY ON FINAL STAGE)
|
|
214
231
|
|
|
215
232
|
**Trigger**: ONLY when this is the FINAL stage.
|
|
216
233
|
|
|
217
|
-
|
|
234
|
+
```text
|
|
235
|
+
⛔ HARD GATE - SCRIPT EXECUTION REQUIRED
|
|
236
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
237
|
+
You CANNOT report bolt completion without:
|
|
238
|
+
1. Running the bolt-complete.js script
|
|
239
|
+
2. Showing the script output to the user
|
|
240
|
+
|
|
241
|
+
If you skip this, the memory-bank becomes inconsistent.
|
|
242
|
+
Do NOT manually edit story files - the script handles everything.
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
**Run this command:**
|
|
218
246
|
|
|
219
247
|
```bash
|
|
220
|
-
node .specsmd/scripts/bolt-complete.js {bolt-id}
|
|
248
|
+
node .specsmd/aidlc/scripts/bolt-complete.js {bolt-id}
|
|
221
249
|
```
|
|
222
250
|
|
|
223
251
|
**What this command does (deterministically):**
|
|
@@ -81,7 +81,7 @@ Check for issues:
|
|
|
81
81
|
- **Unit**: `{unit-name}`
|
|
82
82
|
- **Intent**: `{intent-name}`
|
|
83
83
|
- **Type**: {bolt-type}
|
|
84
|
-
- **Status**: {planned|in-progress|
|
|
84
|
+
- **Status**: {planned|in-progress|complete|blocked}
|
|
85
85
|
|
|
86
86
|
### Progress
|
|
87
87
|
[██████████░░░░░░░░░░] 50% (2/4 stages)
|
|
@@ -289,10 +289,23 @@ Establish execution order based on dependencies:
|
|
|
289
289
|
|
|
290
290
|
Check the plan against:
|
|
291
291
|
|
|
292
|
+
**Frontmatter Validation (CRITICAL - check each bolt.md)**:
|
|
293
|
+
|
|
294
|
+
- [ ] `id` - Bolt identifier present
|
|
295
|
+
- [ ] `unit` - Parent unit ID present
|
|
296
|
+
- [ ] `intent` - Parent intent ID present
|
|
297
|
+
- [ ] `type` - Bolt type specified (`ddd-construction-bolt` or `simple-construction-bolt`)
|
|
298
|
+
- [ ] `status` - Set to `planned`
|
|
299
|
+
- [ ] `stories` - **Array of story IDs included** (NOT just in body, MUST be in frontmatter)
|
|
300
|
+
- [ ] `created` - Timestamp present
|
|
301
|
+
- [ ] `requires_bolts` - Dependency array present (can be empty `[]`)
|
|
302
|
+
- [ ] `enables_bolts` - Enables array present (can be empty `[]`)
|
|
303
|
+
- [ ] `complexity` - Complexity block with all 4 fields
|
|
304
|
+
|
|
305
|
+
**Content Validation**:
|
|
306
|
+
|
|
292
307
|
- [ ] All stories are assigned to bolts
|
|
293
308
|
- [ ] Dependencies are respected (bolt-to-bolt AND unit-to-unit)
|
|
294
|
-
- [ ] All dependencies documented in frontmatter
|
|
295
|
-
- [ ] Complexity assessment included for each bolt
|
|
296
309
|
- [ ] Each bolt has clear outputs
|
|
297
310
|
- [ ] No bolt is too large (max 5-6 stories)
|
|
298
311
|
- [ ] No circular dependencies exist
|
|
@@ -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,35 @@ 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
|
+
3. Update frontmatter: increment `total_decisions`, update `last_updated` timestamp
|
|
326
|
+
|
|
327
|
+
**"Read when" Guidance Examples**:
|
|
328
|
+
- "Working on authentication flows or session management"
|
|
329
|
+
- "Implementing caching strategies or data persistence patterns"
|
|
330
|
+
- "Designing API contracts or integration points"
|
|
331
|
+
- "Handling error cases or implementing retry logic"
|
|
332
|
+
|
|
306
333
|
**Example ADR**:
|
|
307
334
|
|
|
308
335
|
```markdown
|
|
@@ -330,6 +357,7 @@ Implement CQRS pattern with separate read models for task queries.
|
|
|
330
357
|
- [ ] Project standards compared
|
|
331
358
|
- [ ] User presented with ADR opportunities (if any)
|
|
332
359
|
- [ ] Selected ADRs created (or explicitly skipped)
|
|
360
|
+
- [ ] Decision index updated (if ADRs were created)
|
|
333
361
|
|
|
334
362
|
**Important**: Do not force ADRs. Only suggest when there's genuine value. Simple bolts with straightforward decisions don't need ADRs.
|
|
335
363
|
|
|
@@ -495,6 +523,34 @@ status: in-progress
|
|
|
495
523
|
|
|
496
524
|
## Bolt Context Loading
|
|
497
525
|
|
|
526
|
+
### Prior Decision Lookup (All Stages)
|
|
527
|
+
|
|
528
|
+
**Before starting any stage**, scan the decision index for relevant prior ADRs:
|
|
529
|
+
|
|
530
|
+
1. Read `memory-bank/standards/decision-index.md` (if it exists)
|
|
531
|
+
2. Match the current bolt's domain/scope against "Read when" fields
|
|
532
|
+
3. Load full ADRs for any matching entries
|
|
533
|
+
4. Consider these decisions as constraints or guidance for the current work
|
|
534
|
+
|
|
535
|
+
**Example**: If working on a bolt for "user-service" and the decision index contains:
|
|
536
|
+
```
|
|
537
|
+
### ADR-001: Use JWT for Authentication
|
|
538
|
+
- **Read when**: Working on authentication flows or user services
|
|
539
|
+
```
|
|
540
|
+
→ Load and consider `ADR-001` before starting design work.
|
|
541
|
+
|
|
542
|
+
**Present relevant ADRs to user** at bolt start:
|
|
543
|
+
```
|
|
544
|
+
## Relevant Prior Decisions
|
|
545
|
+
|
|
546
|
+
Found {n} ADR(s) that may apply to this bolt:
|
|
547
|
+
- ADR-001: Use JWT for Authentication → [View](bolts/001-auth-service/adr-001-jwt-auth.md)
|
|
548
|
+
|
|
549
|
+
These decisions may constrain or guide your approach. Proceed? (y/n)
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
### Bolt Folder Artifacts (Stages 4-5)
|
|
553
|
+
|
|
498
554
|
For stages that build on previous work (Stage 4: Implement, Stage 5: Test), load all artifacts from the bolt folder:
|
|
499
555
|
|
|
500
556
|
**Location**: `memory-bank/bolts/{bolt-id}/`
|
|
@@ -515,14 +571,16 @@ This ensures the implementation and test stages have full context from earlier d
|
|
|
515
571
|
1. **Load bolt instance** from path defined by `schema.bolts`
|
|
516
572
|
2. **Read `bolt_type` field** (e.g., `ddd-construction-bolt`)
|
|
517
573
|
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
|
-
|
|
574
|
+
4. **Scan decision index** for relevant prior ADRs (see Prior Decision Lookup)
|
|
575
|
+
5. **Present relevant ADRs** to user if any found, get confirmation to proceed
|
|
576
|
+
6. **Check `current_stage`** in bolt instance
|
|
577
|
+
7. **Load bolt folder artifacts** if stage requires previous context (see Bolt Folder Artifacts)
|
|
578
|
+
8. **Execute stage** following activities defined here
|
|
579
|
+
9. **Create artifacts** using templates
|
|
580
|
+
10. **⛔ STOP and present completion summary** - DO NOT continue automatically
|
|
581
|
+
11. **Wait for user confirmation** - user must explicitly approve (e.g., "continue", "proceed", "next")
|
|
582
|
+
12. **Only after approval**: Update bolt state and advance to next stage
|
|
583
|
+
|
|
584
|
+
**⛔ CRITICAL**: Steps 10-11 are MANDATORY. Never skip the human checkpoint. Never auto-advance.
|
|
527
585
|
|
|
528
586
|
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
|
+
-->
|