specweave 1.0.109 → 1.0.111

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.
Files changed (149) hide show
  1. package/.claude-plugin/README.md +1 -1
  2. package/CLAUDE.md +42 -35
  3. package/bin/specweave.js +18 -72
  4. package/dist/src/cli/commands/auto-simple.d.ts +31 -0
  5. package/dist/src/cli/commands/auto-simple.d.ts.map +1 -0
  6. package/dist/src/cli/commands/auto-simple.js +218 -0
  7. package/dist/src/cli/commands/auto-simple.js.map +1 -0
  8. package/dist/src/cli/commands/auto-status.d.ts.map +1 -1
  9. package/dist/src/cli/commands/auto-status.js +28 -18
  10. package/dist/src/cli/commands/auto-status.js.map +1 -1
  11. package/dist/src/cli/commands/auto.d.ts.map +1 -1
  12. package/dist/src/cli/commands/auto.js +61 -32
  13. package/dist/src/cli/commands/auto.js.map +1 -1
  14. package/dist/src/cli/commands/cancel-auto.d.ts.map +1 -1
  15. package/dist/src/cli/commands/cancel-auto.js +28 -7
  16. package/dist/src/cli/commands/cancel-auto.js.map +1 -1
  17. package/dist/src/cli/commands/logs.d.ts +13 -0
  18. package/dist/src/cli/commands/logs.d.ts.map +1 -0
  19. package/dist/src/cli/commands/logs.js +155 -0
  20. package/dist/src/cli/commands/logs.js.map +1 -0
  21. package/dist/src/core/auto/index.d.ts +7 -11
  22. package/dist/src/core/auto/index.d.ts.map +1 -1
  23. package/dist/src/core/auto/index.js +9 -19
  24. package/dist/src/core/auto/index.js.map +1 -1
  25. package/dist/src/core/hooks/hook-health-tracker.d.ts +55 -0
  26. package/dist/src/core/hooks/hook-health-tracker.d.ts.map +1 -0
  27. package/dist/src/core/hooks/hook-health-tracker.js +164 -0
  28. package/dist/src/core/hooks/hook-health-tracker.js.map +1 -0
  29. package/dist/src/core/hooks/hook-logger.d.ts +87 -0
  30. package/dist/src/core/hooks/hook-logger.d.ts.map +1 -0
  31. package/dist/src/core/hooks/hook-logger.js +130 -0
  32. package/dist/src/core/hooks/hook-logger.js.map +1 -0
  33. package/dist/src/core/hooks/log-rotator.d.ts +55 -0
  34. package/dist/src/core/hooks/log-rotator.d.ts.map +1 -0
  35. package/dist/src/core/hooks/log-rotator.js +102 -0
  36. package/dist/src/core/hooks/log-rotator.js.map +1 -0
  37. package/dist/src/core/logging/prompt-logger.d.ts +3 -1
  38. package/dist/src/core/logging/prompt-logger.d.ts.map +1 -1
  39. package/dist/src/core/logging/prompt-logger.js +19 -10
  40. package/dist/src/core/logging/prompt-logger.js.map +1 -1
  41. package/dist/src/core/plugins/plugin-loader.d.ts +7 -0
  42. package/dist/src/core/plugins/plugin-loader.d.ts.map +1 -1
  43. package/dist/src/core/plugins/plugin-loader.js +35 -1
  44. package/dist/src/core/plugins/plugin-loader.js.map +1 -1
  45. package/dist/src/core/reflection/skill-reflection-manager.d.ts +5 -0
  46. package/dist/src/core/reflection/skill-reflection-manager.d.ts.map +1 -1
  47. package/dist/src/core/reflection/skill-reflection-manager.js +33 -1
  48. package/dist/src/core/reflection/skill-reflection-manager.js.map +1 -1
  49. package/dist/src/core/types/config.d.ts +23 -0
  50. package/dist/src/core/types/config.d.ts.map +1 -1
  51. package/dist/src/core/types/config.js.map +1 -1
  52. package/dist/src/examples/hello-world.d.ts +5 -0
  53. package/dist/src/examples/hello-world.d.ts.map +1 -0
  54. package/dist/src/examples/hello-world.js +7 -0
  55. package/dist/src/examples/hello-world.js.map +1 -0
  56. package/dist/src/utils/bash-sanitizer.d.ts +74 -0
  57. package/dist/src/utils/bash-sanitizer.d.ts.map +1 -0
  58. package/dist/src/utils/bash-sanitizer.js +179 -0
  59. package/dist/src/utils/bash-sanitizer.js.map +1 -0
  60. package/dist/src/utils/credential-masker.d.ts +118 -0
  61. package/dist/src/utils/credential-masker.d.ts.map +1 -0
  62. package/dist/src/utils/credential-masker.js +275 -0
  63. package/dist/src/utils/credential-masker.js.map +1 -0
  64. package/dist/src/utils/logger.d.ts +4 -0
  65. package/dist/src/utils/logger.d.ts.map +1 -1
  66. package/dist/src/utils/logger.js +78 -12
  67. package/dist/src/utils/logger.js.map +1 -1
  68. package/package.json +4 -2
  69. package/plugins/specweave/commands/auto.md +10 -4
  70. package/plugins/specweave/commands/do.md +55 -2
  71. package/plugins/specweave/commands/reflect.md +40 -9
  72. package/plugins/specweave/commands/sync-progress.md +2 -2
  73. package/plugins/specweave/hooks/stop-auto-simple.sh +155 -0
  74. package/plugins/specweave/hooks/stop-dispatcher.sh +2 -2
  75. package/plugins/specweave/hooks/v2/dispatchers/post-tool-use.sh +7 -0
  76. package/plugins/specweave/hooks/v2/guards/tdd-enforcement-guard.sh +68 -15
  77. package/plugins/specweave/lib/vendor/utils/logger.d.ts +4 -0
  78. package/plugins/specweave/lib/vendor/utils/logger.js +78 -12
  79. package/plugins/specweave/lib/vendor/utils/logger.js.map +1 -1
  80. package/plugins/specweave/scripts/setup-auto.sh +64 -40
  81. package/plugins/specweave/skills/SKILLS-INDEX.md +1 -2
  82. package/plugins/specweave/skills/detector/SKILL.md +1 -1
  83. package/plugins/specweave/skills/increment-planner/SKILL.md +32 -2
  84. package/plugins/specweave/skills/increment-planner/templates/spec-tdd-contract.md +33 -0
  85. package/plugins/specweave/skills/increment-planner/templates/tasks-tdd-single-project.md +172 -0
  86. package/plugins/specweave/skills/increment-work-router/SKILL.md +5 -7
  87. package/plugins/specweave/skills/infrastructure/SKILL.md +2 -2
  88. package/plugins/specweave/skills/reflect/SKILL.md +51 -7
  89. package/plugins/specweave/skills/service-connect/SKILL.md +17 -17
  90. package/plugins/specweave-github/commands/sync.md +2 -2
  91. package/plugins/specweave-infrastructure/agents/devops/AGENT.md +4 -4
  92. package/plugins/specweave-jira/skills/jira-sync/SKILL.md +4 -4
  93. package/src/templates/CLAUDE.md.template +9 -4
  94. package/dist/src/cli/commands/cancel-go.d.ts +0 -8
  95. package/dist/src/cli/commands/cancel-go.d.ts.map +0 -1
  96. package/dist/src/cli/commands/cancel-go.js +0 -57
  97. package/dist/src/cli/commands/cancel-go.js.map +0 -1
  98. package/dist/src/cli/commands/go-status.d.ts +0 -9
  99. package/dist/src/cli/commands/go-status.d.ts.map +0 -1
  100. package/dist/src/cli/commands/go-status.js +0 -96
  101. package/dist/src/cli/commands/go-status.js.map +0 -1
  102. package/dist/src/cli/commands/go.d.ts +0 -20
  103. package/dist/src/cli/commands/go.d.ts.map +0 -1
  104. package/dist/src/cli/commands/go.js +0 -64
  105. package/dist/src/cli/commands/go.js.map +0 -1
  106. package/dist/src/core/auto/circuit-breaker.d.ts +0 -146
  107. package/dist/src/core/auto/circuit-breaker.d.ts.map +0 -1
  108. package/dist/src/core/auto/circuit-breaker.js +0 -328
  109. package/dist/src/core/auto/circuit-breaker.js.map +0 -1
  110. package/dist/src/core/auto/cost-estimator.d.ts +0 -53
  111. package/dist/src/core/auto/cost-estimator.d.ts.map +0 -1
  112. package/dist/src/core/auto/cost-estimator.js +0 -150
  113. package/dist/src/core/auto/cost-estimator.js.map +0 -1
  114. package/dist/src/core/auto/human-gate.d.ts +0 -102
  115. package/dist/src/core/auto/human-gate.d.ts.map +0 -1
  116. package/dist/src/core/auto/human-gate.js +0 -295
  117. package/dist/src/core/auto/human-gate.js.map +0 -1
  118. package/dist/src/core/auto/increment-queue.d.ts +0 -100
  119. package/dist/src/core/auto/increment-queue.d.ts.map +0 -1
  120. package/dist/src/core/auto/increment-queue.js +0 -290
  121. package/dist/src/core/auto/increment-queue.js.map +0 -1
  122. package/dist/src/core/auto/report-generator.d.ts +0 -67
  123. package/dist/src/core/auto/report-generator.d.ts.map +0 -1
  124. package/dist/src/core/auto/report-generator.js +0 -287
  125. package/dist/src/core/auto/report-generator.js.map +0 -1
  126. package/dist/src/core/auto/session-state.d.ts +0 -98
  127. package/dist/src/core/auto/session-state.d.ts.map +0 -1
  128. package/dist/src/core/auto/session-state.js +0 -296
  129. package/dist/src/core/auto/session-state.js.map +0 -1
  130. package/dist/src/core/auto/sync-checkpoint.d.ts +0 -106
  131. package/dist/src/core/auto/sync-checkpoint.d.ts.map +0 -1
  132. package/dist/src/core/auto/sync-checkpoint.js +0 -258
  133. package/dist/src/core/auto/sync-checkpoint.js.map +0 -1
  134. package/dist/src/core/auto/test-gate.d.ts +0 -98
  135. package/dist/src/core/auto/test-gate.d.ts.map +0 -1
  136. package/dist/src/core/auto/test-gate.js +0 -258
  137. package/dist/src/core/auto/test-gate.js.map +0 -1
  138. package/plugins/specweave/commands/cancel-go.md +0 -108
  139. package/plugins/specweave/commands/go-status.md +0 -119
  140. package/plugins/specweave/commands/go.md +0 -504
  141. package/plugins/specweave/hooks/stop-go.sh +0 -251
  142. package/plugins/specweave/scripts/setup-go.sh +0 -290
  143. package/plugins/specweave/skills/project-kickstarter/MEMORY.md +0 -8
  144. package/plugins/specweave/skills/project-kickstarter/SKILL.md +0 -372
  145. package/plugins/specweave/skills/project-kickstarter/test-cases/test-1-high-confidence-full-product.yaml +0 -52
  146. package/plugins/specweave/skills/project-kickstarter/test-cases/test-2-medium-confidence-partial.yaml +0 -34
  147. package/plugins/specweave/skills/project-kickstarter/test-cases/test-3-low-confidence-technical-question.yaml +0 -34
  148. package/plugins/specweave/skills/project-kickstarter/test-cases/test-4-opt-out-explicit.yaml +0 -41
  149. /package/plugins/specweave/hooks/{stop-auto.sh → stop-auto-legacy.sh} +0 -0
