specsmd 0.1.4 → 0.1.6

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 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
- - [GitHub Releases (VSIX)](https://github.com/fabriqaai/specs.md/releases)
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
 
@@ -29,7 +29,7 @@ You are now the **Construction Agent** for specsmd AI-DLC.
29
29
  1. **Read Schema**: `.specsmd/aidlc/memory-bank.yaml`
30
30
  2. **Verify Unit**: Check unit exists and has completed inception
31
31
  3. **Load Bolts**: Find bolts for this unit
32
- 4. **Determine State**: Check which bolts are planned/in-progress/completed
32
+ 4. **Determine State**: Check which bolts are planned/in-progress/complete
33
33
  5. **Present Menu or Continue**: Show status or continue active bolt
34
34
 
35
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] # Executes and can replan 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
  */
@@ -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
  }
@@ -52,7 +52,7 @@ For each bolt, determine progress:
52
52
 
53
53
  - **planned**: 0% - Not started
54
54
  - **in-progress**: `stages_completed / total_stages`
55
- - **completed**: 100%
55
+ - **complete**: 100%
56
56
  - **blocked**: Show blocker reason
57
57
 
58
58
  ### 5. Display Results
@@ -194,7 +194,7 @@ If the bolt type specifies automatic validation criteria, follow those rules.
194
194
  ┌─────────────────────────────────────────────────────────────┐
195
195
  │ FINAL STAGE DETECTED │
196
196
  │ → Re-read Step 10 NOW │
197
- │ → You MUST run: node .specsmd/scripts/bolt-complete.js
197
+ │ → You MUST run: node .specsmd/aidlc/scripts/bolt-complete.js
198
198
  │ → Do NOT manually edit story files │
199
199
  └─────────────────────────────────────────────────────────────┘
200
200
  ```
@@ -245,7 +245,7 @@ Do NOT manually edit story files - the script handles everything.
245
245
  **Run this command:**
246
246
 
247
247
  ```bash
248
- node .specsmd/scripts/bolt-complete.js {bolt-id}
248
+ node .specsmd/aidlc/scripts/bolt-complete.js {bolt-id}
249
249
  ```
250
250
 
251
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|completed|blocked}
84
+ - **Status**: {planned|in-progress|complete|blocked}
85
85
 
86
86
  ### Progress
87
87
  [██████████░░░░░░░░░░] 50% (2/4 stages)
@@ -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, completed)
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
@@ -67,7 +67,7 @@ Before creating a bolt, verify ALL required fields are present:
67
67
  | `unit` | **YES** | Parent unit ID |
68
68
  | `intent` | **YES** | Parent intent ID |
69
69
  | `type` | **YES** | Bolt type (`ddd-construction-bolt` or `simple-construction-bolt`) |
70
- | `status` | **YES** | Current status (`planned`, `in-progress`, `completed`, `blocked`) |
70
+ | `status` | **YES** | Current status (`planned`, `in-progress`, `complete`, `blocked`) |
71
71
  | `stories` | **YES** | Array of story IDs included in this bolt |
72
72
  | `created` | **YES** | Creation timestamp |
73
73
  | `requires_bolts` | **YES** | Array of bolt IDs this depends on (can be empty `[]`) |
@@ -134,7 +134,7 @@ Before creating a bolt, verify ALL required fields are present:
134
134
 
135
135
  - **planned**: Bolt created, not started
136
136
  - **in-progress**: Currently being executed
137
- - **completed**: All stages done
137
+ - **complete**: All stages done
138
138
  - **blocked**: Cannot proceed due to dependency
139
139
 
140
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 and proceed to checkpoint
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 proceed to checkpoint
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
+ 1. 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. **Check `current_stage`** in bolt instance
519
- 5. **Load bolt folder artifacts** if stage requires previous context (see Bolt Context Loading)
520
- 6. **Execute stage** following activities defined here
521
- 7. **Create artifacts** using templates
522
- 8. **⛔ STOP and present completion summary** - DO NOT continue automatically
523
- 9. **Wait for user confirmation** - user must explicitly approve (e.g., "continue", "proceed", "next")
524
- 10. **Only after approval**: Update bolt state and advance to next stage
525
-
526
- **⛔ CRITICAL**: Steps 8-9 are MANDATORY. Never skip the human checkpoint. Never auto-advance.
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.
@@ -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
+ -->
package/lib/installer.js CHANGED
@@ -229,6 +229,9 @@ async function installFlow(flowKey, toolKeys) {
229
229
  if (await fs.pathExists(path.join(flowPath, 'shared'))) {
230
230
  await fs.copy(path.join(flowPath, 'shared'), path.join(targetFlowDir, 'shared'));
231
231
  }
232
+ if (await fs.pathExists(path.join(flowPath, 'scripts'))) {
233
+ await fs.copy(path.join(flowPath, 'scripts'), path.join(targetFlowDir, 'scripts'));
234
+ }
232
235
 
233
236
  // Copy config files
234
237
  if (await fs.pathExists(path.join(flowPath, 'memory-bank.yaml'))) {
@@ -250,20 +253,6 @@ async function installFlow(flowKey, toolKeys) {
250
253
 
251
254
  CLIUtils.displayStatus('', 'Installed flow resources', 'success');
252
255
 
253
- // Step 2.5: Install local scripts for deterministic operations
254
- // These scripts are version-matched to the installed specsmd version
255
- const scriptsDir = path.join(specsmdDir, 'scripts');
256
- await fs.ensureDir(scriptsDir);
257
-
258
- const sourceScriptsDir = path.join(__dirname, '..', 'scripts');
259
- if (await fs.pathExists(sourceScriptsDir)) {
260
- await fs.copy(sourceScriptsDir, scriptsDir);
261
- CLIUtils.displayStatus('', 'Installed local scripts', 'success');
262
- }
263
-
264
- // Note: Scripts are invoked directly via relative path (e.g., node .specsmd/scripts/bolt-complete.js)
265
- // No npm scripts added to package.json to avoid dependency on package.json for execution
266
-
267
256
  // NOTE: memory-bank/ is NOT created during installation
268
257
  // It will be created when user runs project-init
269
258
  // This allows us to detect if project is initialized by checking for memory-bank/standards/
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specsmd",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Multi-agent orchestration system for AI-native software development. Delivers AI-DLC, Agile, and custom SDLC flows as markdown-based agent systems.",
5
5
  "main": "lib/installer.js",
6
6
  "bin": {
@@ -61,7 +61,7 @@
61
61
  "markdownlint": "^0.40.0",
62
62
  "markdownlint-cli": "^0.46.0",
63
63
  "remark-parse": "^11.0.0",
64
- "semantic-release": "^24.2.0",
64
+ "semantic-release": "^25.0.2",
65
65
  "typescript": "^5.9.3",
66
66
  "unified": "^11.0.5",
67
67
  "unist-util-visit": "^5.0.0",