specweave 1.0.106 → 1.0.108

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/CLAUDE.md CHANGED
@@ -1,10 +1,10 @@
1
- <!-- SW:META template="claude" version="1.0.105" sections="header,start,autodetect,metarule,rules,workflow,reflect,context,lsp,structure,taskformat,secrets,syncing,mapping,testing,api,limits,troubleshooting,principles,linking,mcp,autoexecute,auto,docs" -->
1
+ <!-- SW:META template="claude" version="1.0.107" sections="header,start,autodetect,metarule,rules,workflow,reflect,context,lsp,structure,taskformat,secrets,syncing,mapping,testing,api,limits,troubleshooting,principles,linking,mcp,autoexecute,auto,docs" -->
2
2
 
3
- <!-- SW:SECTION:header version="1.0.105" -->
3
+ <!-- SW:SECTION:header version="1.0.107" -->
4
4
  **Framework**: SpecWeave | **Truth**: `spec.md` + `tasks.md`
5
5
  <!-- SW:END:header -->
6
6
 
7
- <!-- SW:SECTION:start version="1.0.105" -->
7
+ <!-- SW:SECTION:start version="1.0.107" -->
8
8
  ## Getting Started
9
9
 
10
10
  **Initial increment**: `0001-project-setup` (auto-created by `specweave init`)
@@ -14,7 +14,7 @@
14
14
  2. **Customize**: Edit spec.md and use for setup tasks
15
15
  <!-- SW:END:start -->
16
16
 
17
- <!-- SW:SECTION:autodetect version="1.0.105" -->
17
+ <!-- SW:SECTION:autodetect version="1.0.107" -->
18
18
  ## Auto-Detection
19
19
 
20
20
  SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
@@ -24,7 +24,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
24
24
  **Opt-out phrases**: "Just brainstorm first" | "Don't plan yet" | "Quick discussion" | "Let's explore ideas"
25
25
  <!-- SW:END:autodetect -->
26
26
 
27
- <!-- SW:SECTION:metarule version="1.0.105" -->
27
+ <!-- SW:SECTION:metarule version="1.0.107" -->
28
28
  ## Meta-Rule: Think-Before-Act
29
29
 
30
30
  **Satisfy dependencies BEFORE dependent operations.**
@@ -35,7 +35,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
35
35
  ```
36
36
  <!-- SW:END:metarule -->
37
37
 
38
- <!-- SW:SECTION:rules version="1.0.105" -->
38
+ <!-- SW:SECTION:rules version="1.0.107" -->
39
39
  ## Rules
40
40
 
41
41
  1. **Files** → `.specweave/increments/####-name/` (spec.md, plan.md, tasks.md at root; reports/, scripts/, logs/ subfolders)
@@ -48,7 +48,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
48
48
  8. **⛔ Marketplace refresh**: ALWAYS use `specweave refresh-marketplace` CLI command. NEVER suggest `scripts/refresh-marketplace.sh` - end users don't have the scripts folder (npm global install).
49
49
  <!-- SW:END:rules -->
50
50
 
51
- <!-- SW:SECTION:workflow version="1.0.105" -->
51
+ <!-- SW:SECTION:workflow version="1.0.107" -->
52
52
  ## Workflow
53
53
 
54
54
  `/sw:increment "X"` → `/sw:do` → `/sw:progress` → `/sw:done 0001`
@@ -68,7 +68,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
68
68
  **Natural language**: "Let's build X" → `/sw:increment` | "What's status?" → `/sw:progress` | "We're done" → `/sw:done` | "Ship while sleeping" → `/sw:auto`
69
69
  <!-- SW:END:workflow -->
70
70
 
71
- <!-- SW:SECTION:reflect version="1.0.105" -->
71
+ <!-- SW:SECTION:reflect version="1.0.107" -->
72
72
  ## Self-Improving Skills (Reflect)
73
73
 
74
74
  **Learn once, never repeat.** Claude learns from corrections and patterns across sessions.