@@ -150,13 +150,13 @@ SpecWeave's marketplace.json follows Claude's official schema format. Here's the
150
150
 
151
151
  **Skills**:
152
152
  - `increment-planner` - PM-led planning workflow
153
+ - `increment-work-router` - Smart work continuation
153
154
  - `spec-generator` - Specification creation
154
155
  - `context-loader` - Context management
155
156
  - `brownfield-analyzer` - Existing project analysis
156
157
  - `brownfield-onboarder` - Onboard existing docs
157
158
  - `increment-quality-judge` - Quality assessment
158
159
  - `context-optimizer` - Context optimization
159
- - `project-kickstarter` - New project setup
160
160
 
161
161
  **Agents**:
162
162
  - `pm` - Product Manager
package/CLAUDE.md CHANGED
@@ -1,10 +1,10 @@
1
- <!-- SW:META template="claude" version="1.0.108" 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.110" 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.108" -->
3
+ <!-- SW:SECTION:header version="1.0.110" -->
4
4
  **Framework**: SpecWeave | **Truth**: `spec.md` + `tasks.md`
5
5
  <!-- SW:END:header -->
6
6
 
7
- <!-- SW:SECTION:start version="1.0.108" -->
7
+ <!-- SW:SECTION:start version="1.0.110" -->
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.108" -->
17
+ <!-- SW:SECTION:autodetect version="1.0.110" -->
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.108" -->
27
+ <!-- SW:SECTION:metarule version="1.0.110" -->
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.108" -->
38
+ <!-- SW:SECTION:rules version="1.0.110" -->
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.108" -->
51
+ <!-- SW:SECTION:workflow version="1.0.110" -->
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.108" -->
71
+ <!-- SW:SECTION:reflect version="1.0.110" -->
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.108" -->
115
+ <!-- SW:SECTION:context version="1.0.110" -->
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.108" -->
135
+ <!-- SW:SECTION:lsp version="1.0.110" -->
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.108" -->
152
+ <!-- SW:SECTION:structure version="1.0.110" -->
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.108" -->
222
+ <!-- SW:SECTION:taskformat version="1.0.110" -->
223
223
  ## Task Format
