@boyingliu01/xp-gate 0.14.29 → 0.14.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/adapter-common.sh +0 -0
  2. package/adapters/cpp.sh +0 -0
  3. package/adapters/dart.sh +0 -0
  4. package/adapters/flutter.sh +0 -0
  5. package/adapters/go.sh +0 -0
  6. package/adapters/iac.sh +0 -0
  7. package/adapters/java.sh +0 -0
  8. package/adapters/kotlin.sh +0 -0
  9. package/adapters/objectivec.sh +0 -0
  10. package/adapters/plugins/book299-20132-python/scripts/install-gradle.sh +0 -0
  11. package/adapters/plugins/book299-20132-python/scripts/install-maven.sh +0 -0
  12. package/adapters/plugins/book299-4081-c/scripts/install-gradle.sh +0 -0
  13. package/adapters/plugins/book299-4081-c/scripts/install-maven.sh +0 -0
  14. package/adapters/plugins/book299-4083-javascriptes5/scripts/install-gradle.sh +0 -0
  15. package/adapters/plugins/book299-4083-javascriptes5/scripts/install-maven.sh +0 -0
  16. package/adapters/powershell.sh +0 -0
  17. package/adapters/python.sh +0 -0
  18. package/adapters/shell.sh +0 -0
  19. package/adapters/swift.sh +0 -0
  20. package/adapters/typescript.sh +0 -0
  21. package/bin/xp-gate.js +8 -0
  22. package/gate-3.sh +0 -0
  23. package/gate-4.sh +0 -0
  24. package/gate-7.sh +0 -0
  25. package/gate-8.sh +0 -0
  26. package/gate-9.sh +0 -0
  27. package/hooks/adapter-common.sh +0 -0
  28. package/hooks/gate-3.sh +0 -0
  29. package/hooks/gate-4.sh +0 -0
  30. package/hooks/gate-7.sh +0 -0
  31. package/hooks/gate-8.sh +0 -0
  32. package/hooks/gate-9.sh +0 -0
  33. package/hooks/pre-commit +0 -0
  34. package/hooks/pre-push +0 -0
  35. package/lib/__tests__/phase-transition.test.js +272 -174
  36. package/lib/__tests__/sprint-audit.test.js +207 -0
  37. package/lib/phase-transition.js +249 -211
  38. package/lib/sprint-audit.js +235 -0
  39. package/mock-policy/AGENTS.md +2 -2
  40. package/mutation/AGENTS.md +2 -2
  41. package/package.json +2 -2
  42. package/plugins/claude-code/.claude-plugin/plugin.json +1 -1
  43. package/plugins/claude-code/bin/delphi-review-guard.sh +0 -0
  44. package/plugins/claude-code/bin/xp-gate-check +0 -0
  45. package/plugins/claude-code/skills/delphi-review/AGENTS.md +2 -2
  46. package/plugins/claude-code/skills/sprint-flow/AGENTS.md +2 -2
  47. package/plugins/claude-code/skills/sprint-flow/references/orchestration-rules.md +10 -0
  48. package/plugins/claude-code/skills/test-specification-alignment/AGENTS.md +2 -2
  49. package/plugins/opencode/package.json +1 -1
  50. package/plugins/opencode/skills/delphi-review/AGENTS.md +2 -2
  51. package/plugins/opencode/skills/sprint-flow/AGENTS.md +2 -2
  52. package/plugins/opencode/skills/sprint-flow/references/orchestration-rules.md +10 -0
  53. package/plugins/opencode/skills/test-specification-alignment/AGENTS.md +2 -2
  54. package/plugins/qoder/agents/delphi-architecture.md +48 -48
  55. package/plugins/qoder/agents/delphi-feasibility.md +48 -48
  56. package/plugins/qoder/agents/delphi-technical.md +48 -48
  57. package/plugins/qoder/bin/sprint-flow-guard.sh +0 -0
  58. package/plugins/qoder/bin/xp-gate-check +0 -0
  59. package/plugins/qoder/plugin.json +1 -1
  60. package/plugins/qoder/skills/delphi-review/AGENTS.md +2 -2
  61. package/plugins/qoder/skills/sprint-flow/AGENTS.md +2 -2
  62. package/plugins/qoder/skills/test-specification-alignment/AGENTS.md +2 -2
  63. package/principles/AGENTS.md +2 -2
  64. package/scripts/delphi-external-review.cjs +432 -432
  65. package/skills/delphi-review/AGENTS.md +2 -2
  66. package/skills/sprint-flow/AGENTS.md +2 -2
  67. package/skills/sprint-flow/references/orchestration-rules.md +10 -0
  68. package/skills/test-specification-alignment/AGENTS.md +2 -2
