@boyingliu01/xp-gate 0.14.4 → 0.14.6
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/mock-policy/AGENTS.md +2 -2
- package/mutation/AGENTS.md +2 -2
- 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 +4 -0
- package/plugins/claude-code/skills/sprint-flow/__tests__/sprint-flow.test.cjs +30 -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 +4 -0
- package/plugins/opencode/skills/sprint-flow/__tests__/sprint-flow.test.cjs +30 -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/principles/AGENTS.md +2 -2
- package/skills/delphi-review/AGENTS.md +3 -3
- package/skills/sprint-flow/AGENTS.md +3 -3
- package/skills/sprint-flow/SKILL.md +4 -0
- package/skills/sprint-flow/__tests__/sprint-flow.test.cjs +30 -11
- package/skills/test-specification-alignment/AGENTS.md +3 -3
package/mock-policy/AGENTS.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SRC/MOCK-POLICY KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-07-09
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** df2023f
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.14.
|
|
6
|
+
**Version:** 0.14.6.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Mock layering policy enforcement — Gate M3 of pre-push hook. Ensures integration tests use real implementations for internal dependencies, mock external dependencies, and annotate pending mocks with removal plans. Combines project scope scanning, mock decision engine, and per-file validation into a single pipeline.
|
package/mutation/AGENTS.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SRC/MUTATION KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-07-09
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** df2023f
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.14.
|
|
6
|
+
**Version:** 0.14.6.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
**Gate M** (incremental mutation testing) + **Gate M2** helpers (test-layer detection used by `src/mock-policy/`). Pre-push quality gate. TypeScript-only; uses Stryker.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xp-gate",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.6",
|
|
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:**
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** df2023f
|
|
5
|
+
**Branch:** main
|
|
6
|
+
**Version:** 0.14.6.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:**
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** df2023f
|
|
5
|
+
**Branch:** main
|
|
6
|
+
**Version:** 0.14.6.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.
|
|
@@ -201,6 +201,10 @@ Every phase MUST output its header as the first line of that phase's output. For
|
|
|
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
203
|
|
|
204
|
+
### Required Rendering (MANDATORY per phase)
|
|
205
|
+
|
|
206
|
+
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
|
|
207
|
+
|
|
204
208
|
### Phase Output Status Schema (MANDATORY per phase)
|
|
205
209
|
|
|
206
210
|
Each phase MUST close with structured status:
|
|
@@ -9,13 +9,32 @@ 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
|
+
// Throws descriptive error instead of returning undefined so callers
|
|
34
|
+
// get a clear assertion message rather than a TypeError crash.
|
|
35
|
+
if (skillContent.includes(str)) return skillContent.split(str)[1];
|
|
36
|
+
if (phaseOverviewContent.includes(str)) return phaseOverviewContent.split(str)[1];
|
|
37
|
+
throw new Error(`Section "${str}" not found in SKILL.md or references/phase-overview.md`);
|
|
19
38
|
}
|
|
20
39
|
|
|
21
40
|
function parseFrontmatter(content) {
|
|
@@ -182,21 +201,21 @@ function testPhaseFlowDiagramOrder() {
|
|
|
182
201
|
}
|
|
183
202
|
|
|
184
203
|
function testPhaseFlowConsistencySectionExists() {
|
|
185
|
-
if (!
|
|
186
|
-
throw new Error('SKILL.md must contain "Phase Flow Consistency" section');
|
|
204
|
+
if (!contentIncludes('Phase Flow Consistency')) {
|
|
205
|
+
throw new Error('SKILL.md or references/phase-overview.md must contain "Phase Flow Consistency" section');
|
|
187
206
|
}
|
|
188
207
|
console.log(' ✓ Phase Flow Consistency section exists');
|
|
189
208
|
}
|
|
190
209
|
|
|
191
210
|
function testCanonicalPhaseOrderTableExists() {
|
|
192
|
-
if (!
|
|
193
|
-
throw new Error('SKILL.md must contain "Canonical Phase Order" table');
|
|
211
|
+
if (!contentIncludes('Canonical Phase Order')) {
|
|
212
|
+
throw new Error('SKILL.md or references/phase-overview.md must contain "Canonical Phase Order" table');
|
|
194
213
|
}
|
|
195
214
|
console.log(' ✓ Canonical Phase Order table exists');
|
|
196
215
|
}
|
|
197
216
|
|
|
198
217
|
function testAll11PhasesInPhaseFlowConsistency() {
|
|
199
|
-
const section =
|
|
218
|
+
const section = contentSplit('Phase Flow Consistency');
|
|
200
219
|
const requiredPhases = [
|
|
201
220
|
'PREP', 'DESIGN', 'BUILD', 'VERIFY', 'SHIP', 'CLOSE',
|
|
202
221
|
];
|
|
@@ -235,14 +254,14 @@ function testForceLevelsRequiresDelphi() {
|
|
|
235
254
|
// === Value Proposition Tests ===
|
|
236
255
|
|
|
237
256
|
function testUniqueValuePropositionExists() {
|
|
238
|
-
if (!
|
|
239
|
-
throw new Error('SKILL.md must contain "Unique Value Proposition" section');
|
|
257
|
+
if (!contentIncludes('Unique Value Proposition')) {
|
|
258
|
+
throw new Error('SKILL.md or references/phase-overview.md must contain "Unique Value Proposition" section');
|
|
240
259
|
}
|
|
241
260
|
console.log(' ✓ Unique Value Proposition section exists');
|
|
242
261
|
}
|
|
243
262
|
|
|
244
263
|
function testUvpMentionsTokenSavings() {
|
|
245
|
-
const section =
|
|
264
|
+
const section = contentSplit('Unique Value Proposition');
|
|
246
265
|
if (!section.includes('40') || !section.includes('67') || !section.includes('token')) {
|
|
247
266
|
throw new Error('Unique Value Proposition must mention 40-67% token savings');
|
|
248
267
|
}
|
|
@@ -250,7 +269,7 @@ function testUvpMentionsTokenSavings() {
|
|
|
250
269
|
}
|
|
251
270
|
|
|
252
271
|
function testUvpMentionsHardGate() {
|
|
253
|
-
const section =
|
|
272
|
+
const section = contentSplit('Unique Value Proposition');
|
|
254
273
|
if (!section.includes('HARD-GATE')) {
|
|
255
274
|
throw new Error('Unique Value Proposition must mention HARD-GATE discipline');
|
|
256
275
|
}
|
|
@@ -258,7 +277,7 @@ function testUvpMentionsHardGate() {
|
|
|
258
277
|
}
|
|
259
278
|
|
|
260
279
|
function testUvpMentionsEmergentRequirements() {
|
|
261
|
-
const section =
|
|
280
|
+
const section = contentSplit('Unique Value Proposition');
|
|
262
281
|
if (!section.toLowerCase().includes('emergent')) {
|
|
263
282
|
throw new Error('Unique Value Proposition must mention emergent requirements');
|
|
264
283
|
}
|
|
@@ -360,7 +379,7 @@ function runTests(opts = {}) {
|
|
|
360
379
|
}
|
|
361
380
|
|
|
362
381
|
console.log(`\n=== Results: ${passed} passed, ${failed} failed ===\n`);
|
|
363
|
-
|
|
382
|
+
for (const e of errors) console.log(e);
|
|
364
383
|
|
|
365
384
|
if (exitOnFail && failed > 0) {
|
|
366
385
|
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:**
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** df2023f
|
|
5
|
+
**Branch:** main
|
|
6
|
+
**Version:** 0.14.6.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:**
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** df2023f
|
|
5
|
+
**Branch:** main
|
|
6
|
+
**Version:** 0.14.6.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:**
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** df2023f
|
|
5
|
+
**Branch:** main
|
|
6
|
+
**Version:** 0.14.6.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.
|
|
@@ -201,6 +201,10 @@ Every phase MUST output its header as the first line of that phase's output. For
|
|
|
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
203
|
|
|
204
|
+
### Required Rendering (MANDATORY per phase)
|
|
205
|
+
|
|
206
|
+
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
|
|
207
|
+
|
|
204
208
|
### Phase Output Status Schema (MANDATORY per phase)
|
|
205
209
|
|
|
206
210
|
Each phase MUST close with structured status:
|
|
@@ -9,13 +9,32 @@ 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
|
+
// Throws descriptive error instead of returning undefined so callers
|
|
34
|
+
// get a clear assertion message rather than a TypeError crash.
|
|
35
|
+
if (skillContent.includes(str)) return skillContent.split(str)[1];
|
|
36
|
+
if (phaseOverviewContent.includes(str)) return phaseOverviewContent.split(str)[1];
|
|
37
|
+
throw new Error(`Section "${str}" not found in SKILL.md or references/phase-overview.md`);
|
|
19
38
|
}
|
|
20
39
|
|
|
21
40
|
function parseFrontmatter(content) {
|
|
@@ -182,21 +201,21 @@ function testPhaseFlowDiagramOrder() {
|
|
|
182
201
|
}
|
|
183
202
|
|
|
184
203
|
function testPhaseFlowConsistencySectionExists() {
|
|
185
|
-
if (!
|
|
186
|
-
throw new Error('SKILL.md must contain "Phase Flow Consistency" section');
|
|
204
|
+
if (!contentIncludes('Phase Flow Consistency')) {
|
|
205
|
+
throw new Error('SKILL.md or references/phase-overview.md must contain "Phase Flow Consistency" section');
|
|
187
206
|
}
|
|
188
207
|
console.log(' ✓ Phase Flow Consistency section exists');
|
|
189
208
|
}
|
|
190
209
|
|
|
191
210
|
function testCanonicalPhaseOrderTableExists() {
|
|
192
|
-
if (!
|
|
193
|
-
throw new Error('SKILL.md must contain "Canonical Phase Order" table');
|
|
211
|
+
if (!contentIncludes('Canonical Phase Order')) {
|
|
212
|
+
throw new Error('SKILL.md or references/phase-overview.md must contain "Canonical Phase Order" table');
|
|
194
213
|
}
|
|
195
214
|
console.log(' ✓ Canonical Phase Order table exists');
|
|
196
215
|
}
|
|
197
216
|
|
|
198
217
|
function testAll11PhasesInPhaseFlowConsistency() {
|
|
199
|
-
const section =
|
|
218
|
+
const section = contentSplit('Phase Flow Consistency');
|
|
200
219
|
const requiredPhases = [
|
|
201
220
|
'PREP', 'DESIGN', 'BUILD', 'VERIFY', 'SHIP', 'CLOSE',
|
|
202
221
|
];
|
|
@@ -235,14 +254,14 @@ function testForceLevelsRequiresDelphi() {
|
|
|
235
254
|
// === Value Proposition Tests ===
|
|
236
255
|
|
|
237
256
|
function testUniqueValuePropositionExists() {
|
|
238
|
-
if (!
|
|
239
|
-
throw new Error('SKILL.md must contain "Unique Value Proposition" section');
|
|
257
|
+
if (!contentIncludes('Unique Value Proposition')) {
|
|
258
|
+
throw new Error('SKILL.md or references/phase-overview.md must contain "Unique Value Proposition" section');
|
|
240
259
|
}
|
|
241
260
|
console.log(' ✓ Unique Value Proposition section exists');
|
|
242
261
|
}
|
|
243
262
|
|
|
244
263
|
function testUvpMentionsTokenSavings() {
|
|
245
|
-
const section =
|
|
264
|
+
const section = contentSplit('Unique Value Proposition');
|
|
246
265
|
if (!section.includes('40') || !section.includes('67') || !section.includes('token')) {
|
|
247
266
|
throw new Error('Unique Value Proposition must mention 40-67% token savings');
|
|
248
267
|
}
|
|
@@ -250,7 +269,7 @@ function testUvpMentionsTokenSavings() {
|
|
|
250
269
|
}
|
|
251
270
|
|
|
252
271
|
function testUvpMentionsHardGate() {
|
|
253
|
-
const section =
|
|
272
|
+
const section = contentSplit('Unique Value Proposition');
|
|
254
273
|
if (!section.includes('HARD-GATE')) {
|
|
255
274
|
throw new Error('Unique Value Proposition must mention HARD-GATE discipline');
|
|
256
275
|
}
|
|
@@ -258,7 +277,7 @@ function testUvpMentionsHardGate() {
|
|
|
258
277
|
}
|
|
259
278
|
|
|
260
279
|
function testUvpMentionsEmergentRequirements() {
|
|
261
|
-
const section =
|
|
280
|
+
const section = contentSplit('Unique Value Proposition');
|
|
262
281
|
if (!section.toLowerCase().includes('emergent')) {
|
|
263
282
|
throw new Error('Unique Value Proposition must mention emergent requirements');
|
|
264
283
|
}
|
|
@@ -360,7 +379,7 @@ function runTests(opts = {}) {
|
|
|
360
379
|
}
|
|
361
380
|
|
|
362
381
|
console.log(`\n=== Results: ${passed} passed, ${failed} failed ===\n`);
|
|
363
|
-
|
|
382
|
+
for (const e of errors) console.log(e);
|
|
364
383
|
|
|
365
384
|
if (exitOnFail && failed > 0) {
|
|
366
385
|
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:**
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** df2023f
|
|
5
|
+
**Branch:** main
|
|
6
|
+
**Version:** 0.14.6.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.6",
|
|
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:**
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** df2023f
|
|
5
|
+
**Branch:** main
|
|
6
|
+
**Version:** 0.14.6.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:**
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** df2023f
|
|
5
|
+
**Branch:** main
|
|
6
|
+
**Version:** 0.14.6.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:**
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** df2023f
|
|
5
|
+
**Branch:** main
|
|
6
|
+
**Version:** 0.14.6.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Test-Specification Alignment Engine — two-stage validation ensuring tests accurately reflect requirements and design specs.
|
package/principles/AGENTS.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# PRINCIPLES CHECKER MODULE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-07-09
|
|
4
|
-
**Commit:**
|
|
4
|
+
**Commit:** df2023f
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.14.
|
|
6
|
+
**Version:** 0.14.6.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Clean Code & SOLID principles checker — **Gate 4** of pre-commit. 14 rules × 9 language adapters, SARIF 2.1.0 output. Houses the **Boy Scout Rule** enforcement engine (Gate 6) and warning-baseline storage.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/DELPHI-REVIEW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
3
|
**Generated:** 2026-07-09
|
|
4
|
-
**Commit:**
|
|
5
|
-
**Branch:**
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** df2023f
|
|
5
|
+
**Branch:** main
|
|
6
|
+
**Version:** 0.14.6.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:**
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** df2023f
|
|
5
|
+
**Branch:** main
|
|
6
|
+
**Version:** 0.14.6.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.
|
|
@@ -201,6 +201,10 @@ Every phase MUST output its header as the first line of that phase's output. For
|
|
|
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
203
|
|
|
204
|
+
### Required Rendering (MANDATORY per phase)
|
|
205
|
+
|
|
206
|
+
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
|
|
207
|
+
|
|
204
208
|
### Phase Output Status Schema (MANDATORY per phase)
|
|
205
209
|
|
|
206
210
|
Each phase MUST close with structured status:
|
|
@@ -9,13 +9,32 @@ 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
|
+
// Throws descriptive error instead of returning undefined so callers
|
|
34
|
+
// get a clear assertion message rather than a TypeError crash.
|
|
35
|
+
if (skillContent.includes(str)) return skillContent.split(str)[1];
|
|
36
|
+
if (phaseOverviewContent.includes(str)) return phaseOverviewContent.split(str)[1];
|
|
37
|
+
throw new Error(`Section "${str}" not found in SKILL.md or references/phase-overview.md`);
|
|
19
38
|
}
|
|
20
39
|
|
|
21
40
|
function parseFrontmatter(content) {
|
|
@@ -182,21 +201,21 @@ function testPhaseFlowDiagramOrder() {
|
|
|
182
201
|
}
|
|
183
202
|
|
|
184
203
|
function testPhaseFlowConsistencySectionExists() {
|
|
185
|
-
if (!
|
|
186
|
-
throw new Error('SKILL.md must contain "Phase Flow Consistency" section');
|
|
204
|
+
if (!contentIncludes('Phase Flow Consistency')) {
|
|
205
|
+
throw new Error('SKILL.md or references/phase-overview.md must contain "Phase Flow Consistency" section');
|
|
187
206
|
}
|
|
188
207
|
console.log(' ✓ Phase Flow Consistency section exists');
|
|
189
208
|
}
|
|
190
209
|
|
|
191
210
|
function testCanonicalPhaseOrderTableExists() {
|
|
192
|
-
if (!
|
|
193
|
-
throw new Error('SKILL.md must contain "Canonical Phase Order" table');
|
|
211
|
+
if (!contentIncludes('Canonical Phase Order')) {
|
|
212
|
+
throw new Error('SKILL.md or references/phase-overview.md must contain "Canonical Phase Order" table');
|
|
194
213
|
}
|
|
195
214
|
console.log(' ✓ Canonical Phase Order table exists');
|
|
196
215
|
}
|
|
197
216
|
|
|
198
217
|
function testAll11PhasesInPhaseFlowConsistency() {
|
|
199
|
-
const section =
|
|
218
|
+
const section = contentSplit('Phase Flow Consistency');
|
|
200
219
|
const requiredPhases = [
|
|
201
220
|
'PREP', 'DESIGN', 'BUILD', 'VERIFY', 'SHIP', 'CLOSE',
|
|
202
221
|
];
|
|
@@ -235,14 +254,14 @@ function testForceLevelsRequiresDelphi() {
|
|
|
235
254
|
// === Value Proposition Tests ===
|
|
236
255
|
|
|
237
256
|
function testUniqueValuePropositionExists() {
|
|
238
|
-
if (!
|
|
239
|
-
throw new Error('SKILL.md must contain "Unique Value Proposition" section');
|
|
257
|
+
if (!contentIncludes('Unique Value Proposition')) {
|
|
258
|
+
throw new Error('SKILL.md or references/phase-overview.md must contain "Unique Value Proposition" section');
|
|
240
259
|
}
|
|
241
260
|
console.log(' ✓ Unique Value Proposition section exists');
|
|
242
261
|
}
|
|
243
262
|
|
|
244
263
|
function testUvpMentionsTokenSavings() {
|
|
245
|
-
const section =
|
|
264
|
+
const section = contentSplit('Unique Value Proposition');
|
|
246
265
|
if (!section.includes('40') || !section.includes('67') || !section.includes('token')) {
|
|
247
266
|
throw new Error('Unique Value Proposition must mention 40-67% token savings');
|
|
248
267
|
}
|
|
@@ -250,7 +269,7 @@ function testUvpMentionsTokenSavings() {
|
|
|
250
269
|
}
|
|
251
270
|
|
|
252
271
|
function testUvpMentionsHardGate() {
|
|
253
|
-
const section =
|
|
272
|
+
const section = contentSplit('Unique Value Proposition');
|
|
254
273
|
if (!section.includes('HARD-GATE')) {
|
|
255
274
|
throw new Error('Unique Value Proposition must mention HARD-GATE discipline');
|
|
256
275
|
}
|
|
@@ -258,7 +277,7 @@ function testUvpMentionsHardGate() {
|
|
|
258
277
|
}
|
|
259
278
|
|
|
260
279
|
function testUvpMentionsEmergentRequirements() {
|
|
261
|
-
const section =
|
|
280
|
+
const section = contentSplit('Unique Value Proposition');
|
|
262
281
|
if (!section.toLowerCase().includes('emergent')) {
|
|
263
282
|
throw new Error('Unique Value Proposition must mention emergent requirements');
|
|
264
283
|
}
|
|
@@ -360,7 +379,7 @@ function runTests(opts = {}) {
|
|
|
360
379
|
}
|
|
361
380
|
|
|
362
381
|
console.log(`\n=== Results: ${passed} passed, ${failed} failed ===\n`);
|
|
363
|
-
|
|
382
|
+
for (const e of errors) console.log(e);
|
|
364
383
|
|
|
365
384
|
if (exitOnFail && failed > 0) {
|
|
366
385
|
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:**
|
|
6
|
-
**Version:** 0.14.
|
|
4
|
+
**Commit:** df2023f
|
|
5
|
+
**Branch:** main
|
|
6
|
+
**Version:** 0.14.6.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Test-Specification Alignment Engine — two-stage validation ensuring tests accurately reflect requirements and design specs.
|