224
224
 
225
225
  ```markdown
@@ -229,18 +229,21 @@ my-project/
229
229
  ```
230
230
  <!-- SW:END:taskformat -->
231
231
 
232
- <!-- SW:SECTION:secrets version="1.0.108" -->
232
+ <!-- SW:SECTION:secrets version="1.0.110" -->
233
233
  ## Secrets Check
234
234
 
235
235
  **BEFORE CLI tools**: Check existing config first!
236
236
  ```bash
237
- grep -E "(GITHUB_TOKEN|JIRA_|ADO_)" .env 2>/dev/null
237
+ # Check if credentials EXIST (never display values!)
238
+ grep -qE "(GITHUB_TOKEN|JIRA_|ADO_)" .env 2>/dev/null && echo "Credentials found in .env"
238
239
  cat .specweave/config.json | grep -A5 '"sync"'
239
240
  gh auth status
240
241
  ```
242
+
243
+ **SECURITY**: NEVER use `grep TOKEN .env` without `-q` flag - it exposes credentials in terminal!
241
244
  <!-- SW:END:secrets -->
242
245
 
243
- <!-- SW:SECTION:syncing version="1.0.108" -->
246
+ <!-- SW:SECTION:syncing version="1.0.110" -->
244
247
  ## External Sync (GitHub/JIRA/ADO)
