specweave 1.0.100 → 1.0.102

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 (60) hide show
  1. package/CLAUDE.md +25 -25
  2. package/README.md +61 -30
  3. package/bin/install-skills.sh +57 -3
  4. package/dist/src/cli/commands/sync-living-docs-acs.d.ts +15 -0
  5. package/dist/src/cli/commands/sync-living-docs-acs.d.ts.map +1 -0
  6. package/dist/src/cli/commands/sync-living-docs-acs.js +109 -0
  7. package/dist/src/cli/commands/sync-living-docs-acs.js.map +1 -0
  8. package/dist/src/sync/spec-to-living-docs-sync.d.ts +91 -0
  9. package/dist/src/sync/spec-to-living-docs-sync.d.ts.map +1 -0
  10. package/dist/src/sync/spec-to-living-docs-sync.js +324 -0
  11. package/dist/src/sync/spec-to-living-docs-sync.js.map +1 -0
  12. package/package.json +1 -1
  13. package/plugins/specweave/hooks/v2/guards/task-ac-sync-guard.sh +5 -6
  14. package/plugins/specweave/lib/hooks/update-ac-status.js +24 -0
  15. package/plugins/specweave/lib/hooks/update-ac-status.ts +46 -0
  16. package/plugins/specweave/skills/architect/MEMORY.md +8 -0
  17. package/plugins/specweave/skills/archive-increments/MEMORY.md +8 -0
  18. package/plugins/specweave/skills/brownfield-analyzer/MEMORY.md +8 -0
  19. package/plugins/specweave/skills/brownfield-onboarder/MEMORY.md +8 -0
  20. package/plugins/specweave/skills/code-reviewer/MEMORY.md +8 -0
  21. package/plugins/specweave/skills/code-standards-analyzer/MEMORY.md +8 -0
  22. package/plugins/specweave/skills/code-standards-detective/MEMORY.md +8 -0
  23. package/plugins/specweave/skills/compliance-architecture/MEMORY.md +8 -0
  24. package/plugins/specweave/skills/context-loader/MEMORY.md +8 -0
  25. package/plugins/specweave/skills/context-optimizer/MEMORY.md +8 -0
  26. package/plugins/specweave/skills/detector/MEMORY.md +8 -0
  27. package/plugins/specweave/skills/docs-updater/MEMORY.md +8 -0
  28. package/plugins/specweave/skills/docs-writer/MEMORY.md +8 -0
  29. package/plugins/specweave/skills/external-sync-wizard/MEMORY.md +8 -0
  30. package/plugins/specweave/skills/framework/MEMORY.md +8 -0
  31. package/plugins/specweave/skills/increment-planner/MEMORY.md +8 -0
  32. package/plugins/specweave/skills/increment-quality-judge-v2/MEMORY.md +8 -0
  33. package/plugins/specweave/skills/increment-work-router/MEMORY.md +8 -0
  34. package/plugins/specweave/skills/infrastructure/MEMORY.md +8 -0
  35. package/plugins/specweave/skills/living-docs-navigator/MEMORY.md +8 -0
  36. package/plugins/specweave/skills/multi-project-spec-mapper/MEMORY.md +8 -0
  37. package/plugins/specweave/skills/performance/MEMORY.md +8 -0
  38. package/plugins/specweave/skills/plugin-validator/MEMORY.md +8 -0
  39. package/plugins/specweave/skills/pm/MEMORY.md +8 -0
  40. package/plugins/specweave/skills/pm-closure-validation/MEMORY.md +8 -0
  41. package/plugins/specweave/skills/progress-sync/MEMORY.md +8 -0
  42. package/plugins/specweave/skills/project-kickstarter/MEMORY.md +8 -0
  43. package/plugins/specweave/skills/qa-lead/MEMORY.md +8 -0
  44. package/plugins/specweave/skills/reflect/MEMORY.md +8 -0
  45. package/plugins/specweave/skills/reflective-reviewer/MEMORY.md +8 -0
  46. package/plugins/specweave/skills/roadmap-planner/MEMORY.md +8 -0
  47. package/plugins/specweave/skills/role-orchestrator/MEMORY.md +8 -0
  48. package/plugins/specweave/skills/security/MEMORY.md +8 -0
  49. package/plugins/specweave/skills/serverless-recommender/MEMORY.md +8 -0
  50. package/plugins/specweave/skills/service-connect/MEMORY.md +8 -0
  51. package/plugins/specweave/skills/smart-reopen-detector/MEMORY.md +8 -0
  52. package/plugins/specweave/skills/spec-generator/MEMORY.md +8 -0
  53. package/plugins/specweave/skills/tdd-orchestrator/MEMORY.md +8 -0
  54. package/plugins/specweave/skills/tdd-workflow/MEMORY.md +8 -0
  55. package/plugins/specweave/skills/tech-lead/MEMORY.md +8 -0
  56. package/plugins/specweave/skills/test-aware-planner/MEMORY.md +8 -0
  57. package/plugins/specweave/skills/translator/MEMORY.md +8 -0
  58. package/plugins/specweave/skills/umbrella-repo-detector/MEMORY.md +8 -0
  59. package/plugins/specweave/skills/update-instructions/MEMORY.md +8 -0
  60. package/src/templates/MEMORY-template.md +9 -0