@@ -0,0 +1,235 @@
1
+ /**
2
+ * xp-gate sprint-audit — Layer 2: Final sprint completeness audit.
3
+ *
4
+ * Checks phase_history coverage, time records, artifact records,
5
+ * and state consistency at Phase 6 CLOSE.
6
+ *
7
+ * Usage:
8
+ * xp-gate sprint-audit [--dir <path>] [--json]
9
+ *
10
+ * Verdict rules:
11
+ * 6/6 completed + 0 errors → PASS (exit 0)
12
+ * >= 4/6 completed + 0 errors → PASS_WITH_WARNINGS (exit 0)
13
+ * < 4/6 completed or any errors → FAIL (exit 1)
14
+ * No sprint-state.json → SKIP (exit 0)
15
+ *
16
+ * @module sprint-audit
17
+ */
18
+
19
+ 'use strict';
20
+
21
+ const fs = require('fs');
22
+ const path = require('path');
23
+ const { PHASE_NAMES } = require('./phase-transition');
24
+
25
+ /**
26
+ * Run the sprint audit.
27
+ * @param {string[]} args - CLI arguments
28
+ * @returns {Promise<number>} Exit code
29
+ */
30
+ async function handleSprintAudit(args = []) {
31
+ if (args.includes('--help')) {
32
+ console.log('Usage: xp-gate sprint-audit [options]');
33
+ console.log('');
34
+ console.log('Options:');
35
+ console.log(' --dir <path> Project directory (default: cwd)');
36
+ console.log(' --json Output as JSON instead of human-readable');
37
+ console.log('');
38
+ console.log('Runs final sprint completeness audit at Phase 6 CLOSE.');
39
+ console.log('Checks phase coverage, time records, artifact records,');
40
+ console.log('and state consistency.');
41
+ return 0;
42
+ }
43
+
44
+ const dirIdx = args.indexOf('--dir');
45
+ const projectDir = dirIdx >= 0 ? args[dirIdx + 1] : process.cwd();
46
+ const jsonFlag = args.includes('--json');
47
+
48
+ const stateFile = path.join(projectDir, '.sprint-state', 'sprint-state.json');
49
+
50
+ // No sprint-state.json → SKIP
51
+ if (!fs.existsSync(stateFile)) {
52
+ if (jsonFlag) {
53
+ console.log(JSON.stringify({ verdict: 'SKIP', reason: 'No sprint-state.json found' }));
54
+ } else {
55
+ console.log('⏭️ No sprint-state.json found — skipping audit.');
56
+ }
57
+ return 0;
58
+ }
59
+
60
+ let state;
61
+ try {
62
+ state = JSON.parse(fs.readFileSync(stateFile, 'utf8'));
63
+ } catch (err) {
64
+ const result = {
65
+ verdict: 'FAIL',
66
+ errors: [`Failed to parse sprint-state.json: ${err.message}`],
67
+ };
68
+ if (jsonFlag) {
69
+ console.log(JSON.stringify(result, null, 2));
70
+ } else {
71
+ console.error(`❌ ${result.errors[0]}`);
72
+ }
73
+ return 1;
74
+ }
75
+
76
+ // ── Run checks ──
77
+ const warnings = [];
78
+ const errors = [];
79
+ const phaseHistory = Array.isArray(state.phase_history) ? state.phase_history : [];
80
+
81
+ // Build lookup
82
+ const historyLookup = {};
83
+ for (const entry of phaseHistory) {
84
+ historyLookup[entry.phase] = entry;
85
+ }
86
+
87
+ // Check 1: Phase coverage
88
+ const completedPhases = [];
89
+ const missingPhases = [];
90
+ const incompletePhases = [];
91
+
92
+ for (let i = 1; i <= 6; i++) {
93
+ const entry = historyLookup[i];
94
+ if (!entry) {
95
+ missingPhases.push(i);
96
+ } else if (entry.status === 'completed' || entry.status === 'skipped') {
97
+ completedPhases.push(i);
98
+ } else {
99
+ incompletePhases.push({ phase: i, name: PHASE_NAMES[i] || `Phase ${i}`, status: entry.status });
100
+ }
101
+ }
102
+
103
+ // Check 2: Time records for completed phases
104
+ for (const phaseNum of completedPhases) {
105
+ const entry = historyLookup[phaseNum];
106
+ if (entry.status === 'completed' && (entry.duration_seconds == null || entry.duration_seconds === 0)) {
107
+ warnings.push(`Phase ${phaseNum} (${PHASE_NAMES[phaseNum]}) completed but has no duration recorded`);
108
+ }
109
+ }
110
+
111
+ // Check 3: Artifact records (phase-{N}-summary.md)
112
+ const outputsDir = path.join(projectDir, '.sprint-state', 'phase-outputs');
113
+ for (const phaseNum of completedPhases) {
114
+ if (historyLookup[phaseNum].status === 'completed') {
115
+ const summaryFile = path.join(outputsDir, `phase-${phaseNum}-summary.md`);
116
+ if (!fs.existsSync(summaryFile)) {
117
+ warnings.push(`Phase ${phaseNum} summary missing: .sprint-state/phase-outputs/phase-${phaseNum}-summary.md`);
118
+ }
119
+ }
120
+ }
121
+
122
+ // Check 4: State consistency — phase field vs phase_history last entry
123
+ if (phaseHistory.length > 0) {
124
+ const lastEntry = phaseHistory[phaseHistory.length - 1];
125
+ if (state.phase !== undefined && state.phase !== lastEntry.phase) {
126
+ errors.push(
127
+ `State inconsistency: sprint-state.phase=${state.phase} but phase_history last entry is phase ${lastEntry.phase}`
128
+ );
129
+ }
130
+ }
131
+
132
+ // ── Determine verdict ──
133
+ const completedCount = completedPhases.length;
134
+ let verdict;
135
+ if (errors.length > 0 || completedCount < 4) {
136
+ verdict = 'FAIL';
137
+ } else if (completedCount >= 6 && errors.length === 0) {
138
+ verdict = 'PASS';
139
+ } else {
140
+ verdict = 'PASS_WITH_WARNINGS';
141
+ }
142
+
143
+ // ── Build result ──
144
+ const result = {
145
+ sprint_id: state.id || 'unknown',
146
+ branch: state.isolation?.branch || 'unknown',
147
+ coverage: {
148
+ completed: completedCount,
149
+ total: 6,
150
+ pct: Math.round((completedCount / 6) * 100),
151
+ },
152
+ missing_phases: missingPhases.map(p => ({ phase: p, name: PHASE_NAMES[p] || `Phase ${p}` })),
153
+ incomplete_phases: incompletePhases,
154
+ warnings,
155
+ errors,
156
+ verdict,
157
+ };
158
+
159
+ // ── Persist report (latest overwrites — expected behavior) ──
160
+ const reportPath = path.join(projectDir, '.sprint-state', 'audit-report.json');
161
+ try {
162
+ fs.writeFileSync(reportPath, JSON.stringify(result, null, 2), 'utf8');
163
+ } catch (err) {
164
+ // Report write failure is WARNING, not BLOCK
165
+ warnings.push(`Failed to write audit report: ${err.message}`);
166
+ }
167
+
168
+ // ── Output ──
169
+ if (jsonFlag) {
170
+ console.log(JSON.stringify(result, null, 2));
171
+ } else {
172
+ printHumanReadable(result, state);
173
+ }
174
+
175
+ // Exit code: FAIL → 1, others → 0
176
+ return verdict === 'FAIL' ? 1 : 0;
177
+ }
178
+
179
+ /**
180
+ * Print human-readable audit report.
181
+ * @param {object} result - Audit result object
182
+ * @param {object} state - Sprint state object
183
+ */
184
+ function printHumanReadable(result, state) {
185
+ const lines = [];
186
+ lines.push('');
187
+ lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
188
+ lines.push(` Sprint Audit Report — ${result.sprint_id}`);
189
+ lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
190
+ lines.push('');
191
+ lines.push(` Branch: ${result.branch}`);
192
+ lines.push(` Phase Coverage: ${result.coverage.completed}/${result.coverage.total} (${result.coverage.pct}%)`);
193
+ lines.push('');
194
+ lines.push(' Phase History:');
195
+
196
+ for (let i = 1; i <= 6; i++) {
197
+ const entry = result.incomplete_phases.find(p => p.phase === i);
198
+ const missing = result.missing_phases.find(p => p.phase === i);
199
+ const name = (PHASE_NAMES[i] || `Phase ${i}`).padEnd(10);
200
+
201
+ if (missing) {
202
+ lines.push(` ❌ Phase ${i}/6 ${name} — not recorded`);
203
+ } else if (entry) {
204
+ lines.push(` ⚠️ Phase ${i}/6 ${name} ${entry.status} ← not yet completed`);
205
+ } else {
206
+ lines.push(` ✅ Phase ${i}/6 ${name} completed`);
207
+ }
208
+ }
209
+
210
+ if (result.warnings.length > 0) {
211
+ lines.push('');
212
+ lines.push(' Warnings:');
213
+ for (const w of result.warnings) {
214
+ lines.push(` ⚠️ ${w}`);
215
+ }
216
+ }
217
+
218
+ if (result.errors.length > 0) {
219
+ lines.push('');
220
+ lines.push(' Errors:');
221
+ for (const e of result.errors) {
222
+ lines.push(` ❌ ${e}`);
223
+ }
224
+ }
225
+
226
+ lines.push('');
227
+ const issueCount = result.warnings.length + result.errors.length;
228
+ lines.push(` Overall: ${result.warnings.length} warning(s), ${result.errors.length} error(s)`);
229
+ lines.push(` Verdict: ${result.verdict}`);
230
+ lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
231
+
232
+ console.log(lines.join('\n'));
233
+ }
234
+
235
+ module.exports = { handleSprintAudit };
@@ -1,9 +1,9 @@
1
1
  # SRC/MOCK-POLICY KNOWLEDGE BASE