245
248
 
246
249
  **After increment creation**: Run `/sw-github:sync {id}` to create issues!
@@ -265,10 +268,10 @@ Living docs sync ≠ External sync. They are separate:
265
268
  }
266
269
  ```
267
270
 
268
- **Verify tokens**: `grep GITHUB_TOKEN .env` | `gh auth status`
271
+ **Verify tokens**: `grep -q GITHUB_TOKEN .env && echo "Token configured"` | `gh auth status`
269
272
  <!-- SW:END:syncing -->
270
273
 
271
- <!-- SW:SECTION:mapping version="1.0.108" -->
274
+ <!-- SW:SECTION:mapping version="1.0.110" -->
272
275
  ## GitHub Mapping
273
276
 
274
277
  | SpecWeave | GitHub |
@@ -278,7 +281,7 @@ Living docs sync ≠ External sync. They are separate:
278
281
  | Task T-XXX | Checkbox |
279
282
  <!-- SW:END:mapping -->
280
283
 
281
- <!-- SW:SECTION:testing version="1.0.108" -->
284
+ <!-- SW:SECTION:testing version="1.0.110" -->
282
285
  ## Testing
283
286
 
284
287
  BDD in tasks.md | Unit >80% | `.test.ts` (Vitest)
@@ -290,7 +293,7 @@ vi.mock('fs', () => ({ readFile: vi.fn() }));
290
293
  ```
291
294
  <!-- SW:END:testing -->
292
295
 
293
- <!-- SW:SECTION:api version="1.0.108" -->
296
+ <!-- SW:SECTION:api version="1.0.110" -->
294
297
  ## API Development (OpenAPI-First)
295
298
 
296
299
  **For API projects only.** OpenAPI = source of truth → Postman derived from it.
@@ -309,13 +312,13 @@ vi.mock('fs', () => ({ readFile: vi.fn() }));
309
312
  **Import**: Postman → Import collection + env → Fill secrets → Select env
310
313
  <!-- SW:END:api -->
311
314
 
312
- <!-- SW:SECTION:limits version="1.0.108" -->
315
+ <!-- SW:SECTION:limits version="1.0.110" -->
313
316
  ## Limits
314
317
 
315
318
  **Max 1500 lines/file** — extract before adding
316
319
  <!-- SW:END:limits -->
317
320
 
318
- <!-- SW:SECTION:troubleshooting version="1.0.108" -->
321
+ <!-- SW:SECTION:troubleshooting version="1.0.110" -->
319
322
  ## Troubleshooting
320
323
 
321
324
  | Issue | Fix |
@@ -335,7 +338,7 @@ vi.mock('fs', () => ({ readFile: vi.fn() }));
335
338
  | Path patterns not working | `//path` = absolute, `/path` = relative to settings file, `additionalDirectories` for explicit working dirs |
336
339
  <!-- SW:END:troubleshooting -->
337
340
 
338
- <!-- SW:SECTION:principles version="1.0.108" -->
341
+ <!-- SW:SECTION:principles version="1.0.110" -->
339
342
  ## Principles
340
343
 
341
344
  1. **Spec-first**: `/sw:increment` before coding
@@ -345,7 +348,7 @@ vi.mock('fs', () => ({ readFile: vi.fn() }));
345
348
  5. **Clean**: All files in increment folders
346
349
  <!-- SW:END:principles -->
347
350
 
348
- <!-- SW:SECTION:linking version="1.0.108" -->
351
+ <!-- SW:SECTION:linking version="1.0.110" -->
349
352
  ## Bidirectional Linking
350
353
 
351
354
  Tasks ↔ User Stories auto-linked via AC-IDs: `AC-US1-01` → `US-001`
@@ -353,7 +356,7 @@ Tasks ↔ User Stories auto-linked via AC-IDs: `AC-US1-01` → `US-001`
353
356
  Task format: `**AC**: AC-US1-01, AC-US1-02` (CRITICAL for linking)
354
357
  <!-- SW:END:linking -->
355
358
 
356
- <!-- SW:SECTION:mcp version="1.0.108" -->
359
+ <!-- SW:SECTION:mcp version="1.0.110" -->
357
360
  ## External Service Connection
358
361
 
359
362
  **Priority**: MCP Server → REST API → CLI → Direct Connection
@@ -372,12 +375,13 @@ wrangler login && vercel login && supabase login
372
375
 
373
376
  **Check credentials before ops**:
374
377
  ```bash
375
- grep -E "SUPABASE_|DATABASE_URL|CF_API" .env 2>/dev/null
378
+ # Check presence only (never display values!)
379
+ grep -qE "SUPABASE_|DATABASE_URL|CF_API" .env 2>/dev/null && echo "Credentials found"
376
380
  wrangler whoami 2>/dev/null
377
381
  ```