package/CLAUDE.md CHANGED
@@ -1,10 +1,10 @@
1
- <!-- SW:META template="claude" version="1.0.99" 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.101" 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.99" -->
3
+ <!-- SW:SECTION:header version="1.0.101" -->
4
4
  **Framework**: SpecWeave | **Truth**: `spec.md` + `tasks.md`
5
5
  <!-- SW:END:header -->
6
6
 
7
- <!-- SW:SECTION:start version="1.0.99" -->
7
+ <!-- SW:SECTION:start version="1.0.101" -->
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.99" -->
17
+ <!-- SW:SECTION:autodetect version="1.0.101" -->
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.99" -->
27
+ <!-- SW:SECTION:metarule version="1.0.101" -->
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.99" -->
38
+ <!-- SW:SECTION:rules version="1.0.101" -->
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.99" -->
51
+ <!-- SW:SECTION:workflow version="1.0.101" -->
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.99" -->
71
+ <!-- SW:SECTION:reflect version="1.0.101" -->
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.99" -->
115
+ <!-- SW:SECTION:context version="1.0.101" -->
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.99" -->
135
+ <!-- SW:SECTION:lsp version="1.0.101" -->
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.99" -->
152
+ <!-- SW:SECTION:structure version="1.0.101" -->
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.99" -->
222
+ <!-- SW:SECTION:taskformat version="1.0.101" -->
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.99" -->
232
+ <!-- SW:SECTION:secrets version="1.0.101" -->
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.99" -->
243
+ <!-- SW:SECTION:syncing version="1.0.101" -->
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.99" -->
271
+ <!-- SW:SECTION:mapping version="1.0.101" -->
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.99" -->
281
+ <!-- SW:SECTION:testing version="1.0.101" -->
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.99" -->
293
+ <!-- SW:SECTION:api version="1.0.101" -->
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.99" -->
312
+ <!-- SW:SECTION:limits version="1.0.101" -->
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.99" -->
318
+ <!-- SW:SECTION:troubleshooting version="1.0.101" -->
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.99" -->
338
+ <!-- SW:SECTION:principles version="1.0.101" -->
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.99" -->
348
+ <!-- SW:SECTION:linking version="1.0.101" -->
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.99" -->
356
+ <!-- SW:SECTION:mcp version="1.0.101" -->
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.99" -->
380
+ <!-- SW:SECTION:autoexecute version="1.0.101" -->
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.99" -->
394
+ <!-- SW:SECTION:auto version="1.0.101" -->
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.99" -->
471
+ <!-- SW:SECTION:docs version="1.0.101" -->
472
472
  ## Docs
473
473
 
