specweave 1.0.353 → 1.0.355

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/dist/plugins/specweave-github/lib/github-ac-comment-poster.d.ts.map +1 -1
  2. package/dist/plugins/specweave-github/lib/github-ac-comment-poster.js +16 -10
  3. package/dist/plugins/specweave-github/lib/github-ac-comment-poster.js.map +1 -1
  4. package/dist/src/core/ac-progress-sync.d.ts.map +1 -1
  5. package/dist/src/core/ac-progress-sync.js +4 -1
  6. package/dist/src/core/ac-progress-sync.js.map +1 -1
  7. package/dist/src/core/hooks/LifecycleHookDispatcher.d.ts +10 -0
  8. package/dist/src/core/hooks/LifecycleHookDispatcher.d.ts.map +1 -1
  9. package/dist/src/core/hooks/LifecycleHookDispatcher.js +85 -1
  10. package/dist/src/core/hooks/LifecycleHookDispatcher.js.map +1 -1
  11. package/package.json +1 -1
  12. package/plugins/specweave/commands/docs-updater.md +1 -1
  13. package/plugins/specweave/skills/docs-updater/SKILL.md +84 -0
  14. package/plugins/specweave/skills/done/SKILL.md +12 -0
  15. package/plugins/specweave/skills/increment/SKILL.md +16 -23
  16. package/plugins/specweave/skills/team-lead/SKILL.md +71 -18
  17. package/plugins/specweave/skills/team-lead/agents/backend.md +4 -5
  18. package/plugins/specweave/skills/team-lead/agents/database.md +5 -6
  19. package/plugins/specweave/skills/team-lead/agents/frontend.md +4 -5
  20. package/plugins/specweave/skills/team-lead/agents/security.md +4 -5
  21. package/plugins/specweave/skills/team-lead/agents/testing.md +3 -4
  22. package/plugins/specweave-github/lib/github-ac-comment-poster.js +16 -13
  23. package/plugins/specweave-github/lib/github-ac-comment-poster.ts +23 -15
  24. package/src/templates/AGENTS.md.template +9 -2
  25. package/src/templates/CLAUDE.md.template +17 -1
@@ -1 +1 @@
1
- {"version":3,"file":"github-ac-comment-poster.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/github-ac-comment-poster.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAaD;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EAAE,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CA6D5B"}
1
+ {"version":3,"file":"github-ac-comment-poster.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/github-ac-comment-poster.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD;AAaD;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EAAE,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAqE5B"}
@@ -47,16 +47,22 @@ export async function postACProgressComments(incrementId, affectedUSIds, specPat
47
47
  continue;
48
48
  }
49
49
  const acStates = parseACStatesForUS(content, usId);
