specweave 1.0.243 → 1.0.244
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/dist/src/core/hooks/project-scope-guard.d.ts +1 -1
- package/dist/src/core/hooks/project-scope-guard.js +1 -1
- package/dist/src/core/lazy-loading/llm-plugin-detector.js +1 -1
- package/dist/src/core/session/handoff-context.d.ts.map +1 -1
- package/dist/src/core/session/handoff-context.js +2 -7
- package/dist/src/core/session/handoff-context.js.map +1 -1
- package/package.json +1 -1
- package/plugins/SKILLS-VS-AGENTS.md +1 -1
- package/plugins/specweave/commands/sync-progress.md +8 -8
- package/plugins/specweave/hooks/user-prompt-submit.sh +3 -3
- package/plugins/specweave/skills/done/SKILL.md +23 -1
- package/plugins/specweave/skills/increment-planner/SKILL.md +199 -0
- package/plugins/specweave/skills/judge-llm/SKILL.md +150 -0
- package/plugins/specweave/skills/progress-sync/SKILL.md +3 -3
- package/plugins/specweave/skills/team-build/SKILL.md +8 -0
- package/plugins/specweave/skills/team-orchestrate/SKILL.md +103 -57
- package/plugins/specweave-ado/commands/close.md +1 -1
- package/plugins/specweave-ado/commands/create.md +1 -1
- package/plugins/specweave-ado/commands/push.md +1 -1
- package/plugins/specweave-ado/commands/status.md +2 -2
- package/plugins/specweave-ado/commands/sync.md +1 -1
- package/plugins/specweave-github/commands/close.md +1 -1
- package/plugins/specweave-github/commands/create.md +3 -3
- package/plugins/specweave-github/commands/pull.md +1 -1
- package/plugins/specweave-github/commands/push.md +1 -1
- package/plugins/specweave-github/commands/status.md +1 -1
- package/plugins/specweave-jira/commands/close.md +1 -1
- package/plugins/specweave-jira/commands/create.md +1 -1
- package/plugins/specweave-jira/commands/pull.md +1 -1
- package/plugins/specweave-jira/commands/push.md +1 -1
- package/plugins/specweave-jira/commands/status.md +1 -1
- package/src/templates/AGENTS.md.template +18 -0
- package/src/templates/CLAUDE.md.template +20 -0
package/CLAUDE.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- SW:META template="claude" version="1.0.
|
|
1
|
+
<!-- SW:META template="claude" version="1.0.243" 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.243" -->
|
|
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.243" -->
|
|
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.243" -->
|
|
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.243" -->
|
|
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.243" -->
|
|
99
99
|
## Rules
|
|
100
100
|
|
|
101
101
|
1. **Files** → `.specweave/increments/####-name/` (see Structure section for details)
|
|
@@ -114,7 +114,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
|
|
|
114
114
|
Use next available number. **NEVER create duplicate prefixes.**
|
|
115
115
|
<!-- SW:END:rules -->
|
|
116
116
|
|
|
117
|
-
<!-- SW:SECTION:workflow version="1.0.
|
|
117
|
+
<!-- SW:SECTION:workflow version="1.0.243" -->
|
|
118
118
|
## Workflow
|
|
119
119
|
|
|
120
120
|
`/sw:increment "X"` → `/sw:do` → `/sw:progress` → `/sw:done 0001`
|
|
@@ -140,7 +140,7 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
|
|
|
140
140
|
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`
|
|
141
141
|
<!-- SW:END:save-nested-repos -->
|
|
142
142
|
|
|
143
|
-
<!-- SW:SECTION:reflect version="1.0.
|
|
143
|
+
<!-- SW:SECTION:reflect version="1.0.243" -->
|
|
144
144
|
## Skill Memories
|
|
145
145
|
|
|
146
146
|
SpecWeave learns from corrections. Learnings saved here automatically. Edit or delete as needed.
|
|
@@ -159,7 +159,7 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
|
|
|
159
159
|
- Auto command: explicit stop conditions, visible output
|
|
160
160
|
- Prefer leaderboard-style reporting for analysis
|
|
161
161
|
|
|
162
|
-
<!-- SW:SECTION:context version="1.0.
|
|
162
|
+
<!-- SW:SECTION:context version="1.0.243" -->
|
|
163
163
|
## Context
|
|
164
164
|
|
|
165
165
|
**Before implementing**: Check ADRs at `.specweave/docs/internal/architecture/adr/`
|
|
@@ -167,7 +167,7 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
|
|
|
167
167
|
**Load context**: `/sw:context <topic>` loads relevant living docs into conversation
|
|
168
168
|
<!-- SW:END:context -->
|
|
169
169
|
|
|
170
|
-
<!-- SW:SECTION:structure version="1.0.
|
|
170
|
+
<!-- SW:SECTION:structure version="1.0.243" -->
|
|
171
171
|
## Structure
|
|
172
172
|
|
|
173
173
|
```
|
|
@@ -182,7 +182,7 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
|
|
|
182
182
|
**Everything else → subfolders**: `reports/` | `logs/` | `scripts/` | `backups/`
|
|
183
183
|
<!-- SW:END:structure -->
|
|
184
184
|
|
|
185
|
-
<!-- SW:SECTION:taskformat version="1.0.
|
|
185
|
+
<!-- SW:SECTION:taskformat version="1.0.243" -->
|
|
186
186
|
## Task Format
|
|
187
187
|
|
|
188
188
|
```markdown
|
|
@@ -192,7 +192,7 @@ SpecWeave learns from corrections. Learnings saved here automatically. Edit or d
|
|
|
192
192
|
```
|
|
193
193
|
<!-- SW:END:taskformat -->
|
|
194
194
|
|
|
195
|
-
<!-- SW:SECTION:secrets version="1.0.
|
|
195
|
+
<!-- SW:SECTION:secrets version="1.0.243" -->
|
|
196
196
|
## Secrets Check
|
|
197
197
|
|
|
198
198
|
**BEFORE CLI tools**: Check existing config first!
|
|
@@ -206,7 +206,7 @@ gh auth status
|
|
|
206
206
|
**SECURITY**: NEVER use `grep TOKEN .env` without `-q` flag - it exposes credentials in terminal!
|
|
207
207
|
<!-- SW:END:secrets -->
|
|
208
208
|
|
|
209
|
-
<!-- SW:SECTION:syncing version="1.0.
|
|
209
|
+
<!-- SW:SECTION:syncing version="1.0.243" -->
|
|
210
210
|
## External Sync (GitHub/JIRA/ADO)
|
|
211
211
|
|
|
212
212
|
**Commands**: `/sw-github:sync {id}` (issues) | `/sw:sync-specs` (living docs only)
|
|
@@ -216,7 +216,7 @@ gh auth status
|
|
|
216
216
|
**Config**: Set `sync.github.enabled: true` + `canUpdateExternalItems: true` in config.json
|
|
217
217
|
<!-- SW:END:syncing -->
|
|
218
218
|
|
|
219
|
-
<!-- SW:SECTION:testing version="1.0.
|
|
219
|
+
<!-- SW:SECTION:testing version="1.0.243" -->
|
|
220
220
|
## Testing
|
|
221
221
|
|
|
222
222
|
BDD in tasks.md | Unit >80% | `.test.ts` (Vitest)
|
|
@@ -235,7 +235,7 @@ vi.mock('./module', () => ({ func: mockFn }));
|
|
|
235
235
|
**Install CLI**: `npm install -g @playwright/cli@latest`
|
|
236
236
|
<!-- SW:END:testing -->
|
|
237
237
|
|
|
238
|
-
<!-- SW:SECTION:tdd version="1.0.
|
|
238
|
+
<!-- SW:SECTION:tdd version="1.0.243" -->
|
|
239
239
|
## TDD Mode (Test-Driven Development)
|
|
240
240
|
|
|
241
241
|
**When `testing.defaultTestMode: "TDD"` is configured**, follow RED-GREEN-REFACTOR discipline:
|
|
@@ -296,7 +296,7 @@ When TDD is enabled, tasks include phase markers:
|
|
|
296
296
|
**Rule**: Complete dependencies BEFORE dependent tasks (RED before GREEN).
|
|
297
297
|
<!-- SW:END:tdd -->
|
|
298
298
|
|
|
299
|
-
<!-- SW:SECTION:api version="1.0.
|
|
299
|
+
<!-- SW:SECTION:api version="1.0.243" -->
|
|
300
300
|
## API Development (OpenAPI-First)
|
|
301
301
|
|
|
302
302
|
**For API projects only.** Commands: `/sw:api-docs --all` | `--openapi` | `--postman` | `--validate`
|
|
@@ -304,13 +304,13 @@ When TDD is enabled, tasks include phase markers:
|
|
|
304
304
|
Enable in config: `{"apiDocs":{"enabled":true,"openApiPath":"openapi.yaml"}}`
|
|
305
305
|
<!-- SW:END:api -->
|
|
306
306
|
|
|
307
|
-
<!-- SW:SECTION:limits version="1.0.
|
|
307
|
+
<!-- SW:SECTION:limits version="1.0.243" -->
|
|
308
308
|
## Limits
|
|
309
309
|
|
|
310
310
|
**Max 1500 lines/file** — extract before adding
|
|
311
311
|
<!-- SW:END:limits -->
|
|
312
312
|
|
|
313
|
-
<!-- SW:SECTION:troubleshooting version="1.0.
|
|
313
|
+
<!-- SW:SECTION:troubleshooting version="1.0.243" -->
|
|
314
314
|
## Troubleshooting
|
|
315
315
|
|
|
316
316
|
| Issue | Fix |
|
|
@@ -323,7 +323,7 @@ Enable in config: `{"apiDocs":{"enabled":true,"openApiPath":"openapi.yaml"}}`
|
|
|
323
323
|
| Session stuck | Kill + `rm -f .specweave/state/*.lock` + restart |
|
|
324
324
|
<!-- SW:END:troubleshooting -->
|
|
325
325
|
|
|
326
|
-
<!-- SW:SECTION:lazyloading version="1.0.
|
|
326
|
+
<!-- SW:SECTION:lazyloading version="1.0.243" -->
|
|
327
327
|
## Plugin Auto-Loading
|
|
328
328
|
|
|
329
329
|
Plugins load automatically based on project type and keywords. Manual install if needed:
|
|
@@ -337,7 +337,7 @@ export SPECWEAVE_DISABLE_AUTO_LOAD=1 # Disable auto-load
|
|
|
337
337
|
**Token savings**: Core ~3-5K tokens vs all plugins ~60K+
|
|
338
338
|
<!-- SW:END:lazyloading -->
|
|
339
339
|
|
|
340
|
-
<!-- SW:SECTION:principles version="1.0.
|
|
340
|
+
<!-- SW:SECTION:principles version="1.0.243" -->
|
|
341
341
|
## Principles
|
|
342
342
|
|
|
343
343
|
### SpecWeave Principles
|
|
@@ -353,7 +353,7 @@ export SPECWEAVE_DISABLE_AUTO_LOAD=1 # Disable auto-load
|
|
|
353
353
|
- **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).
|
|
354
354
|
<!-- SW:END:principles -->
|
|
355
355
|
|
|
356
|
-
<!-- SW:SECTION:linking version="1.0.
|
|
356
|
+
<!-- SW:SECTION:linking version="1.0.243" -->
|
|
357
357
|
## Bidirectional Linking
|
|
358
358
|
|
|
359
359
|
Tasks ↔ User Stories auto-linked via AC-IDs: `AC-US1-01` → `US-001`
|
|
@@ -361,7 +361,7 @@ Tasks ↔ User Stories auto-linked via AC-IDs: `AC-US1-01` → `US-001`
|
|
|
361
361
|
Task format: `**AC**: AC-US1-01, AC-US1-02` (CRITICAL for linking)
|
|
362
362
|
<!-- SW:END:linking -->
|
|
363
363
|
|
|
364
|
-
<!-- SW:SECTION:mcp version="1.0.
|
|
364
|
+
<!-- SW:SECTION:mcp version="1.0.243" -->
|
|
365
365
|
## External Services
|
|
366
366
|
|
|
367
367
|
**Priority**: CLI tools first (simpler) → MCP for complex integrations
|
|
@@ -383,7 +383,7 @@ claude mcp add --transport stdio postgres -- npx -y @modelcontextprotocol/server
|
|
|
383
383
|
MCP supports lazy-loading (auto mode) - tools load on-demand when >10% context.
|
|
384
384
|
<!-- SW:END:mcp -->
|
|
385
385
|
|
|
386
|
-
<!-- SW:SECTION:auto version="1.0.
|
|
386
|
+
<!-- SW:SECTION:auto version="1.0.243" -->
|
|
387
387
|
## Auto Mode
|
|
388
388
|
|
|
389
389
|
**Commands**: `/sw:auto` (start) | `/sw:auto-status` (check) | `/sw:cancel-auto` (emergency only)
|
|
@@ -400,7 +400,7 @@ MCP supports lazy-loading (auto mode) - tools load on-demand when >10% context.
|
|
|
400
400
|
**STOP & ASK** if: Spec conflicts | Task unnecessary | Requirement ambiguous
|
|
401
401
|
<!-- SW:END:auto -->
|
|
402
402
|
|
|
403
|
-
<!-- SW:SECTION:docs version="1.0.
|
|
403
|
+
<!-- SW:SECTION:docs version="1.0.243" -->
|
|
404
404
|
## Docs
|
|
405
405
|
|
|
406
406
|
[spec-weave.com](https://spec-weave.com)
|
|
@@ -39,7 +39,7 @@ import { findProjectRoot } from '../../utils/find-project-root.js';
|
|
|
39
39
|
*
|
|
40
40
|
* Detects patterns like:
|
|
41
41
|
* - /sw:increment "feature"
|
|
42
|
-
* - /sw-frontend:
|
|
42
|
+
* - /sw-frontend:frontend-architect
|
|
43
43
|
* - /SW:DO (case-insensitive)
|
|
44
44
|
*
|
|
45
45
|
* @param prompt - User's prompt
|
|
@@ -427,7 +427,7 @@ SKILL INVOCATION RULES:
|
|
|
427
427
|
│ (sw-payments) │ "Use stripe-integration for Stripe patterns" │
|
|
428
428
|
├──────────────────────┼──────────────────────────────────────────────────┤
|
|
429
429
|
│ Architecture Skills │ Recommended for design decisions │
|
|
430
|
-
│ (sw-frontend:
|
|
430
|
+
│ (sw-frontend:frontend-architect) │ "Consider frontend-architect for component design│
|
|
431
431
|
└──────────────────────┴──────────────────────────────────────────────────┘
|
|
432
432
|
|
|
433
433
|
WHEN TO MAKE SKILL MANDATORY:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff-context.d.ts","sourceRoot":"","sources":["../../../../src/core/session/handoff-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gCAAgC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,eAAe,EAAE,KAAK,EAAE,CAAC;IACzB,kDAAkD;IAClD,kBAAkB,EAAE,MAAM,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"handoff-context.d.ts","sourceRoot":"","sources":["../../../../src/core/session/handoff-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gCAAgC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wCAAwC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,eAAe,EAAE,KAAK,EAAE,CAAC;IACzB,kDAAkD;IAClD,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AA0SD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,qBAAqB,GAC7B,cAAc,CAwBhB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CAiExE"}
|
|
@@ -152,11 +152,6 @@ const PLUGIN_SKILLS = {
|
|
|
152
152
|
description: 'DevOps and infrastructure automation',
|
|
153
153
|
category: 'infrastructure',
|
|
154
154
|
},
|
|
155
|
-
{
|
|
156
|
-
name: 'sw-infra:infrastructure',
|
|
157
|
-
description: 'Infrastructure as Code expertise',
|
|
158
|
-
category: 'infrastructure',
|
|
159
|
-
},
|
|
160
155
|
],
|
|
161
156
|
'sw-testing': [
|
|
162
157
|
{
|
|
@@ -200,8 +195,8 @@ const PLUGIN_SKILLS = {
|
|
|
200
195
|
],
|
|
201
196
|
'sw-confluent': [
|
|
202
197
|
{
|
|
203
|
-
name: 'sw-confluent:confluent-
|
|
204
|
-
description: 'Confluent
|
|
198
|
+
name: 'sw-confluent:confluent-kafka-connect',
|
|
199
|
+
description: 'Confluent Kafka Connect integration',
|
|
205
200
|
category: 'streaming',
|
|
206
201
|
},
|
|
207
202
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff-context.js","sourceRoot":"","sources":["../../../../src/core/session/handoff-context.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"handoff-context.js","sourceRoot":"","sources":["../../../../src/core/session/handoff-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAoDH,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E,mCAAmC;AACnC,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B,wCAAwC;AACxC,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAEpD,sCAAsC;AACtC,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;AAEpD,2CAA2C;AAC3C,MAAM,eAAe,GAAG;IACtB,KAAK,EAAE,yBAAyB;IAChC,WAAW,EAAE,eAAe;IAC5B,QAAQ,EAAE,cAAc;IACxB,cAAc,EAAE,uBAAuB;IACvC,OAAO,EAAE,oBAAoB;IAC7B,MAAM,EAAE,4BAA4B;IACpC,aAAa,EAAE,kBAAkB;IACjC,eAAe,EAAE,6BAA6B;CACtC,CAAC;AAEX,iDAAiD;AACjD,MAAM,yBAAyB,GAAG;IAChC,mCAAmC;IACnC,uCAAuC;IACvC,6CAA6C;IAC7C,0CAA0C;CAClC,CAAC;AAEX,+EAA+E;AAC/E,oCAAoC;AACpC,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,aAAa,GAA4B;IAC7C,IAAI,EAAE;QACJ;YACE,IAAI,EAAE,eAAe;YACrB,WAAW,EAAE,8BAA8B;YAC3C,QAAQ,EAAE,UAAU;SACrB;QACD;YACE,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,0CAA0C;YACvD,QAAQ,EAAE,UAAU;SACrB;QACD;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,qCAAqC;YAClD,QAAQ,EAAE,UAAU;SACrB;QACD;YACE,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,6BAA6B;YAC1C,QAAQ,EAAE,UAAU;SACrB;QACD;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,qCAAqC;YAClD,QAAQ,EAAE,UAAU;SACrB;KACF;IACD,aAAa,EAAE;QACb;YACE,IAAI,EAAE,gCAAgC;YACtC,WAAW,EAAE,iCAAiC;YAC9C,QAAQ,EAAE,UAAU;SACrB;QACD;YACE,IAAI,EAAE,qCAAqC;YAC3C,WAAW,EAAE,+CAA+C;YAC5D,QAAQ,EAAE,UAAU;SACrB;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,WAAW,EAAE,oDAAoD;YACjE,QAAQ,EAAE,UAAU;SACrB;KACF;IACD,YAAY,EAAE;QACZ;YACE,IAAI,EAAE,+BAA+B;YACrC,WAAW,EAAE,wCAAwC;YACrD,QAAQ,EAAE,SAAS;SACpB;QACD;YACE,IAAI,EAAE,2BAA2B;YACjC,WAAW,EAAE,6BAA6B;YAC1C,QAAQ,EAAE,SAAS;SACpB;KACF;IACD,WAAW,EAAE;QACX;YACE,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,oCAAoC;YACjD,QAAQ,EAAE,MAAM;SACjB;KACF;IACD,SAAS,EAAE;QACT;YACE,IAAI,EAAE,eAAe;YACrB,WAAW,EAAE,kCAAkC;YAC/C,QAAQ,EAAE,MAAM;SACjB;KACF;IACD,QAAQ,EAAE;QACR;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,mCAAmC;YAChD,QAAQ,EAAE,MAAM;SACjB;KACF;IACD,aAAa,EAAE;QACb;YACE,IAAI,EAAE,gCAAgC;YACtC,WAAW,EAAE,4BAA4B;YACzC,QAAQ,EAAE,UAAU;SACrB;QACD;YACE,IAAI,EAAE,gCAAgC;YACtC,WAAW,EAAE,4BAA4B;YACzC,QAAQ,EAAE,UAAU;SACrB;KACF;IACD,QAAQ,EAAE;QACR;YACE,IAAI,EAAE,6BAA6B;YACnC,WAAW,EAAE,uCAAuC;YACpD,QAAQ,EAAE,gBAAgB;SAC3B;KACF;IACD,UAAU,EAAE;QACV;YACE,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,sCAAsC;YACnD,QAAQ,EAAE,gBAAgB;SAC3B;KACF;IACD,YAAY,EAAE;QACZ;YACE,IAAI,EAAE,wBAAwB;YAC9B,WAAW,EAAE,6BAA6B;YAC1C,QAAQ,EAAE,SAAS;SACpB;KACF;IACD,WAAW,EAAE;QACX;YACE,IAAI,EAAE,+BAA+B;YACrC,WAAW,EAAE,sDAAsD;YACnE,QAAQ,EAAE,QAAQ;SACnB;KACF;IACD,OAAO,EAAE;QACP;YACE,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,4BAA4B;YACzC,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EAAE,6BAA6B;YAC1C,QAAQ,EAAE,IAAI;SACf;KACF;IACD,aAAa,EAAE;QACb;YACE,IAAI,EAAE,gCAAgC;YACtC,WAAW,EAAE,2CAA2C;YACxD,QAAQ,EAAE,eAAe;SAC1B;KACF;IACD,YAAY,EAAE;QACZ;YACE,IAAI,EAAE,4BAA4B;YAClC,WAAW,EAAE,mCAAmC;YAChD,QAAQ,EAAE,SAAS;SACpB;KACF;IACD,cAAc,EAAE;QACd;YACE,IAAI,EAAE,sCAAsC;YAC5C,WAAW,EAAE,qCAAqC;YAClD,QAAQ,EAAE,WAAW;SACtB;KACF;IACD,UAAU,EAAE;QACV;YACE,IAAI,EAAE,0BAA0B;YAChC,WAAW,EAAE,8BAA8B;YAC3C,QAAQ,EAAE,WAAW;SACtB;KACF;IACD,uEAAuE;CACxE,CAAC;AAEF,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,WAAmB,EAAE,QAAiB;IAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,OAAO,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,OAAiB;IAC5C,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,OAAiB;IACxC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,8CAA8C,CAAC;IACxD,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IACnC,MAAM,UAAU,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5D,OAAO,aAAa,WAAW,IAAI,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC;AACtG,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,0BAA0B,CACjC,cAAuB,EACvB,OAAkB,EAClB,WAAoB;IAEpB,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAExD,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,sBAAsB,WAAW,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,cAAc,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,yBAAyB,cAAc,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,uCAAuC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAEtC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAA8B;IAE9B,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAEnE,MAAM,cAAc,GAAG,WAAW;QAChC,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC;QACtC,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,eAAe,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,kBAAkB,GAAG,0BAA0B,CACnD,cAAc,EACd,OAAO,EACP,WAAW,CACZ,CAAC;IAEF,OAAO;QACL,OAAO;QACP,cAAc;QACd,OAAO;QACP,WAAW;QACX,cAAc;QACd,eAAe;QACf,kBAAkB;KACnB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA8B;IAC9D,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,iBAAiB;IACjB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAClC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,0BAA0B;IAC1B,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACvC,IAAI,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,cAAc,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC;YAC7E,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC;QAClD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,kCAAkC;IAClC,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,0BAA0B;IAC1B,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACpC,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;QAC9B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,mCAAmC;IACnC,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5C,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,+BAA+B;IAC/B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;IAC1C,yBAAyB,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;QAChD,KAAK,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,sCAAsC;IACtC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,kBAAkB,GAAG,CAAC,CAAC;IAChD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,iBAAiB;IACjB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAE5B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.244",
|
|
4
4
|
"description": "Spec-driven development framework for AI coding agents. First-class support for Claude Code — compatible with any LLM-powered coding tool. Living documentation, autonomous execution, quality gates, and multilingual support (9 languages).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -91,7 +91,7 @@ All domain experts are now skills with `context: fork`:
|
|
|
91
91
|
| **Mobile** | `sw-mobile:react-native-expert` | React Native, iOS, Android, Expo |
|
|
92
92
|
| **ML/AI** | `sw-ml:ml-engineer` | ML, model, training, TensorFlow, PyTorch |
|
|
93
93
|
| **Diagrams** | `sw-diagrams:diagrams-architect` | Mermaid, C4, architecture diagram, flowchart |
|
|
94
|
-
| **Release** | `sw-release:release-
|
|
94
|
+
| **Release** | `sw-release:release-coordinator` | release, version, changelog, npm publish |
|
|
95
95
|
|
|
96
96
|
All run in isolated context without polluting the main conversation.
|
|
97
97
|
|
|
@@ -12,14 +12,14 @@ This is the **TRUE "single button"** to sync all progress across the entire Spec
|
|
|
12
12
|
|
|
13
13
|
## ⚠️ CRITICAL MANDATORY BEHAVIOR - AUTO-CREATE EXTERNAL ISSUES
|
|
14
14
|
|
|
15
|
-
**You MUST
|
|
15
|
+
**You MUST invoke `/sw-github:create` (or JIRA/ADO equivalent) when:**
|
|
16
16
|
1. GitHub is configured in config.json (`sync.github.enabled: true` OR profiles with `provider: "github"`)
|
|
17
17
|
2. No GitHub issue is linked to this increment (check metadata.json for `github.issue` field)
|
|
18
18
|
3. The `--no-create` flag was NOT passed
|
|
19
19
|
|
|
20
20
|
**THIS IS NOT OPTIONAL. If these conditions are met, you MUST call:**
|
|
21
21
|
```
|
|
22
|
-
|
|
22
|
+
/sw-github:create <increment-id>
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
**DO NOT just report "No issues linked" and suggest manual creation. AUTO-CREATE is the DEFAULT behavior.**
|
|
@@ -244,7 +244,7 @@ fi
|
|
|
244
244
|
|
|
245
245
|
| INCREMENT_STATUS | Issue EXISTS | Action |
|
|
246
246
|
|------------------|--------------|--------|
|
|
247
|
-
| `active` | No | ✅ **MUST invoke**
|
|
247
|
+
| `active` | No | ✅ **MUST invoke** `/sw-github:create <id>` |
|
|
248
248
|
| `active` | Yes | ✅ SYNC (update progress) |
|
|
249
249
|
| `completed` | No | ✅ **MUST invoke** create skill + THEN close |
|
|
250
250
|
| `completed` | Yes | ✅ CLOSE the existing issue |
|
|
@@ -256,9 +256,9 @@ fi
|
|
|
256
256
|
1. **READ** the metadata.json to check for `github.issue` field
|
|
257
257
|
2. **IF** no issue exists:
|
|
258
258
|
- **Log**: "📝 No GitHub issue linked - AUTO-CREATING..."
|
|
259
|
-
- **INVOKE THE
|
|
259
|
+
- **INVOKE THE COMMAND**: You MUST call:
|
|
260
260
|
```
|
|
261
|
-
|
|
261
|
+
/sw-github:create <increment-id>
|
|
262
262
|
```
|
|
263
263
|
- **WAIT** for the skill to complete
|
|
264
264
|
- **LOG** the result: "✅ GitHub issue auto-created: #<number>"
|
|
@@ -280,7 +280,7 @@ IF github configured AND no issue linked AND --no-create NOT set:
|
|
|
280
280
|
IF permissions allow:
|
|
281
281
|
LOG "📝 No GitHub issue linked - AUTO-CREATING..."
|
|
282
282
|
|
|
283
|
-
>>> ACTUALLY INVOKE:
|
|
283
|
+
>>> ACTUALLY INVOKE: /sw-github:create incrementId
|
|
284
284
|
|
|
285
285
|
THEN re-read metadata.json to get issue number
|
|
286
286
|
LOG "✅ GitHub issue auto-created: #<number>"
|
|
@@ -295,14 +295,14 @@ ELSE IF issue exists:
|
|
|
295
295
|
**Same mandatory pattern as GitHub:**
|
|
296
296
|
- Check metadata.json for `jira.issue` field
|
|
297
297
|
- If no issue AND permissions allow AND `--no-create` not set:
|
|
298
|
-
- **INVOKE**:
|
|
298
|
+
- **INVOKE**: `/sw-jira:create <increment-id>`
|
|
299
299
|
|
|
300
300
|
### 🚨 ADO AUTO-CREATE (If Azure DevOps configured)
|
|
301
301
|
|
|
302
302
|
**Same mandatory pattern as GitHub:**
|
|
303
303
|
- Check metadata.json for `ado.workItem` field
|
|
304
304
|
- If no work item AND permissions allow AND `--no-create` not set:
|
|
305
|
-
- **INVOKE**:
|
|
305
|
+
- **INVOKE**: `/sw-ado:create <increment-id>`
|
|
306
306
|
|
|
307
307
|
---
|
|
308
308
|
|
|
@@ -1446,7 +1446,7 @@ Or via command: \`/sw:increment --type=hotfix \"${INC_NAME:-urgent-fix}\"\`
|
|
|
1446
1446
|
Consider reopening the existing increment:
|
|
1447
1447
|
\`\`\`
|
|
1448
1448
|
/sw:status # Find the related increment
|
|
1449
|
-
|
|
1449
|
+
specweave resume <id> # Reopen it
|
|
1450
1450
|
\`\`\`
|
|
1451
1451
|
|
|
1452
1452
|
*Reason: $INC_REASON*
|
|
@@ -1627,7 +1627,7 @@ Skill({ skill: \\\"${SKILL_INVOCATION}\\\" })
|
|
|
1627
1627
|
STEP_NUM=$((STEP_NUM + 1))
|
|
1628
1628
|
elif [[ "$INC_ACTION" == "reopen" ]]; then
|
|
1629
1629
|
BRAIN_MSG+="### Step ${STEP_NUM}: Find & Reopen Increment\\n"
|
|
1630
|
-
BRAIN_MSG+="\\\`\\\`\\\`\\n/sw:status # Find related increment\\
|
|
1630
|
+
BRAIN_MSG+="\\\`\\\`\\\`\\n/sw:status # Find related increment\\nspecweave resume <id>\\n\\\`\\\`\\\`\\n"
|
|
1631
1631
|
[[ -n "$INC_KEYWORD" ]] && BRAIN_MSG+="*Look for: ${INC_KEYWORD}*\\n"
|
|
1632
1632
|
BRAIN_MSG+="\\n"
|
|
1633
1633
|
STEP_NUM=$((STEP_NUM + 1))
|
|
@@ -2142,7 +2142,7 @@ if [[ "$ACTIVE_COUNT" -gt 0 ]]; then
|
|
|
2142
2142
|
[[ ! "$_WIP_LIMIT" =~ ^[0-9]+$ ]] && _WIP_LIMIT=3
|
|
2143
2143
|
|
|
2144
2144
|
if [[ "$ACTIVE_COUNT" -ge "$_WIP_LIMIT" ]]; then
|
|
2145
|
-
WIP_WARNING="⚠️ **WIP Notice** (${ACTIVE_COUNT}/${_WIP_LIMIT} active)\\n\\nActive increments:\\n${ACTIVE_LIST}\\nConsider completing existing work first (\`/sw:done <id>\`) or pausing (
|
|
2145
|
+
WIP_WARNING="⚠️ **WIP Notice** (${ACTIVE_COUNT}/${_WIP_LIMIT} active)\\n\\nActive increments:\\n${ACTIVE_LIST}\\nConsider completing existing work first (\`/sw:done <id>\`) or pausing (\`specweave pause <id>\`).\\n\\n---\\n\\n"
|
|
2146
2146
|
fi
|
|
2147
2147
|
fi
|
|
2148
2148
|
|
|
@@ -82,7 +82,7 @@ Before proceeding with PM validation, run `/sw:grill {incrementId}` inline:
|
|
|
82
82
|
1. Check config: `jq -r '.grill.required // true' .specweave/config.json` — if `false`, skip grill
|
|
83
83
|
2. Invoke `/sw:grill {incrementId}` (the full grill skill, not just a check)
|
|
84
84
|
3. If grill finds **BLOCKERs or CRITICALs** → **STOP closure**, show findings, ask user to fix
|
|
85
|
-
4. If grill passes (no blockers) → continue to Step 0.
|
|
85
|
+
4. If grill passes (no blockers) → continue to Step 0.55
|
|
86
86
|
|
|
87
87
|
**No marker files needed** — grill runs fresh each time as part of `/sw:done`.
|
|
88
88
|
|
|
@@ -90,6 +90,28 @@ Before proceeding with PM validation, run `/sw:grill {incrementId}` inline:
|
|
|
90
90
|
|
|
91
91
|
---
|
|
92
92
|
|
|
93
|
+
### Step 0.55: Judge LLM Validation (MANDATORY)
|
|
94
|
+
|
|
95
|
+
**Independent deep validation using Opus with extended thinking.**
|
|
96
|
+
|
|
97
|
+
After grill passes, run `/sw:judge-llm` for a second opinion with fresh context:
|
|
98
|
+
|
|
99
|
+
1. Invoke `/sw:judge-llm --last-commit` (or `--staged` if not yet committed)
|
|
100
|
+
- Alternatively: `Skill({ skill: "sw:judge-llm" })` with the changed files
|
|
101
|
+
2. Judge LLM uses **ultrathink extended thinking** via a separate Opus API call
|
|
102
|
+
3. Wait for verdict: **APPROVED**, **CONCERNS**, or **REJECTED**
|
|
103
|
+
|
|
104
|
+
**Verdict handling**:
|
|
105
|
+
- **APPROVED** → continue to Step 0.6
|
|
106
|
+
- **CONCERNS** → show findings to user, recommend fixes, but allow continuation
|
|
107
|
+
- **REJECTED** → **STOP closure**, show critical findings, ask user to fix before retrying
|
|
108
|
+
|
|
109
|
+
**Why both grill AND judge-llm**: Grill runs in-session (shares conversation context). Judge LLM makes a separate API call with fresh context, catching issues that in-session review may miss due to context saturation.
|
|
110
|
+
|
|
111
|
+
**If no ANTHROPIC_API_KEY**: Judge LLM falls back to basic pattern matching. This is informational only and does not block closure.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
93
115
|
### Step 0.6: Status Validation
|
|
94
116
|
|
|
95
117
|
**🔥 CRITICAL: Only `ready_for_review` or `active` increments can be closed!**
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Plan and create SpecWeave increments with PM and Architect agent collaboration. Use when starting new features, hotfixes, bugs, or any development work that needs specification and task breakdown. Creates spec.md, plan.md, tasks.md with proper AC-IDs and living docs integration.
|
|
3
|
+
context: fork
|
|
4
|
+
model: opus
|
|
5
|
+
hooks:
|
|
6
|
+
PreToolUse:
|
|
7
|
+
- matcher: Write
|
|
8
|
+
hooks:
|
|
9
|
+
- type: command
|
|
10
|
+
command: bash plugins/specweave/hooks/v2/guards/interview-enforcement-guard.sh
|
|
11
|
+
- type: command
|
|
12
|
+
command: bash plugins/specweave/hooks/v2/guards/spec-template-enforcement-guard.sh
|
|
13
|
+
PostToolUse:
|
|
14
|
+
- matcher: Write
|
|
15
|
+
hooks:
|
|
16
|
+
- type: command
|
|
17
|
+
command: bash plugins/specweave/hooks/v2/guards/increment-duplicate-guard.sh
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Increment Planner Skill
|
|
21
|
+
|
|
22
|
+
**Self-contained increment planning for ANY user project after `specweave init`.**
|
|
23
|
+
|
|
24
|
+
## Workflow Overview
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
STEP 0: Pre-flight (TDD mode, multi-project, Deep Interview)
|
|
28
|
+
-> CHECK: Deep Interview Mode enabled?
|
|
29
|
+
|
|
30
|
+
STEP 0.5: Deep Interview (if enabled)
|
|
31
|
+
-> PM skill loads phases/00-deep-interview.md
|
|
32
|
+
-> ASSESS complexity first, then ask right number of questions
|
|
33
|
+
-> Skip categories that don't apply to this feature
|
|
34
|
+
|
|
35
|
+
STEP 1: Project Context (resolve project/board)
|
|
36
|
+
|
|
37
|
+
STEP 2: Create Increment (via Template API)
|
|
38
|
+
|
|
39
|
+
STEP 3: Guide User (complete in main conversation)
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Step 0: Pre-flight Checks
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# 1. Check TDD mode
|
|
46
|
+
jq -r '.testing.defaultTestMode // "test-after"' .specweave/config.json 2>/dev/null
|
|
47
|
+
|
|
48
|
+
# 2. Check multi-project config
|
|
49
|
+
specweave context projects 2>/dev/null
|
|
50
|
+
|
|
51
|
+
# 3. Check deep interview mode
|
|
52
|
+
jq -r '.planning.deepInterview.enabled // false' .specweave/config.json 2>/dev/null
|
|
53
|
+
|
|
54
|
+
# 4. Check WIP limits
|
|
55
|
+
find .specweave/increments -maxdepth 2 -name "metadata.json" -exec grep -l '"status":"active"' {} \; 2>/dev/null | wc -l
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Step 0.5: Deep Interview Mode (if enabled)
|
|
59
|
+
|
|
60
|
+
**If deep interview is enabled, delegate to PM skill:**
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
Skill({ skill: "sw:pm", args: "Deep interview mode for: <user description>" })
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**THINK about complexity first** - assess before asking:
|
|
67
|
+
- Trivial: 0-3 questions | Small: 4-8 | Medium: 9-18 | Large: 19-40+
|
|
68
|
+
|
|
69
|
+
## Step 1: Project Context
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# Get project/board values for spec.md
|
|
73
|
+
specweave context projects
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Every US MUST have `**Project**:` field. For 2-level structures, also `**Board**:`.
|
|
77
|
+
|
|
78
|
+
## Step 2: Create Increment
|
|
79
|
+
|
|
80
|
+
### 2a. Determine Increment Location
|
|
81
|
+
|
|
82
|
+
**CRITICAL for multi-repo setups:**
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Check if this is a multi-repo umbrella project
|
|
86
|
+
if [ -d "repositories" ]; then
|
|
87
|
+
echo "MULTI-REPO: Increments belong in EACH repo's .specweave/"
|
|
88
|
+
echo "Example: repositories/{org}/{repo-name}/.specweave/increments/"
|
|
89
|
+
ls -d repositories/*/* 2>/dev/null | head -20
|
|
90
|
+
else
|
|
91
|
+
echo "SINGLE-REPO: Use .specweave/increments/"
|
|
92
|
+
fi
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Multi-repo rules:**
|
|
96
|
+
- Each repository has its OWN `.specweave/increments/` directory
|
|
97
|
+
- Team agents MUST create increments in their assigned repo's `.specweave/`
|
|
98
|
+
- The umbrella root `.specweave/` is for umbrella-level config ONLY
|
|
99
|
+
- Run `specweave init` in each repo if `.specweave/` doesn't exist
|
|
100
|
+
|
|
101
|
+
### 2b. Get Unique ID
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# Check ALL folders for existing IDs
|
|
105
|
+
find .specweave/increments -maxdepth 2 -type d -name "[0-9]*" 2>/dev/null | grep -oE '[0-9]{4}E?' | sort -u | tail -5
|
|
106
|
+
|
|
107
|
+
# For multi-repo, also check child repos
|
|
108
|
+
find repositories -path "*/specweave/increments/*" -maxdepth 5 -type d -name "[0-9]*" 2>/dev/null | grep -oE '[0-9]{4}E?' | sort -u | tail -5
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### 2c. Create via CLI (preferred)
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
specweave create-increment --id "XXXX-name" --project "my-app"
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 2d. Create manually (if CLI unavailable)
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
mkdir -p .specweave/increments/XXXX-name
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Create files in order: metadata.json FIRST, then spec.md, plan.md, tasks.md.
|
|
124
|
+
|
|
125
|
+
## Quick Reference
|
|
126
|
+
|
|
127
|
+
### Increment Types
|
|
128
|
+
|
|
129
|
+
| Type | Use When | WIP Limit |
|
|
130
|
+
|------|----------|-----------|
|
|
131
|
+
| **feature** | New functionality | Max 2 |
|
|
132
|
+
| **hotfix** | Production broken | Unlimited |
|
|
133
|
+
| **bug** | Needs RCA | Unlimited |
|
|
134
|
+
| **change-request** | Business changes | Max 2 |
|
|
135
|
+
| **refactor** | Technical debt | Max 1 |
|
|
136
|
+
| **experiment** | POC/spike | Unlimited |
|
|
137
|
+
|
|
138
|
+
### Directory Structure
|
|
139
|
+
|
|
140
|
+
```
|
|
141
|
+
.specweave/increments/####-name/
|
|
142
|
+
├── metadata.json # REQUIRED - create FIRST
|
|
143
|
+
├── spec.md # REQUIRED - user stories, ACs
|
|
144
|
+
├── plan.md # OPTIONAL - architecture
|
|
145
|
+
└── tasks.md # REQUIRED - implementation
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### User Story Format
|
|
149
|
+
|
|
150
|
+
```markdown
|
|
151
|
+
### US-001: Feature Name
|
|
152
|
+
**Project**: my-app # <- REQUIRED! Get from: specweave context projects
|
|
153
|
+
|
|
154
|
+
**As a** [role]
|
|
155
|
+
**I want** [capability]
|
|
156
|
+
**So that** [benefit]
|
|
157
|
+
|
|
158
|
+
**Acceptance Criteria**:
|
|
159
|
+
- [ ] **AC-US1-01**: [Criterion 1]
|
|
160
|
+
- [ ] **AC-US1-02**: [Criterion 2]
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Critical Rules
|
|
164
|
+
|
|
165
|
+
1. **Project field is MANDATORY** - Every US MUST have `**Project**:` field
|
|
166
|
+
2. **Use Template Creator API** when available: `specweave create-increment --id "XXXX-name" --project "my-app"`
|
|
167
|
+
3. **NO agent spawning** - Skills MUST NOT spawn Task() agents (causes crashes). Guide user in main conversation.
|
|
168
|
+
4. **Increment naming** - Format: `####-descriptive-kebab-case`
|
|
169
|
+
5. **Multi-repo** - In umbrella projects with `repositories/` folder, create increments in EACH repo's `.specweave/`, not the umbrella root
|
|
170
|
+
|
|
171
|
+
## Delegation
|
|
172
|
+
|
|
173
|
+
After increment creation:
|
|
174
|
+
|
|
175
|
+
```typescript
|
|
176
|
+
// Invoke architect for plan.md
|
|
177
|
+
Skill({ skill: "sw:architect", args: "Design architecture for increment XXXX" })
|
|
178
|
+
|
|
179
|
+
// Invoke test-aware planner for tasks.md
|
|
180
|
+
Skill({ skill: "sw:test-aware-planner", args: "Generate tasks for increment XXXX" })
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Usage
|
|
184
|
+
|
|
185
|
+
```typescript
|
|
186
|
+
// Called by hook system (primary path)
|
|
187
|
+
Skill({ skill: "sw:increment-planner", args: "--description=\"Add auth\"" })
|
|
188
|
+
|
|
189
|
+
// Via command (handles pre-flight checks too)
|
|
190
|
+
/sw:increment "Add user authentication"
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Project-Specific Learnings
|
|
194
|
+
|
|
195
|
+
**Before starting work, check for project-specific learnings:**
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
cat .specweave/skill-memories/increment-planner.md 2>/dev/null || echo "No project learnings yet"
|
|
199
|
+
```
|