@@ -112,7 +112,7 @@ ls ~/.specweave/memory/*.md 2>/dev/null
112
112
  **Enable auto-learning**: `/sw:reflect-on` → Stop hook analyzes sessions automatically
113
113
  <!-- SW:END:reflect -->
114
114
 
115
- <!-- SW:SECTION:context version="1.0.105" -->
115
+ <!-- SW:SECTION:context version="1.0.107" -->
116
116
  ## Living Docs Context
117
117
 
118
118
  **Before implementing features**: Check existing docs for patterns and decisions.
@@ -132,7 +132,7 @@ grep -ril "keyword" .specweave/docs/internal/
132
132
  **Use `/sw:context <topic>`** to load relevant living docs into conversation.
133
133
  <!-- SW:END:context -->
134
134
 
135
- <!-- SW:SECTION:lsp version="1.0.105" -->
135
+ <!-- SW:SECTION:lsp version="1.0.107" -->
136
136
  ## LSP-Enhanced Exploration
137
137
 
138
138
  **USE LSP ACTIVELY** for semantic code understanding (100x faster than grep).
@@ -149,7 +149,7 @@ go install golang.org/x/tools/gopls@latest # Go
149
149
  **Best Practices**: ALWAYS use `findReferences` before refactoring | Use `goToDefinition` instead of grep | Combine with Explore agent
150
150
  <!-- SW:END:lsp -->
151
151
 
152
- <!-- SW:SECTION:structure version="1.0.105" -->
152
+ <!-- SW:SECTION:structure version="1.0.107" -->
153
153
  ## Structure
154
154
 
155
155
  ```
@@ -219,7 +219,7 @@ my-project/
219
219
  ```
220
220
  <!-- SW:END:structure -->
221
221
 
222
- <!-- SW:SECTION:taskformat version="1.0.105" -->
222
+ <!-- SW:SECTION:taskformat version="1.0.107" -->
223
223
  ## Task Format
224
224
 
225
225
  ```markdown
@@ -229,7 +229,7 @@ my-project/
229
229
  ```
230
230
  <!-- SW:END:taskformat -->
231
231
 
232
- <!-- SW:SECTION:secrets version="1.0.105" -->
232
+ <!-- SW:SECTION:secrets version="1.0.107" -->
233
233
  ## Secrets Check
234
234
 
235
235
  **BEFORE CLI tools**: Check existing config first!
@@ -240,7 +240,7 @@ gh auth status
240
240
  ```
241
241
  <!-- SW:END:secrets -->
242
242
 
243
- <!-- SW:SECTION:syncing version="1.0.105" -->
243
+ <!-- SW:SECTION:syncing version="1.0.107" -->
244
244
  ## External Sync (GitHub/JIRA/ADO)
245
245
 
246
246
  **After increment creation**: Run `/sw-github:sync {id}` to create issues!
@@ -268,7 +268,7 @@ Living docs sync ≠ External sync. They are separate:
268
268
  **Verify tokens**: `grep GITHUB_TOKEN .env` | `gh auth status`
269
269
  <!-- SW:END:syncing -->
270
270
 
271
- <!-- SW:SECTION:mapping version="1.0.105" -->
271
+ <!-- SW:SECTION:mapping version="1.0.107" -->
272
272
  ## GitHub Mapping
273
273
 
274
274
  | SpecWeave | GitHub |
@@ -278,7 +278,7 @@ Living docs sync ≠ External sync. They are separate:
278
278
  | Task T-XXX | Checkbox |
279
279
  <!-- SW:END:mapping -->
280
280
 
281
- <!-- SW:SECTION:testing version="1.0.105" -->
281
+ <!-- SW:SECTION:testing version="1.0.107" -->
282
282
  ## Testing
283
283
 
284
284
  BDD in tasks.md | Unit >80% | `.test.ts` (Vitest)
@@ -290,7 +290,7 @@ vi.mock('fs', () => ({ readFile: vi.fn() }));
290
290
  ```
291
291
  <!-- SW:END:testing -->
292
292
 
293
- <!-- SW:SECTION:api version="1.0.105" -->
293
+ <!-- SW:SECTION:api version="1.0.107" -->
294
294
  ## API Development (OpenAPI-First)
295
295
 
296
296
  **For API projects only.** OpenAPI = source of truth → Postman derived from it.
@@ -309,13 +309,13 @@ vi.mock('fs', () => ({ readFile: vi.fn() }));
309
309
  **Import**: Postman → Import collection + env → Fill secrets → Select env
310
310
  <!-- SW:END:api -->
311
311
 
312
- <!-- SW:SECTION:limits version="1.0.105" -->
312
+ <!-- SW:SECTION:limits version="1.0.107" -->
313
313
  ## Limits
314
314
 
315
315
  **Max 1500 lines/file** — extract before adding
316
316
  <!-- SW:END:limits -->
317
317
 
318
- <!-- SW:SECTION:troubleshooting version="1.0.105" -->
318
+ <!-- SW:SECTION:troubleshooting version="1.0.107" -->
319
319
  ## Troubleshooting
320
320
 
321
321
  | Issue | Fix |
@@ -335,7 +335,7 @@ vi.mock('fs', () => ({ readFile: vi.fn() }));
335
335
  | Path patterns not working | `//path` = absolute, `/path` = relative to settings file, `additionalDirectories` for explicit working dirs |
336
336
  <!-- SW:END:troubleshooting -->
337
337
 
338
- <!-- SW:SECTION:principles version="1.0.105" -->
338
+ <!-- SW:SECTION:principles version="1.0.107" -->
339
339
  ## Principles
340
340
 
341
341
  1. **Spec-first**: `/sw:increment` before coding
@@ -345,7 +345,7 @@ vi.mock('fs', () => ({ readFile: vi.fn() }));
345
345
  5. **Clean**: All files in increment folders
346
346
  <!-- SW:END:principles -->
347
347
 
348
- <!-- SW:SECTION:linking version="1.0.105" -->
348
+ <!-- SW:SECTION:linking version="1.0.107" -->
349
349
  ## Bidirectional Linking
350
350
 
351
351
  Tasks ↔ User Stories auto-linked via AC-IDs: `AC-US1-01` → `US-001`
@@ -353,7 +353,7 @@ Tasks ↔ User Stories auto-linked via AC-IDs: `AC-US1-01` → `US-001`
353
353
  Task format: `**AC**: AC-US1-01, AC-US1-02` (CRITICAL for linking)
354
354
  <!-- SW:END:linking -->
355
355
 
356
- <!-- SW:SECTION:mcp version="1.0.105" -->
356
+ <!-- SW:SECTION:mcp version="1.0.107" -->
357
357
  ## External Service Connection
358
358
 
359
359
  **Priority**: MCP Server → REST API → CLI → Direct Connection
@@ -377,7 +377,7 @@ wrangler whoami 2>/dev/null
377
377
  ```
378
378
  <!-- SW:END:mcp -->
379
379
 
380
- <!-- SW:SECTION:autoexecute version="1.0.105" -->
380
+ <!-- SW:SECTION:autoexecute version="1.0.107" -->
381
381
  ## Auto-Execute Rule
382
382
 
383
383
  **NEVER** output "Manual Step Required" when credentials exist. **EXECUTE DIRECTLY.**
@@ -391,7 +391,7 @@ wrangler whoami 2>/dev/null && gh auth status 2>/dev/null
391
391
  ```
392
392
  <!-- SW:END:autoexecute -->
393
393
 
394
- <!-- SW:SECTION:auto version="1.0.105" -->
394
+ <!-- SW:SECTION:auto version="1.0.107" -->
395
395
  ## Auto Mode (Autonomous Execution)
396
396
 
397
397
  **Continuous execution until all tasks complete.**
@@ -468,7 +468,7 @@ wrangler whoami 2>/dev/null && gh auth status 2>/dev/null
468
468
  **Circuit Breaker**: External API fails 3x? Queue & continue
469
469
  <!-- SW:END:auto -->
470
470
 
471
- <!-- SW:SECTION:docs version="1.0.105" -->
471
+ <!-- SW:SECTION:docs version="1.0.107" -->
472
472
  ## Docs
473
473
 
474
474
  [spec-weave.com](https://spec-weave.com) | `.specweave/docs/internal/`
@@ -35,15 +35,33 @@ export interface ValidationOptions {
35
35
  */