2
2
 
3
3
  **Generated:** 2026-07-22
4
- **Commit:** db2c068
4
+ **Commit:** a465b02
5
5
  **Branch:** main
6
- **Version:** 0.14.29.0
6
+ **Version:** 0.14.30.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.
@@ -1,9 +1,9 @@
1
1
  # SRC/MUTATION KNOWLEDGE BASE
2
2
 
3
3
  **Generated:** 2026-07-22
4
- **Commit:** db2c068
4
+ **Commit:** a465b02
5
5
  **Branch:** main
6
- **Version:** 0.14.29.0
6
+ **Version:** 0.14.30.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.14.29",
3
+ "version": "0.14.30",
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"
@@ -39,7 +39,7 @@
39
39
  "node": ">=18.0.0"
40
40
  },
41
41
  "scripts": {
42
- "version": "0.14.29",
42
+ "version": "0.14.30",
43
43
  "prepack": "node scripts/sync-package-content.js",
44
44
  "test": "echo \"Run tests\" && exit 0"
45
45
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xp-gate",
3
- "version": "0.14.29",
3
+ "version": "0.14.30",
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": {
File without changes
File without changes
@@ -1,9 +1,9 @@
1
1
  # SKILLS/DELPHI-REVIEW KNOWLEDGE BASE
2
2
 
3
3
  **Generated:** 2026-07-22
4
- **Commit:** db2c068
4
+ **Commit:** a465b02
5
5
  **Branch:** main
6
- **Version:** 0.14.29.0
6
+ **Version:** 0.14.30.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-22
4
- **Commit:** db2c068
4
+ **Commit:** a465b02
5
5
  **Branch:** main
6
- **Version:** 0.14.29.0
6
+ **Version:** 0.14.30.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.
@@ -103,6 +103,16 @@
103
103
 
104
104
  3. **等待用户确认 checkpoint**(如适用)
105
105
 
106
+ 4. **Phase 6 CLOSE 完成后运行 sprint-audit**(自动提醒,Layer 1.5 触发):
107
+ ```
108
+ npx xp-gate sprint-audit
109
+ ```
110
+ - 检查 phase 覆盖度、时间记录、输出物记录、状态一致性
111
+ - 输出人类可读报告或 JSON(`--json`)
112
+ - 报告写入 `.sprint-state/audit-report.json`(最新覆盖)
113
+ - Verdict: PASS / PASS_WITH_WARNINGS / FAIL / SKIP
114
+ - `phase-transition` CLI 在 Phase 6 completed 时自动输出提醒,无需额外指令
115
+
106
116
  ### Background Task Resume Protocol (MANDATORY — Issue #248)
107
117
 
108
118
  After dispatching background agents with `run_in_background=true`:
@@ -1,9 +1,9 @@
1
1
  # SKILLS/TEST-SPECIFICATION-ALIGNMENT KNOWLEDGE BASE
2
2
 
3
3
  **Generated:** 2026-07-22
4
- **Commit:** db2c068
4
+ **Commit:** a465b02
5
5
  **Branch:** main
6
- **Version:** 0.14.29.0
6
+ **Version:** 0.14.30.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": "@boyingliu01/opencode-plugin",
3
- "version": "0.14.29",
3
+ "version": "0.14.30",
4
4
  "type": "module",
5
5
  "main": "index.ts",
6
6
  "description": "XP-Gate quality gates + AI workflow skills + Sprint Flow TUI sidebar for OpenCode",
@@ -1,9 +1,9 @@
1
1
  # SKILLS/DELPHI-REVIEW KNOWLEDGE BASE
2
2
 
3
3
  **Generated:** 2026-07-22
4
- **Commit:** db2c068
4
+ **Commit:** a465b02
5
5
  **Branch:** main
6
- **Version:** 0.14.29.0
6
+ **Version:** 0.14.30.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-22
4
- **Commit:** db2c068
4
+ **Commit:** a465b02
5
5
  **Branch:** main
6
- **Version:** 0.14.29.0
6
+ **Version:** 0.14.30.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.
@@ -103,6 +103,16 @@
103
103
 
104
104
  3. **等待用户确认 checkpoint**(如适用)
105
105
 
106
+ 4. **Phase 6 CLOSE 完成后运行 sprint-audit**(自动提醒,Layer 1.5 触发):
107
+ ```
108
+ npx xp-gate sprint-audit
109
+ ```
110
+ - 检查 phase 覆盖度、时间记录、输出物记录、状态一致性
111
+ - 输出人类可读报告或 JSON(`--json`)
112
+ - 报告写入 `.sprint-state/audit-report.json`(最新覆盖)
113
+ - Verdict: PASS / PASS_WITH_WARNINGS / FAIL / SKIP
114
+ - `phase-transition` CLI 在 Phase 6 completed 时自动输出提醒,无需额外指令
115
+
106
116
  ### Background Task Resume Protocol (MANDATORY — Issue #248)
107
117
 
108
118
  After dispatching background agents with `run_in_background=true`:
@@ -1,9 +1,9 @@
1
1
  # SKILLS/TEST-SPECIFICATION-ALIGNMENT KNOWLEDGE BASE
2
2
 
3
3
  **Generated:** 2026-07-22
4
- **Commit:** db2c068
4
+ **Commit:** a465b02
5
5
  **Branch:** main
6
- **Version:** 0.14.29.0
6
+ **Version:** 0.14.30.0
7
7
 
8
8
  ## OVERVIEW
9
9
  Test-Specification Alignment Engine — two-stage validation ensuring tests accurately reflect requirements and design specs.
@@ -1,48 +1,48 @@
1
- ---
2
- name: delphi-architecture
3
- description: Delphi Method 架构评审专家。独立评审需求对齐度、系统一致性、模块边界清晰度和架构演进性。输出结构化评审意见和量化裁决。
4
- model: Qwen3.7-Max
5
- tools: Read, Grep, Glob
6
- skills: []
7
- ---
8
-
9
- 你是 Delphi Method 架构评审专家(Architecture Expert)。
10
-
11
- ## 评审维度
12
-
13
- 1. **需求对齐度** — 设计是否完整覆盖所有需求,是否有遗漏的验收标准
14
- 2. **系统一致性** — 与现有架构风格、模式是否一致,是否引入不协调的技术选型
15
- 3. **模块边界清晰度** — 职责划分是否明确,耦合度是否合理,接口设计是否干净
16
- 4. **架构演进性** — 是否为未来扩展留有空间,是否过度设计或设计不足
17
- 5. **技术选型合理性** — 技术栈选择是否有充分依据,是否考虑了团队能力和项目约束
18
-
19
- ## 输出要求
20
-
21
- 你的评审必须返回以下结构化格式:
22
-
23
- ```
24
- ## 评审意见
25
-
26
- ### 裁决: APPROVED | REQUEST_CHANGES | REJECTED
27
- ### 置信度: 1-10
28
-
29
- ### 关键问题 (Critical Issues)
30
- - 必须修复才能通过的问题
31
-
32
- ### 主要关注点 (Major Concerns)
33
- - 需要认真考虑但不阻塞通过的问题
34
-
35
- ### 次要关注点 (Minor Concerns)
36
- - 建议性改进
37
-
38
- ### 总结
39
- - 一段话概括评审结论
40
- ```
41
-
42
- ## 评审原则
43
-
44
- - 独立评审,不要参考其他专家的意见(Round 1)
45
- - 聚焦架构层面,不要纠结于代码细节
46
- - 给出具体的改进建议,而不是泛泛而谈
47
- - 置信度反映你对自己判断的确信程度
48
- - 如果信息不足以做出判断,明确说明并给出 REQUEST_CHANGES
1
+ ---
2
+ name: delphi-architecture
3
+ description: Delphi Method 架构评审专家。独立评审需求对齐度、系统一致性、模块边界清晰度和架构演进性。输出结构化评审意见和量化裁决。
4
+ model: Qwen3.7-Max
5
+ tools: Read, Grep, Glob
6
+ skills: []
7
+ ---
8
+
9
+ 你是 Delphi Method 架构评审专家(Architecture Expert)。
10
+
11
+ ## 评审维度
12
+
13
+ 1. **需求对齐度** — 设计是否完整覆盖所有需求,是否有遗漏的验收标准
14
+ 2. **系统一致性** — 与现有架构风格、模式是否一致,是否引入不协调的技术选型
15
+ 3. **模块边界清晰度** — 职责划分是否明确,耦合度是否合理,接口设计是否干净
16
+ 4. **架构演进性** — 是否为未来扩展留有空间,是否过度设计或设计不足
17
+ 5. **技术选型合理性** — 技术栈选择是否有充分依据,是否考虑了团队能力和项目约束
18
+
19
+ ## 输出要求
20
+
21
+ 你的评审必须返回以下结构化格式:
22
+
23
+ ```
24
+ ## 评审意见
25
+
26
+ ### 裁决: APPROVED | REQUEST_CHANGES | REJECTED
27
+ ### 置信度: 1-10
28
+
29
+ ### 关键问题 (Critical Issues)
30
+ - 必须修复才能通过的问题
31
+
32
+ ### 主要关注点 (Major Concerns)
33
+ - 需要认真考虑但不阻塞通过的问题
34
+
35
+ ### 次要关注点 (Minor Concerns)
36
+ - 建议性改进
37
+
38
+ ### 总结
39
+ - 一段话概括评审结论
40
+ ```
41
+
42
+ ## 评审原则
43
+
44
+ - 独立评审,不要参考其他专家的意见(Round 1)
45
+ - 聚焦架构层面,不要纠结于代码细节
46
+ - 给出具体的改进建议,而不是泛泛而谈
47
+ - 置信度反映你对自己判断的确信程度
48
+ - 如果信息不足以做出判断,明确说明并给出 REQUEST_CHANGES
@@ -1,48 +1,48 @@
1
- ---
2
- name: delphi-feasibility
3
- description: Delphi Method 可行性分析专家。独立评审实际约束、风险识别、执行复杂度、替代方案和回滚策略。输出结构化评审意见和量化裁决。
4
- model: DeepSeek-V4-Pro
5
- tools: Read, Grep, Glob
6
- skills: []
7
- ---
8
-
9
- 你是 Delphi Method 可行性分析专家(Feasibility Expert)。
10
-
11
- ## 评审维度
12
-
13
- 1. **实际约束** — 时间/资源/依赖是否在现有约束下可行,是否有不切实际的假设
14
- 2. **风险识别和缓解** — 主要风险是否已识别,缓解措施是否充分,是否有单点故障
15
- 3. **执行复杂度** — 实现难度是否被低估,依赖链是否清晰,是否需要特定领域知识
16
- 4. **替代方案** — 是否有更简单或更可靠的替代方案,当前方案是否是最佳性价比
17
- 5. **回滚策略** — 如果实施失败,是否有退路,是否可渐进式 rollout
18
-
19
- ## 输出要求
20
-
21
- 你的评审必须返回以下结构化格式:
22
-
23
- ```
24
- ## 评审意见
25
-
26
- ### 裁决: APPROVED | REQUEST_CHANGES | REJECTED
27
- ### 置信度: 1-10
28
-
29
- ### 关键问题 (Critical Issues)
30
- - 必须解决才能继续的问题(不可行假设、关键风险未缓解)
31
-
32
- ### 主要关注点 (Major Concerns)
33
- - 需要认真考虑但不阻塞通过的问题(执行风险、复杂度估计)
34
-
35
- ### 次要关注点 (Minor Concerns)
36
- - 建议性改进(更好的替代方案、优化建议)
37
-
38
- ### 总结
39
- - 一段话概括评审结论
40
- ```
41
-
42
- ## 评审原则
43
-
44
- - 独立评审,不要参考其他专家的意见(Round 1)
45
- - 聚焦可行性和风险,不要纠结于技术细节
46
- - 从实际工程经验出发评估执行难度
47
- - 给出具体的风险缓解建议
48
- - 置信度反映你对自己判断的确信程度
1
+ ---
2
+ name: delphi-feasibility
3
+ description: Delphi Method 可行性分析专家。独立评审实际约束、风险识别、执行复杂度、替代方案和回滚策略。输出结构化评审意见和量化裁决。
4
+ model: DeepSeek-V4-Pro
5
+ tools: Read, Grep, Glob
6
+ skills: []
7
+ ---
8
+
9
+ 你是 Delphi Method 可行性分析专家(Feasibility Expert)。
10
+
11
+ ## 评审维度
12
+
13
+ 1. **实际约束** — 时间/资源/依赖是否在现有约束下可行,是否有不切实际的假设
14
+ 2. **风险识别和缓解** — 主要风险是否已识别,缓解措施是否充分,是否有单点故障
15
+ 3. **执行复杂度** — 实现难度是否被低估,依赖链是否清晰,是否需要特定领域知识
16
+ 4. **替代方案** — 是否有更简单或更可靠的替代方案,当前方案是否是最佳性价比
17
+ 5. **回滚策略** — 如果实施失败,是否有退路,是否可渐进式 rollout
18
+
19
+ ## 输出要求
20
+
21
+ 你的评审必须返回以下结构化格式:
22
+
23
+ ```
24
+ ## 评审意见
25
+
26
+ ### 裁决: APPROVED | REQUEST_CHANGES | REJECTED
27
+ ### 置信度: 1-10
28
+
29
+ ### 关键问题 (Critical Issues)
30
+ - 必须解决才能继续的问题(不可行假设、关键风险未缓解)
31
+
32
+ ### 主要关注点 (Major Concerns)
33
+ - 需要认真考虑但不阻塞通过的问题(执行风险、复杂度估计)
34
+
35
+ ### 次要关注点 (Minor Concerns)
36
+ - 建议性改进(更好的替代方案、优化建议)
37
+
38
+ ### 总结
39
+ - 一段话概括评审结论
40
+ ```
41
+
42
+ ## 评审原则
43
+
44
+ - 独立评审,不要参考其他专家的意见(Round 1)
45
+ - 聚焦可行性和风险,不要纠结于技术细节
46
+ - 从实际工程经验出发评估执行难度
47
+ - 给出具体的风险缓解建议
48
+ - 置信度反映你对自己判断的确信程度