specweave 1.0.253 ā 1.0.255
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 +24 -24
- package/README.md +163 -1
- package/dist/src/adapters/agents-md-generator.d.ts.map +1 -1
- package/dist/src/adapters/agents-md-generator.js +0 -1
- package/dist/src/adapters/agents-md-generator.js.map +1 -1
- package/dist/src/adapters/claude/README.md +0 -1
- package/dist/src/adapters/claude-md-generator.d.ts.map +1 -1
- package/dist/src/adapters/claude-md-generator.js +0 -1
- package/dist/src/adapters/claude-md-generator.js.map +1 -1
- package/dist/src/cli/commands/docs.d.ts.map +1 -1
- package/dist/src/cli/commands/docs.js +59 -55
- package/dist/src/cli/commands/docs.js.map +1 -1
- package/dist/src/cli/helpers/init/smart-defaults.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/smart-defaults.js +7 -1
- package/dist/src/cli/helpers/init/smart-defaults.js.map +1 -1
- package/dist/src/core/config/types.d.ts +2 -0
- package/dist/src/core/config/types.d.ts.map +1 -1
- package/dist/src/core/config/types.js.map +1 -1
- package/dist/src/core/discrepancy/analyzers/api-route-analyzer.d.ts.map +1 -1
- package/dist/src/core/discrepancy/analyzers/api-route-analyzer.js +5 -0
- package/dist/src/core/discrepancy/analyzers/api-route-analyzer.js.map +1 -1
- package/dist/src/core/lazy-loading/llm-plugin-detector.d.ts +21 -0
- package/dist/src/core/lazy-loading/llm-plugin-detector.d.ts.map +1 -1
- package/dist/src/core/lazy-loading/llm-plugin-detector.js +61 -107
- package/dist/src/core/lazy-loading/llm-plugin-detector.js.map +1 -1
- package/dist/src/core/living-docs/enterprise/history-analyzer.d.ts.map +1 -1
- package/dist/src/core/living-docs/enterprise/history-analyzer.js +1 -3
- package/dist/src/core/living-docs/enterprise/history-analyzer.js.map +1 -1
- package/dist/src/core/living-docs/governance/java-standards-parser.d.ts.map +1 -1
- package/dist/src/core/living-docs/governance/java-standards-parser.js +37 -18
- package/dist/src/core/living-docs/governance/java-standards-parser.js.map +1 -1
- package/dist/src/core/living-docs/operations/ops-generator.js +2 -2
- package/dist/src/core/living-docs/operations/ops-generator.js.map +1 -1
- package/dist/src/core/reflection/index.d.ts +1 -1
- package/dist/src/core/reflection/index.d.ts.map +1 -1
- package/dist/src/core/reflection/index.js +1 -1
- package/dist/src/core/reflection/index.js.map +1 -1
- package/dist/src/core/reflection/reflect-handler.d.ts.map +1 -1
- package/dist/src/core/reflection/reflect-handler.js +1 -2
- package/dist/src/core/reflection/reflect-handler.js.map +1 -1
- package/dist/src/core/reflection/skill-memories.d.ts +13 -1
- package/dist/src/core/reflection/skill-memories.d.ts.map +1 -1
- package/dist/src/core/reflection/skill-memories.js +55 -10
- package/dist/src/core/reflection/skill-memories.js.map +1 -1
- package/dist/src/core/repo-structure/prefix-validator.d.ts +25 -0
- package/dist/src/core/repo-structure/prefix-validator.d.ts.map +1 -0
- package/dist/src/core/repo-structure/prefix-validator.js +47 -0
- package/dist/src/core/repo-structure/prefix-validator.js.map +1 -0
- package/dist/src/core/repo-structure/repo-structure-manager.d.ts +4 -0
- package/dist/src/core/repo-structure/repo-structure-manager.d.ts.map +1 -1
- package/dist/src/core/repo-structure/repo-structure-manager.js.map +1 -1
- package/dist/src/core/repo-structure/role-prefix-collector.d.ts +45 -0
- package/dist/src/core/repo-structure/role-prefix-collector.d.ts.map +1 -0
- package/dist/src/core/repo-structure/role-prefix-collector.js +106 -0
- package/dist/src/core/repo-structure/role-prefix-collector.js.map +1 -0
- package/dist/src/hooks/session-start.js +7 -0
- package/dist/src/hooks/session-start.js.map +1 -1
- package/dist/src/sync/story-router.d.ts +36 -0
- package/dist/src/sync/story-router.d.ts.map +1 -0
- package/dist/src/sync/story-router.js +56 -0
- package/dist/src/sync/story-router.js.map +1 -0
- package/dist/src/utils/agents-md-compiler.d.ts.map +1 -1
- package/dist/src/utils/agents-md-compiler.js +0 -1
- package/dist/src/utils/agents-md-compiler.js.map +1 -1
- package/dist/src/utils/state-cleanup.d.ts +19 -0
- package/dist/src/utils/state-cleanup.d.ts.map +1 -0
- package/dist/src/utils/state-cleanup.js +61 -0
- package/dist/src/utils/state-cleanup.js.map +1 -0
- package/package.json +1 -1
- package/plugins/specweave/PLUGIN.md +0 -1
- package/plugins/specweave/commands/brownfield-analyzer.md +0 -10
- package/plugins/specweave/commands/brownfield-onboarder.md +0 -10
- package/plugins/specweave/commands/export-skills.md +0 -10
- package/plugins/specweave/commands/plugin-validator.md +0 -10
- package/plugins/specweave/hooks/stop-reflect.sh +4 -2
- package/plugins/specweave/hooks/user-prompt-submit.sh +29 -68
- package/plugins/specweave/hooks/v2/dispatchers/session-start.sh +0 -3
- package/plugins/specweave/skills/architect/SKILL.md +2 -6
- package/plugins/specweave/skills/archive-increments/SKILL.md +0 -10
- package/plugins/specweave/skills/auto/SKILL.md +4 -0
- package/plugins/specweave/skills/cancel-auto/SKILL.md +5 -1
- package/plugins/specweave/skills/code-review/SKILL.md +1 -11
- package/plugins/specweave/skills/code-simplifier/SKILL.md +3 -7
- package/plugins/specweave/skills/do/SKILL.md +6 -2
- package/plugins/specweave/skills/docs/SKILL.md +5 -8
- package/plugins/specweave/skills/docs-updater/SKILL.md +4 -10
- package/plugins/specweave/skills/done/SKILL.md +6 -3
- package/plugins/specweave/skills/framework/SKILL.md +4 -10
- package/plugins/specweave/skills/grill/SKILL.md +7 -12
- package/plugins/specweave/skills/increment/SKILL.md +5 -0
- package/plugins/specweave/skills/increment-planner/SKILL.md +4 -7
- package/plugins/specweave/skills/increment-work-router/SKILL.md +0 -10
- package/plugins/specweave/skills/judge-llm/SKILL.md +0 -11
- package/plugins/specweave/skills/lsp/SKILL.md +4 -10
- package/plugins/specweave/skills/multi-project-spec-mapper/SKILL.md +0 -10
- package/plugins/specweave/skills/next/SKILL.md +1 -1
- package/plugins/specweave/skills/plan/SKILL.md +1 -1
- package/plugins/specweave/skills/pm/SKILL.md +6 -11
- package/plugins/specweave/skills/pm-closure-validation/SKILL.md +0 -10
- package/plugins/specweave/skills/progress/SKILL.md +5 -1
- package/plugins/specweave/skills/progress-sync/SKILL.md +2 -11
- package/plugins/specweave/skills/save/SKILL.md +6 -1
- package/plugins/specweave/skills/security/SKILL.md +2 -6
- package/plugins/specweave/skills/security-patterns/SKILL.md +4 -10
- package/plugins/specweave/skills/smart-reopen-detector/SKILL.md +0 -10
- package/plugins/specweave/skills/spec-generator/SKILL.md +0 -10
- package/plugins/specweave/skills/tdd-cycle/SKILL.md +5 -1
- package/plugins/specweave/skills/tdd-green/SKILL.md +5 -1
- package/plugins/specweave/skills/tdd-orchestrator/SKILL.md +4 -10
- package/plugins/specweave/skills/tdd-red/SKILL.md +5 -1
- package/plugins/specweave/skills/tdd-refactor/SKILL.md +1 -1
- package/plugins/specweave/skills/team-build/SKILL.md +1 -1
- package/plugins/specweave/skills/team-lead/SKILL.md +3 -3
- package/plugins/specweave/skills/test-aware-planner/SKILL.md +0 -10
- package/plugins/specweave/skills/umbrella-repo-detector/SKILL.md +0 -10
- package/plugins/specweave/skills/update-instructions/SKILL.md +0 -10
- package/plugins/specweave/skills/validate/SKILL.md +6 -1
- package/plugins/specweave-github/commands/close.md +2 -2
- package/src/templates/CLAUDE.md.template +1 -1
- package/src/templates/docs/adr-template.md +1 -1
- package/src/templates/docs/hld-template.md +1 -1
- package/src/templates/docs/lld-template.md +2 -2
- package/src/templates/docs/rfc-template.md +1 -1
- package/src/templates/docs/spec-template.md +1 -1
- package/dist/src/core/reflection/skill-memory-injector.d.ts +0 -42
- package/dist/src/core/reflection/skill-memory-injector.d.ts.map +0 -1
- package/dist/src/core/reflection/skill-memory-injector.js +0 -67
- package/dist/src/core/reflection/skill-memory-injector.js.map +0 -1
- package/plugins/specweave/commands/skill.md +0 -620
- package/plugins/specweave/skills/tech-lead/SKILL.md +0 -25
- package/plugins/specweave/templates/coding-standards.md.template +0 -535
- package/plugins/specweave/templates/hookify/README.md +0 -47
- package/plugins/specweave/templates/hookify/hookify.block-force-push.local.md +0 -19
- package/plugins/specweave/templates/hookify/hookify.block-metadata-status.local.md +0 -18
- package/plugins/specweave/templates/hookify/hookify.block-secrets.local.md +0 -26
- package/plugins/specweave/templates/hookify/hookify.require-tests.local.md +0 -22
- package/plugins/specweave/templates/hookify/hookify.warn-dangerous-rm.local.md +0 -23
- package/plugins/specweave/templates/hookify/hookify.warn-root-files.local.md +0 -21
package/CLAUDE.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- SW:META template="claude" version="1.0.
|
|
1
|
+
<!-- SW:META template="claude" version="1.0.254" sections="header,start,autodetect,metarule,rules,workflow,reflect,context,structure,taskformat,secrets,syncing,testing,tdd,api,limits,troubleshooting,lazyloading,principles,linking,mcp,auto,docs" -->
|
|
2
2
|
|
|
3
3
|
<!-- SW:SECTION:hook-priority version="1.0.171" -->
|
|
4
4
|
## ā Hook Instructions Override Everything
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
| **"SKILL FIRST"** | Call shown skill FIRST ā chain domain skills ā implement |
|
|
12
12
|
<!-- SW:END:hook-priority -->
|
|
13
13
|
|
|
14
|
-
<!-- SW:SECTION:header version="1.0.
|
|
14
|
+
<!-- SW:SECTION:header version="1.0.254" -->
|
|
15
15
|
**Framework**: SpecWeave | **Truth**: `spec.md` + `tasks.md`
|
|
16
16
|
<!-- SW:END:header -->
|
|
17
17
|
|
|
@@ -48,7 +48,7 @@ If auto-activation fails, invoke explicitly: `Skill({ skill: "name" })`
|
|
|
48
48
|
|
|
49
49
|
**Native LSP broken in v2.1.0+.** Use: `specweave lsp refs|def|hover src/file.ts SymbolName`
|
|
50
50
|
|
|
51
|
-
<!-- SW:SECTION:start version="1.0.
|
|
51
|
+
<!-- SW:SECTION:start version="1.0.254" -->
|
|
52
52
|
## Getting Started
|
|
53
53
|
|
|
54
54
|
**Initial increment**: `0001-project-setup` (auto-created by `specweave init`)
|
|
@@ -58,7 +58,7 @@ If auto-activation fails, invoke explicitly: `Skill({ skill: "name" })`
|
|
|
58
58
|
2. **Customize**: Edit spec.md and use for setup tasks
|
|
59
59
|
<!-- SW:END:start -->
|
|
60
60
|
|
|
61
|
-
<!-- SW:SECTION:autodetect version="1.0.
|
|
61
|
+
<!-- SW:SECTION:autodetect version="1.0.254" -->
|
|
62
62
|
## Auto-Detection
|
|
63
63
|
|
|
64
64
|
SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
|
|
@@ -68,7 +68,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
|
|
|
68
68
|
**Opt-out phrases**: "Just brainstorm first" | "Don't plan yet" | "Quick discussion" | "Let's explore ideas"
|
|
69
69
|
<!-- SW:END:autodetect -->
|
|
70
70
|
|
|
71
|
-
<!-- SW:SECTION:metarule version="1.0.
|
|
71
|
+
<!-- SW:SECTION:metarule version="1.0.254" -->
|
|
72
72
|
## Workflow Orchestration
|
|
73
73
|
|
|
74
74
|
### 1. Plan Mode Default
|
|
@@ -95,7 +95,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
|
|
|
95
95
|
```
|
|
96
96
|
<!-- SW:END:metarule -->
|
|
97
97
|
|
|
98
|
-
<!-- SW:SECTION:rules version="1.0.
|
|
98
|
+
<!-- SW:SECTION:rules version="1.0.254" -->
|
|
99
99
|
## Rules
|
|
100
100
|
|
|
101
101
|
1. **Files** ā `.specweave/increments/####-name/` (see Structure section for details)
|
|
@@ -116,7 +116,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
|
|
|
116
116
|
Discover org from config: `repository.organization` ā `sync.profiles` ā `umbrella.childRepos` ā filesystem
|
|
117
117
|
<!-- SW:END:rules -->
|
|
118
118
|
|
|
119
|
-
<!-- SW:SECTION:workflow version="1.0.
|
|
119
|
+
<!-- SW:SECTION:workflow version="1.0.254" -->
|
|
120
120
|
## Workflow
|
|
121
121
|
|
|
122
122
|
`/sw:increment "X"` ā `/sw:do` ā `/sw:progress` ā `/sw:done 0001`
|
|
@@ -142,7 +142,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
|
|
|
142
142
|
Before git operations, scan: `for d in repositories packages services apps libs workspace; do [ -d "$d" ] && find "$d" -maxdepth 2 -name ".git" -type d; done`
|
|
143
143
|
<!-- SW:END:save-nested-repos -->
|
|
144
144
|
|
|
145
|
-
<!-- SW:SECTION:reflect version="1.0.
|
|
145
|
+
<!-- SW:SECTION:reflect version="1.0.254" -->
|
|
146
146
|
## Skill Memories
|
|
147
147
|
|
|
148
148
|
SpecWeave learns from corrections. Learnings saved here automatically. Edit or delete as needed.
|
|
@@ -163,7 +163,7 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
|
|
|
163
163
|
- Prefer leaderboard-style reporting for analysis
|
|
164
164
|
- Auto mode: Stop hook creates implicit loops via block/approve pattern
|
|
165
165
|
|
|
166
|
-
<!-- SW:SECTION:context version="1.0.
|
|
166
|
+
<!-- SW:SECTION:context version="1.0.254" -->
|
|
167
167
|
## Context
|
|
168
168
|
|
|
169
169
|
**Before implementing**: Check ADRs at `.specweave/docs/internal/architecture/adr/`
|
|
@@ -171,7 +171,7 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
|
|
|
171
171
|
**Load context**: `/sw:docs <topic>` loads relevant living docs into conversation
|
|
172
172
|
<!-- SW:END:context -->
|
|
173
173
|
|
|
174
|
-
<!-- SW:SECTION:structure version="1.0.
|
|
174
|
+
<!-- SW:SECTION:structure version="1.0.254" -->
|
|
175
175
|
## Structure
|
|
176
176
|
|
|
177
177
|
```
|
|
@@ -186,7 +186,7 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
|
|
|
186
186
|
**Everything else ā subfolders**: `reports/` | `logs/` | `scripts/` | `backups/`
|
|
187
187
|
<!-- SW:END:structure -->
|
|
188
188
|
|
|
189
|
-
<!-- SW:SECTION:taskformat version="1.0.
|
|
189
|
+
<!-- SW:SECTION:taskformat version="1.0.254" -->
|
|
190
190
|
## Task Format
|
|
191
191
|
|
|
192
192
|
```markdown
|
|
@@ -196,7 +196,7 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
|
|
|
196
196
|
```
|
|
197
197
|
<!-- SW:END:taskformat -->
|
|
198
198
|
|
|
199
|
-
<!-- SW:SECTION:secrets version="1.0.
|
|
199
|
+
<!-- SW:SECTION:secrets version="1.0.254" -->
|
|
200
200
|
## Secrets Check
|
|
201
201
|
|
|
202
202
|
**BEFORE CLI tools**: Check existing config first!
|
|
@@ -210,7 +210,7 @@ gh auth status
|
|
|
210
210
|
**SECURITY**: NEVER use `grep TOKEN .env` without `-q` flag - it exposes credentials in terminal!
|
|
211
211
|
<!-- SW:END:secrets -->
|
|
212
212
|
|
|
213
|
-
<!-- SW:SECTION:syncing version="1.0.
|
|
213
|
+
<!-- SW:SECTION:syncing version="1.0.254" -->
|
|
214
214
|
## External Sync (GitHub/JIRA/ADO)
|
|
215
215
|
|
|
216
216
|
**Primary command**: `/sw:progress-sync` ā syncs tasks.md ā spec.md ā living docs ā external tools (auto-creates missing issues)
|
|
@@ -231,7 +231,7 @@ gh auth status
|
|
|
231
231
|
**After task completion**: Run `/sw:progress-sync` or `/sw-github:push` to sync changes to external tools.
|
|
232
232
|
<!-- SW:END:syncing -->
|
|
233
233
|
|
|
234
|
-
<!-- SW:SECTION:testing version="1.0.
|
|
234
|
+
<!-- SW:SECTION:testing version="1.0.254" -->
|
|
235
235
|
## Testing
|
|
236
236
|
|
|
237
237
|
BDD in tasks.md | Unit >80% | `.test.ts` (Vitest)
|
|
@@ -250,7 +250,7 @@ vi.mock('./module', () => ({ func: mockFn }));
|
|
|
250
250
|
**Install CLI**: `npm install -g @playwright/cli@latest`
|
|
251
251
|
<!-- SW:END:testing -->
|
|
252
252
|
|
|
253
|
-
<!-- SW:SECTION:tdd version="1.0.
|
|
253
|
+
<!-- SW:SECTION:tdd version="1.0.254" -->
|
|
254
254
|
## TDD Mode (Test-Driven Development)
|
|
255
255
|
|
|
256
256
|
**When `testing.defaultTestMode: "TDD"` is configured**, follow RED-GREEN-REFACTOR discipline:
|
|
@@ -311,7 +311,7 @@ When TDD is enabled, tasks include phase markers:
|
|
|
311
311
|
**Rule**: Complete dependencies BEFORE dependent tasks (RED before GREEN).
|
|
312
312
|
<!-- SW:END:tdd -->
|
|
313
313
|
|
|
314
|
-
<!-- SW:SECTION:api version="1.0.
|
|
314
|
+
<!-- SW:SECTION:api version="1.0.254" -->
|
|
315
315
|
## API Development (OpenAPI-First)
|
|
316
316
|
|
|
317
317
|
**For API projects only.** Commands: `/sw:api-docs --all` | `--openapi` | `--postman` | `--validate`
|
|
@@ -319,13 +319,13 @@ When TDD is enabled, tasks include phase markers:
|
|
|
319
319
|
Enable in config: `{"apiDocs":{"enabled":true,"openApiPath":"openapi.yaml"}}`
|
|
320
320
|
<!-- SW:END:api -->
|
|
321
321
|
|
|
322
|
-
<!-- SW:SECTION:limits version="1.0.
|
|
322
|
+
<!-- SW:SECTION:limits version="1.0.254" -->
|
|
323
323
|
## Limits
|
|
324
324
|
|
|
325
325
|
**Max 1500 lines/file** ā extract before adding
|
|
326
326
|
<!-- SW:END:limits -->
|
|
327
327
|
|
|
328
|
-
<!-- SW:SECTION:troubleshooting version="1.0.
|
|
328
|
+
<!-- SW:SECTION:troubleshooting version="1.0.254" -->
|
|
329
329
|
## Troubleshooting
|
|
330
330
|
|
|
331
331
|
| Issue | Fix |
|
|
@@ -338,7 +338,7 @@ Enable in config: `{"apiDocs":{"enabled":true,"openApiPath":"openapi.yaml"}}`
|
|
|
338
338
|
| Session stuck | Kill + `rm -f .specweave/state/*.lock` + restart |
|
|
339
339
|
<!-- SW:END:troubleshooting -->
|
|
340
340
|
|
|
341
|
-
<!-- SW:SECTION:lazyloading version="1.0.
|
|
341
|
+
<!-- SW:SECTION:lazyloading version="1.0.254" -->
|
|
342
342
|
## Plugin Auto-Loading
|
|
343
343
|
|
|
344
344
|
Plugins load automatically based on project type and keywords. Manual install if needed:
|
|
@@ -352,7 +352,7 @@ export SPECWEAVE_DISABLE_AUTO_LOAD=1 # Disable auto-load
|
|
|
352
352
|
**Token savings**: Core ~3-5K tokens vs all plugins ~60K+
|
|
353
353
|
<!-- SW:END:lazyloading -->
|
|
354
354
|
|
|
355
|
-
<!-- SW:SECTION:principles version="1.0.
|
|
355
|
+
<!-- SW:SECTION:principles version="1.0.254" -->
|
|
356
356
|
## Principles
|
|
357
357
|
|
|
358
358
|
### SpecWeave Principles
|
|
@@ -368,7 +368,7 @@ export SPECWEAVE_DISABLE_AUTO_LOAD=1 # Disable auto-load
|
|
|
368
368
|
- **Demand Elegance**: For non-trivial changes, pause and ask "is there a more elegant way?" - but skip this for simple, obvious fixes (don't over-engineer).
|
|
369
369
|
<!-- SW:END:principles -->
|
|
370
370
|
|
|
371
|
-
<!-- SW:SECTION:linking version="1.0.
|
|
371
|
+
<!-- SW:SECTION:linking version="1.0.254" -->
|
|
372
372
|
## Bidirectional Linking
|
|
373
373
|
|
|
374
374
|
Tasks ā User Stories auto-linked via AC-IDs: `AC-US1-01` ā `US-001`
|
|
@@ -376,7 +376,7 @@ Tasks ā User Stories auto-linked via AC-IDs: `AC-US1-01` ā `US-001`
|
|
|
376
376
|
Task format: `**AC**: AC-US1-01, AC-US1-02` (CRITICAL for linking)
|
|
377
377
|
<!-- SW:END:linking -->
|
|
378
378
|
|
|
379
|
-
<!-- SW:SECTION:mcp version="1.0.
|
|
379
|
+
<!-- SW:SECTION:mcp version="1.0.254" -->
|
|
380
380
|
## External Services
|
|
381
381
|
|
|
382
382
|
**Priority**: CLI tools first (simpler) ā MCP for complex integrations
|
|
@@ -398,7 +398,7 @@ claude mcp add --transport stdio postgres -- npx -y @modelcontextprotocol/server
|
|
|
398
398
|
MCP supports lazy-loading (auto mode) - tools load on-demand when >10% context.
|
|
399
399
|
<!-- SW:END:mcp -->
|
|
400
400
|
|
|
401
|
-
<!-- SW:SECTION:auto version="1.0.
|
|
401
|
+
<!-- SW:SECTION:auto version="1.0.254" -->
|
|
402
402
|
## Auto Mode
|
|
403
403
|
|
|
404
404
|
**Commands**: `/sw:auto` (start) | `/sw:auto-status` (check) | `/sw:cancel-auto` (emergency only)
|
|
@@ -415,7 +415,7 @@ MCP supports lazy-loading (auto mode) - tools load on-demand when >10% context.
|
|
|
415
415
|
**STOP & ASK** if: Spec conflicts | Task unnecessary | Requirement ambiguous
|
|
416
416
|
<!-- SW:END:auto -->
|
|
417
417
|
|
|
418
|
-
<!-- SW:SECTION:docs version="1.0.
|
|
418
|
+
<!-- SW:SECTION:docs version="1.0.254" -->
|
|
419
419
|
## Docs
|
|
420
420
|
|
|
421
421
|
[spec-weave.com](https://spec-weave.com)
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# SpecWeave
|
|
2
2
|
|
|
3
|
-
**The spec-driven
|
|
3
|
+
**The spec-driven skill layer for AI coding agents.** First-class support for Claude Code ā compatible with any LLM-powered coding tool.
|
|
4
4
|
|
|
5
5
|
*Coordinate parallel AI agents. Prevent task overlap. Quality gates. Ship features while you sleep.*
|
|
6
6
|
|
|
@@ -45,6 +45,8 @@ Each increment is a self-contained scope. Each agent knows exactly what's taken
|
|
|
45
45
|
|
|
46
46
|
### What Makes It Different
|
|
47
47
|
|
|
48
|
+
- **Extensible skills (SOLID Open/Closed)** ā skills are programs written in human language. Customize any skill's behavior via `skill-memories/*.md` without forking. Your rules override defaults. Original skills keep getting updates. No other AI tool lets you do this.
|
|
49
|
+
- **Plan as source of truth** ā spec.md + plan.md + tasks.md drive all implementation. Code is a derivative of the plan, never the other way around. Change your mind mid-build? Update the plan first, then regenerate code.
|
|
48
50
|
- **Parallel agent coordination** ā multiple Claude Code sessions, OpenClaw instances, or remote agents work on different increments without stepping on each other.
|
|
49
51
|
- **Autonomous execution** ā runs for hours, not minutes. Write, test, fix, repeat.
|
|
50
52
|
- **Persistent memory** ā AI learns from corrections. Fix once, remembered permanently.
|
|
@@ -57,6 +59,64 @@ Each increment is a self-contained scope. Each agent knows exactly what's taken
|
|
|
57
59
|
|
|
58
60
|
---
|
|
59
61
|
|
|
62
|
+
## Extensible Skills (Open/Closed Principle)
|
|
63
|
+
|
|
64
|
+
**Skills are programs you can customize without forking.**
|
|
65
|
+
|
|
66
|
+
Unlike traditional tools where behavior is locked, SpecWeave skills follow the **Open/Closed Principle** from SOLID:
|
|
67
|
+
- **Closed for modification** ā don't edit SKILL.md
|
|
68
|
+
- **Open for extension** ā customize via `.specweave/skill-memories/*.md`
|
|
69
|
+
|
|
70
|
+
**Example: Teaching the Frontend Skill**
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# First time
|
|
74
|
+
You: "Generate a login form"
|
|
75
|
+
Claude: *creates form with useState*
|
|
76
|
+
You: "No, we always use React Hook Form + Zod validation"
|
|
77
|
+
|
|
78
|
+
# SpecWeave learns this ā .specweave/skill-memories/frontend.md
|
|
79
|
+
|
|
80
|
+
# Next session
|
|
81
|
+
You: "Generate a signup form"
|
|
82
|
+
Claude: *automatically uses React Hook Form + Zod* ā
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Your customizations:**
|
|
86
|
+
```markdown
|
|
87
|
+
# .specweave/skill-memories/frontend.md
|
|
88
|
+
|
|
89
|
+
### Form Handling
|
|
90
|
+
- Use React Hook Form for all forms
|
|
91
|
+
- Combine with Zod for validation schemas
|
|
92
|
+
- Never use plain useState for form state
|
|
93
|
+
|
|
94
|
+
### Component Preferences
|
|
95
|
+
- Import from @/components/ui design system
|
|
96
|
+
- Tailwind utilities only, no inline styles
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**Why this matters:**
|
|
100
|
+
|
|
101
|
+
| Traditional Tools | SpecWeave Skills |
|
|
102
|
+
|------------------|------------------|
|
|
103
|
+
| Obfuscated behavior | Transparent SKILL.md |
|
|
104
|
+
| Can't customize | Extend via skill-memories |
|
|
105
|
+
| Vendor lock-in | You control the logic |
|
|
106
|
+
| Suggestions only | Programmable reasoning |
|
|
107
|
+
|
|
108
|
+
**Enable auto-learning:**
|
|
109
|
+
```bash
|
|
110
|
+
/sw:reflect-on # Corrections become permanent knowledge
|
|
111
|
+
/sw:reflect-status # See what Claude has learned
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Every skill (PM, Architect, QA, Security, DevOps, Frontend, Backend) can be customized. You're not using tools ā you're **programming them** to match your exact patterns.
|
|
115
|
+
|
|
116
|
+
**For skill developers:** Design skills with extension points. See [Skill Development Guidelines](#skill-development-guidelines) for SOLID patterns.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
60
120
|
## Install
|
|
61
121
|
|
|
62
122
|
```bash
|
|
@@ -173,6 +233,108 @@ When you close an increment, external tools update automatically.
|
|
|
173
233
|
|
|
174
234
|
[Discord](https://discord.gg/UYg4BGJ65V) Ā· [YouTube](https://www.youtube.com/@antonabyzov) Ā· [GitHub Issues](https://github.com/anton-abyzov/specweave/issues)
|
|
175
235
|
|
|
236
|
+
## Skill Development Guidelines
|
|
237
|
+
|
|
238
|
+
**Design skills that users can extend without modification.**
|
|
239
|
+
|
|
240
|
+
When creating SpecWeave skills, follow the **Open/Closed Principle** (SOLID):
|
|
241
|
+
|
|
242
|
+
### Structure for Extension
|
|
243
|
+
|
|
244
|
+
**SKILL.md** (closed for modification)
|
|
245
|
+
```markdown
|
|
246
|
+
# Your Skill
|
|
247
|
+
|
|
248
|
+
## Core Behavior
|
|
249
|
+
1. Always do X
|
|
250
|
+
2. Check for Y
|
|
251
|
+
3. Output Z format
|
|
252
|
+
|
|
253
|
+
## Extension Points
|
|
254
|
+
Users can customize:
|
|
255
|
+
- Component preferences
|
|
256
|
+
- Validation rules
|
|
257
|
+
- Output formatting
|
|
258
|
+
- Error handling
|
|
259
|
+
|
|
260
|
+
See `.specweave/skill-memories/{skill-name}.md` for customizations.
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
`skill-memories/{skill-name}.md` (open for extension)
|
|
264
|
+
```markdown
|
|
265
|
+
### Component Preferences
|
|
266
|
+
- Use Material UI instead of Chakra
|
|
267
|
+
- Dark mode by default
|
|
268
|
+
|
|
269
|
+
### Custom Validation
|
|
270
|
+
When validating forms:
|
|
271
|
+
1. Check email domain against allowlist
|
|
272
|
+
2. Require 2FA for admin roles
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### SOLID Principles for Skills
|
|
276
|
+
|
|
277
|
+
| Principle | Application |
|
|
278
|
+
|-----------|-------------|
|
|
279
|
+
| **Single Responsibility** | One skill = one domain (Frontend, Backend, Testing, etc.) |
|
|
280
|
+
| **Open/Closed** | Core logic in SKILL.md (closed), customizations in skill-memories (open) |
|
|
281
|
+
| **Liskov Substitution** | Customizations shouldn't break skill contracts (output format, interface) |
|
|
282
|
+
| **Interface Segregation** | Expose clear extension points, don't force users to override large blocks |
|
|
283
|
+
| **Dependency Inversion** | Depend on patterns/abstractions, let skill-memories provide concrete implementations |
|
|
284
|
+
|
|
285
|
+
### Design Patterns
|
|
286
|
+
|
|
287
|
+
**ā DO:**
|
|
288
|
+
- Expose clear extension points in SKILL.md
|
|
289
|
+
- Document what users can customize
|
|
290
|
+
- Provide examples in skill-memories templates
|
|
291
|
+
- Read skill-memories at runtime before executing logic
|
|
292
|
+
- Use conditional logic: "If skill-memories defines X, use X; else default behavior"
|
|
293
|
+
|
|
294
|
+
**ā DON'T:**
|
|
295
|
+
- Hard-code preferences that vary by project
|
|
296
|
+
- Make users fork SKILL.md to customize behavior
|
|
297
|
+
- Ignore skill-memories content
|
|
298
|
+
- Create monolithic skills that do everything
|
|
299
|
+
|
|
300
|
+
### Example: Extensible Frontend Skill
|
|
301
|
+
|
|
302
|
+
```markdown
|
|
303
|
+
# SKILL.md (core logic)
|
|
304
|
+
|
|
305
|
+
## Component Generation
|
|
306
|
+
|
|
307
|
+
**Default behavior:**
|
|
308
|
+
1. Use React functional components
|
|
309
|
+
2. TypeScript with Props interface
|
|
310
|
+
3. Export as default
|
|
311
|
+
|
|
312
|
+
**Extension points (check skill-memories/frontend.md):**
|
|
313
|
+
- component.framework (React | Vue | Angular)
|
|
314
|
+
- component.exportStyle (default | named)
|
|
315
|
+
- component.testFramework (Vitest | Jest | Testing Library)
|
|
316
|
+
- styling.approach (Tailwind | CSS Modules | Styled Components)
|
|
317
|
+
|
|
318
|
+
**Logic:**
|
|
319
|
+
```typescript
|
|
320
|
+
// Read skill-memories first
|
|
321
|
+
const userPrefs = readSkillMemories('frontend');
|
|
322
|
+
|
|
323
|
+
// Apply customizations or use defaults
|
|
324
|
+
const framework = userPrefs?.component?.framework || 'React';
|
|
325
|
+
const styling = userPrefs?.styling?.approach || 'CSS Modules';
|
|
326
|
+
```
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### Testing Your Skill's Extensibility
|
|
330
|
+
|
|
331
|
+
1. **Write SKILL.md** with default behavior
|
|
332
|
+
2. **Create skill-memories template** showing extension points
|
|
333
|
+
3. **Test with customizations** - does the skill respect user preferences?
|
|
334
|
+
4. **Document limitations** - what CAN'T be customized?
|
|
335
|
+
|
|
336
|
+
**Good skill design = Users extend your logic without ever touching your source.**
|
|
337
|
+
|
|
176
338
|
## License
|
|
177
339
|
|
|
178
340
|
MIT ā [github.com/anton-abyzov/specweave](https://github.com/anton-abyzov/specweave)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-md-generator.d.ts","sourceRoot":"","sources":["../../../src/adapters/agents-md-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAe;gBAG3B,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM;IAKtB;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BzD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"agents-md-generator.d.ts","sourceRoot":"","sources":["../../../src/adapters/agents-md-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAe;gBAG3B,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM;IAKtB;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BzD;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAgC3B"}
|
|
@@ -74,7 +74,6 @@ export class AgentsMdGenerator {
|
|
|
74
74
|
'devops': 'Infrastructure, deployment, CI/CD pipelines',
|
|
75
75
|
'qa-engineer': 'Test strategy, test cases, quality assurance',
|
|
76
76
|
'security': 'Threat modeling, security review, vulnerability assessment',
|
|
77
|
-
'tech-lead': 'Code review, best practices, refactoring',
|
|
78
77
|
'frontend': 'UI components, React/Vue/Angular implementation',
|
|
79
78
|
'nodejs-backend': 'Node.js/Express/NestJS backend APIs',
|
|
80
79
|
'python-backend': 'FastAPI/Django backend APIs',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-md-generator.js","sourceRoot":"","sources":["../../../src/adapters/agents-md-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAQ9C;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAG5B,YACE,SAAkB,EAClB,SAAkB,EAClB,WAAoB;QAEpB,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAwB;QACrC,gEAAgE;QAChE,IAAI,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAExC,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACxD,MAAM,SAAS,GAAG,gBAAgB,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;YACpE,IAAI,SAAS,EAAE,CAAC;gBACd,YAAY,GAAG,SAAS,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAED,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAEvD,4BAA4B;QAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAEjD,uBAAuB;QACvB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QACpE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;QAClF,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;QAClF,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,MAAa;QACzC,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,OAAO,IAAI,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC;YACjC,OAAO,IAAI,gBAAgB,KAAK,CAAC,WAAW,IAAI,CAAC;YACjD,OAAO,IAAI,oBAAoB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACvE,OAAO,IAAI,kCAAkC,KAAK,CAAC,IAAI,iBAAiB,CAAC;QAC3E,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,SAAiB;QAC1C,MAAM,WAAW,GAA2B;YAC1C,IAAI,EAAE,+DAA+D;YACrE,WAAW,EAAE,8DAA8D;YAC3E,QAAQ,EAAE,6CAA6C;YACvD,aAAa,EAAE,8CAA8C;YAC7D,UAAU,EAAE,4DAA4D;YACxE,
|
|
1
|
+
{"version":3,"file":"agents-md-generator.js","sourceRoot":"","sources":["../../../src/adapters/agents-md-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,7 +51,6 @@ This adapter represents the **gold standard** - all other adapters attempt to ap
|
|
|
51
51
|
| `devops` | DevOps Engineer | Infrastructure, deployment |
|
|
52
52
|
| `sw-testing:qa-engineer` | QA Engineer | Test strategy, test cases |
|
|
53
53
|
| `security` | Security Engineer | Threat modeling, audits |
|
|
54
|
-
| `tech-lead` | Technical Lead | Code review, best practices |
|
|
55
54
|
| `frontend` | Frontend Developer | UI implementation |
|
|
56
55
|
| `python-backend` | Python Backend Dev | FastAPI, Django APIs |
|
|
57
56
|
| `nodejs-backend` | Node.js Backend Dev | Express, NestJS APIs |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-md-generator.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude-md-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAe;gBAG3B,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM;IAKtB;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBzD;;OAEG;YACW,sBAAsB;IAkBpC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA2B5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"claude-md-generator.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude-md-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAUH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAe;gBAG3B,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM;IAKtB;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IAwBzD;;OAEG;YACW,sBAAsB;IAkBpC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA2B5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgC5B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAiBpC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAiB/B;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAiBtC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAM9B;;OAEG;IACH,OAAO,CAAC,QAAQ;CAIjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-md-generator.js","sourceRoot":"","sources":["../../../src/adapters/claude-md-generator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"claude-md-generator.js","sourceRoot":"","sources":["../../../src/adapters/claude-md-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/docs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+GxF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/docs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+GxF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgEpF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoF1F;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAkBrD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CA+CvD"}
|
|
@@ -123,22 +123,25 @@ export async function docsBuildCommand(options = {}) {
|
|
|
123
123
|
// Run validation first
|
|
124
124
|
if (options.validate !== false) {
|
|
125
125
|
console.log(chalk.cyan('š Running pre-build validation...\n'));
|
|
126
|
+
let validationResult;
|
|
126
127
|
try {
|
|
127
128
|
const { DocsValidator } = await import('../../utils/docs-validator.js');
|
|
128
129
|
const validator = new DocsValidator({
|
|
129
130
|
docsPath,
|
|
130
131
|
autoFix: options.autoFix ?? true,
|
|
131
132
|
});
|
|
132
|
-
|
|
133
|
-
if (!result.valid) {
|
|
134
|
-
console.log(chalk.red('\nā Documentation has errors. Build aborted.\n'));
|
|
135
|
-
process.exit(1);
|
|
136
|
-
}
|
|
137
|
-
console.log(chalk.green(' ā
Validation passed!\n'));
|
|
133
|
+
validationResult = await validator.validate();
|
|
138
134
|
}
|
|
139
135
|
catch (error) {
|
|
140
136
|
console.log(chalk.yellow(' ā ļø Validation skipped\n'));
|
|
141
137
|
}
|
|
138
|
+
if (validationResult && !validationResult.valid) {
|
|
139
|
+
console.log(chalk.red('\nā Documentation has errors. Build aborted.\n'));
|
|
140
|
+
process.exit(1);
|
|
141
|
+
}
|
|
142
|
+
if (validationResult) {
|
|
143
|
+
console.log(chalk.green(' ā
Validation passed!\n'));
|
|
144
|
+
}
|
|
142
145
|
}
|
|
143
146
|
// Build static site
|
|
144
147
|
try {
|
|
@@ -174,6 +177,7 @@ export async function docsValidateCommand(options = {}) {
|
|
|
174
177
|
console.log(chalk.dim(` Expected: ${docsPath}\n`));
|
|
175
178
|
process.exit(1);
|
|
176
179
|
}
|
|
180
|
+
let result;
|
|
177
181
|
try {
|
|
178
182
|
const { DocsValidator } = await import('../../utils/docs-validator.js');
|
|
179
183
|
const validator = new DocsValidator({
|
|
@@ -181,61 +185,61 @@ export async function docsValidateCommand(options = {}) {
|
|
|
181
185
|
autoFix: options.autoFix ?? false, // Don't auto-fix in validate mode by default
|
|
182
186
|
});
|
|
183
187
|
console.log(chalk.dim(` Scanning: ${docsPath}\n`));
|
|
184
|
-
|
|
185
|
-
// Print summary
|
|
186
|
-
console.log(chalk.white(' Summary:'));
|
|
187
|
-
console.log(chalk.dim(` ⢠Total files: ${result.totalFiles}`));
|
|
188
|
-
if (result.errors > 0) {
|
|
189
|
-
console.log(chalk.red(` ⢠Errors: ${result.errors}`));
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
console.log(chalk.green(` ⢠Errors: 0`));
|
|
193
|
-
}
|
|
194
|
-
if (result.warnings > 0) {
|
|
195
|
-
console.log(chalk.yellow(` ⢠Warnings: ${result.warnings}`));
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
console.log(chalk.dim(` ⢠Warnings: 0`));
|
|
199
|
-
}
|
|
200
|
-
if (result.fixedCount > 0) {
|
|
201
|
-
console.log(chalk.green(` ⢠Auto-fixed: ${result.fixedCount}`));
|
|
202
|
-
}
|
|
203
|
-
console.log();
|
|
204
|
-
// Print issues
|
|
205
|
-
if (options.verbose || result.errors > 0) {
|
|
206
|
-
for (const issue of result.issues) {
|
|
207
|
-
const color = issue.severity === 'error' ? chalk.red
|
|
208
|
-
: issue.severity === 'warning' ? chalk.yellow
|
|
209
|
-
: chalk.dim;
|
|
210
|
-
const icon = issue.severity === 'error' ? 'ā'
|
|
211
|
-
: issue.severity === 'warning' ? 'ā ļø'
|
|
212
|
-
: 'ā¹ļø';
|
|
213
|
-
console.log(color(` ${icon} ${issue.file}:${issue.line || 1}`));
|
|
214
|
-
console.log(chalk.dim(` ${issue.type}: ${issue.message}`));
|
|
215
|
-
if (issue.autoFixable && !options.autoFix) {
|
|
216
|
-
console.log(chalk.dim(` (auto-fixable with --auto-fix)`));
|
|
217
|
-
}
|
|
218
|
-
console.log();
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
// Final status
|
|
222
|
-
if (result.valid) {
|
|
223
|
-
console.log(chalk.green('ā
Documentation is valid!\n'));
|
|
224
|
-
process.exit(0);
|
|
225
|
-
}
|
|
226
|
-
else {
|
|
227
|
-
console.log(chalk.red('ā Documentation has errors.\n'));
|
|
228
|
-
if (!options.autoFix) {
|
|
229
|
-
console.log(chalk.dim(' Try running with --auto-fix to fix common issues.\n'));
|
|
230
|
-
}
|
|
231
|
-
process.exit(1);
|
|
232
|
-
}
|
|
188
|
+
result = await validator.validate();
|
|
233
189
|
}
|
|
234
190
|
catch (error) {
|
|
235
191
|
console.log(chalk.red(`\nā Validation failed:`));
|
|
236
192
|
console.log(chalk.dim(` ${error instanceof Error ? error.message : error}\n`));
|
|
237
193
|
process.exit(1);
|
|
238
194
|
}
|
|
195
|
+
// Print summary
|
|
196
|
+
console.log(chalk.white(' Summary:'));
|
|
197
|
+
console.log(chalk.dim(` ⢠Total files: ${result.totalFiles}`));
|
|
198
|
+
if (result.errors > 0) {
|
|
199
|
+
console.log(chalk.red(` ⢠Errors: ${result.errors}`));
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
console.log(chalk.green(` ⢠Errors: 0`));
|
|
203
|
+
}
|
|
204
|
+
if (result.warnings > 0) {
|
|
205
|
+
console.log(chalk.yellow(` ⢠Warnings: ${result.warnings}`));
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
console.log(chalk.dim(` ⢠Warnings: 0`));
|
|
209
|
+
}
|
|
210
|
+
if (result.fixedCount > 0) {
|
|
211
|
+
console.log(chalk.green(` ⢠Auto-fixed: ${result.fixedCount}`));
|
|
212
|
+
}
|
|
213
|
+
console.log();
|
|
214
|
+
// Print issues
|
|
215
|
+
if (options.verbose || result.errors > 0) {
|
|
216
|
+
for (const issue of result.issues) {
|
|
217
|
+
const color = issue.severity === 'error' ? chalk.red
|
|
218
|
+
: issue.severity === 'warning' ? chalk.yellow
|
|
219
|
+
: chalk.dim;
|
|
220
|
+
const icon = issue.severity === 'error' ? 'ā'
|
|
221
|
+
: issue.severity === 'warning' ? 'ā ļø'
|
|
222
|
+
: 'ā¹ļø';
|
|
223
|
+
console.log(color(` ${icon} ${issue.file}:${issue.line || 1}`));
|
|
224
|
+
console.log(chalk.dim(` ${issue.type}: ${issue.message}`));
|
|
225
|
+
if (issue.autoFixable && !options.autoFix) {
|
|
226
|
+
console.log(chalk.dim(` (auto-fixable with --auto-fix)`));
|
|
227
|
+
}
|
|
228
|
+
console.log();
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
// Final status
|
|
232
|
+
if (result.valid) {
|
|
233
|
+
console.log(chalk.green('ā
Documentation is valid!\n'));
|
|
234
|
+
process.exit(0);
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
console.log(chalk.red('ā Documentation has errors.\n'));
|
|
238
|
+
if (!options.autoFix) {
|
|
239
|
+
console.log(chalk.dim(' Try running with --auto-fix to fix common issues.\n'));
|
|
240
|
+
}
|
|
241
|
+
process.exit(1);
|
|
242
|
+
}
|
|
239
243
|
}
|
|
240
244
|
/**
|
|
241
245
|
* Kill all running Docusaurus processes
|