@boyingliu01/xp-gate 0.14.4 → 0.14.5
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/package.json +1 -1
- package/plugins/claude-code/.claude-plugin/plugin.json +1 -1
- package/plugins/claude-code/skills/delphi-review/AGENTS.md +3 -3
- package/plugins/claude-code/skills/sprint-flow/AGENTS.md +3 -3
- package/plugins/claude-code/skills/sprint-flow/SKILL.md +1 -0
- package/plugins/claude-code/skills/sprint-flow/__tests__/sprint-flow.test.cjs +28 -11
- package/plugins/claude-code/skills/test-specification-alignment/AGENTS.md +3 -3
- package/plugins/opencode/package.json +1 -1
- package/plugins/opencode/skills/delphi-review/AGENTS.md +3 -3
- package/plugins/opencode/skills/sprint-flow/AGENTS.md +3 -3
- package/plugins/opencode/skills/sprint-flow/SKILL.md +1 -0
- package/plugins/opencode/skills/sprint-flow/__tests__/sprint-flow.test.cjs +28 -11
- package/plugins/opencode/skills/test-specification-alignment/AGENTS.md +3 -3
- package/plugins/qoder/plugin.json +1 -1
- package/plugins/qoder/skills/delphi-review/AGENTS.md +3 -3
- package/plugins/qoder/skills/sprint-flow/AGENTS.md +3 -3
- package/plugins/qoder/skills/test-specification-alignment/AGENTS.md +3 -3
- package/skills/delphi-review/AGENTS.md +3 -3
- package/skills/sprint-flow/AGENTS.md +3 -3
- package/skills/sprint-flow/SKILL.md +1 -0
- package/skills/sprint-flow/__tests__/sprint-flow.test.cjs +28 -11
- package/skills/test-specification-alignment/AGENTS.md +3 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xp-gate",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.5",
|
|
4
4
|
"displayName": "XP-Gate",
|
|
5
5
|
"description": "Extreme Programming quality gates + AI workflow skills for Claude Code. Includes 10 quality gates (Gate 0-9), Sprint Flow (11 phases), and Delphi multi-expert review (>=90% consensus).",
|
|
6
6
|
"author": {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/DELPHI-REVIEW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-07-09
|
|
4
|
-
**Commit:**
|
|
5
|
-
**Branch:** sprint/2026-07-09-
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** b1d2c76
|
|
5
|
+
**Branch:** sprint/2026-07-09-02
|
|
6
|
+
**Version:** 0.14.5.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Delphi Consensus Review — multi-round anonymous expert review (≥90% threshold, 3 experts from ≥2 providers, domestic models only). Supports design + code-walkthrough modes.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/SPRINT-FLOW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-07-09
|
|
4
|
-
**Commit:**
|
|
5
|
-
**Branch:** sprint/2026-07-09-
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** b1d2c76
|
|
5
|
+
**Branch:** sprint/2026-07-09-02
|
|
6
|
+
**Version:** 0.14.5.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
**6-phase** development pipeline (v2.0 compact redesign, Issue #290): PREP → DESIGN → BUILD → VERIFY → SHIP → CLOSE. Phase 3/6 BUILD default build mode is **ralph-loop** (REQ-level iteration, 40-67% token savings vs parallel). HARD-GATE between DESIGN (2/6) and BUILD (3/6): design must pass Delphi review (≥90% consensus) before any coding.
|
|
@@ -200,6 +200,7 @@ Every phase MUST output its header as the first line of that phase's output. For
|
|
|
200
200
|
4. On `/sprint-flow` trigger, first line MUST output: `Sprint Flow: PREP → DESIGN → BUILD → VERIFY → SHIP → CLOSE`
|
|
201
201
|
5. Each phase completion MUST write Phase Summary to `.sprint-state/phase-outputs/phase-{N}-summary.md`
|
|
202
202
|
6. Each phase completion MUST update `.sprint-state/sprint-state.json`
|
|
203
|
+
7. Each phase completion MUST render the ASCII progress dashboard using `templates/sprint-progress-template.md` — the orchestrator reads `sprint-state.json` and outputs the dashboard after every phase's status block, so the user always sees current global progress without needing to ask
|
|
203
204
|
|
|
204
205
|
### Phase Output Status Schema (MANDATORY per phase)
|
|
205
206
|
|
|
@@ -9,13 +9,30 @@ const path = require('path');
|
|
|
9
9
|
|
|
10
10
|
const SKILL_MD_PATH = path.join(__dirname, '..', 'SKILL.md');
|
|
11
11
|
const REFERENCES_DIR = path.join(__dirname, '..', 'references');
|
|
12
|
+
const PHASE_OVERVIEW_PATH = path.join(REFERENCES_DIR, 'phase-overview.md');
|
|
12
13
|
const PHASE_2_BUILD_PATH = path.join(REFERENCES_DIR, 'phase-3-build.md');
|
|
13
14
|
const ORCHESTRATION_RULES_PATH = path.join(REFERENCES_DIR, 'orchestration-rules.md');
|
|
14
15
|
|
|
15
16
|
let skillContent = '';
|
|
17
|
+
let phaseOverviewContent = '';
|
|
16
18
|
|
|
17
19
|
function loadSkillMd() {
|
|
18
20
|
skillContent = fs.readFileSync(SKILL_MD_PATH, 'utf-8');
|
|
21
|
+
if (fs.existsSync(PHASE_OVERVIEW_PATH)) {
|
|
22
|
+
phaseOverviewContent = fs.readFileSync(PHASE_OVERVIEW_PATH, 'utf-8');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Search across SKILL.md AND references/phase-overview.md (progressive disclosure: sections
|
|
27
|
+
// like "Unique Value Proposition" and "Phase Flow Consistency" moved to reference file).
|
|
28
|
+
function contentIncludes(str) {
|
|
29
|
+
return skillContent.includes(str) || phaseOverviewContent.includes(str);
|
|
30
|
+
}
|
|
31
|
+
function contentSplit(str) {
|
|
32
|
+
// Return the part after str from whichever file contains it
|
|
33
|
+
if (skillContent.includes(str)) return skillContent.split(str)[1];
|
|
34
|
+
if (phaseOverviewContent.includes(str)) return phaseOverviewContent.split(str)[1];
|
|
35
|
+
return undefined;
|
|
19
36
|
}
|
|
20
37
|
|
|
21
38
|
function parseFrontmatter(content) {
|
|
@@ -182,21 +199,21 @@ function testPhaseFlowDiagramOrder() {
|
|
|
182
199
|
}
|
|
183
200
|
|
|
184
201
|
function testPhaseFlowConsistencySectionExists() {
|
|
185
|
-
if (!
|
|
186
|
-
throw new Error('SKILL.md must contain "Phase Flow Consistency" section');
|
|
202
|
+
if (!contentIncludes('Phase Flow Consistency')) {
|
|
203
|
+
throw new Error('SKILL.md or references/phase-overview.md must contain "Phase Flow Consistency" section');
|
|
187
204
|
}
|
|
188
205
|
console.log(' ✓ Phase Flow Consistency section exists');
|
|
189
206
|
}
|
|
190
207
|
|
|
191
208
|
function testCanonicalPhaseOrderTableExists() {
|
|
192
|
-
if (!
|
|
193
|
-
throw new Error('SKILL.md must contain "Canonical Phase Order" table');
|
|
209
|
+
if (!contentIncludes('Canonical Phase Order')) {
|
|
210
|
+
throw new Error('SKILL.md or references/phase-overview.md must contain "Canonical Phase Order" table');
|
|
194
211
|
}
|
|
195
212
|
console.log(' ✓ Canonical Phase Order table exists');
|
|
196
213
|
}
|
|
197
214
|
|
|
198
215
|
function testAll11PhasesInPhaseFlowConsistency() {
|
|
199
|
-
const section =
|
|
216
|
+
const section = contentSplit('Phase Flow Consistency');
|
|
200
217
|
const requiredPhases = [
|
|
201
218
|
'PREP', 'DESIGN', 'BUILD', 'VERIFY', 'SHIP', 'CLOSE',
|
|
202
219
|
];
|
|
@@ -235,14 +252,14 @@ function testForceLevelsRequiresDelphi() {
|
|
|
235
252
|
// === Value Proposition Tests ===
|
|
236
253
|
|
|
237
254
|
function testUniqueValuePropositionExists() {
|
|
238
|
-
if (!
|
|
239
|
-
throw new Error('SKILL.md must contain "Unique Value Proposition" section');
|
|
255
|
+
if (!contentIncludes('Unique Value Proposition')) {
|
|
256
|
+
throw new Error('SKILL.md or references/phase-overview.md must contain "Unique Value Proposition" section');
|
|
240
257
|
}
|
|
241
258
|
console.log(' ✓ Unique Value Proposition section exists');
|
|
242
259
|
}
|
|
243
260
|
|
|
244
261
|
function testUvpMentionsTokenSavings() {
|
|
245
|
-
const section =
|
|
262
|
+
const section = contentSplit('Unique Value Proposition');
|
|
246
263
|
if (!section.includes('40') || !section.includes('67') || !section.includes('token')) {
|
|
247
264
|
throw new Error('Unique Value Proposition must mention 40-67% token savings');
|
|
248
265
|
}
|
|
@@ -250,7 +267,7 @@ function testUvpMentionsTokenSavings() {
|
|
|
250
267
|
}
|
|
251
268
|
|
|
252
269
|
function testUvpMentionsHardGate() {
|
|
253
|
-
const section =
|
|
270
|
+
const section = contentSplit('Unique Value Proposition');
|
|
254
271
|
if (!section.includes('HARD-GATE')) {
|
|
255
272
|
throw new Error('Unique Value Proposition must mention HARD-GATE discipline');
|
|
256
273
|
}
|
|
@@ -258,7 +275,7 @@ function testUvpMentionsHardGate() {
|
|
|
258
275
|
}
|
|
259
276
|
|
|
260
277
|
function testUvpMentionsEmergentRequirements() {
|
|
261
|
-
const section =
|
|
278
|
+
const section = contentSplit('Unique Value Proposition');
|
|
262
279
|
if (!section.toLowerCase().includes('emergent')) {
|
|
263
280
|
throw new Error('Unique Value Proposition must mention emergent requirements');
|
|
264
281
|
}
|
|
@@ -360,7 +377,7 @@ function runTests(opts = {}) {
|
|
|
360
377
|
}
|
|
361
378
|
|
|
362
379
|
console.log(`\n=== Results: ${passed} passed, ${failed} failed ===\n`);
|
|
363
|
-
|
|
380
|
+
for (const e of errors) console.log(e);
|
|
364
381
|
|
|
365
382
|
if (exitOnFail && failed > 0) {
|
|
366
383
|
process.exit(1);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/TEST-SPECIFICATION-ALIGNMENT KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-07-09
|
|
4
|
-
**Commit:**
|
|
5
|
-
**Branch:** sprint/2026-07-09-
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** b1d2c76
|
|
5
|
+
**Branch:** sprint/2026-07-09-02
|
|
6
|
+
**Version:** 0.14.5.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Test-Specification Alignment Engine — two-stage validation ensuring tests accurately reflect requirements and design specs.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/DELPHI-REVIEW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-07-09
|
|
4
|
-
**Commit:**
|
|
5
|
-
**Branch:** sprint/2026-07-09-
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** b1d2c76
|
|
5
|
+
**Branch:** sprint/2026-07-09-02
|
|
6
|
+
**Version:** 0.14.5.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Delphi Consensus Review — multi-round anonymous expert review (≥90% threshold, 3 experts from ≥2 providers, domestic models only). Supports design + code-walkthrough modes.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/SPRINT-FLOW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-07-09
|
|
4
|
-
**Commit:**
|
|
5
|
-
**Branch:** sprint/2026-07-09-
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** b1d2c76
|
|
5
|
+
**Branch:** sprint/2026-07-09-02
|
|
6
|
+
**Version:** 0.14.5.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
**6-phase** development pipeline (v2.0 compact redesign, Issue #290): PREP → DESIGN → BUILD → VERIFY → SHIP → CLOSE. Phase 3/6 BUILD default build mode is **ralph-loop** (REQ-level iteration, 40-67% token savings vs parallel). HARD-GATE between DESIGN (2/6) and BUILD (3/6): design must pass Delphi review (≥90% consensus) before any coding.
|
|
@@ -200,6 +200,7 @@ Every phase MUST output its header as the first line of that phase's output. For
|
|
|
200
200
|
4. On `/sprint-flow` trigger, first line MUST output: `Sprint Flow: PREP → DESIGN → BUILD → VERIFY → SHIP → CLOSE`
|
|
201
201
|
5. Each phase completion MUST write Phase Summary to `.sprint-state/phase-outputs/phase-{N}-summary.md`
|
|
202
202
|
6. Each phase completion MUST update `.sprint-state/sprint-state.json`
|
|
203
|
+
7. Each phase completion MUST render the ASCII progress dashboard using `templates/sprint-progress-template.md` — the orchestrator reads `sprint-state.json` and outputs the dashboard after every phase's status block, so the user always sees current global progress without needing to ask
|
|
203
204
|
|
|
204
205
|
### Phase Output Status Schema (MANDATORY per phase)
|
|
205
206
|
|
|
@@ -9,13 +9,30 @@ const path = require('path');
|
|
|
9
9
|
|
|
10
10
|
const SKILL_MD_PATH = path.join(__dirname, '..', 'SKILL.md');
|
|
11
11
|
const REFERENCES_DIR = path.join(__dirname, '..', 'references');
|
|
12
|
+
const PHASE_OVERVIEW_PATH = path.join(REFERENCES_DIR, 'phase-overview.md');
|
|
12
13
|
const PHASE_2_BUILD_PATH = path.join(REFERENCES_DIR, 'phase-3-build.md');
|
|
13
14
|
const ORCHESTRATION_RULES_PATH = path.join(REFERENCES_DIR, 'orchestration-rules.md');
|
|
14
15
|
|
|
15
16
|
let skillContent = '';
|
|
17
|
+
let phaseOverviewContent = '';
|
|
16
18
|
|
|
17
19
|
function loadSkillMd() {
|
|
18
20
|
skillContent = fs.readFileSync(SKILL_MD_PATH, 'utf-8');
|
|
21
|
+
if (fs.existsSync(PHASE_OVERVIEW_PATH)) {
|
|
22
|
+
phaseOverviewContent = fs.readFileSync(PHASE_OVERVIEW_PATH, 'utf-8');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Search across SKILL.md AND references/phase-overview.md (progressive disclosure: sections
|
|
27
|
+
// like "Unique Value Proposition" and "Phase Flow Consistency" moved to reference file).
|
|
28
|
+
function contentIncludes(str) {
|
|
29
|
+
return skillContent.includes(str) || phaseOverviewContent.includes(str);
|
|
30
|
+
}
|
|
31
|
+
function contentSplit(str) {
|
|
32
|
+
// Return the part after str from whichever file contains it
|
|
33
|
+
if (skillContent.includes(str)) return skillContent.split(str)[1];
|
|
34
|
+
if (phaseOverviewContent.includes(str)) return phaseOverviewContent.split(str)[1];
|
|
35
|
+
return undefined;
|
|
19
36
|
}
|
|
20
37
|
|
|
21
38
|
function parseFrontmatter(content) {
|
|
@@ -182,21 +199,21 @@ function testPhaseFlowDiagramOrder() {
|
|
|
182
199
|
}
|
|
183
200
|
|
|
184
201
|
function testPhaseFlowConsistencySectionExists() {
|
|
185
|
-
if (!
|
|
186
|
-
throw new Error('SKILL.md must contain "Phase Flow Consistency" section');
|
|
202
|
+
if (!contentIncludes('Phase Flow Consistency')) {
|
|
203
|
+
throw new Error('SKILL.md or references/phase-overview.md must contain "Phase Flow Consistency" section');
|
|
187
204
|
}
|
|
188
205
|
console.log(' ✓ Phase Flow Consistency section exists');
|
|
189
206
|
}
|
|
190
207
|
|
|
191
208
|
function testCanonicalPhaseOrderTableExists() {
|
|
192
|
-
if (!
|
|
193
|
-
throw new Error('SKILL.md must contain "Canonical Phase Order" table');
|
|
209
|
+
if (!contentIncludes('Canonical Phase Order')) {
|
|
210
|
+
throw new Error('SKILL.md or references/phase-overview.md must contain "Canonical Phase Order" table');
|
|
194
211
|
}
|
|
195
212
|
console.log(' ✓ Canonical Phase Order table exists');
|
|
196
213
|
}
|
|
197
214
|
|
|
198
215
|
function testAll11PhasesInPhaseFlowConsistency() {
|
|
199
|
-
const section =
|
|
216
|
+
const section = contentSplit('Phase Flow Consistency');
|
|
200
217
|
const requiredPhases = [
|
|
201
218
|
'PREP', 'DESIGN', 'BUILD', 'VERIFY', 'SHIP', 'CLOSE',
|
|
202
219
|
];
|
|
@@ -235,14 +252,14 @@ function testForceLevelsRequiresDelphi() {
|
|
|
235
252
|
// === Value Proposition Tests ===
|
|
236
253
|
|
|
237
254
|
function testUniqueValuePropositionExists() {
|
|
238
|
-
if (!
|
|
239
|
-
throw new Error('SKILL.md must contain "Unique Value Proposition" section');
|
|
255
|
+
if (!contentIncludes('Unique Value Proposition')) {
|
|
256
|
+
throw new Error('SKILL.md or references/phase-overview.md must contain "Unique Value Proposition" section');
|
|
240
257
|
}
|
|
241
258
|
console.log(' ✓ Unique Value Proposition section exists');
|
|
242
259
|
}
|
|
243
260
|
|
|
244
261
|
function testUvpMentionsTokenSavings() {
|
|
245
|
-
const section =
|
|
262
|
+
const section = contentSplit('Unique Value Proposition');
|
|
246
263
|
if (!section.includes('40') || !section.includes('67') || !section.includes('token')) {
|
|
247
264
|
throw new Error('Unique Value Proposition must mention 40-67% token savings');
|
|
248
265
|
}
|
|
@@ -250,7 +267,7 @@ function testUvpMentionsTokenSavings() {
|
|
|
250
267
|
}
|
|
251
268
|
|
|
252
269
|
function testUvpMentionsHardGate() {
|
|
253
|
-
const section =
|
|
270
|
+
const section = contentSplit('Unique Value Proposition');
|
|
254
271
|
if (!section.includes('HARD-GATE')) {
|
|
255
272
|
throw new Error('Unique Value Proposition must mention HARD-GATE discipline');
|
|
256
273
|
}
|
|
@@ -258,7 +275,7 @@ function testUvpMentionsHardGate() {
|
|
|
258
275
|
}
|
|
259
276
|
|
|
260
277
|
function testUvpMentionsEmergentRequirements() {
|
|
261
|
-
const section =
|
|
278
|
+
const section = contentSplit('Unique Value Proposition');
|
|
262
279
|
if (!section.toLowerCase().includes('emergent')) {
|
|
263
280
|
throw new Error('Unique Value Proposition must mention emergent requirements');
|
|
264
281
|
}
|
|
@@ -360,7 +377,7 @@ function runTests(opts = {}) {
|
|
|
360
377
|
}
|
|
361
378
|
|
|
362
379
|
console.log(`\n=== Results: ${passed} passed, ${failed} failed ===\n`);
|
|
363
|
-
|
|
380
|
+
for (const e of errors) console.log(e);
|
|
364
381
|
|
|
365
382
|
if (exitOnFail && failed > 0) {
|
|
366
383
|
process.exit(1);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/TEST-SPECIFICATION-ALIGNMENT KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-07-09
|
|
4
|
-
**Commit:**
|
|
5
|
-
**Branch:** sprint/2026-07-09-
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** b1d2c76
|
|
5
|
+
**Branch:** sprint/2026-07-09-02
|
|
6
|
+
**Version:** 0.14.5.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Test-Specification Alignment Engine — two-stage validation ensuring tests accurately reflect requirements and design specs.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xp-gate",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.5",
|
|
4
4
|
"displayName": "XP-Gate",
|
|
5
5
|
"description": "Extreme Programming quality gates + AI workflow skills for Qoder. Includes 10 quality gates (Gate 0-9), Sprint Flow (11 phases), and Delphi multi-expert review (>=90% consensus).",
|
|
6
6
|
"author": {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/DELPHI-REVIEW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-07-09
|
|
4
|
-
**Commit:**
|
|
5
|
-
**Branch:** sprint/2026-07-09-
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** b1d2c76
|
|
5
|
+
**Branch:** sprint/2026-07-09-02
|
|
6
|
+
**Version:** 0.14.5.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Delphi Consensus Review — multi-round anonymous expert review (≥90% threshold, 3 experts from ≥2 providers, domestic models only). Supports design + code-walkthrough modes.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/SPRINT-FLOW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-07-09
|
|
4
|
-
**Commit:**
|
|
5
|
-
**Branch:** sprint/2026-07-09-
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** b1d2c76
|
|
5
|
+
**Branch:** sprint/2026-07-09-02
|
|
6
|
+
**Version:** 0.14.5.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
**6-phase** development pipeline (v2.0 compact redesign, Issue #290): PREP → DESIGN → BUILD → VERIFY → SHIP → CLOSE. Phase 3/6 BUILD default build mode is **ralph-loop** (REQ-level iteration, 40-67% token savings vs parallel). HARD-GATE between DESIGN (2/6) and BUILD (3/6): design must pass Delphi review (≥90% consensus) before any coding.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/TEST-SPECIFICATION-ALIGNMENT KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-07-09
|
|
4
|
-
**Commit:**
|
|
5
|
-
**Branch:** sprint/2026-07-09-
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** b1d2c76
|
|
5
|
+
**Branch:** sprint/2026-07-09-02
|
|
6
|
+
**Version:** 0.14.5.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Test-Specification Alignment Engine — two-stage validation ensuring tests accurately reflect requirements and design specs.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/DELPHI-REVIEW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-07-09
|
|
4
|
-
**Commit:**
|
|
5
|
-
**Branch:** sprint/2026-07-09-
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** b1d2c76
|
|
5
|
+
**Branch:** sprint/2026-07-09-02
|
|
6
|
+
**Version:** 0.14.5.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Delphi Consensus Review — multi-round anonymous expert review (≥90% threshold, 3 experts from ≥2 providers, domestic models only). Supports design + code-walkthrough modes.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/SPRINT-FLOW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-07-09
|
|
4
|
-
**Commit:**
|
|
5
|
-
**Branch:** sprint/2026-07-09-
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** b1d2c76
|
|
5
|
+
**Branch:** sprint/2026-07-09-02
|
|
6
|
+
**Version:** 0.14.5.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
**6-phase** development pipeline (v2.0 compact redesign, Issue #290): PREP → DESIGN → BUILD → VERIFY → SHIP → CLOSE. Phase 3/6 BUILD default build mode is **ralph-loop** (REQ-level iteration, 40-67% token savings vs parallel). HARD-GATE between DESIGN (2/6) and BUILD (3/6): design must pass Delphi review (≥90% consensus) before any coding.
|
|
@@ -200,6 +200,7 @@ Every phase MUST output its header as the first line of that phase's output. For
|
|
|
200
200
|
4. On `/sprint-flow` trigger, first line MUST output: `Sprint Flow: PREP → DESIGN → BUILD → VERIFY → SHIP → CLOSE`
|
|
201
201
|
5. Each phase completion MUST write Phase Summary to `.sprint-state/phase-outputs/phase-{N}-summary.md`
|
|
202
202
|
6. Each phase completion MUST update `.sprint-state/sprint-state.json`
|
|
203
|
+
7. Each phase completion MUST render the ASCII progress dashboard using `templates/sprint-progress-template.md` — the orchestrator reads `sprint-state.json` and outputs the dashboard after every phase's status block, so the user always sees current global progress without needing to ask
|
|
203
204
|
|
|
204
205
|
### Phase Output Status Schema (MANDATORY per phase)
|
|
205
206
|
|
|
@@ -9,13 +9,30 @@ const path = require('path');
|
|
|
9
9
|
|
|
10
10
|
const SKILL_MD_PATH = path.join(__dirname, '..', 'SKILL.md');
|
|
11
11
|
const REFERENCES_DIR = path.join(__dirname, '..', 'references');
|
|
12
|
+
const PHASE_OVERVIEW_PATH = path.join(REFERENCES_DIR, 'phase-overview.md');
|
|
12
13
|
const PHASE_2_BUILD_PATH = path.join(REFERENCES_DIR, 'phase-3-build.md');
|
|
13
14
|
const ORCHESTRATION_RULES_PATH = path.join(REFERENCES_DIR, 'orchestration-rules.md');
|
|
14
15
|
|
|
15
16
|
let skillContent = '';
|
|
17
|
+
let phaseOverviewContent = '';
|
|
16
18
|
|
|
17
19
|
function loadSkillMd() {
|
|
18
20
|
skillContent = fs.readFileSync(SKILL_MD_PATH, 'utf-8');
|
|
21
|
+
if (fs.existsSync(PHASE_OVERVIEW_PATH)) {
|
|
22
|
+
phaseOverviewContent = fs.readFileSync(PHASE_OVERVIEW_PATH, 'utf-8');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Search across SKILL.md AND references/phase-overview.md (progressive disclosure: sections
|
|
27
|
+
// like "Unique Value Proposition" and "Phase Flow Consistency" moved to reference file).
|
|
28
|
+
function contentIncludes(str) {
|
|
29
|
+
return skillContent.includes(str) || phaseOverviewContent.includes(str);
|
|
30
|
+
}
|
|
31
|
+
function contentSplit(str) {
|
|
32
|
+
// Return the part after str from whichever file contains it
|
|
33
|
+
if (skillContent.includes(str)) return skillContent.split(str)[1];
|
|
34
|
+
if (phaseOverviewContent.includes(str)) return phaseOverviewContent.split(str)[1];
|
|
35
|
+
return undefined;
|
|
19
36
|
}
|
|
20
37
|
|
|
21
38
|
function parseFrontmatter(content) {
|
|
@@ -182,21 +199,21 @@ function testPhaseFlowDiagramOrder() {
|
|
|
182
199
|
}
|
|
183
200
|
|
|
184
201
|
function testPhaseFlowConsistencySectionExists() {
|
|
185
|
-
if (!
|
|
186
|
-
throw new Error('SKILL.md must contain "Phase Flow Consistency" section');
|
|
202
|
+
if (!contentIncludes('Phase Flow Consistency')) {
|
|
203
|
+
throw new Error('SKILL.md or references/phase-overview.md must contain "Phase Flow Consistency" section');
|
|
187
204
|
}
|
|
188
205
|
console.log(' ✓ Phase Flow Consistency section exists');
|
|
189
206
|
}
|
|
190
207
|
|
|
191
208
|
function testCanonicalPhaseOrderTableExists() {
|
|
192
|
-
if (!
|
|
193
|
-
throw new Error('SKILL.md must contain "Canonical Phase Order" table');
|
|
209
|
+
if (!contentIncludes('Canonical Phase Order')) {
|
|
210
|
+
throw new Error('SKILL.md or references/phase-overview.md must contain "Canonical Phase Order" table');
|
|
194
211
|
}
|
|
195
212
|
console.log(' ✓ Canonical Phase Order table exists');
|
|
196
213
|
}
|
|
197
214
|
|
|
198
215
|
function testAll11PhasesInPhaseFlowConsistency() {
|
|
199
|
-
const section =
|
|
216
|
+
const section = contentSplit('Phase Flow Consistency');
|
|
200
217
|
const requiredPhases = [
|
|
201
218
|
'PREP', 'DESIGN', 'BUILD', 'VERIFY', 'SHIP', 'CLOSE',
|
|
202
219
|
];
|
|
@@ -235,14 +252,14 @@ function testForceLevelsRequiresDelphi() {
|
|
|
235
252
|
// === Value Proposition Tests ===
|
|
236
253
|
|
|
237
254
|
function testUniqueValuePropositionExists() {
|
|
238
|
-
if (!
|
|
239
|
-
throw new Error('SKILL.md must contain "Unique Value Proposition" section');
|
|
255
|
+
if (!contentIncludes('Unique Value Proposition')) {
|
|
256
|
+
throw new Error('SKILL.md or references/phase-overview.md must contain "Unique Value Proposition" section');
|
|
240
257
|
}
|
|
241
258
|
console.log(' ✓ Unique Value Proposition section exists');
|
|
242
259
|
}
|
|
243
260
|
|
|
244
261
|
function testUvpMentionsTokenSavings() {
|
|
245
|
-
const section =
|
|
262
|
+
const section = contentSplit('Unique Value Proposition');
|
|
246
263
|
if (!section.includes('40') || !section.includes('67') || !section.includes('token')) {
|
|
247
264
|
throw new Error('Unique Value Proposition must mention 40-67% token savings');
|
|
248
265
|
}
|
|
@@ -250,7 +267,7 @@ function testUvpMentionsTokenSavings() {
|
|
|
250
267
|
}
|
|
251
268
|
|
|
252
269
|
function testUvpMentionsHardGate() {
|
|
253
|
-
const section =
|
|
270
|
+
const section = contentSplit('Unique Value Proposition');
|
|
254
271
|
if (!section.includes('HARD-GATE')) {
|
|
255
272
|
throw new Error('Unique Value Proposition must mention HARD-GATE discipline');
|
|
256
273
|
}
|
|
@@ -258,7 +275,7 @@ function testUvpMentionsHardGate() {
|
|
|
258
275
|
}
|
|
259
276
|
|
|
260
277
|
function testUvpMentionsEmergentRequirements() {
|
|
261
|
-
const section =
|
|
278
|
+
const section = contentSplit('Unique Value Proposition');
|
|
262
279
|
if (!section.toLowerCase().includes('emergent')) {
|
|
263
280
|
throw new Error('Unique Value Proposition must mention emergent requirements');
|
|
264
281
|
}
|
|
@@ -360,7 +377,7 @@ function runTests(opts = {}) {
|
|
|
360
377
|
}
|
|
361
378
|
|
|
362
379
|
console.log(`\n=== Results: ${passed} passed, ${failed} failed ===\n`);
|
|
363
|
-
|
|
380
|
+
for (const e of errors) console.log(e);
|
|
364
381
|
|
|
365
382
|
if (exitOnFail && failed > 0) {
|
|
366
383
|
process.exit(1);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/TEST-SPECIFICATION-ALIGNMENT KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-07-09
|
|
4
|
-
**Commit:**
|
|
5
|
-
**Branch:** sprint/2026-07-09-
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** b1d2c76
|
|
5
|
+
**Branch:** sprint/2026-07-09-02
|
|
6
|
+
**Version:** 0.14.5.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Test-Specification Alignment Engine — two-stage validation ensuring tests accurately reflect requirements and design specs.
|