@boyingliu01/xp-gate 0.19.1 → 0.19.3
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/gate-10.sh +105 -0
- package/hooks/pre-commit +24 -5
- package/lib/__tests__/npm-package.test.js +25 -0
- package/lib/mattpocock-license-verdict.json +1 -1
- package/mock-policy/AGENTS.md +3 -3
- package/mutation/AGENTS.md +3 -3
- package/package.json +2 -1
- package/plugins/claude-code/.claude-plugin/plugin.json +2 -2
- 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/test-specification-alignment/AGENTS.md +3 -3
- package/plugins/dsh/package.json +1 -1
- package/plugins/dsh/skills/delphi-review/AGENTS.md +3 -3
- package/plugins/dsh/skills/sprint-flow/AGENTS.md +3 -3
- package/plugins/dsh/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/test-specification-alignment/AGENTS.md +3 -3
- package/plugins/qoder/plugin.json +2 -2
- package/plugins/qoder/skills/admin-template-guidelines/SKILL.md +6 -797
- package/plugins/qoder/skills/admin-template-guidelines/references/rule-1.md +91 -0
- package/plugins/qoder/skills/admin-template-guidelines/references/rule-2.md +155 -0
- package/plugins/qoder/skills/admin-template-guidelines/references/rule-3.md +70 -0
- package/plugins/qoder/skills/admin-template-guidelines/references/rule-4.md +154 -0
- package/plugins/qoder/skills/admin-template-guidelines/references/rule-5.md +126 -0
- package/plugins/qoder/skills/admin-template-guidelines/references/rule-6.md +180 -0
- package/plugins/qoder/skills/batch-grill-me/SKILL.md +15 -0
- package/plugins/qoder/skills/clipboard-vision/describe-clipboard.ps1 +115 -0
- package/plugins/qoder/skills/clipboard-vision/describe-clipboard.sh +161 -0
- package/plugins/qoder/skills/delphi-review/.delphi-config.json.example +61 -28
- package/plugins/qoder/skills/delphi-review/AGENTS.md +3 -3
- package/plugins/qoder/skills/delphi-review/INSTALL.md +97 -98
- package/plugins/qoder/skills/delphi-review/SKILL.md +77 -54
- package/plugins/qoder/skills/delphi-review/hooks.md +19 -0
- package/plugins/qoder/skills/delphi-review/opencode.json.delphi.example +6 -10
- package/plugins/qoder/skills/delphi-review/references/orchestrator-dispatch.md +64 -0
- package/plugins/qoder/skills/delphi-review/references/requirements.md +402 -0
- package/plugins/qoder/skills/delphi-review/references/round-templates.md +134 -0
- package/plugins/qoder/skills/delphi-review/scripts/verify-consensus.sh +43 -0
- package/plugins/qoder/skills/delphi-review/tools.md +29 -0
- package/plugins/qoder/skills/domain-modeling/ADR-FORMAT.md +64 -0
- package/plugins/qoder/skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
- package/plugins/qoder/skills/domain-modeling/SKILL.md +74 -0
- package/plugins/qoder/skills/grill-with-docs/SKILL.md +7 -0
- package/plugins/qoder/skills/grilling/SKILL.md +12 -0
- package/plugins/qoder/skills/ralph-loop/SKILL.md +87 -428
- package/plugins/qoder/skills/ralph-loop/references/components.md +113 -0
- package/plugins/qoder/skills/ralph-loop/references/workflow-details.md +99 -0
- package/plugins/qoder/skills/sprint-flow/AGENTS.md +4 -4
- package/plugins/qoder/skills/sprint-flow/SKILL.md +255 -454
- package/plugins/qoder/skills/sprint-flow/__tests__/sprint-flow.test.cjs +457 -0
- package/plugins/qoder/skills/sprint-flow/hooks.md +18 -0
- package/plugins/qoder/skills/sprint-flow/references/components/memory.md +1 -1
- package/plugins/qoder/skills/sprint-flow/references/components/middleware.md +1 -1
- package/plugins/qoder/skills/sprint-flow/references/components/skill-invocations.md +21 -20
- package/plugins/qoder/skills/sprint-flow/references/components/tool-descriptions.md +22 -23
- package/plugins/qoder/skills/sprint-flow/references/force-levels.md +0 -1
- package/plugins/qoder/skills/sprint-flow/references/orchestration-rules.md +34 -27
- package/plugins/qoder/skills/sprint-flow/references/phase-1-prep.md +1 -1
- package/plugins/qoder/skills/sprint-flow/references/phase-2-design.md +157 -120
- package/plugins/qoder/skills/sprint-flow/references/phase-3-build.md +203 -2
- package/plugins/qoder/skills/sprint-flow/references/phase-4-verify.md +107 -34
- package/plugins/qoder/skills/sprint-flow/references/phase-5-ship.md +194 -12
- package/plugins/qoder/skills/sprint-flow/references/phase-6-close.md +139 -7
- package/plugins/qoder/skills/sprint-flow/references/phase-overview.md +486 -0
- package/plugins/qoder/skills/sprint-flow/scripts/verify-sprint-state.sh +38 -0
- package/plugins/qoder/skills/sprint-flow/tools.md +29 -0
- package/plugins/qoder/skills/test-specification-alignment/AGENTS.md +3 -3
- package/plugins/qoder/skills/test-specification-alignment/SKILL.md +104 -601
- package/plugins/qoder/skills/to-issues/SKILL.md +1 -1
- package/principles/AGENTS.md +3 -3
- package/skills/delphi-review/AGENTS.md +3 -3
- package/skills/sprint-flow/AGENTS.md +3 -3
- package/skills/test-specification-alignment/AGENTS.md +3 -3
- package/plugins/qoder/skills/clipboard-vision/clipboard-vision/SKILL.md +0 -47
- package/plugins/qoder/skills/clipboard-vision/clipboard-vision/__tests__/clipboard-vision-distribution.test.cjs +0 -65
- package/plugins/qoder/skills/clipboard-vision/clipboard-vision/__tests__/clipboard-vision-security.test.cjs +0 -185
- package/plugins/qoder/skills/clipboard-vision/clipboard-vision/__tests__/clipboard-vision.Tests.ps1 +0 -138
- package/plugins/qoder/skills/clipboard-vision/clipboard-vision/__tests__/clipboard-vision.test.cjs +0 -273
- package/plugins/qoder/skills/clipboard-vision/clipboard-vision/scripts/clipboard-vision.ps1 +0 -86
- package/plugins/qoder/skills/clipboard-vision/clipboard-vision/scripts/clipboard-vision.sh +0 -137
- package/plugins/qoder/skills/ralph-loop/references/components/memory.md +0 -55
- package/plugins/qoder/skills/ralph-loop/references/components/middleware.md +0 -54
- package/plugins/qoder/skills/ralph-loop/references/components/skill-invocations.md +0 -39
- package/plugins/qoder/skills/ralph-loop/references/components/system-prompt.md +0 -24
- package/plugins/qoder/skills/ralph-loop/references/components/tool-descriptions.md +0 -32
package/gate-10.sh
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# shellcheck shell=bash
|
|
2
|
+
# ============================================================================
|
|
3
|
+
# GATE 10: Semgrep SAST Security Scan
|
|
4
|
+
# Detects security vulnerabilities (SQL injection, XSS, etc.) in staged files
|
|
5
|
+
# Tool: semgrep -- https://semgrep.dev
|
|
6
|
+
# ============================================================================
|
|
7
|
+
|
|
8
|
+
2>&1 echo ""
|
|
9
|
+
2>&1 echo "→ Gate 10: Semgrep SAST Security Scan..."
|
|
10
|
+
GATE_10_START=$(gate_start_ms)
|
|
11
|
+
|
|
12
|
+
GATE_10_STATUS=""
|
|
13
|
+
|
|
14
|
+
# Semgrep availability check
|
|
15
|
+
SEMGREP_CMD=""
|
|
16
|
+
if command -v semgrep >/dev/null 2>&1; then
|
|
17
|
+
SEMGREP_CMD="semgrep"
|
|
18
|
+
elif [ -f "$HOME/.local/bin/semgrep" ]; then
|
|
19
|
+
SEMGREP_CMD="$HOME/.local/bin/semgrep"
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
if [ -z "$SEMGREP_CMD" ]; then
|
|
23
|
+
echo " ⚠️ WARN - semgrep not installed — SAST scanning unavailable"
|
|
24
|
+
echo " Install: brew install semgrep (macOS) | pip install semgrep (Linux) | pip install semgrep (Windows)"
|
|
25
|
+
echo " Pre-cache rules: semgrep --config=p/security-audit"
|
|
26
|
+
echo " Gate 10: SAST Security (WARN, semgrep not installed)"
|
|
27
|
+
GATE_10_STATUS="WARN"
|
|
28
|
+
else
|
|
29
|
+
# Get staged files filtered to Semgrep-supported languages
|
|
30
|
+
SEMGREP_FILES=$(git diff --cached --name-only --diff-filter=ACM 2>/dev/null | grep -E '\.(ts|tsx|js|jsx|py|go|java|c|cpp|cs|rb|php|scala|swift)$' || true)
|
|
31
|
+
|
|
32
|
+
if [ -z "$SEMGREP_FILES" ]; then
|
|
33
|
+
echo " ⏭️ SKIPPED - SAST (no supported language files changed)"
|
|
34
|
+
GATE_10_STATUS="SKIP"
|
|
35
|
+
else
|
|
36
|
+
# Run semgrep with JSON output
|
|
37
|
+
# --config=p/security-audit: explicit security ruleset
|
|
38
|
+
# --json: machine-readable output
|
|
39
|
+
# --disable-version-check: skip network call
|
|
40
|
+
SEMGREP_OUTPUT=$("$SEMGREP_CMD" scan --config=p/security-audit --json --disable-version-check "$SEMGREP_FILES" 2>&1)
|
|
41
|
+
SEMGREP_EXIT=$?
|
|
42
|
+
|
|
43
|
+
if [ "$SEMGREP_EXIT" -eq 0 ]; then
|
|
44
|
+
echo " ✅ PASSED - No security vulnerabilities found."
|
|
45
|
+
GATE_10_STATUS="PASS"
|
|
46
|
+
elif [ "$SEMGREP_EXIT" -eq 1 ]; then
|
|
47
|
+
# Findings detected - parse JSON to categorize
|
|
48
|
+
CRITICAL_HIGH=$(echo "$SEMGREP_OUTPUT" | node -e "
|
|
49
|
+
let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{
|
|
50
|
+
try{const data=JSON.parse(d);const results=data.results||[];
|
|
51
|
+
const count=results.filter(r=>{const s=(r.extra&&r.extra.severity||'').toUpperCase();return s==='CRITICAL'||s==='HIGH';}).length;
|
|
52
|
+
console.log(count);}catch(e){console.log('0');}
|
|
53
|
+
});" 2>/dev/null || echo "0")
|
|
54
|
+
|
|
55
|
+
MEDIUM_LOW=$(echo "$SEMGREP_OUTPUT" | node -e "
|
|
56
|
+
let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{
|
|
57
|
+
try{const data=JSON.parse(d);const results=data.results||[];
|
|
58
|
+
const count=results.filter(r=>{const s=(r.extra&&r.extra.severity||'').toUpperCase();return s==='MEDIUM'||s==='LOW';}).length;
|
|
59
|
+
console.log(count);}catch(e){console.log('0');}
|
|
60
|
+
});" 2>/dev/null || echo "0")
|
|
61
|
+
|
|
62
|
+
# Extract top finding details
|
|
63
|
+
FINDING_DETAILS=$(echo "$SEMGREP_OUTPUT" | node -e "
|
|
64
|
+
let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{
|
|
65
|
+
try{const data=JSON.parse(d);const results=data.results||[];
|
|
66
|
+
results.slice(0,5).forEach(r=>{const extra=r.extra||{};
|
|
67
|
+
const severity=(extra.severity||'UNKNOWN').toUpperCase();
|
|
68
|
+
const ruleId=r.check_id||'unknown';const path=r.path||'unknown';
|
|
69
|
+
const line=(r.start&&r.start.line)||'?';const msg=(extra.message||'').slice(0,80);
|
|
70
|
+
console.log(' ['+severity+'] '+ruleId);console.log(' '+path+':'+line+' → '+msg);console.log();});
|
|
71
|
+
}catch(e){console.log(' (Failed to parse semgrep output)');}
|
|
72
|
+
});" 2>/dev/null || echo " (Failed to parse semgrep output)")
|
|
73
|
+
|
|
74
|
+
if [ "$CRITICAL_HIGH" -gt 0 ]; then
|
|
75
|
+
echo ""
|
|
76
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
77
|
+
echo " GATE 10: Semgrep Security Gate"
|
|
78
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
79
|
+
echo " CRITICAL/HIGH: ${CRITICAL_HIGH} ❌ BLOCKED"
|
|
80
|
+
echo " MEDIUM/LOW: ${MEDIUM_LOW} ⚠️ warning"
|
|
81
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
82
|
+
echo " ❌ BLOCKED — Critical/High vulnerability found"
|
|
83
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
84
|
+
echo "$FINDING_DETAILS"
|
|
85
|
+
echo " Run 'semgrep scan --config=p/security-audit' to review all findings."
|
|
86
|
+
GATE_10_STATUS="FAIL"
|
|
87
|
+
exit 1
|
|
88
|
+
else
|
|
89
|
+
echo ""
|
|
90
|
+
echo " ✅ PASSED - No critical/high vulnerabilities"
|
|
91
|
+
if [ "$MEDIUM_LOW" -gt 0 ]; then
|
|
92
|
+
echo " ⚠️ ${MEDIUM_LOW} medium/low findings (warnings only)"
|
|
93
|
+
echo "$FINDING_DETAILS"
|
|
94
|
+
fi
|
|
95
|
+
GATE_10_STATUS="PASS"
|
|
96
|
+
fi
|
|
97
|
+
else
|
|
98
|
+
# semgrep runtime error (timeout, config error, etc.)
|
|
99
|
+
echo " ⚠️ semgrep exited with code ${SEMGREP_EXIT} — skipping gate"
|
|
100
|
+
echo " ⏭️ SKIPPED - SAST (semgrep runtime error)"
|
|
101
|
+
GATE_10_STATUS="SKIP"
|
|
102
|
+
fi
|
|
103
|
+
fi
|
|
104
|
+
fi
|
|
105
|
+
record_gate_audit "gate-10" "sast-security" "$GATE_10_STATUS" "0" "$GATE_10_START"
|
package/hooks/pre-commit
CHANGED
|
@@ -1013,8 +1013,16 @@ else
|
|
|
1013
1013
|
else
|
|
1014
1014
|
# Run Ruff (includes syntax check, linting)
|
|
1015
1015
|
echo "Running Ruff linting (syntax + lint)..."
|
|
1016
|
-
|
|
1017
|
-
|
|
1016
|
+
# Filter to *.py (unquoted) like the format/debug gates below; skip ruff
|
|
1017
|
+
# when no Python files are staged so yaml/.gitignore are never parsed.
|
|
1018
|
+
PY_LINT_FILES=$(echo "$CHANGED_FILES" | grep '\.py$' || true)
|
|
1019
|
+
if [ -z "$PY_LINT_FILES" ]; then
|
|
1020
|
+
RUFF_OUTPUT="[]"
|
|
1021
|
+
RUFF_EXIT=0
|
|
1022
|
+
else
|
|
1023
|
+
RUFF_OUTPUT=$(ruff check $PY_LINT_FILES --output-format json 2>&1)
|
|
1024
|
+
RUFF_EXIT=$?
|
|
1025
|
+
fi
|
|
1018
1026
|
if [ "$RUFF_EXIT" -ne 0 ]; then
|
|
1019
1027
|
if [ -f ".xp-gate/lint-baseline.json" ] && command -v node &> /dev/null; then
|
|
1020
1028
|
# Get baseline warnings for changed Python files
|
|
@@ -1101,9 +1109,14 @@ else
|
|
|
1101
1109
|
|
|
1102
1110
|
# Optional: Type checking with mypy
|
|
1103
1111
|
if command -v mypy &> /dev/null; then
|
|
1104
|
-
echo "
|
|
1105
|
-
|
|
1106
|
-
|
|
1112
|
+
PY_MYPY_FILES=$(echo "$CHANGED_FILES" | grep "\.py$" || true)
|
|
1113
|
+
if [ -z "$PY_MYPY_FILES" ]; then
|
|
1114
|
+
MYPY_EXIT=0
|
|
1115
|
+
else
|
|
1116
|
+
echo "Running mypy type checking (optional)..."
|
|
1117
|
+
mypy --ignore-missing-imports $PY_MYPY_FILES 2>&1 | head -20 | tail -10
|
|
1118
|
+
MYPY_EXIT=$?
|
|
1119
|
+
fi
|
|
1107
1120
|
if [ "$MYPY_EXIT" -ne 0 ]; then
|
|
1108
1121
|
echo ""
|
|
1109
1122
|
echo "❌ BLOCKED - MYPI TYPE ERRORS detected"
|
|
@@ -2565,12 +2578,18 @@ fi
|
|
|
2565
2578
|
GATE_11_START=$(date +%s)
|
|
2566
2579
|
GATE_11_STATUS="PASS"
|
|
2567
2580
|
|
|
2581
|
+
# BEGIN SPRINT_GATE_SCRIPT RESOLUTION
|
|
2582
|
+
# Tier order: GATE_DIR (gate scripts dir) -> repo-root githooks/ -> SCRIPT_DIR
|
|
2583
|
+
# (hooks dir; update-hooks installs sprint-gate.sh beside pre-commit/pre-push).
|
|
2568
2584
|
SPRINT_GATE_SCRIPT=""
|
|
2569
2585
|
if [ -f "$GATE_DIR/sprint-gate.sh" ]; then
|
|
2570
2586
|
SPRINT_GATE_SCRIPT="$GATE_DIR/sprint-gate.sh"
|
|
2571
2587
|
elif [ -f "$(git rev-parse --show-toplevel 2>/dev/null)/githooks/sprint-gate.sh" ]; then
|
|
2572
2588
|
SPRINT_GATE_SCRIPT="$(git rev-parse --show-toplevel)/githooks/sprint-gate.sh"
|
|
2589
|
+
elif [ -f "$SCRIPT_DIR/sprint-gate.sh" ]; then
|
|
2590
|
+
SPRINT_GATE_SCRIPT="$SCRIPT_DIR/sprint-gate.sh"
|
|
2573
2591
|
fi
|
|
2592
|
+
# END SPRINT_GATE_SCRIPT RESOLUTION
|
|
2574
2593
|
|
|
2575
2594
|
if [ -n "$SPRINT_GATE_SCRIPT" ]; then
|
|
2576
2595
|
if ! bash "$SPRINT_GATE_SCRIPT" --pre-commit; then
|
|
@@ -110,3 +110,28 @@ describe('published adapter-common.sh', () => {
|
|
|
110
110
|
expect(published).toContain('run_without_git_context');
|
|
111
111
|
});
|
|
112
112
|
});
|
|
113
|
+
|
|
114
|
+
// ---------- Issue #411: gate scripts must be publishable (doctor parity) ----------
|
|
115
|
+
|
|
116
|
+
describe('Issue #411: every gate-*.sh at package root is listed in "files"', () => {
|
|
117
|
+
const GATE_SCRIPT_RE = /^gate-\d+.*\.sh$/;
|
|
118
|
+
|
|
119
|
+
it('files array covers all gate scripts present at package root', () => {
|
|
120
|
+
const rootScripts = fs.readdirSync(pkgDir).filter(f => GATE_SCRIPT_RE.test(f));
|
|
121
|
+
expect(rootScripts.length).toBeGreaterThan(0);
|
|
122
|
+
const files = pkg.files || [];
|
|
123
|
+
const missing = rootScripts.filter(f => !files.includes(f));
|
|
124
|
+
expect(missing).toEqual([]);
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
it('files array covers doctor EXPECTED_GATE_SCRIPTS', () => {
|
|
128
|
+
const doctorSrc = fs.readFileSync(path.join(pkgDir, 'lib', 'doctor.js'), 'utf8');
|
|
129
|
+
const match = doctorSrc.match(/EXPECTED_GATE_SCRIPTS\s*=\s*\[([^\]]*)\]/);
|
|
130
|
+
expect(match).not.toBeNull();
|
|
131
|
+
const expected = [...match[1].matchAll(/'([^']+)'/g)].map(m => m[1]);
|
|
132
|
+
expect(expected).toContain('gate-10.sh');
|
|
133
|
+
const files = pkg.files || [];
|
|
134
|
+
const missing = expected.filter(f => !files.includes(f));
|
|
135
|
+
expect(missing).toEqual([]);
|
|
136
|
+
});
|
|
137
|
+
});
|
package/mock-policy/AGENTS.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SRC/MOCK-POLICY KNOWLEDGE BASE
|
|
2
2
|
|
|
3
|
-
**Generated:** 2026-
|
|
4
|
-
**Commit:**
|
|
3
|
+
**Generated:** 2026-09-24
|
|
4
|
+
**Commit:** 467174d
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.19.
|
|
6
|
+
**Version:** 0.19.3.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
|
-
**Generated:** 2026-
|
|
4
|
-
**Commit:**
|
|
3
|
+
**Generated:** 2026-09-24
|
|
4
|
+
**Commit:** 467174d
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.19.
|
|
6
|
+
**Version:** 0.19.3.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": "@boyingliu01/xp-gate",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.3",
|
|
4
4
|
"description": "AI-driven development workflow: 6 quality gates + Delphi review + Sprint Flow",
|
|
5
5
|
"bin": {
|
|
6
6
|
"xp-gate": "./bin/xp-gate.js"
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"gate-7.sh",
|
|
24
24
|
"gate-8.sh",
|
|
25
25
|
"gate-9.sh",
|
|
26
|
+
"gate-10.sh",
|
|
26
27
|
"gate-12-file-hygiene.sh",
|
|
27
28
|
"sprint-gate.sh"
|
|
28
29
|
],
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xp-gate",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.3",
|
|
4
4
|
"displayName": "XP-Gate",
|
|
5
|
-
"description": "Extreme Programming quality gates + AI workflow skills for Claude Code. Includes
|
|
5
|
+
"description": "Extreme Programming quality gates + AI workflow skills for Claude Code. Includes 12 pre-commit gates (Gate 0-11), 8 pre-push gates, Sprint Flow (6 phases), and Delphi multi-expert review (>=90% consensus).",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "boyingliu01"
|
|
8
8
|
},
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/DELPHI-REVIEW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
|
-
**Generated:** 2026-
|
|
4
|
-
**Commit:**
|
|
3
|
+
**Generated:** 2026-09-24
|
|
4
|
+
**Commit:** 467174d
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.19.
|
|
6
|
+
**Version:** 0.19.3.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Delphi Consensus Review — multi-round anonymous expert review (≥90% threshold, exactly 3 experts with distinct executable model IDs). Supports design, requirements, and code-walkthrough modes.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/SPRINT-FLOW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
|
-
**Generated:** 2026-
|
|
4
|
-
**Commit:**
|
|
3
|
+
**Generated:** 2026-09-24
|
|
4
|
+
**Commit:** 467174d
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.19.
|
|
6
|
+
**Version:** 0.19.3.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
|
-
**Generated:** 2026-
|
|
4
|
-
**Commit:**
|
|
3
|
+
**Generated:** 2026-09-24
|
|
4
|
+
**Commit:** 467174d
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.19.
|
|
6
|
+
**Version:** 0.19.3.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Test-Specification Alignment Engine — two-stage validation ensuring tests accurately reflect requirements and design specs.
|
package/plugins/dsh/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@boyingliu01/dsh-plugin-xp-gate",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.3",
|
|
4
4
|
"description": "XP-Gate deterministic quality gates + AI workflow skills as a DeepSeek Harness (DSH) native plugin: gate-check / gate-principles / gate-arch tools + 12 SKILL.md skills",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/DELPHI-REVIEW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
|
-
**Generated:** 2026-
|
|
4
|
-
**Commit:**
|
|
3
|
+
**Generated:** 2026-09-24
|
|
4
|
+
**Commit:** 467174d
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.19.
|
|
6
|
+
**Version:** 0.19.3.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Delphi Consensus Review — multi-round anonymous expert review (≥90% threshold, exactly 3 experts with distinct executable model IDs). Supports design, requirements, and code-walkthrough modes.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/SPRINT-FLOW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
|
-
**Generated:** 2026-
|
|
4
|
-
**Commit:**
|
|
3
|
+
**Generated:** 2026-09-24
|
|
4
|
+
**Commit:** 467174d
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.19.
|
|
6
|
+
**Version:** 0.19.3.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
|
-
**Generated:** 2026-
|
|
4
|
-
**Commit:**
|
|
3
|
+
**Generated:** 2026-09-24
|
|
4
|
+
**Commit:** 467174d
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.19.
|
|
6
|
+
**Version:** 0.19.3.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
|
-
**Generated:** 2026-
|
|
4
|
-
**Commit:**
|
|
3
|
+
**Generated:** 2026-09-24
|
|
4
|
+
**Commit:** 467174d
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.19.
|
|
6
|
+
**Version:** 0.19.3.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Delphi Consensus Review — multi-round anonymous expert review (≥90% threshold, exactly 3 experts with distinct executable model IDs). Supports design, requirements, and code-walkthrough modes.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# SKILLS/SPRINT-FLOW KNOWLEDGE BASE
|
|
2
2
|
|
|
3
|
-
**Generated:** 2026-
|
|
4
|
-
**Commit:**
|
|
3
|
+
**Generated:** 2026-09-24
|
|
4
|
+
**Commit:** 467174d
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.19.
|
|
6
|
+
**Version:** 0.19.3.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
|
-
**Generated:** 2026-
|
|
4
|
-
**Commit:**
|
|
3
|
+
**Generated:** 2026-09-24
|
|
4
|
+
**Commit:** 467174d
|
|
5
5
|
**Branch:** main
|
|
6
|
-
**Version:** 0.19.
|
|
6
|
+
**Version:** 0.19.3.0
|
|
7
7
|
|
|
8
8
|
## OVERVIEW
|
|
9
9
|
Test-Specification Alignment Engine — two-stage validation ensuring tests accurately reflect requirements and design specs.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xp-gate",
|
|
3
|
-
"version": "0.19.
|
|
3
|
+
"version": "0.19.3",
|
|
4
4
|
"displayName": "XP-Gate",
|
|
5
|
-
"description": "Extreme Programming quality gates + AI workflow skills for Qoder. Includes
|
|
5
|
+
"description": "Extreme Programming quality gates + AI workflow skills for Qoder. Includes 12 pre-commit gates (Gate 0-11), 8 pre-push gates, Sprint Flow (6 phases), and Delphi multi-expert review (>=90% consensus).",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "boyingliu01"
|
|
8
8
|
},
|