474
474
  [spec-weave.com](https://spec-weave.com) | `.specweave/docs/internal/`
package/README.md CHANGED
@@ -15,7 +15,7 @@
15
15
  npm install -g specweave
16
16
  ```
17
17
 
18
- > **New in v1.0.63**: Auto mode can now run for hours — tested and proven. Mobile app generation, multi-repo coordination, E2E tests running automatically.
18
+ > **New in v1.0.100**: Auto mode now shows live labels in your terminal — see exactly what SpecWeave is doing: `[Planning]`, `[Implementing]`, `[Testing]`, `[Fixing]`. Hours of autonomous execution with full visibility.
19
19
 
20
20
  ---
21
21
 
@@ -39,8 +39,19 @@ Every AI coding tool promises productivity. But after the chat ends:
39
39
 
40
40
  ```bash
41
41
  /sw:increment "Add OAuth authentication" # Creates spec + plan + tasks
42
- /sw:auto # šŸš€ Autonomous execution for HOURS
43
- # ↑ This can run for hours, executing tasks, running tests, fixing failures
42
+ /sw:auto # Autonomous execution for HOURS
43
+ # ↑ Watch live: [Planning] → [Implementing] → [Testing] → [Fixing] → [Done]
44
+ ```
45
+
46
+ **What happens during `/sw:auto`:**
47
+ ```
48
+ [08:23:41] [Planning] Analyzing T-003: Implement refresh token rotation
49
+ [08:24:12] [Implementing] Writing src/auth/token-manager.ts (127 lines)
50
+ [08:25:33] [Testing] Running npm test -- token-manager.test.ts
51
+ [08:25:47] [Fixing] Test failed: Expected 401, got 403. Adjusting...
52
+ [08:26:15] [Testing] Re-running tests... PASSED
53
+ [08:26:18] [Syncing] Updating tasks.md, pushing to GitHub
54
+ [08:26:22] [Done] T-003 complete. Moving to T-004...
44
55
  ```
45
56
 
46
57
  **Or step-by-step control:**
@@ -53,30 +64,32 @@ Every AI coding tool promises productivity. But after the chat ends:
53
64
 
54
65
  ```
55
66
  .specweave/increments/0001-oauth/
56
- ā”œā”€ā”€ spec.md ← WHAT: User stories, acceptance criteria
57
- ā”œā”€ā”€ plan.md ← HOW: Architecture decisions, tech choices
58
- └── tasks.md ← DO: Implementation tasks with embedded tests
67
+ ā”œā”€ā”€ spec.md <- WHAT: User stories, acceptance criteria
68
+ ā”œā”€ā”€ plan.md <- HOW: Architecture decisions, tech choices
69
+ └── tasks.md <- DO: Implementation tasks with embedded tests
59
70
  ```
60
71
 
61
- **After 6 months**: Search "OAuth" → find exact decisions, who approved, why it was built that way.
72
+ **After 6 months**: Search "OAuth" -> find exact decisions, who approved, why it was built that way.
62
73
 
63
74
  ---
64
75
 
65
76
  ## Why SpecWeave vs BMAD, SpecKit, Cursor Rules?
66
77
 
67
- | | [BMAD](https://github.com/bmad-code-org/BMAD-METHOD) | [SpecKit](https://github.com/github/spec-kit) | Cursor Rules | **SpecWeave** |
78
+ | Capability | [BMAD](https://github.com/bmad-code-org/BMAD-METHOD) | [SpecKit](https://github.com/github/spec-kit) | Cursor Rules | **SpecWeave** |
68
79
  |---|---|---|---|---|
69
- | **Status** | Alpha (v6) | Stable | Built-in | **Production (v1.0.62)** |
70
- | **Autonomous** | āŒ Manual steps | āŒ One-shot | āŒ Per-request | **āœ… Hours of autonomous work** |
71
- | **Multi-Repo** | āŒ Single repo | āŒ Single repo | āŒ Single repo | **āœ… Coordinate multiple repos** |
72
- | **Mobile Apps** | āŒ No agents | āŒ No agents | āŒ No agents | **āœ… React Native/Expo specialist** |
73
- | **External Sync** | āŒ None | āŒ None | āŒ None | **āœ… GitHub/JIRA/ADO bidirectional** |
74
- | **Brownfield** | Limited | Greenfield only | Any | **āœ… 10-year legacy? Fine.** |
75
- | **Quality Gates** | Not built-in | None | None | **āœ… 3-gate (tasks/tests/docs)** |
76
- | **Living Docs** | Manual | Snapshot | None | **āœ… Auto-update on every task** |
77
- | **Dogfooding** | Unknown | Unknown | N/A | **āœ… 140+ self-built features** |
78
-
79
- **The math**: SpecKit output = ONE SpecWeave increment. SpecWeave = N increments + lifecycle + sync + hooks + **autonomous execution**.
80
+ | **Maturity** | Alpha (v6) | Stable | Built-in | **Production (v1.0.100)** |
81
+ | **Autonomous Work** | Manual steps required | One-shot generation | Per-request only | **Hours unattended** |
82
+ | **Live Status** | None | None | None | **Terminal labels** |
83
+ | **Multi-Repo** | Single repo | Single repo | Single repo | **Coordinate N repos** |
84
+ | **Mobile Apps** | No agents | No agents | No agents | **React Native/Expo** |
85
+ | **External Sync** | None | None | None | **GitHub/JIRA/ADO** |
86
+ | **Brownfield** | Limited | Greenfield only | Any | **10-year legacy? Fine.** |
87
+ | **Quality Gates** | Not built-in | None | None | **3-gate validation** |
88
+ | **Living Docs** | Manual | Snapshot | None | **Auto-update** |
89
+ | **Self-Learning** | None | None | None | **Reflects on mistakes** |
90
+ | **Dogfooding** | Unknown | Unknown | N/A | **140+ self-built features** |
91
+
92
+ **The math**: SpecKit output = ONE SpecWeave increment. SpecWeave = N increments + lifecycle + sync + hooks + **hours of autonomous execution**.
80
93
 
81
94
  ---
82
95
 
@@ -96,7 +109,7 @@ Every AI coding tool promises productivity. But after the chat ends:
96
109
  | DORA metrics | Live tracking |
97
110
  | Test coverage | 60%+ enforced |
98
111
 
99
- **[Browse our increments →](https://github.com/anton-abyzov/specweave/tree/develop/.specweave/increments)**
112
+ **[Browse our increments ->](https://github.com/anton-abyzov/specweave/tree/develop/.specweave/increments)**
100
113
 
101
114
  ---
102
115
 
@@ -114,7 +127,7 @@ node --version
114
127
  nvm install 22 && nvm use 22 && nvm alias default 22
115
128
  ```
116
129
 
117
- > āš ļø **Getting `SyntaxError: Unexpected token 'with'`?** Your Node.js is too old. See [upgrade instructions](https://spec-weave.com/docs/guides/troubleshooting/common-errors#node-version-error).
130
+ > **Getting `SyntaxError: Unexpected token 'with'`?** Your Node.js is too old. See [upgrade instructions](https://spec-weave.com/docs/guides/troubleshooting/common-errors#node-version-error).
118
131
 
119
132
  ### Installation
120
133
 
@@ -127,7 +140,7 @@ specweave init .
127
140
  Then in Claude Code:
128
141
  ```bash
129
142
  /sw:increment "Add dark mode" # AI creates spec + plan + tasks
130
- /sw:auto # šŸš€ Ship while you sleep (hours of autonomous work)
143
+ /sw:auto # Ship while you sleep (hours of autonomous work)
131
144
  ```
132
145
 
133
146
  **Or step-by-step:**
@@ -142,12 +155,30 @@ specweave refresh-marketplace # Reinstall all plugins from GitHub
142
155
  specweave update-instructions # Regenerate CLAUDE.md
143
156
  ```
144
157
 
145
- **[Full Quickstart Guide →](https://spec-weave.com/docs/guides/getting-started/quickstart)**
158
+ **[Full Quickstart Guide ->](https://spec-weave.com/docs/guides/getting-started/quickstart)**
146
159
 
147
160
  ---
148
161
 
149
162
  ## Key Features
150
163
 
164
+ ### Autonomous Execution (v2.9)
165
+
166
+ Run for hours without intervention. See exactly what's happening:
167
+
168
+ ```bash
169
+ /sw:auto # Start autonomous mode
170
+ /sw:auto-status # Check progress anytime
171
+ /sw:cancel-auto # Emergency stop (rarely needed)
172
+ ```
173
+
174
+ **What you see in terminal:**
175
+ - `[Planning]` - Analyzing task requirements
176
+ - `[Implementing]` - Writing code
177
+ - `[Testing]` - Running test suites
178
+ - `[Fixing]` - Auto-correcting failures
179
+ - `[Syncing]` - Updating docs and external tools
180
+ - `[Done]` - Task complete, moving to next
181
+
151
182
  ### External Tool Integration
152
183
 
153
184
  | Platform | Capabilities |
@@ -199,14 +230,14 @@ Three gates before any increment closes:
199
230
  | Command | Purpose |
200
231
  |---------|---------|
201
232
  | `/sw:increment "feature"` | Create spec + plan + tasks |
202
- | `/sw:auto` | šŸš€ **Ship while you sleep** - hours of autonomous work |
233
+ | `/sw:auto` | **Ship while you sleep** - hours of autonomous work |
234
+ | `/sw:auto-status` | Check autonomous session progress |
203
235
  | `/sw:do` | Execute one task at a time |
204
236
  | `/sw:done 0001` | Close with quality validation |
205
237
  | `/sw:sync-progress` | Push to GitHub/JIRA/ADO |
206
- | `/sw:auto-status` | Check autonomous session progress |
207
238
  | `/sw:cancel-auto` | Stop autonomous session |
208
239
 
209
- **[53 total commands →](https://spec-weave.com/docs/commands/overview)**
240
+ **[53 total commands ->](https://spec-weave.com/docs/commands/overview)**
210
241
 
211
242
  ---
212
243
 
@@ -214,9 +245,9 @@ Three gates before any increment closes:
214
245
 
215
246
  | Scenario | What You Do |
216
247
  |----------|-------------|
217
- | **10-year legacy codebase** | `specweave init .` → brownfield analysis detects doc gaps |
218
- | **Weekend MVP** | `specweave init .` → `/sw:increment "Build auth"` |
219
- | **50-team enterprise** | `specweave init .` → `/sw:enable-multiproject` → maps to JIRA/ADO |
248
+ | **10-year legacy codebase** | `specweave init .` -> brownfield analysis detects doc gaps |
249
+ | **Weekend MVP** | `specweave init .` -> `/sw:increment "Build auth"` |
250
+ | **50-team enterprise** | `specweave init .` -> `/sw:enable-multiproject` -> maps to JIRA/ADO |
220
251
 
221
252
  ---
222
253
 
@@ -226,7 +257,7 @@ Three gates before any increment closes:
226
257
  - Any AI coding tool: Claude Code, Cursor, Windsurf, Cline, Aider, etc.
227
258
  - Git repository
228
259
 
229
- > šŸ’” **Why Node.js 20.12.0+?** SpecWeave uses modern JavaScript features (ES2022 Import Attributes) that require Node.js 20.12.0 or higher. If you see `SyntaxError: Unexpected token 'with'`, you need to upgrade Node.js.
260
+ > **Why Node.js 20.12.0+?** SpecWeave uses modern JavaScript features (ES2022 Import Attributes) that require Node.js 20.12.0 or higher. If you see `SyntaxError: Unexpected token 'with'`, you need to upgrade Node.js.
230
261
 
231
262
  ---
232
263
 
@@ -9,10 +9,12 @@ set -e
9
9
 
10
10
  SKILLS_SRC="plugins/specweave/skills"
11
11
  SKILLS_DEST=".claude/skills"
12
+ BACKUP_DIR=".memory-backups"
12
13
 
13
14
  # Parse arguments
14
15
  if [ "$1" = "--global" ]; then
15
16
  SKILLS_DEST="$HOME/.claude/skills"
17
+ BACKUP_DIR="$HOME/.memory-backups"
16
18
  echo "Installing skills globally to $SKILLS_DEST"
17
19
  else
18
20
  echo "Installing skills to project: $SKILLS_DEST"
@@ -29,8 +31,10 @@ fi
29
31
 
30
32
  # Count skills
31
33
  skill_count=0
34
+ merge_count=0
35
+ backup_count=0
32
36
 
33
- # Copy all skills
37
+ # Copy all skills with smart MEMORY.md merge
34
38
  for skill in "$SKILLS_SRC"/*; do
35
39
  if [ -d "$skill" ]; then
36
40
  skill_name=$(basename "$skill")
@@ -38,9 +42,39 @@ for skill in "$SKILLS_SRC"/*; do
38
42
  # Check if skill has SKILL.md
39
43
  if [ -f "$skill/SKILL.md" ]; then
40
44
  echo " šŸ”§ Installing skill: $skill_name"
41
- # Create destination directory and copy contents (not the folder itself)
42
45
  mkdir -p "$SKILLS_DEST/$skill_name"
43
- cp -r "$skill"/* "$SKILLS_DEST/$skill_name/"
46
+
47
+ # Copy files with special handling for MEMORY.md
48
+ for file in "$skill"/*; do
49
+ filename=$(basename "$file")
50
+ target_file="$SKILLS_DEST/$skill_name/$filename"
51
+
52
+ # Special handling for MEMORY.md
53
+ if [ "$filename" = "MEMORY.md" ] && [ -f "$target_file" ]; then
54
+ echo " šŸ”€ Merging MEMORY.md (preserving user learnings)"
55
+
56
+ # Create backup directory
57
+ mkdir -p "$BACKUP_DIR"
58
+
59
+ # Create timestamped backup
60
+ timestamp=$(date +%Y%m%d-%H%M%S)
61
+ backup_file="$BACKUP_DIR/${skill_name}-MEMORY-${timestamp}.md"
62
+ cp "$target_file" "$backup_file"
63
+ backup_count=$((backup_count + 1))
64
+ echo " šŸ’¾ Backup: $backup_file"
65
+
66
+ # Merge using CLI script
67
+ if node scripts/merge-skill-memory.js "$target_file" "$file" "$target_file" 2>&1 | sed 's/^/ /'; then
68
+ merge_count=$((merge_count + 1))
69
+ else
70
+ echo " āš ļø Merge failed, user memory preserved"
71
+ fi
72
+ else
73
+ # Copy file normally
74
+ cp "$file" "$target_file"
75
+ fi
76
+ done
77
+
44
78
  skill_count=$((skill_count + 1))
45
79
  else
46
80
  echo " āš ļø Skipping $skill_name (no SKILL.md)"
@@ -48,8 +82,28 @@ for skill in "$SKILLS_SRC"/*; do
48
82
  fi
49
83
  done
50
84
 
85
+ # Cleanup: Keep only last 10 backups per skill
86
+ if [ -d "$BACKUP_DIR" ]; then
87
+ for skill_name in $(ls -1 "$SKILLS_DEST"); do
88
+ # Count backups for this skill
89
+ backup_pattern="${skill_name}-MEMORY-*.md"
90
+ backup_files=$(ls -1t "$BACKUP_DIR"/$backup_pattern 2>/dev/null || true)
91
+ backup_file_count=$(echo "$backup_files" | grep -c "^" || echo "0")
92
+
93
+ # If more than 10, remove oldest
94
+ if [ "$backup_file_count" -gt 10 ]; then
95
+ echo " šŸ—‘ļø Pruning old backups for $skill_name"
96
+ echo "$backup_files" | tail -n +11 | xargs rm -f
97
+ fi
98
+ done
99
+ fi
100
+
51
101
  echo ""
52
102
  echo "āœ… Installed $skill_count skills to $SKILLS_DEST"
103
+ if [ $merge_count -gt 0 ]; then
104
+ echo " šŸ”€ Merged $merge_count MEMORY.md files (user learnings preserved)"
105
+ echo " šŸ’¾ Created $backup_count backup(s) in $BACKUP_DIR"
106
+ fi
53
107
  echo ""
54
108
  echo "Skills installed:"
55
109
  ls -1 "$SKILLS_DEST" | sed 's/^/ - /'
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI Command: sync-living-docs-acs
4
+ *
5
+ * Synchronizes AC and task completion status from increment spec.md
6
+ * to all corresponding living docs US files.
7
+ *
8
+ * Usage:
9
+ * specweave sync-living-docs-acs <increment-id>
10
+ * specweave sync-living-docs-acs --all
11
+ *
12
+ * @module cli/commands/sync-living-docs-acs
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=sync-living-docs-acs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-living-docs-acs.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/sync-living-docs-acs.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG"}
@@ -0,0 +1,109 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI Command: sync-living-docs-acs
4
+ *
5
+ * Synchronizes AC and task completion status from increment spec.md
6
+ * to all corresponding living docs US files.
7
+ *
8
+ * Usage:
9
+ * specweave sync-living-docs-acs <increment-id>
10
+ * specweave sync-living-docs-acs --all
11
+ *
12
+ * @module cli/commands/sync-living-docs-acs
13
+ */
14
+ import { Command } from 'commander';
15
+ import path from 'path';
16
+ import { existsSync } from 'fs';
17
+ import { readdir } from 'fs/promises';
18
+ import { SpecToLivingDocsSync } from '../../sync/spec-to-living-docs-sync.js';
19
+ import { consoleLogger } from '../../utils/logger.js';
20
+ const program = new Command();
21
+ program
22
+ .name('sync-living-docs-acs')
23
+ .description('Sync AC/task completion from spec.md to living docs US files')
24
+ .argument('[increment-id]', 'Increment ID to sync (e.g., 0156 or 0156-feature-name)')
25
+ .option('--all', 'Sync all active increments')
26
+ .option('--dry-run', 'Show what would be updated without making changes')
27
+ .option('--verbose', 'Show detailed output')
28
+ .action(async (incrementId, options) => {
29
+ try {
30
+ const projectRoot = process.cwd();
31
+ // Validate project root
32
+ const specweavePath = path.join(projectRoot, '.specweave');
33
+ if (!existsSync(specweavePath)) {
34
+ console.error('āŒ Error: Not a SpecWeave project (no .specweave/ folder found)');
35
+ console.error(' Run this command from your project root.');
36
+ process.exit(1);
37
+ }
38
+ // Get increment IDs to sync
39
+ let incrementIds;
40
+ if (options.all) {
41
+ // Find all active increments
42
+ const incrementsPath = path.join(specweavePath, 'increments');
43
+ const entries = await readdir(incrementsPath, { withFileTypes: true });
44
+ incrementIds = entries
45
+ .filter(entry => entry.isDirectory() && /^\d{4}/.test(entry.name))
46
+ .map(entry => entry.name);
47
+ if (incrementIds.length === 0) {
48
+ console.log('ā„¹ļø No increments found to sync');
49
+ process.exit(0);
50
+ }
51
+ console.log(`\nšŸ”„ Syncing ${incrementIds.length} increments...\n`);
52
+ }
53
+ else if (incrementId) {
54
+ incrementIds = [incrementId];
55
+ }
56
+ else {
57
+ console.error('āŒ Error: Increment ID required');
58
+ console.error(' Usage: specweave sync-living-docs-acs <increment-id>');
59
+ console.error(' Or: specweave sync-living-docs-acs --all');
60
+ process.exit(1);
61
+ }
62
+ // Sync each increment
63
+ let totalFilesUpdated = 0;
64
+ let totalACsUpdated = 0;
65
+ let totalTasksUpdated = 0;
66
+ const errors = [];
67
+ for (const id of incrementIds) {
68
+ const syncer = new SpecToLivingDocsSync({
69
+ projectRoot,
70
+ incrementId: id,
71
+ logger: options.verbose ? consoleLogger : undefined,
72
+ dryRun: options.dryRun,
73
+ });
74
+ const result = await syncer.sync();
75
+ totalFilesUpdated += result.filesUpdated;
76
+ totalACsUpdated += result.totalACsUpdated;
77
+ totalTasksUpdated += result.totalTasksUpdated;
78
+ if (result.errors.length > 0) {
79
+ errors.push(`${id}: ${result.errors.join(', ')}`);
80
+ }
81
+ }
82
+ // Summary
83
+ console.log(`\n${'='.repeat(60)}`);
84
+ console.log('šŸ“Š SYNC SUMMARY');
85
+ console.log(`${'='.repeat(60)}`);
86
+ console.log(`Increments processed: ${incrementIds.length}`);
87
+ console.log(`Files updated: ${totalFilesUpdated}`);
88
+ console.log(`Total ACs synced: ${totalACsUpdated}`);
89
+ console.log(`Total tasks synced: ${totalTasksUpdated}`);
90
+ if (options.dryRun) {
91
+ console.log(`\nāš ļø DRY RUN - No files were actually modified`);
92
+ }
93
+ if (errors.length > 0) {
94
+ console.log(`\nāš ļø Errors: ${errors.length}`);
95
+ errors.forEach(err => console.error(` ${err}`));
96
+ process.exit(1);
97
+ }
98
+ console.log(`\nāœ… Living docs sync complete!`);
99
+ }
100
+ catch (error) {
101
+ console.error(`\nāŒ Fatal error: ${error.message}`);
102
+ if (options.verbose) {
103
+ console.error(error.stack);
104
+ }
105
+ process.exit(1);
106
+ }
107
+ });
108
+ program.parse(process.argv);
109
+ //# sourceMappingURL=sync-living-docs-acs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-living-docs-acs.js","sourceRoot":"","sources":["../../../../src/cli/commands/sync-living-docs-acs.ts"],"names":[],"mappings":"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"}