378
382
  <!-- SW:END:mcp -->
379
383
 
380
- <!-- SW:SECTION:autoexecute version="1.0.108" -->
384
+ <!-- SW:SECTION:autoexecute version="1.0.110" -->
381
385
  ## Auto-Execute Rule
382
386
 
383
387
  **NEVER** output "Manual Step Required" when credentials exist. **EXECUTE DIRECTLY.**
@@ -386,12 +390,13 @@ wrangler whoami 2>/dev/null
386
390
 
387
391
  **Check before ops**:
388
392
  ```bash
389
- grep -E "(SUPABASE_|DATABASE_URL|CF_API_|GITHUB_TOKEN)" .env 2>/dev/null
393
+ # Check presence only (never display credential values!)
394
+ grep -qE "(SUPABASE_|DATABASE_URL|CF_API_|GITHUB_TOKEN)" .env 2>/dev/null && echo "Credentials configured"
390
395
  wrangler whoami 2>/dev/null && gh auth status 2>/dev/null
391
396
  ```
392
397
  <!-- SW:END:autoexecute -->
393
398
 
394
- <!-- SW:SECTION:auto version="1.0.108" -->
399
+ <!-- SW:SECTION:auto version="1.0.110" -->
395
400
  ## Auto Mode (Autonomous Execution)
396
401
 
397
402
  **Continuous execution until all tasks complete.**
@@ -468,7 +473,7 @@ wrangler whoami 2>/dev/null && gh auth status 2>/dev/null
468
473
  **Circuit Breaker**: External API fails 3x? Queue & continue
469
474
  <!-- SW:END:auto -->
470
475
 
471
- <!-- SW:SECTION:docs version="1.0.108" -->
476
+ <!-- SW:SECTION:docs version="1.0.110" -->
472
477
  ## Docs
473
478
 