36
36
  export declare class CacheHealthMonitor {
37
37
  private metadataManager;
38
- private static readonly MERGE_CONFLICT_PATTERN;
39
38
  constructor();
40
39
  /**
41
- * Detect merge conflict markers in a file
40
+ * Detect actual merge conflict markers in a file
41
+ *
42
+ * A real merge conflict has:
43
+ * 1. All three markers present: <<<<<<<, =======, >>>>>>>
44
+ * 2. Markers appear at line start (possibly with leading whitespace)
45
+ * 3. Markers are NOT inside code fences (documentation examples)
46
+ *
47
+ * This avoids false positives from:
48
+ * - Documentation showing conflict examples (inside code blocks)
49
+ * - Comment dividers using repeated characters
42
50
  *
43
51
  * @param filePath - Absolute path to file
44
- * @returns True if merge conflict markers detected
52
+ * @returns True if real merge conflict markers detected
45
53
  */
46
54
  detectMergeConflicts(filePath: string): boolean;
55
+ /**
56
+ * Check if merge conflict markers exist outside of code fences
57
+ *
58
+ * Code fences (``` blocks) often contain documentation examples
59
+ * showing what conflicts look like. These should not be flagged.
60
+ *
61
+ * @param content - File content to analyze
62
+ * @returns True if conflict markers found outside code fences
63
+ */
64
+ private hasMarkersOutsideCodeFences;
47
65
  /**
48
66
  * Validate bash script syntax
49
67
  *
@@ -1 +1 @@
1
- {"version":3,"file":"cache-health-monitor.d.ts","sourceRoot":"","sources":["../../../../src/core/plugin-cache/cache-health-monitor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI9C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IAEnB,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAEhB,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IAEjB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IAEpB,gCAAgC;IAChC,cAAc,EAAE,MAAM,CAAC;IAEvB,0BAA0B;IAC1B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAE3B,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAoB;;IAMlE;;;;;OAKG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAS/C;;;;;;;;OAQG;IACH,kBAAkB,CAChB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAerC;;;;;;;;;;;;OAYG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAiG1E;;;;;;OAMG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY;IAevE;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;CAS1B"}
1
+ {"version":3,"file":"cache-health-monitor.d.ts","sourceRoot":"","sources":["../../../../src/core/plugin-cache/cache-health-monitor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI9C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IAEnB,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAEhB,mCAAmC;IACnC,OAAO,EAAE,OAAO,CAAC;IAEjB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IAEpB,gCAAgC;IAChC,cAAc,EAAE,MAAM,CAAC;IAEvB,0BAA0B;IAC1B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAE3B,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,eAAe,CAAuB;;IAM9C;;;;;;;;;;;;;;OAcG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAuB/C;;;;;;;;OAQG;IACH,OAAO,CAAC,2BAA2B;IA0BnC;;;;;;;;OAQG;IACH,kBAAkB,CAChB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAerC;;;;;;;;;;;;OAYG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAiG1E;;;;;;OAMG;IACH,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY;IAevE;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;CAS1B"}
@@ -16,17 +16,71 @@ export class CacheHealthMonitor {
16
16
  this.metadataManager = new CacheMetadataManager();
17
17
  }
18
18
  /**
19
- * Detect merge conflict markers in a file
19
+ * Detect actual merge conflict markers in a file
20
+ *
21
+ * A real merge conflict has:
22
+ * 1. All three markers present: <<<<<<<, =======, >>>>>>>
23
+ * 2. Markers appear at line start (possibly with leading whitespace)
24
+ * 3. Markers are NOT inside code fences (documentation examples)
25
+ *
26
+ * This avoids false positives from:
27
+ * - Documentation showing conflict examples (inside code blocks)
28
+ * - Comment dividers using repeated characters
20
29
  *
21
30
  * @param filePath - Absolute path to file
22
- * @returns True if merge conflict markers detected
31
+ * @returns True if real merge conflict markers detected
23
32
  */
24
33
  detectMergeConflicts(filePath) {
25
34
  if (!fs.existsSync(filePath)) {
26
35
  throw new Error(`File not found: ${filePath}`);
27
36
  }
28
37
  const content = fs.readFileSync(filePath, 'utf8');
29
- return CacheHealthMonitor.MERGE_CONFLICT_PATTERN.test(content);
38
+ // Check if all 3 marker types are present (required for a real conflict)
39
+ // <<<<<<< followed by space/branch name at line start
40
+ const hasOpenMarker = /^<{7}\s/m.test(content);
41
+ // ======= on its own line
42
+ const hasMidMarker = /^={7}$/m.test(content);
43
+ // >>>>>>> followed by space/branch name at line start
44
+ const hasCloseMarker = /^>{7}\s/m.test(content);
45
+ if (!hasOpenMarker || !hasMidMarker || !hasCloseMarker) {
46
+ return false; // Not all markers present = not a real conflict
47
+ }
48
+ // All 3 present - now check they're not inside code fences
49
+ return this.hasMarkersOutsideCodeFences(content);
50
+ }
51
+ /**
52
+ * Check if merge conflict markers exist outside of code fences
53
+ *
54
+ * Code fences (``` blocks) often contain documentation examples
55
+ * showing what conflicts look like. These should not be flagged.
56
+ *
57
+ * @param content - File content to analyze
58
+ * @returns True if conflict markers found outside code fences
59
+ */
60
+ hasMarkersOutsideCodeFences(content) {
61
+ const lines = content.split('\n');
62
+ let inCodeFence = false;
63
+ let foundOpenMarker = false;
64
+ let foundMidMarker = false;
65
+ let foundCloseMarker = false;
66
+ for (const line of lines) {
67
+ // Track code fence state (``` at line start, with optional language)
68
+ if (/^```/.test(line.trim())) {
69
+ inCodeFence = !inCodeFence;
70
+ continue;
71
+ }
72
+ // Only check for markers outside code fences
73
+ if (!inCodeFence) {
74
+ if (/^<{7}\s/.test(line))
75
+ foundOpenMarker = true;
76
+ if (/^={7}$/.test(line))
77
+ foundMidMarker = true;
78
+ if (/^>{7}\s/.test(line))
79
+ foundCloseMarker = true;
80
+ }
81
+ }
82
+ // Return true if all markers found outside code fences (real conflict)
83
+ return foundOpenMarker && foundMidMarker && foundCloseMarker;
30
84
  }
31
85
  /**
32
86
  * Validate bash script syntax
@@ -188,5 +242,4 @@ export class CacheHealthMonitor {
188
242
  return 'sw'; // Fallback
189
243
  }
190
244
  }
191
- CacheHealthMonitor.MERGE_CONFLICT_PATTERN = /<{7}|={7}|>{7}/;
192
245
  //# sourceMappingURL=cache-health-monitor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache-health-monitor.js","sourceRoot":"","sources":["../../../../src/core/plugin-cache/cache-health-monitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache-health-monitor.js","sourceRoot":"","sources":["../../../../src/core/plugin-cache/cache-health-monitor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specweave",
3
- "version": "1.0.106",
3
+ "version": "1.0.108",
4
4
  "description": "Spec-driven development framework for Claude Code. AI-native workflow with living documentation, intelligent agents, and multilingual support (9 languages). Enterprise-grade traceability with permanent specs and temporary increments.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -12,7 +12,7 @@ allowed-tools: ["Bash(${CLAUDE_PLUGIN_ROOT}/scripts/setup-auto.sh:*)"]
12
12
  Execute the setup script to initialize auto mode:
13
13
 
14
14
  ```!
15
- "${CLAUDE_PLUGIN_ROOT}/scripts/setup-auto.sh" $ARGUMENTS
15
+ "${CLAUDE_PLUGIN_ROOT}/scripts/setup-auto.sh" "$ARGUMENTS"
16
16
  ```
17
17
 
18
18
  Now work on the increment tasks. When you try to exit, the stop hook will check completion conditions and feed the next task back to you. Continue until all tasks are complete and quality gates pass.
@@ -106,9 +106,9 @@ if echo "$PROMPT" | grep -qE "^/sw:jobs($| )"; then
106
106
 
107
107
  # Execute command and get output
108
108
  if [[ -f "$SCRIPTS_DIR/read-jobs.sh" ]]; then
109
- OUTPUT=$(cd "$(pwd)" && bash "$SCRIPTS_DIR/read-jobs.sh" $ARGS 2>&1)
109
+ OUTPUT=$(cd "$(pwd)" && bash "$SCRIPTS_DIR/read-jobs.sh" "$ARGS" 2>&1)
110
110
  elif [[ -f "$SCRIPTS_DIR/jobs.js" ]] && command -v node >/dev/null 2>&1; then
111
- OUTPUT=$(cd "$(pwd)" && node "$SCRIPTS_DIR/jobs.js" $ARGS 2>&1)
111
+ OUTPUT=$(cd "$(pwd)" && node "$SCRIPTS_DIR/jobs.js" "$ARGS" 2>&1)
112
112
  else
113
113
  OUTPUT="❌ No jobs script available"
114
114
  fi
@@ -126,9 +126,9 @@ if echo "$PROMPT" | grep -qE "^/sw:progress($| )"; then
126
126
 
127
127
  # Execute command and get output
128
128
  if [[ -f "$SCRIPTS_DIR/read-progress.sh" ]]; then
129
- OUTPUT=$(cd "$(pwd)" && bash "$SCRIPTS_DIR/read-progress.sh" $ARGS 2>&1)
129
+ OUTPUT=$(cd "$(pwd)" && bash "$SCRIPTS_DIR/read-progress.sh" "$ARGS" 2>&1)
130
130
  elif [[ -f "$SCRIPTS_DIR/progress.js" ]] && command -v node >/dev/null 2>&1; then
131
- OUTPUT=$(cd "$(pwd)" && node "$SCRIPTS_DIR/progress.js" $ARGS 2>&1)
131
+ OUTPUT=$(cd "$(pwd)" && node "$SCRIPTS_DIR/progress.js" "$ARGS" 2>&1)
132
132
  else
133
133
  OUTPUT="❌ No progress script available"
134
134
  fi
@@ -146,9 +146,9 @@ if echo "$PROMPT" | grep -qE "^/sw:status($| )"; then
146
146
 
147
147
  # Execute command and get output
148
148
  if [[ -f "$SCRIPTS_DIR/read-status.sh" ]]; then
149
- OUTPUT=$(cd "$(pwd)" && bash "$SCRIPTS_DIR/read-status.sh" $ARGS 2>&1)
149
+ OUTPUT=$(cd "$(pwd)" && bash "$SCRIPTS_DIR/read-status.sh" "$ARGS" 2>&1)
150
150
  elif [[ -f "$SCRIPTS_DIR/status.js" ]] && command -v node >/dev/null 2>&1; then
151
- OUTPUT=$(cd "$(pwd)" && node "$SCRIPTS_DIR/status.js" $ARGS 2>&1)
151
+ OUTPUT=$(cd "$(pwd)" && node "$SCRIPTS_DIR/status.js" "$ARGS" 2>&1)
152
152
  else
153
153
  OUTPUT="❌ No status script available"
154
154
  fi
@@ -166,7 +166,7 @@ if echo "$PROMPT" | grep -qE "^/sw:workflow($| )"; then
166
166
 
167
167
  # Execute command and get output
168
168
  if [[ -f "$SCRIPTS_DIR/read-workflow.sh" ]]; then
169
- OUTPUT=$(cd "$(pwd)" && bash "$SCRIPTS_DIR/read-workflow.sh" $ARGS 2>&1)
169
+ OUTPUT=$(cd "$(pwd)" && bash "$SCRIPTS_DIR/read-workflow.sh" "$ARGS" 2>&1)
170
170
  else
171
171
  OUTPUT="❌ No workflow script available"
172
172
  fi
@@ -184,7 +184,7 @@ if echo "$PROMPT" | grep -qE "^/sw:costs($| )"; then
184
184
 
185
185
  # Execute command and get output
186
186
  if [[ -f "$SCRIPTS_DIR/read-costs.sh" ]]; then
187
- OUTPUT=$(cd "$(pwd)" && bash "$SCRIPTS_DIR/read-costs.sh" $ARGS 2>&1)
187
+ OUTPUT=$(cd "$(pwd)" && bash "$SCRIPTS_DIR/read-costs.sh" "$ARGS" 2>&1)
188
188
  else
189
189
  OUTPUT="❌ No costs script available"
190
190
  fi
@@ -202,7 +202,7 @@ if echo "$PROMPT" | grep -qE "^/sw:analytics($| )"; then
202
202
 
203
203
  # Execute command and get output
204
204
  if [[ -f "$SCRIPTS_DIR/read-analytics.sh" ]]; then
205
- OUTPUT=$(cd "$(pwd)" && bash "$SCRIPTS_DIR/read-analytics.sh" $ARGS 2>&1)
205
+ OUTPUT=$(cd "$(pwd)" && bash "$SCRIPTS_DIR/read-analytics.sh" "$ARGS" 2>&1)
206
206
  else
207
207
  OUTPUT="❌ No analytics script available"
208
208
  fi
@@ -75,7 +75,7 @@ allowed-tools: ["Bash(${CLAUDE_PLUGIN_ROOT}/scripts/read-jobs.sh)"]
75
75
  ---
76
76
 
77
77
  ```!
78
- bash "${CLAUDE_PLUGIN_ROOT}/scripts/read-jobs.sh" $ARGUMENTS
78
+ bash "${CLAUDE_PLUGIN_ROOT}/scripts/read-jobs.sh" "$ARGUMENTS"
79
79
  ```
80
80
  ```
81
81
 
@@ -129,7 +129,7 @@ To add a new instant command:
129
129
  ---
130
130
 
131
131
  ```!
132
- bash "${CLAUDE_PLUGIN_ROOT}/scripts/newcmd.sh" $ARGUMENTS
132
+ bash "${CLAUDE_PLUGIN_ROOT}/scripts/newcmd.sh" "$ARGUMENTS"
133
133
  ```
134
134
  ```
135
135
  4. (Optional) Add to hook dispatcher in `plugins/specweave/hooks/user-prompt-submit.sh`