specweave 1.0.338 → 1.0.339

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 (38) hide show
  1. package/dist/plugins/specweave-github/lib/github-batch-sync.js +27 -2
  2. package/dist/plugins/specweave-github/lib/github-batch-sync.js.map +1 -1
  3. package/dist/src/cli/helpers/init/quality-gates-config.d.ts +1 -0
  4. package/dist/src/cli/helpers/init/quality-gates-config.d.ts.map +1 -1
  5. package/dist/src/cli/helpers/init/quality-gates-config.js +9 -0
  6. package/dist/src/cli/helpers/init/quality-gates-config.js.map +1 -1
  7. package/dist/src/core/config/types.d.ts +11 -0
  8. package/dist/src/core/config/types.d.ts.map +1 -1
  9. package/dist/src/core/config/types.js.map +1 -1
  10. package/dist/src/core/increment/completion-validator.d.ts +17 -0
  11. package/dist/src/core/increment/completion-validator.d.ts.map +1 -1
  12. package/dist/src/core/increment/completion-validator.js +123 -1
  13. package/dist/src/core/increment/completion-validator.js.map +1 -1
  14. package/dist/src/core/increment/status-commands.js +2 -2
  15. package/dist/src/core/increment/status-commands.js.map +1 -1
  16. package/dist/src/core/living-docs/sync-helpers/parsers.d.ts.map +1 -1
  17. package/dist/src/core/living-docs/sync-helpers/parsers.js +33 -4
  18. package/dist/src/core/living-docs/sync-helpers/parsers.js.map +1 -1
  19. package/dist/src/core/skills/skill-judge.d.ts +9 -0
  20. package/dist/src/core/skills/skill-judge.d.ts.map +1 -1
  21. package/dist/src/core/skills/skill-judge.js +54 -0
  22. package/dist/src/core/skills/skill-judge.js.map +1 -1
  23. package/dist/src/metrics/utils/tier-classifier.js +3 -3
  24. package/dist/src/metrics/utils/tier-classifier.js.map +1 -1
  25. package/dist/src/utils/clean-env.d.ts +7 -4
  26. package/dist/src/utils/clean-env.d.ts.map +1 -1
  27. package/dist/src/utils/clean-env.js +12 -4
  28. package/dist/src/utils/clean-env.js.map +1 -1
  29. package/package.json +1 -1
  30. package/plugins/specweave/hooks/user-prompt-submit.sh +16 -0
  31. package/plugins/specweave/skills/do/SKILL.md +3 -1
  32. package/plugins/specweave/skills/done/SKILL.md +17 -10
  33. package/plugins/specweave/skills/grill/SKILL.md +29 -6
  34. package/plugins/specweave/skills/judge-llm/SKILL.md +37 -7
  35. package/plugins/specweave-github/lib/github-batch-sync.js +25 -2
  36. package/plugins/specweave-github/lib/github-batch-sync.ts +30 -2
  37. package/src/templates/AGENTS.md.template +8 -11
  38. package/src/templates/CLAUDE.md.template +7 -6
@@ -111,11 +111,40 @@ export function extractUserStories(content, defaultProject) {
111
111
  storyLines.push(lines[j]);
112
112
  }
113
113
  const storyContent = storyLines.join('\n');
114
- // Extract description
114
+ // Extract description — cascading format detection
115
115
  let description = '';