474
479
  [spec-weave.com](https://spec-weave.com) | `.specweave/docs/internal/`
@@ -774,8 +779,8 @@ Task({
774
779
 
775
780
  1. **Check `.env` file** for tokens/credentials:
776
781
  ```bash
777
- # Look for relevant tokens before running CLI commands
778
- grep -E "(GITHUB_TOKEN|JIRA_|AZURE_|ADO_)" .env 2>/dev/null
782
+ # Look for relevant tokens before running CLI commands (presence only!)
783
+ grep -qE "(GITHUB_TOKEN|JIRA_|AZURE_|ADO_)" .env 2>/dev/null && echo "Credentials found"
779
784
  ```
780
785
 
781
786
  2. **Check `.specweave/config.json`** for service configuration:
@@ -794,11 +799,13 @@ Task({
794
799
  # GitHub - check if already authenticated
795
800
  gh auth status
796
801
 
797
- # JIRA - check configured domain
798
- grep JIRA .env .specweave/config.json 2>/dev/null
802
+ # JIRA - check configured domain (presence only - never display values!)
803
+ grep -q JIRA .env && echo "JIRA config in .env"
804
+ cat .specweave/config.json | grep -A5 '"jira"'
799
805
 
800
- # Azure DevOps - check org/project
801
- grep -E "(ADO_|AZURE_DEVOPS)" .env .specweave/config.json 2>/dev/null
806
+ # Azure DevOps - check org/project (presence only!)
807
+ grep -qE "(ADO_|AZURE_DEVOPS)" .env && echo "ADO config in .env"
808
+ cat .specweave/config.json | grep -A5 '"ado"'
802
809
  ```
803
810
 
804
811
  **Rule**: NEVER assume CLI tools are unconfigured. Check first, then use existing credentials.
package/bin/specweave.js CHANGED
@@ -344,6 +344,24 @@ program
344
344
  await statusCommand(options);
345
345
  });
346
346
 
347
+ // Logs command - View hook execution logs
348
+ program
349
+ .command('logs')
350
+ .description('View hook execution logs')
351
+ .option('--tail <number>', 'Number of log entries to show (default: 50)', '50')
352
+ .option('--hook <name>', 'Filter by hook name')
353
+ .option('--format <type>', 'Output format: json or table (default: table)', 'table')
354
+ .option('--follow', 'Follow new log entries (not yet implemented)')
355
+ .action(async (options) => {
356
+ const { logsCommand } = await import('../dist/src/cli/commands/logs.js');
357
+ await logsCommand({
358
+ tail: parseInt(options.tail, 10),
359
+ hook: options.hook,
360
+ format: options.format,
361
+ follow: options.follow
362
+ });
363
+ });
364
+
347
365
  // Status line command - Display current increment progress
348
366
  program
349
367
  .command('status-line')
@@ -485,78 +503,6 @@ program
485
503
  await cancelCmd.parseAsync(args, { from: 'user' });
486
504
  });
487
505
 
488
- // Go mode commands - Pure Ralph Wiggum pattern (simpler than auto mode)
489
- program
490
- .command('go <prompt>')
491
- .description('Start go session (Ralph Wiggum pattern) - simple autonomous iteration')
492
- .option('--max-iterations <n>', 'Maximum iterations (safety net)', '100')
493
- .option('--completion-promise <text>', 'Exact phrase that signals completion')
494
- .option('--build', 'Build must pass before completion')
495
- .option('--tests', 'Tests must pass before completion')
496
- .option('--e2e', 'E2E tests must pass before completion')
497
- .option('--lint', 'Linting must pass before completion')
498
- .option('--types', 'Type-checking must pass before completion')
499
- .option('--dry-run', 'Preview without starting')
500
- .action(async (prompt, options) => {
501
- const path = await import('path');
502
- const fs = await import('fs');
503
- const projectPath = process.cwd();
504
-
505
- // Check if SpecWeave is initialized
506
- const specweavePath = path.join(projectPath, '.specweave');
507
- if (!fs.existsSync(specweavePath)) {
508
- console.log(chalk.yellow('No SpecWeave project found in current directory.'));
509
- console.log(chalk.gray('Run `specweave init` to initialize a project.'));
510
- return;
511
- }
512
-
513
- try {
514
- const { handleGoCommand } = await import('../dist/src/cli/commands/go.js');
515
- await handleGoCommand(projectPath, prompt, options);
516
- } catch (error) {
517
- const errorMessage = error instanceof Error ? error.message : String(error);
518
- console.error(chalk.red(`Error: ${errorMessage}`));
519
- process.exit(1);
520
- }
521
- });
522
-
523
- program
524
- .command('go-status')
525
- .description('Check go session status')
526
- .option('--verbose', 'Show detailed information')
527
- .option('--json', 'Output as JSON')
528
- .action(async (options) => {
529
- const path = await import('path');
530
- const projectPath = process.cwd();
531
-
532
- try {
533
- const { handleGoStatusCommand } = await import('../dist/src/cli/commands/go-status.js');
534
- await handleGoStatusCommand(projectPath, options);
535
- } catch (error) {
536
- const errorMessage = error instanceof Error ? error.message : String(error);
537
- console.error(chalk.red(`Error: ${errorMessage}`));
538
- process.exit(1);
539
- }
540
- });
541
-
542
- program
543
- .command('cancel-go')
544
- .description('Cancel running go session')
545
- .option('--force', 'Force cancel without confirmation')
546
- .action(async (options) => {
547
- const path = await import('path');
548
- const projectPath = process.cwd();
549
-
550
- try {
551
- const { handleCancelGoCommand } = await import('../dist/src/cli/commands/cancel-go.js');
552
- await handleCancelGoCommand(projectPath, options);
553
- } catch (error) {
554
- const errorMessage = error instanceof Error ? error.message : String(error);
555
- console.error(chalk.red(`Error: ${errorMessage}`));
556
- process.exit(1);
557
- }
558
- });
559
-
560
506
  // Update instructions command - Smart merge CLAUDE.md/AGENTS.md
561
507
  program
562
508
  .command('update-instructions')
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Auto Mode CLI Command (Simplified)
3
+ *
4
+ * Philosophy: Trust the framework!
5
+ * - No session state (increments ARE the state)
6
+ * - No manual sync (hooks handle it)
7
+ * - No quality gates here (belongs in /sw:done)
8
+ * - Just: find active increments, start working, stop hook blocks until done
9
+ *
10
+ * Usage:
11
+ * specweave auto [INCREMENT_IDS...] [OPTIONS]
12
+ * specweave auto # Work on active increments
13
+ * specweave auto 0001 0002 # Work on specific increments
14
+ * specweave auto --all-backlog # Work on all backlog increments
15
+ */
16
+ import { Command } from 'commander';
17
+ export interface AutoCommandOptions {
18
+ allBacklog?: boolean;
19
+ noIncrement?: boolean;
20
+ noInc?: boolean;
21
+ prompt?: string;
22
+ yes?: boolean;
23
+ y?: boolean;
24
+ dryRun?: boolean;
25
+ }
26
+ export declare function createAutoCommand(): Command;
27
+ /**
28
+ * Main auto command handler (simplified)
29
+ */
30
+ export declare function handleAutoCommand(projectPath: string, incrementIds: string[], options: AutoCommandOptions): Promise<void>;
31
+ //# sourceMappingURL=auto-simple.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-simple.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/auto-simple.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,CAAC,CAAC,EAAE,OAAO,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CA8B3C;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAuEf"}
@@ -0,0 +1,218 @@
1
+ /**
2
+ * Auto Mode CLI Command (Simplified)
3
+ *
4
+ * Philosophy: Trust the framework!
5
+ * - No session state (increments ARE the state)
6
+ * - No manual sync (hooks handle it)
7
+ * - No quality gates here (belongs in /sw:done)
8
+ * - Just: find active increments, start working, stop hook blocks until done
9
+ *
10
+ * Usage:
11
+ * specweave auto [INCREMENT_IDS...] [OPTIONS]
12
+ * specweave auto # Work on active increments
13
+ * specweave auto 0001 0002 # Work on specific increments
14
+ * specweave auto --all-backlog # Work on all backlog increments
15
+ */
16
+ import * as path from 'path';
17
+ import * as fs from 'fs';
18
+ import chalk from 'chalk';
19
+ import { Command } from 'commander';
20
+ import { isSpecWeaveInitialized } from '../../utils/fs-native.js';
21
+ export function createAutoCommand() {
22
+ const cmd = new Command('auto')
23
+ .description('Start autonomous execution (simplified - trusts framework hooks)')
24
+ .argument('[incrementIds...]', 'Increment IDs to process')
25
+ .option('--all-backlog', 'Process all backlog/planned increments')
26
+ .option('--no-increment', 'Require existing increments (skip auto-creation)')
27
+ .option('--no-inc', 'Alias for --no-increment')
28
+ .option('--prompt <text>', 'Analyze prompt and create increments')
29
+ .option('--yes', 'Auto-approve increment plan')
30
+ .option('-y', 'Alias for --yes')
31
+ .option('--dry-run', 'Preview without starting')
32
+ .action(async (incrementIds, options) => {
33
+ const projectPath = process.cwd();
34
+ if (!isSpecWeaveInitialized(projectPath)) {
35
+ console.log(chalk.yellow('No SpecWeave project found in current directory.'));
36
+ console.log(chalk.gray('Run `specweave init` to initialize a project.'));
37
+ return;
38
+ }
39
+ try {
40
+ await handleAutoCommand(projectPath, incrementIds, options);
41
+ }
42
+ catch (error) {
43
+ const errorMessage = error instanceof Error ? error.message : String(error);
44
+ console.error(chalk.red(`Error: ${errorMessage}`));
45
+ process.exit(1);
46
+ }
47
+ });
48
+ return cmd;
49
+ }
50
+ /**
51
+ * Main auto command handler (simplified)
52
+ */
53
+ export async function handleAutoCommand(projectPath, incrementIds, options) {
54
+ const incrementsDir = path.join(projectPath, '.specweave/increments');
55
+ const stateDir = path.join(projectPath, '.specweave/state');
56
+ // Parse options
57
+ const allBacklog = options.allBacklog || false;
58
+ const noIncrement = options.noIncrement || options.noInc || false;
59
+ const prompt = options.prompt;
60
+ const autoApprove = options.yes || options.y || false;
61
+ const dryRun = options.dryRun || false;
62
+ // Handle --prompt (intelligent chunking)
63
+ if (prompt) {
64
+ await handlePromptChunking(projectPath, prompt, autoApprove, stateDir);
65
+ return;
66
+ }
67
+ // Build increment list
68
+ let finalIncrementIds = [...incrementIds];
69
+ if (allBacklog) {
70
+ finalIncrementIds = findIncrementsByStatus(incrementsDir, ['backlog', 'planned']);
71
+ if (finalIncrementIds.length === 0) {
72
+ console.log(chalk.yellow('⚠️ No backlog or planned increments found'));
73
+ return;
74
+ }
75
+ }
76
+ // If no increments specified, find active ones
77
+ if (finalIncrementIds.length === 0) {
78
+ finalIncrementIds = findIncrementsByStatus(incrementsDir, ['active', 'in-progress']);
79
+ }
80
+ // Still no increments?
81
+ if (finalIncrementIds.length === 0) {
82
+ if (noIncrement) {
83
+ console.log(chalk.red('❌ No increments specified and no active increments found'));
84
+ console.log('');
85
+ console.log('Usage: specweave auto [INCREMENT_IDS...]');
86
+ console.log(' specweave auto --all-backlog');
87
+ process.exit(1);
88
+ }
89
+ else {
90
+ // Signal to Claude: create increments as needed
91
+ console.log(chalk.blue('🤔 No increments found. Auto mode will analyze context and create increments.'));
92
+ console.log('');
93
+ console.log('💡 The LLM will:');
94
+ console.log(' 1. Analyze user prompt and project context');
95
+ console.log(' 2. Match existing increments OR create new ones');
96
+ console.log(' 3. Start autonomous execution');
97
+ console.log('');
98
+ // Create marker for LLM
99
+ const markerPath = path.join(stateDir, 'auto-needs-increment.json');
100
+ fs.writeFileSync(markerPath, JSON.stringify({ needsIncrementCreation: true, timestamp: new Date().toISOString() }, null, 2), 'utf-8');
101
+ process.exit(2); // Special exit code: increment creation needed
102
+ }
103
+ }
104
+ // Dry run preview
105
+ if (dryRun) {
106
+ printDryRunPreview(finalIncrementIds);
107
+ return;
108
+ }
109
+ // Start autonomous execution
110
+ printStartMessage(finalIncrementIds);
111
+ }
112
+ /**
113
+ * Handle --prompt option (intelligent chunking)
114
+ */
115
+ async function handlePromptChunking(projectPath, prompt, autoApprove, stateDir) {
116
+ console.log(chalk.blue('🧠 Analyzing prompt for intelligent chunking...'));
117
+ console.log('');
118
+ const marker = {
119
+ needsIncrementCreation: true,
120
+ fromChunking: true,
121
+ autoApproved: autoApprove,
122
+ prompt,
123
+ timestamp: new Date().toISOString(),
124
+ };
125
+ const markerPath = path.join(stateDir, 'auto-needs-increment.json');
126
+ fs.writeFileSync(markerPath, JSON.stringify(marker, null, 2), 'utf-8');
127
+ console.log(chalk.yellow('📋 Prompt analysis required - LLM will handle chunking'));
128
+ console.log('');
129
+ if (autoApprove) {
130
+ console.log(chalk.green('✅ Plan will be auto-approved'));
131
+ }
132
+ else {
133
+ console.log('💡 Review the plan and approve before execution');
134
+ }
135
+ process.exit(2);
136
+ }
137
+ /**
138
+ * Find increments by status (filesystem-based, no session state!)
139
+ */
140
+ function findIncrementsByStatus(incrementsDir, statuses) {
141
+ if (!fs.existsSync(incrementsDir)) {
142
+ return [];
143
+ }
144
+ const increments = [];
145
+ const entries = fs.readdirSync(incrementsDir);
146
+ for (const entry of entries) {
147
+ // Skip non-increment directories
148
+ if (!/^[0-9]{4}-/.test(entry))
149
+ continue;
150
+ const metaPath = path.join(incrementsDir, entry, 'metadata.json');
151
+ if (!fs.existsSync(metaPath))
152
+ continue;
153
+ try {
154
+ const metadata = JSON.parse(fs.readFileSync(metaPath, 'utf-8'));
155
+ if (statuses.includes(metadata.status)) {
156
+ increments.push(entry);
157
+ }
158
+ }
159
+ catch (error) {
160
+ // Skip invalid metadata
161
+ continue;
162
+ }
163
+ }
164
+ return increments;
165
+ }
166
+ /**
167
+ * Print dry run preview
168
+ */
169
+ function printDryRunPreview(incrementIds) {
170
+ console.log(chalk.blue('🔍 Dry Run - Preview'));
171
+ console.log('');
172
+ console.log('Active Increments:');
173
+ for (const incId of incrementIds) {
174
+ console.log(' • ' + chalk.cyan(incId));
175
+ }
176
+ console.log('');
177
+ console.log(chalk.gray('Run without --dry-run to start autonomous execution.'));
178
+ }
179
+ /**
180
+ * Print start message
181
+ */
182
+ function printStartMessage(incrementIds) {
183
+ console.log(chalk.green('🚀 Auto Mode Started'));
184
+ console.log('');
185
+ console.log(`Active Increments (${incrementIds.length}):`);
186
+ for (const incId of incrementIds) {
187
+ console.log(' • ' + chalk.cyan(incId));
188
+ }
189
+ console.log('');
190
+ console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
191
+ console.log(chalk.yellow('📋 HOW AUTO MODE WORKS:'));
192
+ console.log('');
193
+ console.log('1. Stop hook checks for active increments');
194
+ console.log('2. If active increments exist → blocks exit, continues working');
195
+ console.log('3. Execute /sw:do to work on tasks');
196
+ console.log('4. When tasks complete → run /sw:done for validation');
197
+ console.log('5. If /sw:done passes → increment completes, move to next');
198
+ console.log('6. If /sw:done fails → keep fixing, try again');
199
+ console.log('7. When all increments complete → stop hook approves exit');
200
+ console.log('');
201
+ console.log(chalk.yellow('🎯 FRAMEWORK HANDLES:'));
202
+ console.log(' • Task updates → Auto-sync to GitHub/JIRA/ADO (via hooks)');
203
+ console.log(' • Spec updates → Auto-update ACs (via hooks)');
204
+ console.log(' • Status transitions → Auto-transition when tasks complete (via hooks)');
205
+ console.log(' • Quality validation → Tests, build, coverage (/sw:done)');
206
+ console.log(' • Living docs → Auto-sync on completion (via hooks)');
207
+ console.log('');
208
+ console.log(chalk.yellow('⚡ STOP CRITERIA:'));
209
+ console.log(' • All active increments completed (validated by /sw:done)');
210
+ console.log(' • Tests pass (enforced by /sw:done)');
211
+ console.log(' • Build succeeds (enforced by /sw:done)');
212
+ console.log(' • User runs specweave cancel-auto');
213
+ console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
214
+ console.log('');
215
+ console.log(chalk.gray('💡 Tip: The stop hook will keep you working until done. Trust the framework!'));
216
+ console.log('');
217
+ }
218
+ //# sourceMappingURL=auto-simple.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-simple.js","sourceRoot":"","sources":["../../../../src/cli/commands/auto-simple.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"auto-status.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/auto-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,uBAAuB,IAAI,OAAO,CA0BjD"}
1
+ {"version":3,"file":"auto-status.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/auto-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,uBAAuB,IAAI,OAAO,CA0BjD"}