specweave 1.0.147 → 1.0.150
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 +91 -72
- package/README.md +5 -1
- package/dist/src/cli/commands/export-skills.d.ts.map +1 -1
- package/dist/src/cli/commands/export-skills.js.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.js +48 -1
- package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
- package/dist/src/core/living-docs/sync-helpers/generators.d.ts.map +1 -1
- package/dist/src/core/living-docs/sync-helpers/generators.js +19 -0
- package/dist/src/core/living-docs/sync-helpers/generators.js.map +1 -1
- package/dist/src/core/plugins/plugin-loader.d.ts +2 -2
- package/dist/src/core/plugins/plugin-loader.d.ts.map +1 -1
- package/dist/src/core/plugins/plugin-loader.js +6 -14
- package/dist/src/core/plugins/plugin-loader.js.map +1 -1
- package/dist/src/core/types/plugin.d.ts +0 -7
- package/dist/src/core/types/plugin.d.ts.map +1 -1
- package/dist/src/core/types/plugin.js.map +1 -1
- package/dist/src/utils/image-generator.d.ts +315 -0
- package/dist/src/utils/image-generator.d.ts.map +1 -0
- package/dist/src/utils/image-generator.js +579 -0
- package/dist/src/utils/image-generator.js.map +1 -0
- package/package.json +1 -1
- package/plugins/specweave/hooks/hooks.json +4 -0
- package/plugins/specweave/hooks/stop-sync.sh +200 -0
- package/plugins/specweave/hooks/v2/detectors/us-completion-detector.sh +6 -0
- package/plugins/specweave/hooks/v2/dispatchers/post-tool-use.sh +41 -30
- package/plugins/specweave/hooks/v2/dispatchers/session-start.sh +8 -20
- package/plugins/specweave/hooks/v2/queue/enqueue.sh +31 -29
- package/plugins/specweave/scripts/cleanup-legacy-state.sh +80 -0
- package/plugins/specweave/scripts/force-kill.sh +7 -16
- package/plugins/specweave/skills/docs-writer/SKILL.md +98 -0
- package/plugins/specweave/skills/export-skills/SKILL.md +0 -2
- package/plugins/specweave/skills/increment-planner/SKILL.md +0 -2
- package/plugins/specweave/skills/living-docs-navigator/SKILL.md +120 -0
- package/plugins/specweave-docs/skills/stakeholder-docs/SKILL.md +244 -0
- package/plugins/specweave-testing/skills/image-generation/SKILL.md +83 -0
- package/plugins/specweave-ui/skills/image-generation/SKILL.md +57 -0
- package/src/templates/CLAUDE.md.template +54 -0
- package/plugins/specweave/hooks/v2/queue/dequeue.sh +0 -34
- package/plugins/specweave/hooks/v2/queue/processor.sh +0 -247
package/CLAUDE.md
CHANGED
|
@@ -1,10 +1,64 @@
|
|
|
1
|
-
<!-- SW:META template="claude" version="1.0.
|
|
1
|
+
<!-- SW:META template="claude" version="1.0.150" sections="header,claude-code-concepts,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
|
-
<!-- SW:SECTION:header version="1.0.
|
|
3
|
+
<!-- SW:SECTION:header version="1.0.149" -->
|
|
4
4
|
**Framework**: SpecWeave | **Truth**: `spec.md` + `tasks.md`
|
|
5
5
|
<!-- SW:END:header -->
|
|
6
6
|
|
|
7
|
-
<!-- SW:SECTION:
|
|
7
|
+
<!-- SW:SECTION:claude-code-concepts version="1.0.150" -->
|
|
8
|
+
## Claude Code Concepts (2.1.3+)
|
|
9
|
+
|
|
10
|
+
**Skills and slash commands are now unified.** Both file formats create the same `/name` command:
|
|
11
|
+
- `.claude/commands/review.md` → `/review`
|
|
12
|
+
- `.claude/skills/review/SKILL.md` → `/review`
|
|
13
|
+
|
|
14
|
+
### Core Concepts
|
|
15
|
+
|
|
16
|
+
| Concept | What It Is | How to Use |
|
|
17
|
+
|---------|------------|------------|
|
|
18
|
+
| **Skills** | Reusable instructions in SKILL.md | `/skill-name` or auto-invoke via keywords |
|
|
19
|
+
| **Plugins** | Packages with skills, agents, hooks | `claude plugin install sw@specweave` |
|
|
20
|
+
| **Agents** | Isolated subagents with own context | Task tool or `context: fork` in skill |
|
|
21
|
+
|
|
22
|
+
### Skill Invocation Control (Frontmatter)
|
|
23
|
+
|
|
24
|
+
| Frontmatter | User Can Invoke | Claude Can Invoke | Use Case |
|
|
25
|
+
|-------------|-----------------|-------------------|----------|
|
|
26
|
+
| (default) | Yes | Yes | Most skills |
|
|
27
|
+
| `disable-model-invocation: true` | Yes | **No** | Workflows with side effects (`/deploy`) |
|
|
28
|
+
| `user-invocable: false` | **No** | Yes | Background knowledge |
|
|
29
|
+
|
|
30
|
+
### SpecWeave Skill Organization
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
plugins/specweave/
|
|
34
|
+
├── commands/ # User-invocable workflows (have hooks)
|
|
35
|
+
│ ├── do.md # → /sw:do (execute tasks)
|
|
36
|
+
│ ├── done.md # → /sw:done (close increment)
|
|
37
|
+
│ └── status.md # → /sw:status
|
|
38
|
+
└── skills/ # Auto-activating expertise (keyword-triggered)
|
|
39
|
+
├── architect/ # → activates on "architecture", "system design"
|
|
40
|
+
├── pm/ # → activates on "product", "requirements", "MVP"
|
|
41
|
+
└── tech-lead/ # → activates on "code review", "best practices"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Quick Examples
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
# Explicit invocation (user types command)
|
|
48
|
+
/sw:do # Execute tasks
|
|
49
|
+
/sw:increment "auth feature" # Plan increment
|
|
50
|
+
|
|
51
|
+
# Auto-activation (Claude detects keywords, loads skill)
|
|
52
|
+
"Design the auth architecture" # → architect skill
|
|
53
|
+
"Help me plan this product" # → PM skill
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Key Insight
|
|
57
|
+
|
|
58
|
+
**Old "commands" are just skills with `disable-model-invocation: true`** - they only respond to explicit `/name` invocation, not keyword detection.
|
|
59
|
+
<!-- SW:END:claude-code-concepts -->
|
|
60
|
+
|
|
61
|
+
<!-- SW:SECTION:start version="1.0.149" -->
|
|
8
62
|
## Getting Started
|
|
9
63
|
|
|
10
64
|
**Initial increment**: `0001-project-setup` (auto-created by `specweave init`)
|
|
@@ -14,33 +68,17 @@
|
|
|
14
68
|
2. **Customize**: Edit spec.md and use for setup tasks
|
|
15
69
|
<!-- SW:END:start -->
|
|
16
70
|
|
|
17
|
-
<!-- SW:SECTION:autodetect version="1.0.
|
|
18
|
-
## Auto-Detection
|
|
19
|
-
|
|
20
|
-
SpecWeave auto-detects
|
|
21
|
-
|
|
22
|
-
**
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
| New features | "build X", "create Y", "add feature Z" |
|
|
26
|
-
| Refactoring | "refactor X", "migrate to Y", "restructure Z" |
|
|
27
|
-
| Architecture | "design", "set up", "initialize" |
|
|
28
|
-
| Bug fixes (non-trivial) | "fix the login bug", "debug authentication" |
|
|
29
|
-
| Hotfixes | "hotfix", "urgent", "production bug" |
|
|
30
|
-
|
|
31
|
-
**SKIP increment for**:
|
|
32
|
-
| Signal | Example |
|
|
33
|
-
|--------|---------|
|
|
34
|
-
| Questions | "how do I...", "what is...", "explain..." |
|
|
35
|
-
| Exploration | "show me...", "find...", "search for..." |
|
|
36
|
-
| Commands | "run tests", "build", "deploy" |
|
|
37
|
-
| Small fixes | "fix typo", "update version", "change port" |
|
|
38
|
-
| Already in workflow | `/sw:*` commands |
|
|
39
|
-
|
|
40
|
-
**Disable**: Set `incrementAssist.enabled: false` in `.specweave/config.json`
|
|
71
|
+
<!-- SW:SECTION:autodetect version="1.0.149" -->
|
|
72
|
+
## Auto-Detection
|
|
73
|
+
|
|
74
|
+
SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
|
|
75
|
+
|
|
76
|
+
**Signals** (5+ = auto-route): Project name | Features list (3+) | Tech stack | Timeline/MVP | Problem statement | Business model
|
|
77
|
+
|
|
78
|
+
**Opt-out phrases**: "Just brainstorm first" | "Don't plan yet" | "Quick discussion" | "Let's explore ideas"
|
|
41
79
|
<!-- SW:END:autodetect -->
|
|
42
80
|
|
|
43
|
-
<!-- SW:SECTION:metarule version="1.0.
|
|
81
|
+
<!-- SW:SECTION:metarule version="1.0.149" -->
|
|
44
82
|
## Meta-Rule: Think-Before-Act
|
|
45
83
|
|
|
46
84
|
**Satisfy dependencies BEFORE dependent operations.**
|
|
@@ -51,7 +89,7 @@ SpecWeave auto-detects when to suggest creating increments (~100ms, keyword-base
|
|
|
51
89
|
```
|
|
52
90
|
<!-- SW:END:metarule -->
|
|
53
91
|
|
|
54
|
-
<!-- SW:SECTION:rules version="1.0.
|
|
92
|
+
<!-- SW:SECTION:rules version="1.0.149" -->
|
|
55
93
|
## Rules
|
|
56
94
|
|
|
57
95
|
1. **Files** → `.specweave/increments/####-name/` (see Structure section for details)
|
|
@@ -62,7 +100,7 @@ SpecWeave auto-detects when to suggest creating increments (~100ms, keyword-base
|
|
|
62
100
|
6. **⛔ Marketplace refresh**: Use `specweave refresh-marketplace` CLI (not `scripts/refresh-marketplace.sh`)
|
|
63
101
|
<!-- SW:END:rules -->
|
|
64
102
|
|
|
65
|
-
<!-- SW:SECTION:workflow version="1.0.
|
|
103
|
+
<!-- SW:SECTION:workflow version="1.0.149" -->
|
|
66
104
|
## Workflow
|
|
67
105
|
|
|
68
106
|
`/sw:increment "X"` → `/sw:do` → `/sw:progress` → `/sw:done 0001`
|
|
@@ -82,7 +120,7 @@ SpecWeave auto-detects when to suggest creating increments (~100ms, keyword-base
|
|
|
82
120
|
**Natural language**: "Let's build X" → `/sw:increment` | "What's status?" → `/sw:progress` | "We're done" → `/sw:done` | "Ship while sleeping" → `/sw:auto`
|
|
83
121
|
<!-- SW:END:workflow -->
|
|
84
122
|
|
|
85
|
-
<!-- SW:SECTION:reflect version="1.0.
|
|
123
|
+
<!-- SW:SECTION:reflect version="1.0.149" -->
|
|
86
124
|
## Skill Memories
|
|
87
125
|
|
|
88
126
|
SpecWeave learns from corrections. Learnings saved here automatically. Edit or delete as needed.
|
|
@@ -95,7 +133,7 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
|
|
|
95
133
|
<!-- Auto-captured by SpecWeave reflect. Edit or delete as needed. -->
|
|
96
134
|
<!-- Learnings are organized by skill name. User edits override SpecWeave defaults. -->
|
|
97
135
|
|
|
98
|
-
<!-- SW:SECTION:context version="1.0.
|
|
136
|
+
<!-- SW:SECTION:context version="1.0.149" -->
|
|
99
137
|
## Context
|
|
100
138
|
|
|
101
139
|
**Before implementing**: Check ADRs at `.specweave/docs/internal/architecture/adr/`
|
|
@@ -103,7 +141,7 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
|
|
|
103
141
|
**Load context**: `/sw:context <topic>` loads relevant living docs into conversation
|
|
104
142
|
<!-- SW:END:context -->
|
|
105
143
|
|
|
106
|
-
<!-- SW:SECTION:structure version="1.0.
|
|
144
|
+
<!-- SW:SECTION:structure version="1.0.149" -->
|
|
107
145
|
## Structure
|
|
108
146
|
|
|
109
147
|
```
|
|
@@ -118,7 +156,7 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
|
|
|
118
156
|
**Everything else → subfolders**: `reports/` | `logs/` | `scripts/` | `backups/`
|
|
119
157
|
<!-- SW:END:structure -->
|
|
120
158
|
|
|
121
|
-
<!-- SW:SECTION:taskformat version="1.0.
|
|
159
|
+
<!-- SW:SECTION:taskformat version="1.0.149" -->
|
|
122
160
|
## Task Format
|
|
123
161
|
|
|
124
162
|
```markdown
|
|
@@ -128,7 +166,7 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
|
|
|
128
166
|
```
|
|
129
167
|
<!-- SW:END:taskformat -->
|
|
130
168
|
|
|
131
|
-
<!-- SW:SECTION:secrets version="1.0.
|
|
169
|
+
<!-- SW:SECTION:secrets version="1.0.149" -->
|
|
132
170
|
## Secrets Check
|
|
133
171
|
|
|
134
172
|
**BEFORE CLI tools**: Check existing config first!
|
|
@@ -142,7 +180,7 @@ gh auth status
|
|
|
142
180
|
**SECURITY**: NEVER use `grep TOKEN .env` without `-q` flag - it exposes credentials in terminal!
|
|
143
181
|
<!-- SW:END:secrets -->
|
|
144
182
|
|
|
145
|
-
<!-- SW:SECTION:syncing version="1.0.
|
|
183
|
+
<!-- SW:SECTION:syncing version="1.0.149" -->
|
|
146
184
|
## External Sync (GitHub/JIRA/ADO)
|
|
147
185
|
|
|
148
186
|
**Commands**: `/sw-github:sync {id}` (issues) | `/sw:sync-specs` (living docs only)
|
|
@@ -152,7 +190,7 @@ gh auth status
|
|
|
152
190
|
**Config**: Set `sync.github.enabled: true` + `canUpdateExternalItems: true` in config.json
|
|
153
191
|
<!-- SW:END:syncing -->
|
|
154
192
|
|
|
155
|
-
<!-- SW:SECTION:testing version="1.0.
|
|
193
|
+
<!-- SW:SECTION:testing version="1.0.149" -->
|
|
156
194
|
## Testing
|
|
157
195
|
|
|
158
196
|
BDD in tasks.md | Unit >80% | `.test.ts` (Vitest)
|
|
@@ -164,7 +202,7 @@ vi.mock('./module', () => ({ func: mockFn }));
|
|
|
164
202
|
```
|
|
165
203
|
<!-- SW:END:testing -->
|
|
166
204
|
|
|
167
|
-
<!-- SW:SECTION:tdd version="1.0.
|
|
205
|
+
<!-- SW:SECTION:tdd version="1.0.149" -->
|
|
168
206
|
## TDD Mode (Test-Driven Development)
|
|
169
207
|
|
|
170
208
|
**When `testing.defaultTestMode: "TDD"` is configured**, follow RED-GREEN-REFACTOR discipline:
|
|
@@ -225,7 +263,7 @@ When TDD is enabled, tasks include phase markers:
|
|
|
225
263
|
**Rule**: Complete dependencies BEFORE dependent tasks (RED before GREEN).
|
|
226
264
|
<!-- SW:END:tdd -->
|
|
227
265
|
|
|
228
|
-
<!-- SW:SECTION:api version="1.0.
|
|
266
|
+
<!-- SW:SECTION:api version="1.0.149" -->
|
|
229
267
|
## API Development (OpenAPI-First)
|
|
230
268
|
|
|
231
269
|
**For API projects only.** Commands: `/sw:api-docs --all` | `--openapi` | `--postman` | `--validate`
|
|
@@ -233,13 +271,13 @@ When TDD is enabled, tasks include phase markers:
|
|
|
233
271
|
Enable in config: `{"apiDocs":{"enabled":true,"openApiPath":"openapi.yaml"}}`
|
|
234
272
|
<!-- SW:END:api -->
|
|
235
273
|
|
|
236
|
-
<!-- SW:SECTION:limits version="1.0.
|
|
274
|
+
<!-- SW:SECTION:limits version="1.0.149" -->
|
|
237
275
|
## Limits
|
|
238
276
|
|
|
239
277
|
**Max 1500 lines/file** — extract before adding
|
|
240
278
|
<!-- SW:END:limits -->
|
|
241
279
|
|
|
242
|
-
<!-- SW:SECTION:troubleshooting version="1.0.
|
|
280
|
+
<!-- SW:SECTION:troubleshooting version="1.0.149" -->
|
|
243
281
|
## Troubleshooting
|
|
244
282
|
|
|
245
283
|
| Issue | Fix |
|
|
@@ -255,40 +293,21 @@ Enable in config: `{"apiDocs":{"enabled":true,"openApiPath":"openapi.yaml"}}`
|
|
|
255
293
|
| Marketplace shows 0 | Normal with auto-load; `/plugin list` shows actual |
|
|
256
294
|
<!-- SW:END:troubleshooting -->
|
|
257
295
|
|
|
258
|
-
<!-- SW:SECTION:lazyloading version="1.0.
|
|
259
|
-
## Plugin Auto-Loading
|
|
260
|
-
|
|
261
|
-
Plugins load
|
|
262
|
-
|
|
263
|
-
**How it works**:
|
|
264
|
-
1. User prompt contains keyword (e.g., "react") → detected instantly
|
|
265
|
-
2. `claude plugin install sw-frontend@specweave` runs synchronously (~200ms)
|
|
266
|
-
3. Claude Code hot-reload picks up the plugin
|
|
267
|
-
4. Claude processes the prompt WITH the plugin's expertise
|
|
268
|
-
|
|
269
|
-
**Keyword → Plugin mapping**:
|
|
270
|
-
| Keywords | Plugin |
|
|
271
|
-
|----------|--------|
|
|
272
|
-
| react, vue, angular, frontend, dashboard | sw-frontend |
|
|
273
|
-
| api, backend, database, express, graphql | sw-backend |
|
|
274
|
-
| test, jest, vitest, playwright, tdd | sw-testing |
|
|
275
|
-
| kubernetes, k8s, helm, eks, gke | sw-k8s |
|
|
276
|
-
| docker, terraform, aws, azure, gcp | sw-infra |
|
|
277
|
-
| github, pr, actions | sw-github |
|
|
278
|
-
| jira | sw-jira |
|
|
279
|
-
| kafka, confluent | sw-kafka |
|
|
280
|
-
| stripe, paypal, payment | sw-payments |
|
|
281
|
-
|
|
282
|
-
**Manual control**:
|
|
296
|
+
<!-- SW:SECTION:lazyloading version="1.0.149" -->
|
|
297
|
+
## Plugin Auto-Loading
|
|
298
|
+
|
|
299
|
+
Plugins load automatically based on project type and keywords. Manual install if needed:
|
|
300
|
+
|
|
283
301
|
```bash
|
|
284
|
-
claude plugin install sw-frontend@specweave # Install
|
|
302
|
+
claude plugin install sw-frontend@specweave # Install plugin
|
|
303
|
+
claude plugin list # Check installed
|
|
285
304
|
export SPECWEAVE_DISABLE_AUTO_LOAD=1 # Disable auto-load
|
|
286
305
|
```
|
|
287
306
|
|
|
288
307
|
**Token savings**: Core ~3-5K tokens vs all plugins ~60K+
|
|
289
308
|
<!-- SW:END:lazyloading -->
|
|
290
309
|
|
|
291
|
-
<!-- SW:SECTION:principles version="1.0.
|
|
310
|
+
<!-- SW:SECTION:principles version="1.0.149" -->
|
|
292
311
|
## Principles
|
|
293
312
|
|
|
294
313
|
1. **Spec-first**: `/sw:increment` before coding
|
|
@@ -297,7 +316,7 @@ export SPECWEAVE_DISABLE_AUTO_LOAD=1 # Disable auto-load
|
|
|
297
316
|
4. **Traceable**: All work → specs → ACs
|
|
298
317
|
<!-- SW:END:principles -->
|
|
299
318
|
|
|
300
|
-
<!-- SW:SECTION:linking version="1.0.
|
|
319
|
+
<!-- SW:SECTION:linking version="1.0.149" -->
|
|
301
320
|
## Bidirectional Linking
|
|
302
321
|
|
|
303
322
|
Tasks ↔ User Stories auto-linked via AC-IDs: `AC-US1-01` → `US-001`
|
|
@@ -305,7 +324,7 @@ Tasks ↔ User Stories auto-linked via AC-IDs: `AC-US1-01` → `US-001`
|
|
|
305
324
|
Task format: `**AC**: AC-US1-01, AC-US1-02` (CRITICAL for linking)
|
|
306
325
|
<!-- SW:END:linking -->
|
|
307
326
|
|
|
308
|
-
<!-- SW:SECTION:mcp version="1.0.
|
|
327
|
+
<!-- SW:SECTION:mcp version="1.0.149" -->
|
|
309
328
|
## External Services
|
|
310
329
|
|
|
311
330
|
**Priority**: CLI tools first (simpler) → MCP for complex integrations
|
|
@@ -327,7 +346,7 @@ claude mcp add --transport stdio postgres -- npx -y @modelcontextprotocol/server
|
|
|
327
346
|
MCP supports lazy-loading (auto mode) - tools load on-demand when >10% context.
|
|
328
347
|
<!-- SW:END:mcp -->
|
|
329
348
|
|
|
330
|
-
<!-- SW:SECTION:auto version="1.0.
|
|
349
|
+
<!-- SW:SECTION:auto version="1.0.149" -->
|
|
331
350
|
## Auto Mode
|
|
332
351
|
|
|
333
352
|
**Commands**: `/sw:auto` (start) | `/sw:auto-status` (check) | `/sw:cancel-auto` (emergency only)
|
|
@@ -344,7 +363,7 @@ MCP supports lazy-loading (auto mode) - tools load on-demand when >10% context.
|
|
|
344
363
|
**STOP & ASK** if: Spec conflicts | Task unnecessary | Requirement ambiguous
|
|
345
364
|
<!-- SW:END:auto -->
|
|
346
365
|
|
|
347
|
-
<!-- SW:SECTION:docs version="1.0.
|
|
366
|
+
<!-- SW:SECTION:docs version="1.0.149" -->
|
|
348
367
|
## Docs
|
|
349
368
|
|
|
350
369
|
[spec-weave.com](https://spec-weave.com)
|
package/README.md
CHANGED
|
@@ -174,8 +174,12 @@ Then:
|
|
|
174
174
|
| **JIRA** | Epics, stories, status sync |
|
|
175
175
|
| **Azure DevOps** | Work items, area paths |
|
|
176
176
|
|
|
177
|
+
**Automatic sync**: When you close an increment (`/sw:done`), external tools update immediately. Task progress syncs at session end.
|
|
178
|
+
|
|
177
179
|
```bash
|
|
178
|
-
/sw:sync-progress
|
|
180
|
+
/sw:sync-progress # Manual: Push updates to ALL tools
|
|
181
|
+
/sw-github:sync 0001 # Manual: Sync specific increment to GitHub
|
|
182
|
+
/sw-jira:sync 0001 # Manual: Sync specific increment to JIRA
|
|
179
183
|
```
|
|
180
184
|
|
|
181
185
|
---
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-skills.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/export-skills.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"export-skills.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/export-skills.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgCH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAuID;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAgI7F;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOrF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-skills.js","sourceRoot":"","sources":["../../../../src/cli/commands/export-skills.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,aAAa,IAAI,MAAM,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"export-skills.js","sourceRoot":"","sources":["../../../../src/cli/commands/export-skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"living-docs-sync.d.ts","sourceRoot":"","sources":["../../../../src/core/living-docs/living-docs-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAUH,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAQ9D,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,aAAa,EACb,uBAAuB,EACxB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"living-docs-sync.d.ts","sourceRoot":"","sources":["../../../../src/core/living-docs/living-docs-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAUH,OAAO,EAAE,MAAM,EAAiB,MAAM,uBAAuB,CAAC;AAQ9D,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,aAAa,EACb,uBAAuB,EACxB,MAAM,YAAY,CAAC;AA4BpB,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAC;AAE5F,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,iBAAiB,CAA2B;gBAExC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO;IAYlE;;;;;;;OAOG;IACH,YAAY,IAAI,MAAM;IAItB;;;;;OAKG;YACW,mBAAmB;IASjC;;OAEG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IAwYxF;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;YACW,wBAAwB;IAwDtC;;;;;;;;;OASG;IACH,OAAO,CAAC,8BAA8B;IA+BtC;;;;;;;;;;;;;OAaG;YACW,2BAA2B;IAmEzC;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IA6BhC;;OAEG;YACW,sBAAsB;IAKpC;;;;;;;;;;;;;;OAcG;YACW,kBAAkB;IAiIhC;;OAEG;YACW,uBAAuB;IAcrC;;OAEG;YACW,wBAAwB;IAmFtC;;;OAGG;YACW,sBAAsB;IAqGpC;;OAEG;YACW,iBAAiB;IA0C/B;;;;;;;;;;;OAWG;YACW,oBAAoB;IAwClC;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,iBAAiB;IAwCzB;;OAEG;YACW,kBAAkB;IAuHhC;;;;OAIG;YACW,sBAAsB;IAkCpC;;OAEG;YACW,kBAAkB;IAmChC;;;;;;;;;;;;OAYG;YACW,mBAAmB;IA6EjC;;;;;;OAMG;IACH;;;;;;;;;;;OAWG;YACW,mBAAmB;IAyIjC;;;;;;;;;OASG;YACW,YAAY;IA0F1B;;;;;;;;;;;;OAYG;YACW,UAAU;IAyFxB;;;;;;;;;;;;OAYG;YACW,SAAS;IAyFvB;;;;;;;;;OASG;YACW,4BAA4B;CAmB3C"}
|
|
@@ -33,6 +33,8 @@ import { deriveFeatureId, extractIncrementNumber } from '../../utils/feature-id-
|
|
|
33
33
|
import { getProfilesByProvider } from '../types/sync-profile.js';
|
|
34
34
|
// Import extracted helpers
|
|
35
35
|
import { calculateUSStatus, extractUserStories, extractAcceptanceCriteria, generateFeatureFile, generateUserStoryFile, pathExists, readJson, ensureDir, findExistingUserStoryFile, cleanupDuplicateFiles, cleanupTempFiles, } from './sync-helpers/index.js';
|
|
36
|
+
// Image generation for living docs (v1.0.148+)
|
|
37
|
+
import { generateLivingDocsImagesEnhanced, getRelativeImagePath, markdownImage, } from '../../utils/image-generator.js';
|
|
36
38
|
export class LivingDocsSync {
|
|
37
39
|
constructor(projectRoot, options = {}) {
|
|
38
40
|
this.projectRoot = projectRoot;
|
|
@@ -194,6 +196,26 @@ export class LivingDocsSync {
|
|
|
194
196
|
if (crossRefs) {
|
|
195
197
|
featureContent += crossRefs;
|
|
196
198
|
}
|
|
199
|
+
// Generate feature illustration image for cross-project (v1.0.148+)
|
|
200
|
+
// Detect doc context: internal by default (living docs are internal)
|
|
201
|
+
const skipImageGen = process.env.SPECWEAVE_SKIP_IMAGE_GEN === 'true';
|
|
202
|
+
const docContext = crossProjectPath.includes('/public/') ? 'public' : 'internal';
|
|
203
|
+
if (!skipImageGen) {
|
|
204
|
+
try {
|
|
205
|
+
const crossProjectFeatureFile = path.join(crossProjectPath, 'FEATURE.md');
|
|
206
|
+
const imageResult = await generateLivingDocsImagesEnhanced(crossProjectPath, parsed.title, featureId, docContext);
|
|
207
|
+
if (imageResult.featureImage) {
|
|
208
|
+
const imagePath = getRelativeImagePath(crossProjectFeatureFile, imageResult.featureImage);
|
|
209
|
+
const imageMarkdown = markdownImage(`${parsed.title} illustration`, imagePath);
|
|
210
|
+
featureContent = featureContent.replace(/^(## TL;DR\n\n(?:[^\n]+\n)*\n)/m, `$1${imageMarkdown}\n\n`);
|
|
211
|
+
this.logger.log(` 🖼️ Generated ${docContext} feature illustration: ${path.basename(imageResult.featureImage)}`);
|
|
212
|
+
result.filesCreated.push(imageResult.featureImage);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
catch (imgError) {
|
|
216
|
+
this.logger.log(` ⚠️ Image generation skipped: ${imgError}`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
197
219
|
await fs.writeFile(path.join(crossProjectPath, 'FEATURE.md'), featureContent, 'utf-8');
|
|
198
220
|
result.filesCreated.push(path.join(crossProjectPath, 'FEATURE.md'));
|
|
199
221
|
// Create user story files for this target path
|
|
@@ -275,7 +297,32 @@ export class LivingDocsSync {
|
|
|
275
297
|
}
|
|
276
298
|
if (!options.dryRun) {
|
|
277
299
|
await ensureDir(projectPath);
|
|
278
|
-
|
|
300
|
+
let featureContent = generateFeatureFile(featureId, parsed, incrementId);
|
|
301
|
+
// Generate feature illustration image (v1.0.148+)
|
|
302
|
+
// Skip if SPECWEAVE_SKIP_IMAGE_GEN is set (for CI/testing)
|
|
303
|
+
// Enhanced in v1.0.149: Context-aware enterprise styling (public vs internal)
|
|
304
|
+
const skipImageGen = process.env.SPECWEAVE_SKIP_IMAGE_GEN === 'true';
|
|
305
|
+
if (!skipImageGen) {
|
|
306
|
+
try {
|
|
307
|
+
// Detect document context based on path for enterprise-appropriate styling
|
|
308
|
+
const docContext = projectPath.includes('/public/') ? 'public' : 'internal';
|
|
309
|
+
const imageResult = await generateLivingDocsImagesEnhanced(projectPath, parsed.title, featureId, docContext);
|
|
310
|
+
if (imageResult.featureImage) {
|
|
311
|
+
// Add image reference to feature content (after TL;DR section)
|
|
312
|
+
const imagePath = getRelativeImagePath(featureFile, imageResult.featureImage);
|
|
313
|
+
const imageMarkdown = markdownImage(`${parsed.title} illustration`, imagePath);
|
|
314
|
+
// Insert after ## TL;DR section
|
|
315
|
+
featureContent = featureContent.replace(/^(## TL;DR\n\n(?:[^\n]+\n)*\n)/m, `$1${imageMarkdown}\n\n`);
|
|
316
|
+
const styleLabel = docContext === 'public' ? 'marketing-grade' : 'functional';
|
|
317
|
+
this.logger.log(` 🖼️ Generated ${styleLabel} feature illustration: ${path.basename(imageResult.featureImage)}`);
|
|
318
|
+
result.filesCreated.push(imageResult.featureImage);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
catch (imgError) {
|
|
322
|
+
// Image generation is non-blocking - log but continue
|
|
323
|
+
this.logger.log(` ⚠️ Image generation skipped: ${imgError}`);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
279
326
|
await fs.writeFile(featureFile, featureContent, 'utf-8');
|
|
280
327
|
result.filesCreated.push(featureFile);
|
|
281
328
|
}
|