116
- const descMatch = storyContent.match(/\*\*As a\*\*\s*([^\n]+)\s*\n\*\*I want\*\*\s*([^\n]+)\s*\n\*\*So that\*\*\s*([^\n]+)/i);
117
- if (descMatch) {
118
- description = `**As a** ${descMatch[1].trim()}\n**I want** ${descMatch[2].trim()}\n**So that** ${descMatch[3].trim()}`;
116
+ // Format 1: Bold structured (**As a** X / **I want** Y / **So that** Z)
117
+ const boldDescMatch = storyContent.match(/\*\*As a\*\*\s*([^\n]+)\s*\n\*\*I want\*\*\s*([^\n]+)\s*\n\*\*So that\*\*\s*([^\n]+)/i);
118
+ if (boldDescMatch) {
119
+ description = `**As a** ${boldDescMatch[1].trim()}\n**I want** ${boldDescMatch[2].trim()}\n**So that** ${boldDescMatch[3].trim()}`;
120
+ }
121
+ // Format 2: Plain 3-line (As a X / I want Y / So that Z)
122
+ if (!description) {
123
+ const plainThreeLineMatch = storyContent.match(/^As an?\s+([^\n]+)\s*\nI want\s+([^\n]+)\s*\nSo that\s+([^\n]+)/im);
124
+ if (plainThreeLineMatch) {
125
+ description = `As a ${plainThreeLineMatch[1].trim()}\nI want ${plainThreeLineMatch[2].trim()}\nSo that ${plainThreeLineMatch[3].trim()}`;
126
+ }
127
+ }
128
+ // Format 3: Single-line narrative (As a/an/the ...)
129
+ if (!description) {
130
+ const narrativeMatch = storyContent.match(/^(As (?:a|an|the)\s+[^\n]+)/im);
131
+ if (narrativeMatch) {
132
+ description = narrativeMatch[1].trim();
133
+ }
134
+ }
135
+ // Format 4: Free-form text before first AC section or AC checkbox
136
+ if (!description) {
137
+ const freeformMatch = storyContent.match(/^([\s\S]*?)(?=\n\*\*(?:Acceptance Criteria|ACs?|Priority)\*\*:|\n[-*]\s+\[[ xX]\]\s+\*\*AC-|$)/i);
138
+ if (freeformMatch) {
139
+ const cleaned = freeformMatch[1]
140
+ .split('\n')
141
+ .filter(line => !/^\*\*(?:Project|Board|External|Acceptance Criteria|ACs?|Priority)\*\*:/i.test(line))
142
+ .join('\n')
143
+ .trim();
144
+ if (cleaned) {
145
+ description = cleaned;
146
+ }
147
+ }
119
148
  }
120
149
  // Extract acceptance criteria with full descriptions (flexible pattern)
121
150
  // Stores both the AC ID and its description for external sync
@@ -1 +1 @@
1
- {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../../../src/core/living-docs/sync-helpers/parsers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../../../src/core/living-docs/sync-helpers/parsers.ts"],"names":[],"mappings":"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"}
@@ -94,6 +94,15 @@ export declare class SkillJudge {
94
94
  * Result when timeout occurs
95
95
  */
96
96
  private timeoutResult;
97
+ /**
98
+ * Write judge result to persistent report file for CLI verification.
99
+ * The completion-validator checks for this file before allowing closure.
100
+ */
101
+ writeReport(incrementId: string, result: JudgeResult, consentStatus: 'granted' | 'denied' | 'no-api-key'): string;
102
+ /**
103
+ * Write a WAIVED report when consent is denied or no API key available.
104
+ */
105
+ writeWaivedReport(incrementId: string, reason: string): string;
97
106
  /**
98
107
  * Format result for display
99
108
  */
@@ -1 +1 @@
1
- {"version":3,"file":"skill-judge.d.ts","sourceRoot":"","sources":["../../../../src/core/skills/skill-judge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA2LD;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,CAAC,EAAE,YAAY;IAiBlC;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IA4FpD;;OAEG;IACH,OAAO,CAAC,WAAW;IAkCnB;;OAEG;IACH,OAAO,CAAC,eAAe;IA+DvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAyBrB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM;CAiD1C;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,CAOtB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,kBAAkB,EAAE,MAAM,EAAE,EAC5B,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,CAStB"}
1
+ {"version":3,"file":"skill-judge.d.ts","sourceRoot":"","sources":["../../../../src/core/skills/skill-judge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA2LD;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,CAAC,EAAE,YAAY;IAiBlC;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IA4FpD;;OAEG;IACH,OAAO,CAAC,WAAW;IAkCnB;;OAEG;IACH,OAAO,CAAC,eAAe;IA+DvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAyBrB;;;OAGG;IACH,WAAW,CACT,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,SAAS,GAAG,QAAQ,GAAG,YAAY,GACjD,MAAM;IAoCT;;OAEG;IACH,iBAAiB,CACf,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACb,MAAM;IAsBT;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM;CAiD1C;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,CAOtB;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,kBAAkB,EAAE,MAAM,EAAE,EAC5B,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,CAStB"}
@@ -391,6 +391,60 @@ export class SkillJudge {
391
391
  logger.summary(result);
392
392
  return result;
393
393
  }
394
+ /**
395
+ * Write judge result to persistent report file for CLI verification.
396
+ * The completion-validator checks for this file before allowing closure.
397
+ */
398
+ writeReport(incrementId, result, consentStatus) {
399
+ const reportsDir = path.join(this.projectRoot, '.specweave', 'increments', incrementId, 'reports');
400
+ if (!fs.existsSync(reportsDir)) {
401
+ fs.mkdirSync(reportsDir, { recursive: true });
402
+ }
403
+ const reportPath = path.join(reportsDir, 'judge-llm-report.json');
404
+ const verdictMap = {
405
+ 'PASS': 'APPROVED',
406
+ 'CONCERNS': 'CONCERNS',
407
+ 'FAIL': 'REJECTED',
408
+ };
409
+ const report = {
410
+ version: '1.0',
411
+ incrementId,
412
+ timestamp: new Date().toISOString(),
413
+ verdict: verdictMap[result.verdict] ?? result.verdict,
414
+ score: result.score,
415
+ mode: this.client ? 'ultrathink' : 'pattern-match',
416
+ timedOut: result.timedOut,
417
+ duration_ms: result.duration_ms,
418
+ consentStatus,
419
+ summary: result.summary,
420
+ strengths: result.strengths,
421
+ concerns: result.concerns,
422
+ recommendations: result.recommendations,
423
+ domainChecks: result.domainChecks,
424
+ };
425
+ fs.writeFileSync(reportPath, JSON.stringify(report, null, 2));
426
+ return reportPath;
427
+ }
428
+ /**
429
+ * Write a WAIVED report when consent is denied or no API key available.
430
+ */
431
+ writeWaivedReport(incrementId, reason) {
432
+ const reportsDir = path.join(this.projectRoot, '.specweave', 'increments', incrementId, 'reports');
433
+ if (!fs.existsSync(reportsDir)) {
434
+ fs.mkdirSync(reportsDir, { recursive: true });
435
+ }
436
+ const reportPath = path.join(reportsDir, 'judge-llm-report.json');
437
+ const report = {
438
+ version: '1.0',
439
+ incrementId,
440
+ timestamp: new Date().toISOString(),
441
+ verdict: 'WAIVED',
442
+ consentStatus: 'denied',
443
+ reason,
444
+ };
445
+ fs.writeFileSync(reportPath, JSON.stringify(report, null, 2));
446
+ return reportPath;
447
+ }
394
448
  /**
395
449
  * Format result for display
396
450
  */
@@ -1 +1 @@
1
- {"version":3,"file":"skill-judge.js","sourceRoot":"","sources":["../../../../src/core/skills/skill-judge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-judge.js","sourceRoot":"","sources":["../../../../src/core/skills/skill-judge.ts"],"names":[],"mappings":"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"}
@@ -68,11 +68,11 @@ export function classifyLeadTime(hours) {
68
68
  export function classifyChangeFailureRate(percentage) {
69
69
  if (percentage < 0)
70
70
  return 'N/A'; // Invalid
71
- if (percentage < 15)
71
+ if (percentage <= 15)
72
72
  return 'Elite';
73
- if (percentage < 30)
73
+ if (percentage <= 30)
74
74
  return 'High';
75
- if (percentage < 45)
75
+ if (percentage <= 45)
76
76
  return 'Medium';
77
77
  return 'Low';
78
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tier-classifier.js","sourceRoot":"","sources":["../../../../src/metrics/utils/tier-classifier.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,2BAA2B,CAAC,cAAsB;IAChE,IAAI,cAAc,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,cAAc,GAAG,GAAG;QAAE,OAAO,OAAO,CAAC;IACzC,IAAI,cAAc,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IACxC,IAAI,cAAc,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC1C,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9B,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IAC9B,IAAI,KAAK,GAAG,GAAG;QAAE,OAAO,MAAM,CAAC,CAAI,SAAS;IAC5C,IAAI,KAAK,GAAG,GAAG;QAAE,OAAO,QAAQ,CAAC,CAAE,UAAU;IAC7C,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB,CAAC,UAAkB;IAC1D,IAAI,UAAU,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,CAAE,UAAU;IAC7C,IAAI,UAAU,GAAG,EAAE;QAAE,OAAO,OAAO,CAAC;IACpC,IAAI,UAAU,GAAG,EAAE;QAAE,OAAO,MAAM,CAAC;IACnC,IAAI,UAAU,GAAG,EAAE;QAAE,OAAO,QAAQ,CAAC;IACrC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,OAAO,CAAC;IACjC,IAAI,OAAO,GAAG,IAAI;QAAE,OAAO,MAAM,CAAC,CAAE,WAAW;IAC/C,IAAI,OAAO,GAAG,KAAK;QAAE,OAAO,QAAQ,CAAC,CAAE,SAAS;IAChD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"tier-classifier.js","sourceRoot":"","sources":["../../../../src/metrics/utils/tier-classifier.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,2BAA2B,CAAC,cAAsB;IAChE,IAAI,cAAc,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,cAAc,GAAG,GAAG;QAAE,OAAO,OAAO,CAAC;IACzC,IAAI,cAAc,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IACxC,IAAI,cAAc,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC1C,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9B,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IAC9B,IAAI,KAAK,GAAG,GAAG;QAAE,OAAO,MAAM,CAAC,CAAI,SAAS;IAC5C,IAAI,KAAK,GAAG,GAAG;QAAE,OAAO,QAAQ,CAAC,CAAE,UAAU;IAC7C,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB,CAAC,UAAkB;IAC1D,IAAI,UAAU,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,CAAE,UAAU;IAC7C,IAAI,UAAU,IAAI,EAAE;QAAE,OAAO,OAAO,CAAC;IACrC,IAAI,UAAU,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IACpC,IAAI,UAAU,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACtC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,IAAI,OAAO,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,OAAO,CAAC;IACjC,IAAI,OAAO,GAAG,IAAI;QAAE,OAAO,MAAM,CAAC,CAAE,WAAW;IAC/C,IAAI,OAAO,GAAG,KAAK;QAAE,OAAO,QAAQ,CAAC,CAAE,SAAS;IAChD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -14,9 +14,12 @@
14
14
  /**
15
15
  * Create a clean environment for spawning child processes.
16
16
  *
17
- * CRITICAL: Removes debugger and instrumentation env vars that can cause
18
- * child processes to fail across different environments:
17
+ * CRITICAL: Removes env vars that can cause child processes to fail:
19
18
  *
19
+ * - CLAUDECODE: Nested session guard (Claude Code v2.1.39+) blocks `claude -p`
20
+ * when running inside a Claude Code session. Unsetting is the official bypass.
21
+ * See: https://github.com/anthropics/claude-code/issues/25434
22
+ * Same fix applied in Python Agent SDK PR #594.
20
23
  * - VSCode Debug: NODE_OPTIONS contains --inspect-brk flags
21
24
  * - WebStorm/IntelliJ: NODE_OPTIONS or IDEA-specific vars
22
25
  * - CI/CD (GitHub Actions, etc.): May set NODE_OPTIONS for coverage
@@ -27,9 +30,9 @@
27
30
  * - Local development, CI/CD pipelines
28
31
  * - Debug mode, run mode, production
29
32
  *
30
- * If NODE_OPTIONS is not set, delete is a no-op (safe).
33
+ * If a variable is not set, delete is a no-op (safe).
31
34
  *
32
- * @returns A copy of process.env with debugger/instrumentation vars removed
35
+ * @returns A copy of process.env with problematic vars removed
33
36
  *
34
37
  * @example
35
38
  * ```typescript
@@ -1 +1 @@
1
- {"version":3,"file":"clean-env.d.ts","sourceRoot":"","sources":["../../../src/utils/clean-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAAC,UAAU,CAe/C"}
1
+ {"version":3,"file":"clean-env.d.ts","sourceRoot":"","sources":["../../../src/utils/clean-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAAC,UAAU,CAqB/C"}
@@ -14,9 +14,12 @@
14
14
  /**
15
15
  * Create a clean environment for spawning child processes.
16
16
  *
17
- * CRITICAL: Removes debugger and instrumentation env vars that can cause
18
- * child processes to fail across different environments:
17
+ * CRITICAL: Removes env vars that can cause child processes to fail:
19
18
  *
19
+ * - CLAUDECODE: Nested session guard (Claude Code v2.1.39+) blocks `claude -p`
20
+ * when running inside a Claude Code session. Unsetting is the official bypass.
21
+ * See: https://github.com/anthropics/claude-code/issues/25434
22
+ * Same fix applied in Python Agent SDK PR #594.
20
23
  * - VSCode Debug: NODE_OPTIONS contains --inspect-brk flags
21
24
  * - WebStorm/IntelliJ: NODE_OPTIONS or IDEA-specific vars
22
25
  * - CI/CD (GitHub Actions, etc.): May set NODE_OPTIONS for coverage
@@ -27,9 +30,9 @@
27
30
  * - Local development, CI/CD pipelines
28
31
  * - Debug mode, run mode, production
29
32
  *
30
- * If NODE_OPTIONS is not set, delete is a no-op (safe).
33
+ * If a variable is not set, delete is a no-op (safe).
31
34
  *
32
- * @returns A copy of process.env with debugger/instrumentation vars removed
35
+ * @returns A copy of process.env with problematic vars removed
33
36
  *
34
37
  * @example
35
38
  * ```typescript
@@ -42,6 +45,11 @@
42
45
  */
43
46
  export function getCleanEnv() {
44
47
  const cleanEnv = { ...process.env };
48
+ // Remove Claude Code nested session guard (v2.1.39+)
49
+ // When CLAUDECODE=1, `claude -p` refuses to start with:
50
+ // "Claude Code cannot be launched inside another Claude Code session"
51
+ // This is safe: we're spawning a one-shot pipe-mode call, not a competing session.
52
+ delete cleanEnv.CLAUDECODE;
45
53
  // Remove Node.js debugger/inspector flags (VSCode, WebStorm, etc.)
46
54
  delete cleanEnv.NODE_OPTIONS;
47
55
  delete cleanEnv.NODE_INSPECT;
@@ -1 +1 @@
1
- {"version":3,"file":"clean-env.js","sourceRoot":"","sources":["../../../src/utils/clean-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,QAAQ,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEpC,mEAAmE;IACnE,OAAO,QAAQ,CAAC,YAAY,CAAC;IAC7B,OAAO,QAAQ,CAAC,YAAY,CAAC;IAC7B,OAAO,QAAQ,CAAC,4BAA4B,CAAC;IAE7C,4EAA4E;IAC5E,OAAO,QAAQ,CAAC,gBAAgB,CAAC;IAEjC,gCAAgC;IAChC,OAAO,QAAQ,CAAC,wBAAwB,CAAC;IAEzC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"clean-env.js","sourceRoot":"","sources":["../../../src/utils/clean-env.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,QAAQ,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEpC,qDAAqD;IACrD,wDAAwD;IACxD,wEAAwE;IACxE,mFAAmF;IACnF,OAAO,QAAQ,CAAC,UAAU,CAAC;IAE3B,mEAAmE;IACnE,OAAO,QAAQ,CAAC,YAAY,CAAC;IAC7B,OAAO,QAAQ,CAAC,YAAY,CAAC;IAC7B,OAAO,QAAQ,CAAC,4BAA4B,CAAC;IAE7C,4EAA4E;IAC5E,OAAO,QAAQ,CAAC,gBAAgB,CAAC;IAEjC,gCAAgC;IAChC,OAAO,QAAQ,CAAC,wBAAwB,CAAC;IAEzC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specweave",
3
- "version": "1.0.338",
3
+ "version": "1.0.339",
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",
@@ -1236,6 +1236,22 @@ if [[ "${SPECWEAVE_DISABLE_AUTO_LOAD:-0}" != "1" ]] && [[ "${SPECWEAVE_DISABLE_H
1236
1236
  JSON_OUTPUT=$(echo "$DETECT_OUTPUT" | awk '/^\{/{found=1} found{print} /^\}/{if(found) exit}')
1237
1237
 
1238
1238
  if [[ -n "$JSON_OUTPUT" ]]; then
1239
+ # ==================================================================
1240
+ # ERROR RESPONSE DETECTION (v1.0.337)
1241
+ # ==================================================================
1242
+ # When detect-intent returns valid JSON but with error data (e.g.,
1243
+ # nested session error, timeout, auth failure), the JSON has
1244
+ # installMessage with error text, confidence=0, and no increment
1245
+ # field. Without this check, the hook treats error responses as
1246
+ # "LLM worked, nothing needed" and skips keyword fallback entirely.
1247
+ INSTALL_MSG=$(echo "$JSON_OUTPUT" | jq -r '.installMessage // empty' 2>/dev/null)
1248
+ HAS_INCREMENT=$(echo "$JSON_OUTPUT" | jq -r 'has("increment")' 2>/dev/null)
1249
+ RESP_CONFIDENCE=$(echo "$JSON_OUTPUT" | jq -r '.confidence // 0' 2>/dev/null)
1250
+ if [[ -n "$INSTALL_MSG" && "$HAS_INCREMENT" != "true" && "$RESP_CONFIDENCE" == "0" ]]; then
1251
+ LLM_DETECTION_FAILED=true
1252
+ echo "[$(date -Iseconds)] LLM detection failed | reason=error_response | msg=${INSTALL_MSG:0:100}" >> "$LAZY_LOAD_LOG"
1253
+ fi
1254
+
1239
1255
  # ==================================================================
1240
1256
  # PLUGIN INSTALLATION/SUGGESTION (from LLM response)
1241
1257
  # ==================================================================
@@ -159,7 +159,9 @@ After testable tasks: run relevant tests, fix failures immediately, only continu
159
159
 
160
160
  When all tasks done:
161
161
  1. Run `/sw:sync-docs update` to sync living docs
162
- 2. Suggest: `npm test` then `/sw:validate <id> --quality` then `/sw:done <id>`
162
+ 2. Run tests: `npx vitest run` (if test framework detected)
163
+ 3. Invoke `Skill({ skill: "sw:grill" })` with increment ID — writes required `grill-report.json`
164
+ 4. Then: `/sw:done <id>` (which also runs judge-llm and PM gates)
163
165
 
164
166
  ---
165
167
 
@@ -35,20 +35,27 @@ Argument: Required increment ID (e.g., "001", "0001", "0042", "0153-feature-name
35
35
 
36
36
  If closing a SpecWeave framework increment, show post-closure reminders: update CHANGELOG.md, CLAUDE.md, consider version bump, run `npm test && npm run rebuild`, check for breaking changes. Informational only, not blocking.
37
37
 
38
- ### Step 2: Inline Grill Review (MANDATORY)
38
+ ### Step 2: Inline Grill Review (MANDATORY — STOP GATE)
39
39
 
40
- 1. Check config: `jq -r '.grill.required // true' .specweave/config.json` -- if `false`, skip
40
+ **The CLI blocks closure if `grill-report.json` is missing.** Do NOT skip this step.
41
+
42
+ 1. Check config: `jq -r '.grill.required // true' .specweave/config.json` — if `false`, skip to Step 3
41
43
  2. Invoke `Skill({ skill: "sw:grill" })` with incrementId
42
- 3. BLOCKERs or CRITICALs found -> STOP closure, show findings, ask user to fix
43
- 4. Passes -> continue
44
+ 3. **Verify report written**: `Bash({ command: "test -f .specweave/increments/<id>/reports/grill-report.json && echo OK || echo MISSING" })`
45
+ 4. If report MISSING: write it manually from grill output using the Write tool
46
+ 5. BLOCKERs or CRITICALs (shipReadiness: NOT READY) → STOP closure, ask user to fix
47
+ 6. Passes → continue
48
+
49
+ ### Step 3: Judge LLM Validation (MANDATORY — STOP GATE)
44
50
 
45
- ### Step 3: Judge LLM Validation (MANDATORY)
51
+ **A report file MUST be written regardless of outcome (even WAIVED if consent denied).**
46
52
 
47
- 1. **Consent check first**: Judge-LLM uses the Anthropic API (costs extra). Check `externalModels` in config. If consent not granted, ask user or skip to pattern matching fallback. See `/sw:judge-llm` consent section for full flow.
53
+ 1. **Consent check**: Check `externalModels` in config. If denied, write WAIVED report and continue
48
54
  2. Invoke `Skill({ skill: "sw:judge-llm" })` with `--last-commit` (or `--staged`)
49
- 3. Uses ultrathink extended thinking via separate Opus API call
50
- 4. **APPROVED** -> continue | **CONCERNS** -> show, allow continuation | **REJECTED** -> STOP closure
51
- 5. No ANTHROPIC_API_KEY or consent denied -> falls back to pattern matching, does not block
55
+ 3. **Verify report written**: `Bash({ command: "test -f .specweave/increments/<id>/reports/judge-llm-report.json && echo OK || echo MISSING" })`
56
+ 4. If report MISSING: write a WAIVED report with reason "Skill did not produce report"
57
+ 5. **APPROVED** continue | **CONCERNS** show, allow continuation | **REJECTED** STOP closure
58
+ 6. No ANTHROPIC_API_KEY or consent denied → write WAIVED report, continue
52
59
 
53
60
  ### Step 4: Status Validation
54
61
 
@@ -97,7 +104,7 @@ PM validation report goes in: `.specweave/increments/####-name/reports/PM-VALIDA
97
104
 
98
105
  **All gates pass**:
99
106
  1. Create marker file: `mkdir -p .specweave/state && touch .specweave/state/.sw-done-in-progress`
100
- 2. Run completion via CLI: `Bash({ command: "specweave complete <id> --skip-validation --yes" })` — this is safe because quality gates already ran in Steps 2-3 and 6-7. The CLI call triggers `LifecycleHookDispatcher.onIncrementDone()` which fires living docs sync, GitHub Project sync, and issue closure automatically.
107
+ 2. Run completion via CLI: `Bash({ command: "specweave complete <id> --yes" })` — the CLI re-verifies quality gate reports (grill-report.json, judge-llm-report.json) exist. It also triggers `LifecycleHookDispatcher.onIncrementDone()` for living docs sync, GitHub Project sync, and issue closure.
101
108
  3. Remove marker file: `rm -f .specweave/state/.sw-done-in-progress`
102
109
  4. Generate completion report, update backlog
103
110
 
@@ -270,14 +270,37 @@ When called, you can specify a focus area:
270
270
 
271
271
  ---
272
272
 
273
- ## Integration with /sw:done
273
+ ## Persistent Report (MANDATORY)
274
+
275
+ After displaying the grill verdict, you **MUST** write a JSON report file. The CLI's completion-validator checks for this file and **blocks closure without it**.
276
+
277
+ **Path**: `.specweave/increments/<id>/reports/grill-report.json`
278
+
279
+ ```bash
280
+ mkdir -p .specweave/increments/<id>/reports
281
+ ```
274
282
 
275
- `/sw:done` calls `/sw:grill` inline as its first step — no marker files needed.
283
+ Then write the report using the Write tool:
284
+
285
+ ```json
286
+ {
287
+ "version": "1.0",
288
+ "incrementId": "<id>",
289
+ "timestamp": "<ISO-8601>",
290
+ "verdict": "PASS|FAIL",
291
+ "shipReadiness": "READY|NEEDS REVIEW|NOT READY",
292
+ "summary": { "totalFindings": 0, "critical": 0, "high": 0, "medium": 0 },
293
+ "findings": []
294
+ }
295
+ ```
296
+
297
+ **Ship readiness**: `READY` = 0 critical + 0 high | `NEEDS REVIEW` = 0 critical + 1+ high | `NOT READY` = 1+ critical
298
+
299
+ ---
300
+
301
+ ## Integration with /sw:done
276
302
 
277
- 1. Developer runs `/sw:done {increment-id}`
278
- 2. `/sw:done` invokes `/sw:grill` automatically
279
- 3. If grill finds BLOCKERs/CRITICALs → closure stops, user fixes issues
280
- 4. If grill passes → closure continues to PM validation
303
+ `/sw:done` calls `/sw:grill` as Step 2 (blocking gate). The CLI re-verifies `grill-report.json` exists when running `specweave complete`.
281
304
 
282
305
  You can also run `/sw:grill` standalone at any time for early feedback.
283
306
 
@@ -140,15 +140,45 @@ VERDICT: [summary sentence]
140
140
  | **CONCERNS** | Issues found worth addressing | Review and fix recommended |
141
141
  | **REJECTED** | Critical issues found | MUST fix before proceeding |
142
142
 
143
- ## Visibility & Stuck Detection
143
+ ## Persistent Report (MANDATORY)
144
+
145
+ After evaluation (including consent-denied fallback), you **MUST** write a JSON report. The CLI checks for this file during closure.
146
+
147
+ **Path**: `.specweave/increments/<id>/reports/judge-llm-report.json`
148
+
149
+ **Full evaluation report**:
150
+ ```json
151
+ {
152
+ "version": "1.0",
153
+ "incrementId": "<id>",
154
+ "timestamp": "<ISO-8601>",
155
+ "verdict": "APPROVED|CONCERNS|REJECTED",
156
+ "score": 87,
157
+ "mode": "ultrathink|quick|pattern-match",
158
+ "timedOut": false,
159
+ "duration_ms": 45000,
160
+ "consentStatus": "granted",
161
+ "summary": "..."
162
+ }
163
+ ```
164
+
165
+ **Consent denied / no API key**:
166
+ ```json
167
+ {
168
+ "version": "1.0",
169
+ "incrementId": "<id>",
170
+ "timestamp": "<ISO-8601>",
171
+ "verdict": "WAIVED",
172
+ "consentStatus": "denied",
173
+ "reason": "External API consent denied by user"
174
+ }
175
+ ```
176
+
177
+ A `WAIVED` verdict is accepted by the CLI — does not block closure.
144
178
 
145
- Progress is **always logged** to `.specweave/logs/judge-llm.log`.
179
+ ## Visibility & Stuck Detection
146
180
 
147
- **If evaluation gets stuck**:
148
- 1. Check `.specweave/logs/judge-llm.log` for last progress
149
- 2. Default timeout (60s) will abort if stuck
150
- 3. Increase timeout with `--timeout` if legitimately slow
151
- 4. Result will show `timedOut: true` if aborted
181
+ Progress logged to `.specweave/logs/judge-llm.log`. Default timeout 60s aborts if stuck (`timedOut: true`).
152
182
 
153
183
  ## Related
154
184
 
@@ -52,14 +52,20 @@ async function batchSyncAllSpecs(config) {
52
52
  const US_HEADER_RE = /^###?\s+(US-\d{3,}E?):\s*(.+)$/;
53
53
  const AC_CHECKBOX_RE = /^-\s+\[([ xX])\]\s+\*\*(?<acId>AC-US\d+E?-\d{2})\*\*:\s*(?<desc>.+)$/;
54
54
  const PRIORITY_RE = /\*\*Priority\*\*:\s*(P[0-3])/;
55
+ const AC_SECTION_RE = /^\*\*(?:Acceptance Criteria|ACs?)\*\*:/i;
56
+ const METADATA_RE = /^\*\*(?:Project|Board|External)\*\*:/i;
55
57
  function parseUserStoriesFromSpec(content) {
56
58
  const lines = content.split("\n");
57
59
  const userStories = [];
58
60
  let current = null;
61
+ let collectingDescription = false;
59
62
  for (const line of lines) {
60
63
  const usMatch = line.match(US_HEADER_RE);
61
64
  if (usMatch) {
62
- if (current) userStories.push(current);
65
+ if (current) {
66
+ current.description = current.description.trim();
67
+ userStories.push(current);
68
+ }
63
69
  current = {
64
70
  id: usMatch[1],
65
71
  title: usMatch[2],
@@ -68,11 +74,13 @@ function parseUserStoriesFromSpec(content) {
68
74
  status: "planned",
69
75
  acceptanceCriteria: []
70
76
  };
77
+ collectingDescription = true;
71
78
  continue;
72
79
  }
73
80
  if (!current) continue;
74
81
  const acMatch = line.match(AC_CHECKBOX_RE);
75
82
  if (acMatch?.groups) {
83
+ collectingDescription = false;
76
84
  current.acceptanceCriteria.push({
77
85
  id: acMatch.groups.acId,
78
86
  description: acMatch.groups.desc.trim(),
@@ -82,10 +90,25 @@ function parseUserStoriesFromSpec(content) {
82
90
  }
83
91
  const prioMatch = line.match(PRIORITY_RE);
84
92
  if (prioMatch) {
93
+ collectingDescription = false;
85
94
  current.priority = prioMatch[1];
95
+ continue;
96
+ }
97
+ if (AC_SECTION_RE.test(line)) {
98
+ collectingDescription = false;
99
+ continue;
86
100
  }
101
+ if (collectingDescription) {
102
+ if (METADATA_RE.test(line)) continue;
103
+ if (line.trim() !== "" || current.description.length > 0) {
104
+ current.description += line + "\n";
105
+ }
106
+ }
107
+ }
108
+ if (current) {
109
+ current.description = current.description.trim();
110
+ userStories.push(current);
87
111
  }
88
- if (current) userStories.push(current);
89
112
  return userStories;
90
113
  }
91
114
  export {