50
- const commentBody = buildProgressCommentForUS(incrementId, usId, acStates);
51
- const execResult = await execFileNoThrow('gh', ['issue', 'comment', String(link.issueNumber), '--body', commentBody, '-R', repoSlug], env ? { env } : {});
52
- if (execResult.success) {
53
- result.posted.push({ usId, issueNumber: link.issueNumber });
54
- }
55
- else {
56
- result.errors.push({
57
- usId,
58
- error: execResult.stderr || 'Unknown error posting comment',
59
- });
50
+ // Skip progress comment when all ACs are complete — the auto-closer will
51
+ // post its own "All acceptance criteria completed" comment instead,
52
+ // preventing duplicate comments on the same issue.
53
+ const allComplete = acStates.length > 0 && acStates.every(ac => ac.completed);
54
+ if (!allComplete) {
55
+ const commentBody = buildProgressCommentForUS(incrementId, usId, acStates);
56
+ const execResult = await execFileNoThrow('gh', ['issue', 'comment', String(link.issueNumber), '--body', commentBody, '-R', repoSlug], env ? { env } : {});
57
+ if (execResult.success) {
58
+ result.posted.push({ usId, issueNumber: link.issueNumber });
59
+ }
60
+ else {
61
+ result.errors.push({
62
+ usId,
63
+ error: execResult.stderr || 'Unknown error posting comment',
64
+ });
65
+ }
60
66
  }
61
67
  // Patch AC checkboxes directly in the issue body using the known issue number
62
68
  if (acStates.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"github-ac-comment-poster.js","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/github-ac-comment-poster.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github-ac-comment-poster.js","sourceRoot":"","sources":["../../../../plugins/specweave-github/lib/github-ac-comment-poster.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ac-progress-sync.d.ts","sourceRoot":"","sources":["../../../src/core/ac-progress-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ac-progress-sync.d.ts","sourceRoot":"","sources":["../../../src/core/ac-progress-sync.ts"],"names":[],"mappings":"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"}
@@ -204,7 +204,10 @@ export async function syncACProgressToProviders(incrementId, affectedUSIds, spec
204
204
  const providerResult = await syncFn(incrementId, affectedUSIds, ctx, config);
205
205
  result[provider] = providerResult;
206
206
  // Record circuit breaker outcome based on provider errors
207
- if (providerResult.errors.length > 0 && providerResult.posted.length === 0) {
207
+ // A successful sync can have posted (comments), closed (issues), or both.
208
+ // Only record failure when there were errors AND nothing succeeded.
209
+ const anySuccess = providerResult.posted.length > 0 || providerResult.closed.length > 0;
210
+ if (providerResult.errors.length > 0 && !anySuccess) {
208
211
  breaker.recordFailure();
209
212
  }
210
213
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"ac-progress-sync.js","sourceRoot":"","sources":["../../../src/core/ac-progress-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ac-progress-sync.js","sourceRoot":"","sources":["../../../src/core/ac-progress-sync.ts"],"names":[],"mappings":"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"}
@@ -66,6 +66,16 @@ export declare class LifecycleHookDispatcher {
66
66
  * Read hooks configuration from config.json
67
67
  */
68
68
  private static readHooksConfig;
69
+ /**
70
+ * Update cross-references in existing living docs after feature specs are created.
71
+ *
72
+ * Lightweight post-sync step that:
73
+ * 1. Updates specs/{project}/README.md with links to the new FS-XXX folder
74
+ * 2. Logs verification of FEATURE.md existence
75
+ *
76
+ * This runs automatically so the link update doesn't depend on the AI skill step.
77
+ */
78
+ private static updateDocsLinks;
69
79
  /**
70
80
  * Log error without propagating
71
81
  */
@@ -1 +1 @@
1
- {"version":3,"file":"LifecycleHookDispatcher.d.ts","sourceRoot":"","sources":["../../../../src/core/hooks/LifecycleHookDispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;GAKG;AACH,qBAAa,uBAAuB;IAClC;;;;;OAKG;WACU,kBAAkB,CAC7B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAwChB;;;;;;OAMG;WACU,eAAe,CAC1B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAqChB;;;;;;;;OAQG;WACU,eAAe,CAC1B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC;IAmF/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAUzB;;OAEG;mBACkB,eAAe;IAQpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ;CAOxB"}
1
+ {"version":3,"file":"LifecycleHookDispatcher.d.ts","sourceRoot":"","sources":["../../../../src/core/hooks/LifecycleHookDispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;GAKG;AACH,qBAAa,uBAAuB;IAClC;;;;;OAKG;WACU,kBAAkB,CAC7B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAwChB;;;;;;OAMG;WACU,eAAe,CAC1B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC;IAqChB;;;;;;;;OAQG;WACU,eAAe,CAC1B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC;IAsG/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IAUzB;;OAEG;mBACkB,eAAe;IAQpC;;;;;;;;OAQG;mBACkB,eAAe;IA6EpC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ;CAOxB"}
@@ -131,8 +131,23 @@ export class LifecycleHookDispatcher {
131
131
  try {
132
132
  const { LivingDocsSync } = await import('../living-docs/living-docs-sync.js');
133
133
  const sync = new LivingDocsSync(projectRoot);
134
- await sync.syncIncrement(incrementId);
134
+ const syncResult = await sync.syncIncrement(incrementId);
135
135
  result.syncSuccess.push('Living docs synced');
136
+ // STEP 1b: Update cross-references in existing docs after feature specs are created.
137
+ // This ensures FEATURE-CATALOG, module docs, and specs README contain links
138
+ // to the newly created feature spec files. Without this, the link update is
139
+ // deferred to the AI skill step (sw:docs-updater) which may not always run.
140
+ if (syncResult.success && syncResult.featureId) {
141
+ try {
142
+ await LifecycleHookDispatcher.updateDocsLinks(projectRoot, syncResult.featureId, sync.getProjectId());
143
+ result.syncSuccess.push('Docs links updated');
144
+ }
145
+ catch (linkError) {
146
+ const linkMsg = linkError instanceof Error ? linkError.message : String(linkError);
147
+ result.syncErrors.push(`Docs link update failed: ${linkMsg}`);
148
+ LifecycleHookDispatcher.logError('onIncrementDone:docsLinks', linkError);
149
+ }
150
+ }
136
151
  }
137
152
  catch (error) {
138
153
  const msg = error instanceof Error ? error.message : String(error);
@@ -207,6 +222,75 @@ export class LifecycleHookDispatcher {
207
222
  const config = await configManager.read();
208
223
  return config.hooks;
209
224
  }
225
+ /**
226
+ * Update cross-references in existing living docs after feature specs are created.
227
+ *
228
+ * Lightweight post-sync step that:
229
+ * 1. Updates specs/{project}/README.md with links to the new FS-XXX folder
230
+ * 2. Logs verification of FEATURE.md existence
231
+ *
232
+ * This runs automatically so the link update doesn't depend on the AI skill step.
233
+ */
234
+ static async updateDocsLinks(projectRoot, featureId, projectId) {
235
+ const { existsSync, promises: fs } = await import('fs');
236
+ const path = await import('path');
237
+ const specsDir = path.join(projectRoot, '.specweave/docs/internal/specs', projectId);
238
+ const featureDir = path.join(specsDir, featureId);
239
+ const featureFile = path.join(featureDir, 'FEATURE.md');
240
+ // Verify feature spec was actually created
241
+ if (!existsSync(featureFile)) {
242
+ process.stderr.write(`[LifecycleHookDispatcher.updateDocsLinks] Feature spec missing: ${featureFile}\n`);
243
+ return;
244
+ }
245
+ // Read feature title from FEATURE.md first line (# Title)
246
+ let featureTitle = featureId;
247
+ try {
248
+ const content = await fs.readFile(featureFile, 'utf-8');
249
+ const titleMatch = content.match(/^#\s+(.+)/m);
250
+ if (titleMatch) {
251
+ featureTitle = titleMatch[1].replace(/\s*\(FS-\d+\)/, '').trim();
252
+ }
253
+ }
254
+ catch {
255
+ // Use featureId as fallback title
256
+ }
257
+ // Update specs/{project}/README.md with link to the new feature
258
+ const readmePath = path.join(specsDir, 'README.md');
259
+ if (existsSync(readmePath)) {
260
+ try {
261
+ let readme = await fs.readFile(readmePath, 'utf-8');
262
+ const featureLink = `- [${featureId}: ${featureTitle}](${featureId}/FEATURE.md)`;
263
+ // Check if this feature is already linked
264
+ if (!readme.includes(`${featureId}/FEATURE.md`)) {
265
+ // Find or create the feature list section
266
+ if (readme.includes('## Active Features')) {
267
+ // Append to existing section
268
+ readme = readme.replace(/(## Active Features\n(?:[\s\S]*?))((?:\n## |\n---|\Z))/, `$1${featureLink}\n$2`);
269
+ }
270
+ else {
271
+ // Add section before the footer or at end
272
+ const footerIdx = readme.lastIndexOf('\n---\n');
273
+ const section = `\n## Active Features\n\n${featureLink}\n`;
274
+ if (footerIdx !== -1) {
275
+ readme =
276
+ readme.substring(0, footerIdx) +
277
+ section +
278
+ readme.substring(footerIdx);
279
+ }
280
+ else {
281
+ readme += section;
282
+ }
283
+ }
284
+ await fs.writeFile(readmePath, readme, 'utf-8');
285
+ }
286
+ }
287
+ catch (readmeError) {
288
+ // Non-fatal: README update is best-effort
289
+ const msg = readmeError instanceof Error ? readmeError.message : String(readmeError);
290
+ process.stderr.write(`[LifecycleHookDispatcher.updateDocsLinks] README update warning: ${msg}\n`);
291
+ }
292
+ }
293
+ }
210
294
  /**
211
295
  * Log error without propagating
212
296
  */
@@ -1 +1 @@
1
- {"version":3,"file":"LifecycleHookDispatcher.js","sourceRoot":"","sources":["../../../../src/core/hooks/LifecycleHookDispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LifecycleHookDispatcher.js","sourceRoot":"","sources":["../../../../src/core/hooks/LifecycleHookDispatcher.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specweave",
3
- "version": "1.0.353",
3
+ "version": "1.0.355",
4
4
  "description": "Spec-driven development framework for AI coding agents. Works with Claude Code, Codex, Antigravity, Cursor, Copilot & more. 100+ skills, 49 CLI commands, verified skill certification, autonomous execution, and living documentation.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: Living documentation updater that syncs implementation progress to product docs. Use when updating docs after task completion, changing DRAFT status to published, or ensuring documentation reflects current implementation state.
2
+ description: "DEPRECATED: Use /sw:docs-updater skill instead. Living documentation updater that syncs implementation progress to product docs."
3
3
  user-invocable: false
4
4
  ---
5
5
 
@@ -0,0 +1,84 @@
1
+ ---
2
+ description: Living documentation updater that syncs implementation progress to product docs. Use when updating docs after task completion, changing DRAFT status to published, or ensuring documentation reflects current implementation state.
3
+ argument-hint: "[increment-id]"
4
+ ---
5
+
6
+ # Documentation Updater
7
+
8
+ ## Project Overrides
9
+
10
+ !`s="docs-updater"; for d in .specweave/skill-memories .claude/skill-memories "$HOME/.claude/skill-memories"; do p="$d/$s.md"; [ -f "$p" ] && awk '/^## Learnings$/{ok=1;next}/^## /{ok=0}ok' "$p" && break; done 2>/dev/null; true`
11
+
12
+ Updates living documentation (.specweave/docs/) based on implementation progress after task completion or increment closure.
13
+
14
+ ## When to Use
15
+
16
+ - After closing an increment to ensure docs reflect reality (called by `/sw:done` Step 10b)
17
+ - Task specifies documentation updates in tasks.md
18
+ - Feature implementation is complete
19
+ - User says "update documentation" or "update docs links"
20
+
21
+ ## Workflow
22
+
23
+ ### Step 1: Detect Context
24
+
25
+ 1. If increment ID is provided, load `spec.md`, `tasks.md`, and `metadata.json`
26
+ 2. Detect project ID from config: `.specweave/config.json` → `project.name`
27
+ 3. Locate living docs: `.specweave/docs/internal/`
28
+
29
+ ### Step 2: Verify Feature Specs Exist
30
+
31
+ 1. Check `.specweave/docs/internal/specs/{project}/` for FS-XXX folders
32
+ 2. For each folder, verify `FEATURE.md` and `us-*.md` files exist
33
+ 3. If NO feature specs found and increment exists:
34
+ - Run: `specweave sync-living-docs <increment-id>` to create them
35
+ - Verify again after sync
36
+ 4. Report: "Found N feature specs in {project}/"
37
+
38
+ ### Step 3: Update Cross-References in Existing Docs
39
+
40
+ Scan `.specweave/docs/internal/` for docs that should reference the feature specs:
41
+
42
+ 1. **FEATURE-CATALOG.md** (in `enterprise/`): Add entries for spec-based features with links to `specs/{project}/FS-XXX/FEATURE.md`
43
+ 2. **FEATURE-TO-CODE.md** (in `relationships/`): Add mappings from spec features to code features
44
+ 3. **Module docs** (in `modules/`): Add "Related Specs" links where modules correspond to feature areas
45
+ 4. **Project specs README** (`specs/{project}/README.md`): Update feature listing with links to each FS-XXX
46
+
47
+ For each doc update:
48
+ - Read existing content
49
+ - Add or update `## Related Specs` or `## Feature Specs` section
50
+ - Use relative markdown links: `[FS-001](../specs/{project}/FS-001/FEATURE.md)`
51
+ - Preserve existing content, only add/update the cross-reference sections
52
+
53
+ ### Step 4: Update Status Markers
54
+
55
+ 1. Scan docs for `[DRAFT]` markers on sections that correspond to completed ACs
56
+ 2. Change `[DRAFT]` → `[COMPLETE]` for sections matching completed acceptance criteria
57
+ 3. Report: "Updated N status markers from DRAFT to COMPLETE"
58
+
59
+ ### Step 5: Verify Bidirectional Links
60
+
61
+ Validate that links work in both directions:
62
+
63
+ 1. **Increment → Feature Spec**: spec.md references should resolve to `specs/{project}/FS-XXX/`
64
+ 2. **Feature Spec → Living Docs**: FEATURE.md links to modules, architecture, etc.
65
+ 3. **Living Docs → Feature Spec**: Module docs, catalogs link back to specs
66
+ 4. Report broken links with suggested fixes
67
+
68
+ ### Step 6: Summary Report
69
+
70
+ Display results:
71
+
72
+ ```
73
+ Docs Update Summary:
74
+ - Feature specs verified: N
75
+ - Cross-references updated: M files
76
+ - Status markers updated: K (DRAFT → COMPLETE)
77
+ - Broken links found: L (see details above)
78
+ ```
79
+
80
+ ## Integration Points
81
+
82
+ - **Called by**: `/sw:done` (Step 10b), task completion hooks, spec-generator
83
+ - **Updates**: `.specweave/docs/**/*.md`
84
+ - **Reads**: `tasks.md`, `spec.md`, implementation code, feature specs
@@ -149,6 +149,18 @@ If any operation failed, display: "Run `/sw:progress-sync` to retry failed sync
149
149
 
150
150
  Execute: `Skill({ skill: "sw:sync-docs" })` with the increment ID. Do NOT just mention it -- actually invoke it. This serves as a verification pass to confirm living docs are up to date after closure.
151
151
 
152
+ ### Step 10b: Update Links in Docs (MANDATORY)
153
+
154
+ After living docs sync, update cross-references and bidirectional links so existing docs reference the newly created feature specs.
155
+
156
+ Execute: `Skill({ skill: "sw:docs-updater" })` — this verifies and repairs links between living docs, feature specs, and increment references. Do NOT skip this step. The docs-updater:
157
+ 1. Reads the feature spec files created by Step 10
158
+ 2. Updates existing docs (FEATURE-CATALOG, module docs, etc.) with links to the new specs
159
+ 3. Verifies bidirectional links between increment → feature spec → living docs
160
+ 4. Changes `[DRAFT]` → `[COMPLETE]` on doc sections matching completed ACs
161
+
162
+ If `sw:docs-updater` is unavailable, manually verify that `.specweave/docs/internal/specs/{project}/FS-XXX/` contains `FEATURE.md` and `us-*.md` files. If missing, re-run Step 10.
163
+
152
164
  ### Step 11: Post-Closure Quality Assessment
153
165
 
154
166
  Runs ONLY if closure succeeded. Invoke: `/sw:qa ${incrementId}`
@@ -259,31 +259,31 @@ Create files in order: metadata.json FIRST, then spec.md, plan.md, tasks.md.
259
259
 
260
260
  ## Critical Rules
261
261
 
262
- 1. **NEVER write spec.md/plan.md/tasks.md directly** — ALWAYS delegate via Agent() calls
262
+ 1. **NEVER write spec.md/plan.md/tasks.md directly** — ALWAYS delegate via Skill() calls to plugin agents
263
263
  2. **Project field is MANDATORY** — Every US MUST have `**Project**:` field
264
264
  3. **Use Template Creator CLI** (REQUIRED): `specweave create-increment --id "XXXX-name" --title "Title" --description "Desc" --project "my-app"`
265
- 4. **Agent delegation is the ONLY way** to produce spec.md/plan.md/tasks.md — the increment skill MUST use Agent() calls, not inline writing
265
+ 4. **Agent delegation is the ONLY way** to produce spec.md/plan.md/tasks.md — invoke `sw:agents:sw-pm`, `sw:agents:sw-architect`, `sw:agents:sw-planner` via Skill() calls
266
266
  5. **Increment naming** — Format: `####-descriptive-kebab-case`
267
267
  6. **Multi-repo** — In umbrella projects with `repositories/` folder, create increments in EACH repo's `.specweave/`, not the umbrella root
268
268
 
269
269
  ## CRITICAL: Mandatory Agent Delegation
270
270
 
271
271
  **This skill MUST NOT write spec.md, plan.md, or tasks.md directly.**
272
- Delegate to native plugin agents via Agent() calls.
272
+ Delegate to plugin agents via Skill() calls.
273
273
 
274
- **You MUST invoke these agents:**
274
+ **You MUST invoke these plugin agents:**
275
275
 
276
- | File | Agent | Invocation |
277
- |------|-------|------------|
278
- | spec.md | sw-pm | `Agent({ subagent_type: "sw-pm", prompt: "Write spec for increment XXXX-name: <description>. Increment path: <path>. Plugin root: <root>" })` |
279
- | plan.md | sw-architect | `Agent({ subagent_type: "sw-architect", prompt: "Design architecture for increment XXXX-name. Read spec.md at <path>/spec.md" })` |
280
- | tasks.md | sw-planner | `Agent({ subagent_type: "sw-planner", prompt: "Generate tasks for increment XXXX-name. Read spec.md at <path>/spec.md and plan.md at <path>/plan.md" })` |
276
+ | File | Agent Skill | Invocation |
277
+ |------|-------------|------------|
278
+ | spec.md | sw:agents:sw-pm | `Skill({ skill: "sw:agents:sw-pm", args: "Write spec for increment XXXX-name: <description>. Increment path: <path>" })` |
279
+ | plan.md | sw:agents:sw-architect | `Skill({ skill: "sw:agents:sw-architect", args: "Design architecture for increment XXXX-name. Read spec.md at <path>/spec.md" })` |
280
+ | tasks.md | sw:agents:sw-planner | `Skill({ skill: "sw:agents:sw-planner", args: "Generate tasks for increment XXXX-name. Read spec.md at <path>/spec.md and plan.md at <path>/plan.md" })` |
281
281
 
282
282
  **DO NOT:**
283
283
  - Write user stories, architecture, or tasks inline
284
284
  - Copy/paste spec content into Write() calls
285
285
  - "Summarize" what an agent would produce
286
- - Skip any of the 3 Agent() calls
286
+ - Skip any of the 3 Skill() calls
287
287
 
288
288
  ## Step 3a: Deep Interview Mode (if enabled)
289
289
 
@@ -293,7 +293,7 @@ interview state file can reference the real increment ID.
293
293
  **If deep interview is enabled, delegate to PM agent:**
294
294
 
295
295
  ```typescript
296
- Agent({ subagent_type: "sw-pm", prompt: "Deep interview for increment XXXX-name: <user description>. Increment path: <path>. Plugin root: <root>" })
296
+ Skill({ skill: "sw:agents:sw-pm", args: "Deep interview for increment XXXX-name: <user description>. Increment path: <path>" })
297
297
  ```
298
298
 
299
299
  The PM agent will:
@@ -305,30 +305,23 @@ The PM agent will:
305
305
  **After PM agent returns**, read the interview state file to confirm all categories are covered
306
306
  before proceeding to spec.md creation (especially when `enforcement: "strict"`).
307
307
 
308
- ## Step 4: Delegation (MANDATORY - Agent Based)
308
+ ## Step 4: Delegation (MANDATORY - Plugin Agent Based)
309
309
 
310
- **After increment folder + metadata.json are created, you MUST invoke all 3 agents sequentially.**
311
-
312
- Resolve the plugin root path first:
313
- ```bash
314
- PLUGIN_ROOT=$(find . -path "*/plugins/specweave/agents/sw-pm.md" -type f 2>/dev/null | head -1 | sed 's|/agents/sw-pm.md||')
315
- # Fallback: check node_modules
316
- [ -z "$PLUGIN_ROOT" ] && PLUGIN_ROOT=$(find node_modules -path "*/plugins/specweave/agents/sw-pm.md" -type f 2>/dev/null | head -1 | sed 's|/agents/sw-pm.md||')
317
- ```
310
+ **After increment folder + metadata.json are created, you MUST invoke all 3 plugin agents sequentially.**
318
311
 
319
312
  ### 4a. Invoke PM Agent for spec.md (REQUIRED)
320
313
  ```typescript
321
- Agent({ subagent_type: "sw-pm", prompt: "Write spec for increment XXXX-name: <user's feature description>. Increment path: .specweave/increments/XXXX-name/. Plugin root: <PLUGIN_ROOT>" })
314
+ Skill({ skill: "sw:agents:sw-pm", args: "Write spec for increment XXXX-name: <user's feature description>. Increment path: .specweave/increments/XXXX-name/" })
322
315
  ```
323
316
 
324
317
  ### 4b. Invoke Architect Agent for plan.md (REQUIRED)
325
318
  ```typescript
326
- Agent({ subagent_type: "sw-architect", prompt: "Design architecture for increment XXXX-name. Read spec.md at .specweave/increments/XXXX-name/spec.md. ADR directory: .specweave/docs/internal/architecture/adr/" })
319
+ Skill({ skill: "sw:agents:sw-architect", args: "Design architecture for increment XXXX-name. Read spec.md at .specweave/increments/XXXX-name/spec.md. ADR directory: .specweave/docs/internal/architecture/adr/" })
327
320
  ```
328
321
 
329
322
  ### 4c. Invoke Planner Agent for tasks.md (REQUIRED)
330
323
  ```typescript
331
- Agent({ subagent_type: "sw-planner", prompt: "Generate tasks for increment XXXX-name. Read spec.md at .specweave/increments/XXXX-name/spec.md and plan.md at .specweave/increments/XXXX-name/plan.md" })
324
+ Skill({ skill: "sw:agents:sw-planner", args: "Generate tasks for increment XXXX-name. Read spec.md at .specweave/increments/XXXX-name/spec.md and plan.md at .specweave/increments/XXXX-name/plan.md" })
332
325
  ```
333
326
 
334
327
  **Order matters**: PM first (spec.md) -> Architect second (plan.md) -> Planner last (tasks.md).
@@ -316,6 +316,24 @@ Plan review MUST NOT block other agents. Review plans as they arrive — agents
316
316
 
317
317
  For very large features, the team lead MAY split work into multiple increments per domain for better tracking and independent closure. Decide this during initial analysis (Step 1), before spawning agents.
318
318
 
319
+ ### Task Cap Per Agent (CRITICAL — Context Overflow Prevention)
320
+
321
+ **Maximum 15 tasks per agent.** Agents with more tasks accumulate too much context in auto-mode, leading to extended thinking loops and stuck agents.
322
+
323
+ When distributing tasks from the master spec:
324
+ 1. Count tasks per domain
325
+ 2. If a domain has >15 tasks: **split into 2 agents** (e.g., `jira-agent-a`, `jira-agent-b`) with non-overlapping task ranges
326
+ 3. If splitting isn't natural, group tasks into phases and create 2 increments per domain
327
+
328
+ ```
329
+ Domain tasks analysis:
330
+ Frontend: 12 tasks -> 1 agent (OK)
331
+ Backend: 8 tasks -> 1 agent (OK)
332
+ JIRA: 23 tasks -> SPLIT into 2 agents (tasks 1-12, tasks 13-23)
333
+ ```
334
+
335
+ **Why**: Each auto-mode iteration adds context (spec reads, edits, test outputs). At 20+ tasks, accumulated context causes the model to enter extended thinking (30+ min) and effectively hang. The 15-task cap keeps agents within a safe context budget.
336
+
319
337
  ---
320
338
 
321
339
  ## 4. Agent Spawn Prompt Templates
@@ -494,36 +512,38 @@ Task({
494
512
 
495
513
  ## 8. Quality Gates
496
514
 
497
- Every agent MUST run quality validation before signaling completion.
515
+ Quality gates are split: agents handle tests, team-lead handles closure (grill, done, judge-llm). This prevents context overflow in agents from loading 4+ additional skill definitions during closure.
498
516
 
499
- ### Per-Agent Quality Gate
517
+ ### Per-Agent Quality Gate (Lightweight)
500
518
 
501
519
  ```
502
520
  Agent Workflow:
503
- 1. Execute all assigned tasks (prefer /sw:auto for autonomous execution)
521
+ 1. Execute all assigned tasks via /sw:auto --simple
504
522
  2. Run all tests for owned code (unit + integration + E2E)
505
523
  3. Run linter/type-check for owned code
506
- 4. Run /sw:grill
507
- 5. If tests fail -> fix issues and repeat from step 2. Do NOT signal completion until all tests pass.
508
- 6. If /sw:grill passes -> attempt closure via /sw:done
509
- 7. If /sw:grill fails -> fix issues, repeat from step 2
510
- 8. Signal COMPLETION via SendMessage
524
+ 4. If tests fail -> fix issues and repeat from step 2
525
+ 5. Do NOT signal completion until all tests pass
526
+ 6. Signal COMPLETION via SendMessage (include task count, test results summary)
527
+ 7. Do NOT run /sw:grill or /sw:done team-lead handles closure centrally
511
528
  ```
512
529
 
513
- ### Orchestrator Quality Gate
530
+ **Why agents don't run /sw:done**: The /sw:done skill invokes 4 sub-skills (grill, judge-llm, sync-docs, qa), each loading a full SKILL.md. After 15+ tasks of auto-mode context, this pushes agents into extended thinking (30+ min hangs). Centralizing closure on the team-lead (which has a cleaner context) avoids this.
514
531
 
515
- After all agents complete, the orchestrator (team lead) runs a final validation:
532
+ ### Orchestrator Quality Gate (Centralized Closure)
533
+
534
+ After all agents complete, the team-lead runs closure **centrally** for each increment:
516
535
 
517
536
  ```
518
537
  Orchestrator Final Check:
519
538
  1. All agents signaled COMPLETION
520
539
  2. No unresolved BLOCKING_ISSUE messages
521
540
  3. Run full test suite (all domains combined)
522
- 4. Run /sw:grill on the combined increment
523
- 5. Run /sw:done --auto <id> for each increment in dependency order
524
- 6. If any /sw:done --auto fails, report the failure and continue with remaining increments
525
- 7. If all pass -> /sw:team-merge
526
- 8. If failures -> identify owning agent, send fix request via SendMessage
541
+ 4. For EACH increment in dependency order:
542
+ a. Run /sw:grill on the increment
543
+ b. Run /sw:done --auto <id>
544
+ c. If /sw:done fails, report the failure and continue with remaining increments
545
+ 5. If all pass -> /sw:team-merge
546
+ 6. If failures -> identify owning agent, send fix request via SendMessage
527
547
  ```
528
548
 
529
549
  ### Grill Checklist per Domain
@@ -539,6 +559,36 @@ Orchestrator Final Check:
539
559
 
540
560
  ---
541
561
 
562
+ ## 8b. Agent Timeout and Stuck Detection
563
+
564
+ Agents can get stuck in extended thinking if their context overflows. The team-lead MUST monitor for stuck agents.
565
+
566
+ ### Timeout Rules
567
+
568
+ | Condition | Action |
569
+ |-----------|--------|
570
+ | Agent idle >20 min after last message | Send `STATUS_CHECK` message to agent |
571
+ | No response to STATUS_CHECK within 5 min | Declare agent stuck |
572
+ | Agent stuck | Log warning, proceed with other agents, handle stuck agent's increment manually in team-merge |
573
+ | All agents stuck | STOP team, report to user |
574
+
575
+ ### Stuck Agent Recovery
576
+
577
+ When an agent is declared stuck:
578
+ 1. Do NOT wait for it — proceed with closure of other agents' increments
579
+ 2. Note the stuck agent's increment ID and last known task progress
580
+ 3. During /sw:team-merge, the stuck agent's increment is left open for manual completion
581
+ 4. Send shutdown_request to the stuck agent to free resources
582
+
583
+ ### Preventing Stuck Agents
584
+
585
+ - Enforce the 15-task cap (Section 3b)
586
+ - Agents use `--simple` flag in auto-mode (reduces context per iteration)
587
+ - Agents do NOT run /sw:done (team-lead handles closure centrally)
588
+ - If an agent's task count exceeds 15 despite the cap, the team-lead should split it before spawning
589
+
590
+ ---
591
+
542
592
  ## 9. Workflow Summary
543
593
 
544
594
  ```
@@ -556,9 +606,10 @@ Orchestrator Final Check:
556
606
  │ │ └── Wait for CONTRACT_READY after approval
557
607
  │ └── Phase 2: Spawn backend + frontend + testing
558
608
  │ └── Receive PLAN_READY, review & approve via SendMessage
559
- ├── Step 5: Monitor progress via SendMessage
560
- ├── Step 6: Quality gates (each agent runs /sw:grill)
561
- └── Step 7: Merge and close (/sw:team-merge)
609
+ ├── Step 5: Monitor progress via SendMessage (timeout: 20min idle → STATUS_CHECK)
610
+ ├── Step 6: Agents signal COMPLETION (tests pass, no /sw:grill or /sw:done on agents)
611
+ ├── Step 7: Team-lead runs /sw:grill + /sw:done --auto per increment (centralized closure)
612
+ └── Step 8: Merge and close (/sw:team-merge)
562
613
  ```
563
614
 
564
615
  **IMPORTANT**: The intended entry point is: `/sw:increment` → `/sw:do` (detects 3+ domains) → `/sw:team-lead`.
@@ -596,6 +647,8 @@ To execute, run without --dry-run.
596
647
  | **Agent stuck on trust folder** | Agent spawned without `bypassPermissions` | ALWAYS use `mode: "bypassPermissions"` — NEVER `mode: "plan"`. Trust prompts require interactive input agents cannot provide |
597
648
  | **Agents editing same files** | Overlapping file ownership patterns | Review ownership map; reassign conflicting files to a single owner; use `--dry-run` to validate before launch |
598
649
  | **Token cost too high** | Too many agents or overly large prompts | Reduce `--max-agents`; use `--domains` to limit scope; split feature into smaller increments |
650
+ | **Agent stuck in extended thinking** | Too many tasks (>15) causing context overflow | Enforce 15-task cap per agent; split large domains into 2 agents; agents use `--simple` mode |
651
+ | **Agent hung on /sw:done** | Closure loads 4+ skill definitions into already-full context | Agents should NOT run /sw:done — team-lead handles closure centrally |
599
652
  | **Contract agent takes too long** | Large schema or complex type system | Set a timeout in the agent prompt; if stuck >15 min, check agent output and consider splitting the contract work |
600
653
  | **Phase 2 starts before Phase 1 finishes** | CONTRACT_READY not received yet | Ensure upstream agents send CONTRACT_READY via SendMessage before team-lead spawns downstream |
601
654
  | **Agent fails mid-task** | Build error, test failure, or dependency issue | Send message to agent to fix; restart the agent with `/sw:auto` on its increment |
@@ -42,13 +42,12 @@ WORKFLOW:
42
42
  content: "PLAN_READY: [increment path]. [summary of planned tasks and files].",
43
43
  summary: "Backend plan ready for review" })
44
44
  9. WAIT for "PLAN_APPROVED" message. If "PLAN_REJECTED", revise and re-submit.
45
- 10. Execute tasks autonomously: prefer /sw:auto for autonomous execution
45
+ 10. Execute tasks autonomously: /sw:auto --simple (minimal context mode to prevent context overflow)
46
46
  11. Generate or update OpenAPI spec if API routes change
47
47
  12. Run all tests for owned code (unit + integration): npm test
48
- 13. Run quality gate: /sw:grill
49
- 14. Do NOT signal completion until all tests pass
50
- 15. After auto completes, attempt closure via /sw:done
51
- 16. Signal completion via SendMessage to team-lead
48
+ 13. Do NOT signal completion until all tests pass
49
+ 14. Signal COMPLETION via SendMessage to team-lead with summary of tasks done and test results
50
+ 15. Do NOT run /sw:done or /sw:grill yourself — team-lead handles closure centrally
52
51
 
53
52
  RULES:
54
53
  - WRITE only to files you own (listed above)
@@ -33,13 +33,12 @@ WORKFLOW:
33
33
  8. WAIT for "PLAN_APPROVED" message. If "PLAN_REJECTED", revise and re-submit.
34
34
  9. Generate Prisma migration: npx prisma migrate dev --name <migration-name>
35
35
  10. Write seed data if needed
36
- 11. Execute tasks autonomously: prefer /sw:auto for autonomous execution
36
+ 11. Execute tasks autonomously: /sw:auto --simple (minimal context mode to prevent context overflow)
37
37
  12. Run all tests for owned code (migration, seed): npm test
38
- 13. Run quality gate: /sw:grill
39
- 14. Do NOT signal completion until all tests pass
40
- 15. Signal CONTRACT_READY with schema details via SendMessage to team-lead
41
- 16. After auto completes, attempt closure via /sw:done
42
- 17. Signal completion via SendMessage to team-lead
38
+ 13. Do NOT signal completion until all tests pass
39
+ 14. Signal CONTRACT_READY with schema details via SendMessage to team-lead
40
+ 15. Signal COMPLETION via SendMessage to team-lead with summary of tasks done and test results
41
+ 16. Do NOT run /sw:done or /sw:grill yourself — team-lead handles closure centrally
43
42
 
44
43
  RULES:
45
44
  - WRITE only to files you own (listed above)
@@ -44,12 +44,11 @@ WORKFLOW:
44
44
  content: "PLAN_READY: [increment path]. [summary of planned tasks and files].",
45
45
  summary: "Frontend plan ready for review" })
46
46
  9. WAIT for "PLAN_APPROVED" message. If "PLAN_REJECTED", revise and re-submit.
47
- 10. Execute tasks autonomously: prefer /sw:auto for autonomous execution
47
+ 10. Execute tasks autonomously: /sw:auto --simple (minimal context mode to prevent context overflow)
48
48
  11. Run all tests for owned code (unit + integration): npm test
49
- 12. Run quality gate: /sw:grill
50
- 13. Do NOT signal completion until all tests pass
51
- 14. After auto completes, attempt closure via /sw:done
52
- 15. Signal completion via SendMessage to team-lead
49
+ 12. Do NOT signal completion until all tests pass
50
+ 13. Signal COMPLETION via SendMessage to team-lead with summary of tasks done and test results
51
+ 14. Do NOT run /sw:done or /sw:grill yourself — team-lead handles closure centrally
53
52
 
54
53
  RULES:
55
54
  - WRITE only to files you own (listed above)
@@ -34,13 +34,12 @@ WORKFLOW:
34
34
  8. WAIT for "PLAN_APPROVED" message. If "PLAN_REJECTED", revise and re-submit.
35
35
  9. Implement auth/authz middleware if needed
36
36
  10. Add input validation and sanitization
37
- 11. Execute tasks autonomously: prefer /sw:auto for autonomous execution
37
+ 11. Execute tasks autonomously: /sw:auto --simple (minimal context mode to prevent context overflow)
38
38
  12. Run all tests for owned code (security tests): npm test
39
39
  13. Run security audit tools (npm audit, dependency check)
40
- 14. Run quality gate: /sw:grill
41
- 15. Do NOT signal completion until all tests pass
42
- 16. After auto completes, attempt closure via /sw:done
43
- 17. Signal completion with security findings summary via SendMessage to team-lead
40
+ 14. Do NOT signal completion until all tests pass
41
+ 15. Signal COMPLETION via SendMessage to team-lead with summary of tasks done, test results, and security findings
42
+ 16. Do NOT run /sw:done or /sw:grill yourself — team-lead handles closure centrally
44
43
 
45
44
  RULES:
46
45
  - WRITE only to files you own (listed above)
@@ -40,12 +40,11 @@ WORKFLOW:
40
40
  9. Write unit tests for new services/components
41
41
  10. Write integration tests for API endpoints
42
42
  11. Write E2E tests for user journeys
43
- 12. Execute tasks autonomously: prefer /sw:auto for autonomous execution
43
+ 12. Execute tasks autonomously: /sw:auto --simple (minimal context mode to prevent context overflow)
44
44
  13. Run all tests (unit + integration + E2E): npm test && npx playwright test
45
45
  14. Do NOT signal completion until all tests pass -- if tests fail, fix and repeat
46
- 15. Run quality gate: /sw:grill
47
- 16. After auto completes, attempt closure via /sw:done
48
- 17. Signal completion via SendMessage to team-lead
46
+ 15. Signal COMPLETION via SendMessage to team-lead with summary of tasks done and test results
47
+ 16. Do NOT run /sw:done or /sw:grill yourself — team-lead handles closure centrally
49
48
 
50
49
  RULES:
51
50
  - WRITE only to test files (listed above)
@@ -26,19 +26,22 @@ async function postACProgressComments(incrementId, affectedUSIds, specPath, opti
26
26
  continue;
27
27
  }
28
28
  const acStates = parseACStatesForUS(content, usId);
29
- const commentBody = buildProgressCommentForUS(incrementId, usId, acStates);
30
- const execResult = await execFileNoThrow(
31
- "gh",
32
- ["issue", "comment", String(link.issueNumber), "--body", commentBody, "-R", repoSlug],
33
- env ? { env } : {}
34
- );
35
- if (execResult.success) {
36
- result.posted.push({ usId, issueNumber: link.issueNumber });
37
- } else {
38
- result.errors.push({
39
- usId,
40
- error: execResult.stderr || "Unknown error posting comment"
41
- });
29
+ const allComplete = acStates.length > 0 && acStates.every((ac) => ac.completed);
30
+ if (!allComplete) {
31
+ const commentBody = buildProgressCommentForUS(incrementId, usId, acStates);
32
+ const execResult = await execFileNoThrow(
33
+ "gh",
34
+ ["issue", "comment", String(link.issueNumber), "--body", commentBody, "-R", repoSlug],
35
+ env ? { env } : {}
36
+ );
37
+ if (execResult.success) {
38
+ result.posted.push({ usId, issueNumber: link.issueNumber });
39
+ } else {
40
+ result.errors.push({
41
+ usId,
42
+ error: execResult.stderr || "Unknown error posting comment"
43
+ });
44
+ }
42
45
  }
43
46
  if (acStates.length > 0) {
44
47
  try {
@@ -80,21 +80,29 @@ export async function postACProgressComments(
80
80
  }
81
81
 
82
82
  const acStates = parseACStatesForUS(content, usId);
83
- const commentBody = buildProgressCommentForUS(incrementId, usId, acStates);
84
-
85
- const execResult = await execFileNoThrow(
86
- 'gh',
87
- ['issue', 'comment', String(link.issueNumber), '--body', commentBody, '-R', repoSlug],
88
- env ? { env } : {},
89
- );
90
-
91
- if (execResult.success) {
92
- result.posted.push({ usId, issueNumber: link.issueNumber });
93
- } else {
94
- result.errors.push({
95
- usId,
96
- error: execResult.stderr || 'Unknown error posting comment',
97
- });
83
+
84
+ // Skip progress comment when all ACs are complete — the auto-closer will
85
+ // post its own "All acceptance criteria completed" comment instead,
86
+ // preventing duplicate comments on the same issue.
87
+ const allComplete = acStates.length > 0 && acStates.every(ac => ac.completed);
88
+
89
+ if (!allComplete) {
90
+ const commentBody = buildProgressCommentForUS(incrementId, usId, acStates);
91
+
92
+ const execResult = await execFileNoThrow(
93
+ 'gh',
94
+ ['issue', 'comment', String(link.issueNumber), '--body', commentBody, '-R', repoSlug],
95
+ env ? { env } : {},
96
+ );
97
+
98
+ if (execResult.success) {
99
+ result.posted.push({ usId, issueNumber: link.issueNumber });
100
+ } else {
101
+ result.errors.push({
102
+ usId,
103
+ error: execResult.stderr || 'Unknown error posting comment',
104
+ });
105
+ }
98
106
  }
99
107
 
100
108
  // Patch AC checkboxes directly in the issue body using the known issue number
@@ -38,13 +38,17 @@
38
38
  <!-- SECTION:orchestration required -->
39
39
  ## Workflow Orchestration
40
40
 
41
- ### 1. Plan Before Code
41
+ ### 1. Plan Before Code (MANDATORY)
42
42
 
43
- BEFORE implementing ANY non-trivial task (3+ steps):
43
+ BEFORE implementing ANY task create an increment FIRST:
44
44
  1. Create increment: spec.md (WHAT/WHY) + plan.md (HOW) + tasks.md (checklist)
45
45
  2. Get user approval before implementing
46
46
  3. If something goes sideways → STOP and re-plan
47
47
 
48
+ **No exceptions for "simple" tasks** — "simple", "quick", "basic" still require an increment. The only exception: user explicitly says "don't create an increment."
49
+
50
+ **Setup/config actions are NOT implementation** — "connect github", "setup sync", "import issues" → use the matching setup command directly, not the increment workflow.
51
+
48
52
  See **Task Format** and **User Story Format** sections for templates.
49
53
 
50
54
  ### 2. Verify Before Done
@@ -84,6 +88,7 @@ Good: npm run build → node script.js → Success
84
88
  - Avoid over-engineering and premature optimization
85
89
  - One function = one responsibility
86
90
  - If you can delete code and tests still pass, delete it
91
+ - **Match tooling to complexity** — simple tasks (calculator, todo) need 0 domain plugins and vanilla code. Don't load heavyweight frameworks, design systems, or i18n for trivial features
87
92
 
88
93
  ### No Laziness
89
94
  - Don't leave TODO comments for "later"
@@ -139,6 +144,8 @@ Good: npm run build → node script.js → Success
139
144
  | `/sw-github:sync 0001` | Sync increment to GitHub issue |
140
145
  | `/sw-jira:sync 0001` | Sync to Jira |
141
146
  | `/sw-ado:sync 0001` | Sync to Azure DevOps |
147
+ | `/sw:sync-setup` | Connect GitHub/Jira/ADO integration |
148
+ | `/sw:import` | Import issues from external tools |
142
149
  <!-- /SECTION -->
143
150
 
144
151
  ---
@@ -9,6 +9,10 @@
9
9
  |---|---|
10
10
  | **"RESTART REQUIRED"** | ALL tools blocked → STOP, wait for restart |
11
11
  | **"SKILL FIRST"** | Call shown skill FIRST → chain domain skills → implement |
12
+
13
+ **"SKILL FIRST" is mandatory** — "simple", "quick", "basic" are NOT opt-out phrases. The ONLY exception: user explicitly says "don't create an increment" or similar. Perceived simplicity never overrides hook instructions.
14
+
15
+ **Setup actions are NOT implementation** — "connect github", "setup sync", "import issues" → route to the matching setup skill (`sw:sync-setup`, `sw:import`, `sw:progress-sync`), NOT `/sw:increment`.
12
16
  <!-- /SECTION -->
13
17
 
14
18
  <!-- SECTION:header required -->
@@ -28,6 +32,12 @@
28
32
  2. **Implementation**: Invoke domain skill per tech (React → `frontend:architect`, .NET → `backend:dotnet`, Stripe → `payments:payment-core`, etc.)
29
33
  3. **Closure**: `sw:grill` runs automatically via `/sw:done`
30
34
 
35
+ **Complexity gate** — before chaining domain skills:
36
+ 1. **Tech stack specified?** → Chain ONLY the matching skill. If unspecified, ASK or default to minimal (vanilla JS/HTML, simple Express)
37
+ 2. **Complexity triage** → Simple (calculator, todo) = 0 domain plugins. Medium (auth, dashboard) = 1-2. Complex (SaaS) = full chain
38
+ 3. **Sanity check** → Would a senior engineer use this tool for this task? If obviously not, don't invoke it
39
+ 4. **Never** load all available plugins for a domain — pick ONE per domain based on the actual tech stack
40
+
31
41
  If auto-activation fails, invoke explicitly: `Skill({ skill: "name" })`
32
42
  <!-- /SECTION -->
33
43
 
@@ -55,6 +65,10 @@ SpecWeave auto-detects product descriptions and routes to `/sw:increment`:
55
65
  **Signals** (5+ = auto-route): Project name | Features list (3+) | Tech stack | Timeline/MVP | Problem statement | Business model
56
66
 
57
67
  **Opt-out phrases**: "Just brainstorm first" | "Don't plan yet" | "Quick discussion" | "Let's explore ideas"
68
+
69
+ **NOT opt-out phrases**: "simple" | "quick" | "basic" | "small" — these still require `/sw:increment`
70
+
71
+ **Setup/config requests bypass auto-detection** → route directly to the matching skill (e.g., `sw:sync-setup`, `sw:import`)
58
72
  <!-- /SECTION -->
59
73
 
60
74
  <!-- SECTION:metarule required -->
@@ -123,6 +137,8 @@ Good: npm run build → node script.js → Success
123
137
  | `/sw:done` | Close |
124
138
  | `/sw:progress-sync` | Sync progress to all external tools |
125
139
  | `/sw-github:push` | Push progress to GitHub |
140
+ | `/sw:sync-setup` | Connect GitHub/Jira/ADO integration |
141
+ | `/sw:import` | Import issues from external tools |
126
142
 
127
143
  **Natural language**: "Let's build X" → `/sw:increment` | "What's status?" → `/sw:progress` | "We're done" → `/sw:done` | "Ship while sleeping" → `/sw:auto`
128
144
 
@@ -251,7 +267,7 @@ Plugins load automatically. Manual: `vskill install --repo anton-abyzov/vskill -
251
267
  <!-- SECTION:principles -->
252
268
  ## Principles
253
269
 
254
- 1. **Spec-first**: `/sw:increment` before coding
270
+ 1. **Spec-first**: `/sw:increment` before coding — mandatory for ALL implementation requests, no exceptions unless user explicitly opts out
255
271
  2. **Docs = truth**: Specs guide implementation
256
272
  3. **Simplicity First**: Minimal code, minimal impact
257
273
  4. **No Laziness**: Root causes, senior standards