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.
- package/dist/plugins/specweave-github/lib/github-batch-sync.js +27 -2
- package/dist/plugins/specweave-github/lib/github-batch-sync.js.map +1 -1
- package/dist/src/cli/helpers/init/quality-gates-config.d.ts +1 -0
- package/dist/src/cli/helpers/init/quality-gates-config.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/quality-gates-config.js +9 -0
- package/dist/src/cli/helpers/init/quality-gates-config.js.map +1 -1
- package/dist/src/core/config/types.d.ts +11 -0
- package/dist/src/core/config/types.d.ts.map +1 -1
- package/dist/src/core/config/types.js.map +1 -1
- package/dist/src/core/increment/completion-validator.d.ts +17 -0
- package/dist/src/core/increment/completion-validator.d.ts.map +1 -1
- package/dist/src/core/increment/completion-validator.js +123 -1
- package/dist/src/core/increment/completion-validator.js.map +1 -1
- package/dist/src/core/increment/status-commands.js +2 -2
- package/dist/src/core/increment/status-commands.js.map +1 -1
- package/dist/src/core/living-docs/sync-helpers/parsers.d.ts.map +1 -1
- package/dist/src/core/living-docs/sync-helpers/parsers.js +33 -4
- package/dist/src/core/living-docs/sync-helpers/parsers.js.map +1 -1
- package/dist/src/core/skills/skill-judge.d.ts +9 -0
- package/dist/src/core/skills/skill-judge.d.ts.map +1 -1
- package/dist/src/core/skills/skill-judge.js +54 -0
- package/dist/src/core/skills/skill-judge.js.map +1 -1
- package/dist/src/metrics/utils/tier-classifier.js +3 -3
- package/dist/src/metrics/utils/tier-classifier.js.map +1 -1
- package/dist/src/utils/clean-env.d.ts +7 -4
- package/dist/src/utils/clean-env.d.ts.map +1 -1
- package/dist/src/utils/clean-env.js +12 -4
- package/dist/src/utils/clean-env.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/hooks/user-prompt-submit.sh +16 -0
- package/plugins/specweave/skills/do/SKILL.md +3 -1
- package/plugins/specweave/skills/done/SKILL.md +17 -10
- package/plugins/specweave/skills/grill/SKILL.md +29 -6
- package/plugins/specweave/skills/judge-llm/SKILL.md +37 -7
- package/plugins/specweave-github/lib/github-batch-sync.js +25 -2
- package/plugins/specweave-github/lib/github-batch-sync.ts +30 -2
- package/src/templates/AGENTS.md.template +8 -11
- 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
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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
|
|
71
|
+
if (percentage <= 15)
|
|
72
72
|
return 'Elite';
|
|
73
|
-
if (percentage
|
|
73
|
+
if (percentage <= 30)
|
|
74
74
|
return 'High';
|
|
75
|
-
if (percentage
|
|
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,
|
|
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
|
|
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
|
|
33
|
+
* If a variable is not set, delete is a no-op (safe).
|
|
31
34
|
*
|
|
32
|
-
* @returns A copy of process.env with
|
|
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
|
|
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
|
|
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
|
|
33
|
+
* If a variable is not set, delete is a no-op (safe).
|
|
31
34
|
*
|
|
32
|
-
* @returns A copy of process.env with
|
|
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
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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.
|
|
43
|
-
4.
|
|
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
|
-
|
|
51
|
+
**A report file MUST be written regardless of outcome (even WAIVED if consent denied).**
|
|
46
52
|
|
|
47
|
-
1. **Consent check
|
|
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.
|
|
50
|
-
4.
|
|
51
|
-
5.
|
|
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> --
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
179
|
+
## Visibility & Stuck Detection
|
|
146
180
|
|
|
147
|
-
|
|
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)
|
|
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 {
|