xp-gate 0.5.1

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 (90) hide show
  1. package/adapter-common.sh +192 -0
  2. package/adapters/cpp.sh +76 -0
  3. package/adapters/dart.sh +41 -0
  4. package/adapters/flutter.sh +41 -0
  5. package/adapters/go.sh +59 -0
  6. package/adapters/iac.sh +189 -0
  7. package/adapters/java.sh +191 -0
  8. package/adapters/kotlin.sh +77 -0
  9. package/adapters/objectivec.sh +38 -0
  10. package/adapters/powershell.sh +138 -0
  11. package/adapters/python.sh +104 -0
  12. package/adapters/shell.sh +55 -0
  13. package/adapters/swift.sh +44 -0
  14. package/adapters/typescript.sh +61 -0
  15. package/bin/xp-gate.js +157 -0
  16. package/hooks/adapter-common.sh +192 -0
  17. package/hooks/pre-commit +1667 -0
  18. package/hooks/pre-push +395 -0
  19. package/lib/__tests__/detect-deps.test.js +209 -0
  20. package/lib/__tests__/doctor.test.js +448 -0
  21. package/lib/__tests__/download-skill.test.js +281 -0
  22. package/lib/__tests__/init.test.js +327 -0
  23. package/lib/__tests__/install-skill.test.js +326 -0
  24. package/lib/__tests__/migrate.test.js +212 -0
  25. package/lib/__tests__/rollback.test.js +183 -0
  26. package/lib/__tests__/ui-detector.test.ts +200 -0
  27. package/lib/__tests__/uninstall-skill.test.js +189 -0
  28. package/lib/__tests__/uninstall.test.js +589 -0
  29. package/lib/__tests__/update-skill.test.js +276 -0
  30. package/lib/detect-deps.js +157 -0
  31. package/lib/doctor.js +370 -0
  32. package/lib/download-skill.js +96 -0
  33. package/lib/init.js +367 -0
  34. package/lib/install-skill.js +184 -0
  35. package/lib/migrate.js +120 -0
  36. package/lib/rollback.js +78 -0
  37. package/lib/ui-detector.ts +99 -0
  38. package/lib/uninstall-skill.js +69 -0
  39. package/lib/uninstall.js +401 -0
  40. package/lib/update-skill.js +90 -0
  41. package/package.json +39 -0
  42. package/plugins/claude-code/.claude-plugin/plugin.json +21 -0
  43. package/plugins/claude-code/bin/delphi-review-guard.sh +68 -0
  44. package/plugins/claude-code/bin/xp-gate-check +47 -0
  45. package/plugins/claude-code/hooks/hooks.json +37 -0
  46. package/skills/delphi-review/.delphi-config.json.example +45 -0
  47. package/skills/delphi-review/AGENTS.md +54 -0
  48. package/skills/delphi-review/INSTALL.md +152 -0
  49. package/skills/delphi-review/SKILL.md +371 -0
  50. package/skills/delphi-review/evals/evals.json +82 -0
  51. package/skills/delphi-review/opencode.json.delphi.example +56 -0
  52. package/skills/delphi-review/references/code-walkthrough.md +486 -0
  53. package/skills/ralph-loop/SKILL.md +330 -0
  54. package/skills/ralph-loop/evals/evals.json +311 -0
  55. package/skills/ralph-loop/evolution-history.json +59 -0
  56. package/skills/ralph-loop/evolution-log.md +16 -0
  57. package/skills/ralph-loop/references/components/memory.md +55 -0
  58. package/skills/ralph-loop/references/components/middleware.md +54 -0
  59. package/skills/ralph-loop/references/components/skill-invocations.md +39 -0
  60. package/skills/ralph-loop/references/components/system-prompt.md +24 -0
  61. package/skills/ralph-loop/references/components/tool-descriptions.md +32 -0
  62. package/skills/ralph-loop/references/phase-2-build-ralph.md +89 -0
  63. package/skills/ralph-loop/templates/progress-log.md +36 -0
  64. package/skills/sprint-flow/SKILL.md +600 -0
  65. package/skills/sprint-flow/evals/evals.json +78 -0
  66. package/skills/sprint-flow/evolution-history.json +39 -0
  67. package/skills/sprint-flow/evolution-log.md +23 -0
  68. package/skills/sprint-flow/references/components/memory.md +87 -0
  69. package/skills/sprint-flow/references/components/middleware.md +72 -0
  70. package/skills/sprint-flow/references/components/skill-invocations.md +104 -0
  71. package/skills/sprint-flow/references/components/system-prompt.md +27 -0
  72. package/skills/sprint-flow/references/components/tool-descriptions.md +96 -0
  73. package/skills/sprint-flow/references/phase-0-think.md +115 -0
  74. package/skills/sprint-flow/references/phase-1-plan.md +178 -0
  75. package/skills/sprint-flow/references/phase-2-build.md +198 -0
  76. package/skills/sprint-flow/references/phase-3-review.md +213 -0
  77. package/skills/sprint-flow/references/phase-4-uat.md +125 -0
  78. package/skills/sprint-flow/references/phase-5-feedback.md +100 -0
  79. package/skills/sprint-flow/references/phase-6-ship.md +193 -0
  80. package/skills/sprint-flow/references/phase-7-land.md +140 -0
  81. package/skills/sprint-flow/references/phase-8-cleanup.md +192 -0
  82. package/skills/sprint-flow/templates/emergent-issues-template.md +120 -0
  83. package/skills/sprint-flow/templates/pain-document-template.md +115 -0
  84. package/skills/sprint-flow/templates/sprint-summary-template.md +120 -0
  85. package/skills/test-specification-alignment/AGENTS.md +59 -0
  86. package/skills/test-specification-alignment/SKILL.md +605 -0
  87. package/skills/test-specification-alignment/evals/evals.json +75 -0
  88. package/skills/test-specification-alignment/references/alignment-verification-algorithm.md +493 -0
  89. package/skills/test-specification-alignment/references/phase2-constraint-enforcement.md +431 -0
  90. package/skills/test-specification-alignment/references/specification-format.md +348 -0
@@ -0,0 +1,78 @@
1
+ {
2
+ "skill_name": "sprint-flow",
3
+ "skill_path": "skills/sprint-flow/SKILL.md",
4
+ "evals": [
5
+ {
6
+ "id": 1,
7
+ "name": "full-sprint-normal-feature",
8
+ "category": "normal",
9
+ "prompt": "开发一个用户登录功能,支持邮箱密码登录和OAuth2.0第三方登录(GitHub和Google)。需要记住登录状态,支持'记住我'功能。请用sprint-flow执行。",
10
+ "expected_output": "执行完整sprint流程:Phase 0(Think)→Phase 1(Plan含autoplan)→Phase 2(Build含TDD)→Phase 3(Review)→Phase 4(人工验收,必须暂停)→Phase 5(Feedback)→Phase 6(Ship)。Phase 4必须暂停等用户确认,不能自动跳过。",
11
+ "files": [],
12
+ "assertions": [
13
+ {"name": "phase-0-think", "type": "contains", "value": "Phase 0"},
14
+ {"name": "phase-1-plan", "type": "contains", "value": "Phase 1"},
15
+ {"name": "phase-2-build", "type": "contains", "value": "Phase 2"},
16
+ {"name": "phase-3-review", "type": "contains", "value": "Phase 3"},
17
+ {"name": "phase-4-uat-pause", "type": "contains", "value": "Phase 4"},
18
+ {"name": "phase-4-not-automated", "type": "not_contains", "value": "验收通过"},
19
+ {"name": "user-acceptance-required", "type": "contains", "value": "人工"},
20
+ {"name": "pain-document-generated", "type": "contains", "value": "Pain Document"}
21
+ ]
22
+ },
23
+ {
24
+ "id": 2,
25
+ "name": "taste-decision-pause",
26
+ "category": "boundary",
27
+ "prompt": "开发一个实时通知系统。技术选型上,WebSocket和SSE都可以实现,但各有优劣。我团队主要用React+Node.js。请用sprint-flow执行。",
28
+ "expected_output": "autoplan应该发现taste_decision(WebSocket vs SSE选择),暂停等用户确认技术选型后继续。不能自动替用户做技术选型决策。",
29
+ "files": [],
30
+ "assertions": [
31
+ {"name": "taste-decision-surfaced", "type": "contains", "value": "taste_decision"},
32
+ {"name": "pause-for-user", "type": "contains", "value": "暂停"},
33
+ {"name": "no-auto-tech-choice", "type": "not_contains", "value": "自动选择"}
34
+ ]
35
+ },
36
+ {
37
+ "id": 3,
38
+ "name": "phase-4-cannot-be-automated",
39
+ "category": "boundary",
40
+ "prompt": "sprint-flow跑到Phase 4了,能不能跳过用户验收直接发布?我赶时间。",
41
+ "expected_output": "Phase 4人工验收不可跳过、不可自动化。78%失败不可见(学术证据),emergent requirements无法消除。即使用户赶时间,也必须完成人工验收。可以提供'快速验收清单'但必须有人确认。",
42
+ "files": [],
43
+ "assertions": [
44
+ {"name": "phase-4-mandatory", "type": "contains", "value": "必须"},
45
+ {"name": "emergent-issues-mentioned", "type": "contains", "value": "emergent"},
46
+ {"name": "cannot-skip-uat", "type": "not_contains", "value": "跳过验收"}
47
+ ]
48
+ },
49
+ {
50
+ "id": 4,
51
+ "name": "stop-at-plan",
52
+ "category": "boundary",
53
+ "prompt": "我想先看看方案再决定要不要继续开发。执行/sprint-flow '给XP-Gate添加代码覆盖率趋势分析功能' --stop-at plan",
54
+ "expected_output": "只执行到Phase 1(Plan)就停止,输出specification.yaml后等待用户决定。不应自动进入Phase 2。",
55
+ "files": [],
56
+ "assertions": [
57
+ {"name": "stops-at-plan", "type": "contains", "value": "specification.yaml"},
58
+ {"name": "no-build-phase", "type": "not_contains", "value": "Phase 2"}
59
+ ]
60
+ }
61
+ ],
62
+ "trigger_evals": {
63
+ "should_trigger": [
64
+ "开发一个新功能,支持用户导出PDF报告",
65
+ "我要做用户权限管理模块,帮我走完整流程",
66
+ "sprint-flow 开发消息队列服务",
67
+ "一键开发数据导入功能",
68
+ "从需求到发布,帮我做用户通知功能"
69
+ ],
70
+ "should_not_trigger": [
71
+ "修复这个TypeScript类型错误",
72
+ "帮我review一下这段代码",
73
+ "运行测试看看有没有问题",
74
+ "解释一下delphi-review怎么用",
75
+ "git commit一下"
76
+ ]
77
+ }
78
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "Sprint Flow Evolution History",
4
+ "description": "Machine-readable change manifest for AHE-inspired skill evolution. Updated after each skill modification.",
5
+ "iterations": [
6
+ {
7
+ "id": 1,
8
+ "date": "2026-05-22",
9
+ "trigger": "new-feature",
10
+ "issue": "#62",
11
+ "root_cause": "SKILL.md monolith prevents component-level ablation experiments. No observable feedback accumulation. Iteration driven by intuition, not evidence.",
12
+ "component_changes": ["middleware", "tools", "memory"],
13
+ "files_changed": [
14
+ "skills/sprint-flow/references/components/system-prompt.md",
15
+ "skills/sprint-flow/references/components/tool-descriptions.md",
16
+ "skills/sprint-flow/references/components/middleware.md",
17
+ "skills/sprint-flow/references/components/skill-invocations.md",
18
+ "skills/sprint-flow/references/components/memory.md",
19
+ "skills/sprint-flow/evolution-log.md",
20
+ "skills/sprint-flow/evolution-history.json",
21
+ "skills/ralph-loop/references/components/system-prompt.md",
22
+ "skills/ralph-loop/references/components/tool-descriptions.md",
23
+ "skills/ralph-loop/references/components/middleware.md",
24
+ "skills/ralph-loop/references/components/skill-invocations.md",
25
+ "skills/ralph-loop/references/components/memory.md",
26
+ "skills/ralph-loop/evolution-log.md",
27
+ "skills/ralph-loop/evolution-history.json"
28
+ ],
29
+ "prediction": {
30
+ "metric": "component-attribution-accuracy",
31
+ "direction": "up",
32
+ "delta_pct": 100,
33
+ "risk": "No measurable impact yet; metrics depend on P1 debugger implementation"
34
+ },
35
+ "actual_outcome": null,
36
+ "delphi_review": "Round 2 APPROVED (2/3 majority, minority concern: ralph-loop sync)"
37
+ }
38
+ ]
39
+ }
@@ -0,0 +1,23 @@
1
+ # Evolution Log — sprint-flow
2
+
3
+ > AHE 启发的可观测性变更日志。每次对 sprint-flow 组件的修改必须记录。
4
+
5
+ ## Entry 001 — 2026-05-22 — AHE Observability Infrastructure (P0)
6
+
7
+ - **Trigger**: new-feature — Issue #62: 为 XP-Gate Skills 建立可观测性基础设施
8
+ - **Evidence**: GitHub Issue #62 描述 — 无法做消融实验,反馈无法积累,迭代依赖直觉
9
+ - **Root Cause**: SKILL.md 单文件结构导致组件级修改无法归因到具体组件
10
+ - **Change Made**:
11
+ 1. 创建 `references/components/` 目录,包含 5 个 AHE 对齐组件:
12
+ - `system-prompt.md` (核心原则 L34-43)
13
+ - `tool-descriptions.md` (Phase Skill 调用 L120-298)
14
+ - `middleware.md` (状态机+暂停点 L46-84)
15
+ - `skill-invocations.md` (Phase→Skill 映射 L88-103)
16
+ - `memory.md` (Sprint State JSON L190-334)
17
+ 2. 创建 `evolution-log.md` (本文)
18
+ 3. 创建 `evolution-history.json` (初始 schema + Iteration 001 记录)
19
+ 4. 同步为 ralph-loop 创建同等 components/ 结构
20
+ - **Self-Predicted Impact**: ablation 实验成为可能;单次组件修改的因果归因从 0% → 100%
21
+ - **Actual Outcome**: ⏳ pending(P1 debugger 实施后测量)
22
+ - **Component Changed**: [middleware, tools, memory]
23
+ - **Delphi Review**: Round 2 APPROVED (2/3, 记录少数派 ralph-loop 关切)
@@ -0,0 +1,87 @@
1
+ # memory.md — Sprint State JSON Schema 与长期记忆(AHE 组件分解)
2
+
3
+ > **本文是 `skills/sprint-flow/SKILL.md` 中状态管理 JSON (L190-334) 的 AHE 对齐展开。**
4
+ > 用于 ablation 实验:AHE 论文显示 Memory 组件单独恢复全局增幅的 95%+。
5
+
6
+ ## 组件职责
7
+
8
+ 定义 Sprint 状态持久化 Schema、Phase 输出合同、长期记忆(learnings)结构。是 AHE 中最关键组件(记忆单独恢复 95%+ 全局增益)。
9
+
10
+ ---
11
+
12
+ ## Sprint State Schema(`.sprint-state/sprint-state.json`)
13
+
14
+ ```json
15
+ {
16
+ "id": "sprint-YYYY-MM-DD-NN",
17
+ "phase": 0,
18
+ "status": "running|paused|completed",
19
+ "outputs": {
20
+ "pain_document": "docs/pain-document.md",
21
+ "specification": "specification.yaml",
22
+ "mvp": "mvp-v1/",
23
+ "review_report": "review-report.md"
24
+ },
25
+ "metrics": {
26
+ "tests_passed": 15,
27
+ "tests_failed": 0,
28
+ "coverage_pct": 85
29
+ }
30
+ }
31
+ ```
32
+
33
+ ### 状态枚举
34
+
35
+ | 字段 | 允许值 | 说明 |
36
+ |------|-------|------|
37
+ | `phase` | 0-6 | 当前执行阶段 |
38
+ | `status` | `pending` / `running` / `paused` / `completed` / `failed` | 统一状态 |
39
+ | `pause_reason` | `none` / `wait_approved` / `wait_gate1` / `wait_uat` / `wait_ship` / `wait_user_confirm` | 暂停原因 |
40
+
41
+ ---
42
+
43
+ ## Phase Output 合同
44
+
45
+ | Phase | 输出文件 | 存储路径 | 必需字段 |
46
+ |-------|---------|---------|---------|
47
+ | Phase 0 | `pain-document.md` | `phase-outputs/pain-document.md` | 结构化设计文档 |
48
+ | Phase 1 | `specification.yaml` | `phase-outputs/specification.yaml` | user_stories[], requirements[], acceptance_criteria[] |
49
+ | Phase 2 | `mvp-v1/` | `phase-outputs/mvp-v1/` | 功能代码 + 测试 |
50
+ | Phase 3 | `review-report.md` | `phase-outputs/review-report.md` | delphi-review 共识报告 |
51
+ | Phase 4 | `emergent-issues.md` | `phase-outputs/emergent-issues.md` | 用户发现的 emergent requirements |
52
+ | Phase 5 | `feedback-log.md` | `phase-outputs/feedback-log.md` | 改进建议 + 调试记录 |
53
+ | Phase 6 | `sprint-summary.md` | `phase-outputs/sprint-summary.md` | 发布记录 + Sprint 2 触发判断 |
54
+
55
+ ---
56
+
57
+ ## Sprint 2 自动触发规则
58
+
59
+ ```
60
+ Phase 6 完成后:
61
+ IF emergent_issues_count == 0 → sprint_completed,结束
62
+ IF emergent_issues_count > 0 → sprint_2_needed:
63
+ ├─ IF 有 Critical → 自动启动 Sprint 2
64
+ ├─ IF 仅有 Major/Minor → 询问用户
65
+ └─ Sprint 2 Pain Document ← emergent-issues.md 转化
66
+ ```
67
+
68
+ ---
69
+
70
+ ## Learnings Schema(长期记忆)
71
+
72
+ ralph-loop 内部分类:
73
+ - `permanent`: 跨 REQ 持久化(通用约束、模式)
74
+ - `contextual`: 当前 REQ 生命周期内有效
75
+
76
+ gstack/learn 调用分类: permanent / contextual 通过 progress.log 持久化。
77
+
78
+ ---
79
+
80
+ ## AHE 分类
81
+
82
+ | 字段 | 值 |
83
+ |------|---|
84
+ | 组件类型 | Long-Term Memory |
85
+ | 修改频率预期 | 低(Schema 稳定) |
86
+ | 消融实验假设 | 移除 memory → Sprint pass rate 下降 5-10% |
87
+ | 参考证据 | AHE 论文: Memory 单独恢复 95%+ 全局增幅(事实性 > 策略性) |
@@ -0,0 +1,72 @@
1
+ # middleware.md — Sprint Flow 状态机与暂停点逻辑(AHE 组件分解)
2
+
3
+ > **本文是 `skills/sprint-flow/SKILL.md` 中完整流程 (L46-68) 和暂停点表 (L72-84) 的 AHE 对齐展开。**
4
+ > 用于 ablation 实验:AHE 论文显示 Middleware 组件贡献占 37%,单独修改可显著影响性能。
5
+
6
+ ## 组件职责
7
+
8
+ 定义 Sprint Flow 的状态机转换逻辑、暂停点(pause-point)触发条件和自动恢复规则。是 phase 间的"胶水层",负责在特定节点暂停等待用户决策。
9
+
10
+ ---
11
+
12
+ ## 完整状态机(7 Phase 流转)
13
+
14
+ ```
15
+ Phase 0: THINK → brainstorming → HARD-GATE: 设计未 APPROVED → 不可编码
16
+ Phase 1: PLAN → autoplan → delphi-review → spec.yaml
17
+ Phase 2: BUILD → GITHOOKS-GATE → ralph-loop/TDD → verification → MVP v1
18
+ Phase 3: REVIEW → code-walkthrough → test-alignment → browse QA
19
+ Phase 4: USER ACCEPTANCE → ⚠️ 必须人工 → Emergent Issues List
20
+ Phase 5: FEEDBACK → learn + retro + systematic-debugging
21
+ Phase 6: SHIP → finishing-a-development-branch → canary → Sprint Summary
22
+ ```
23
+
24
+ ## 暂停点矩阵
25
+
26
+ | Phase | 暂停点标识 | 触发条件 | 用户操作 | 自动恢复条件 |
27
+ |-------|-----------|---------|---------|-------------|
28
+ | Phase 0 | **HARD-GATE** | 设计未 APPROVED | 修改设计文档 | 设计 APPROVED 后继续 |
29
+ | Phase 1 | taste_decisions | autoplan 发现未决议事项 | 用户确认每个决策 | 确认后自动继续 |
30
+ | Phase 1 | delphi-review | 未 APPROVED(REQUEST_CHANGES) | 修复并重新评审 | APPROVED 后自动继续 |
31
+ | **Phase 2** | **DELPHI-GATE** | delphi-reviewed.json 不存在或 verdict != APPROVED | 返回 Phase 1 完成 delphi-review | APPROVED 后继续 |
32
+ | Phase 2 | 验证失败 | 超过 max 3 次失败 | 用户决定修复或放弃 | 验证通过后自动继续 |
33
+ | Phase 2 | 成本超阈值 | token 成本 > 阈值 | 用户决定继续或暂停 | 用户确认后自动继续 |
34
+ | Phase 3 | browse 发现问题 | QA 失败 | 回退 Phase 2 | 验证通过后自动继续 |
35
+ | **Phase 4** | **必须人工验收** | 进入 Phase 4 | 用户实际使用后确认 | **无法自动恢复** |
36
+ | **Phase 5** | **FEEDBACK 硬门禁** | Phase 4 完成后进入 | 执行 learn + retro → 生成 feedback-log.md | feedback-log.md 存在后继续 |
37
+ | **Phase 6** | **Phase 5 门禁验证** | Phase 5 未完成 | 验证 feedback-log.md → 不存在 → 返回 Phase 5 | feedback-log.md 存在后继续 |
38
+ | Phase 6 | finishing-a-branch | 分支收尾 | 用户 4 选 1 | 确认后自动继续 |
39
+ | Phase 6 | ship PR | PR 路径需要合并 | 用户确认合并 | 合并后自动继续 |
40
+
41
+ ## 状态转换规则
42
+
43
+ | 当前状态 | 下一状态 | 条件 |
44
+ |---------|---------|------|
45
+ | Phase N 完成 | Phase N+1 | 无阻塞条件 |
46
+ | Phase 0 HARD-GATE 未通过 | Phase 0 (重试) | 设计未 APPROVED |
47
+ | Phase 2 DELPHI-GATE 未通过 | Phase 1 (回退) | delphi-review not APPROVED |
48
+ | Phase 4 人工验收未完成 | Phase 4 (等待) | **永远不可自动跳过** |
49
+ | Phase 4 确认完成 | Phase 5 | **必须执行,不可跳过** |
50
+ | Phase 5 未完成 (feedback-log.md 不存在) | Phase 5 (等待) | **永远不可自动跳过** |
51
+ | Phase 2 验证失败 > 3 次 | BLOCK (用户决策) | 熔断机制 |
52
+ | Phase 2 成本超限 | BLOCK (用户决策) | 熔断机制 |
53
+
54
+ ## 熔断机制 (Circuit Breaker)
55
+
56
+ | 原 xp-consensus 状态 | 新处理方案 |
57
+ |---------------------|-----------|
58
+ | `CIRCUIT_BREAKER_TRIGGERED` | sprint-flow 编排层监控成本,超阈值 BLOCK + 用户决策 |
59
+ | `ROLLBACK_TO_ROUND1` | verification-before-completion 失败 → 修复 max 3 次 → 仍失败 BLOCK |
60
+ | `GATE1_FAILED`/`GATE1_COMPLETE` | verification-before-completion 内置此区分 |
61
+ | `GATE2_RUNNING` | `cso` (gstack) — Phase 1-6 安全审计 |
62
+
63
+ ---
64
+
65
+ ## AHE 分类
66
+
67
+ | 字段 | 值 |
68
+ |------|---|
69
+ | 组件类型 | Middleware |
70
+ | 修改频率预期 | 高(状态机调整频繁) |
71
+ | 消融实验假设 | 修改暂停点逻辑 → Sprint 执行时间变化 ±15% |
72
+ | 参考证据 | AHE 论文: Middleware 组件单独修改带来 +2.2% 总增益 |
@@ -0,0 +1,104 @@
1
+ # skill-invocations.md — Phase→Skill 调用链与参数路由(AHE 组件分解)
2
+
3
+ > **本文是 `skills/sprint-flow/SKILL.md` 中各 Phase 调用 Skills (L88-103, L155-167) 的 AHE 对齐展开。**
4
+ > 用于 ablation 实验:验证 phase→skill 映射完整性对 Sprint 成功率的影响。
5
+
6
+ ## 组件职责
7
+
8
+ 提供完整的 Phase→Skill 映射表,包括技能来源、参数路由规则、条件分支逻辑。确保每次 Skill 调用具有足够的上下文信息。
9
+
10
+ ---
11
+
12
+ ## 完整 Phase→Skill 映射矩阵
13
+
14
+ ### Phase 0: THINK
15
+
16
+ | Skill | 来源 | 触发条件 | 输出 |
17
+ |-------|------|---------|------|
18
+ | `brainstorming` | superpowers | 无条件(首个 Skill) | 结构化设计文档 |
19
+ | **硬闸门** | — | 设计未批准 → 停止 | 禁止进入 Plan |
20
+
21
+ ### Phase 1: PLAN
22
+
23
+ | Skill | 来源 | 触发条件 | 条件分支 |
24
+ |-------|------|---------|---------|
25
+ | `autoplan` | gstack | 进入 Phase 1 自动调用 | 输出 AUTO_APPROVED 或 NEEDS_REVIEW |
26
+ | `delphi-review` | xp-gate | autoplan NEEDS_REVIEW OR taste_decisions > 0 | 跳过如果 AUTO_APPROVED + 无 taste_decisions |
27
+ | `to-issues` | xp-gate | delphi-review APPROVED 后 | 拆解为垂直切片 → slices-manifest.json |
28
+
29
+ ### Phase 2: BUILD
30
+
31
+ | 步骤 | Skill | 来源 | 参数注入 |
32
+ |------|-------|------|---------|
33
+ | -1 | `hooks-install` | githooks | 无 |
34
+ | 0 | `dispatching-parallel-agents` | superpowers | 仅分发 AFK 切片(dependency_graph 判定) |
35
+ | 1 | `test-driven-development` | superpowers | `--lang` 注入对应 TDD skill |
36
+ | 2 | `executing-plans` | superpowers | 隔离 session,review checkpoint |
37
+ | 3 | `freeze` | gstack | 锁定业务代码 |
38
+ | 4 | `requesting-code-review` | superpowers | 盲评 agent |
39
+ | 5 | `unfreeze` | gstack | 解锁 |
40
+ | 6 | `verification-before-completion` | superpowers | 运行测试 + lint |
41
+ | 7 | 成本监控 | sprint-flow 编排层 | token 阈值 |
42
+
43
+ ### Phase 3: REVIEW
44
+
45
+ | Skill | 模式 | 触发条件 |
46
+ |-------|------|---------|
47
+ | `delphi-review` | `--mode code-walkthrough` | 强制调用 |
48
+ | `test-specification-alignment` | 默认 | 强制调用 |
49
+ | `browse` | gstack | 强制调用 |
50
+ | `k6`/`locust`/`gatling` | 性能测试 | `--with-performance` 或 `--type backend-*` |
51
+
52
+ ### Phase 4: USER ACCEPTANCE
53
+
54
+ | Skill | 说明 |
55
+ |-------|------|
56
+ | **无 Skill** | 必须人工验收 |
57
+
58
+ ### Phase 5: FEEDBACK
59
+
60
+ | Skill | 来源 | 说明 |
61
+ |-------|------|------|
62
+ | `learn` | gstack | 模式记录 |
63
+ | `retro` | gstack | 工程回顾 |
64
+ | `systematic-debugging` | superpowers | 根因调试 |
65
+
66
+ ### Phase 6: SHIP
67
+
68
+ | Skill | 说明 |
69
+ |-------|------|
70
+ | `finishing-a-development-branch` | 4 选项 |
71
+ | `ship` | 创建 PR(可选) |
72
+ | `land-and-deploy` | 合并部署 |
73
+ | `canary` | 监控告警 |
74
+
75
+ ---
76
+
77
+ ## 参数路由规则
78
+
79
+ ### `--lang` 路由
80
+
81
+ | 值 | Phase 2 注入 | Phase 3 注入 |
82
+ |---|-------------|-------------|
83
+ | `springboot` | `springboot-tdd` | springboot-verification |
84
+ | `django` | `django-tdd` | django-verification |
85
+ | `golang` | `golang-testing` | golang-verification |
86
+
87
+ ### `--type` 路由
88
+
89
+ | 值 | 检测依据 | 额外 Skill |
90
+ |---|---------|-----------|
91
+ | `web-nextjs` | `next.config.js` / `app/` | `design-shotgun` |
92
+ | `backend-go` | `go.mod` | `k6` |
93
+ | `backend-springboot` | `pom.xml` | `gatling` |
94
+ | `backend-django` | `manage.py` | `locust` |
95
+
96
+ ---
97
+
98
+ ## AHE 分类
99
+
100
+ | 字段 | 值 |
101
+ |------|---|
102
+ | 组件类型 | Skill Invocation Chain |
103
+ | 修改频率预期 | 中(新 skill 注册时更新) |
104
+ | 消融实验假设 | 调用链中断 → Sprint 执行失败率 ↑ |
@@ -0,0 +1,27 @@
1
+ # system-prompt.md — Sprint Flow 行为定义(AHE 组件分解)
2
+
3
+ > **本文是 `skills/sprint-flow/SKILL.md` 核心原则部分 (L34-43) 的 AHE 对齐展开。**
4
+ > 用于 ablation 实验:单独修改本文件可观察核心原则对 Sprint pass rate 的影响。
5
+
6
+ ## 核心职责
7
+
8
+ 定义 Sprint Flow 的行为边界和全局约束。相当于 AHE 的 System Prompt 组件(虽 AHE 论文显示单独修改 System Prompt 不改善性能,但作为行为基准仍然必要)。
9
+
10
+ ## 核心原则 (AHE 对齐)
11
+
12
+ | # | AHE 概念 | 原则 | 说明 | 硬闸门 |
13
+ |---|---------|------|------|--------|
14
+ | 1 | 单一入口 | `/sprint-flow` | 用户只需一个命令,自动串联全流程 | Phase 0 HARD-GATE |
15
+ | 2 | 自动流水线 | Think → Ship | 类似 autoplan,自动执行多个阶段 | 无需用户手动调用中间技能 |
16
+ | 3 | 关键节点暂停 | APPROVED / Gate 1 / Phase 4 / Ship | 明确暂停点,不是随时停 | Phase 0 设计未 APPROVED → 禁止编码 |
17
+ | 4 | 承认 Emergent Requirements | 用户验收环节必须人工 | 78% 失败不可见,无法自动化 | Phase 4 MUST NOT 自动化 |
18
+ | 5 | 复用现有 Skills | 不重新发明 | 整合 brainstorming + autoplan + delphi-review + TDD 等 | 不创建新 skill,复用现有体系 |
19
+
20
+ ## AHE 分类
21
+
22
+ | 字段 | 值 |
23
+ |------|---|
24
+ | 组件类型 | System Prompt |
25
+ | 修改频率预期 | 低(行为基线稳定后极少改变) |
26
+ | 消融实验假设 | 修改核心原则 → Sprint pass rate 不变或下降(AHE 发现单独修改系统提示下降 2.3%) |
27
+ | 关键约束 | 不得删除 Phase 4 人工验收硬闸 |
@@ -0,0 +1,96 @@
1
+ # tool-descriptions.md — Sprint Flow 各 Phase 调用的 Skill 完整描述(AHE 组件分解)
2
+
3
+ > **本文是 `skills/sprint-flow/SKILL.md` 中 Phase 2-6 Skill 调用 (L120-298) 的 AHE 对齐展开。**
4
+ > 用于 ablation 实验:AHE 论文显示 Tool 组件贡献占 48%,单独修改可显著影响性能。
5
+
6
+ ## 组件职责
7
+
8
+ 完整描述 sprint-flow 在每个 Phase 中调用的 Skill,包括参数路由、`--lang`/`--type` 注入、条件分支逻辑。是 ablation 实验中**最可能产生显著增益**的组件。
9
+
10
+ ---
11
+
12
+ ## Phase 2: BUILD 工具链(核心贡献区 — 48%)
13
+
14
+ ### 默认模式: ralph-loop
15
+
16
+ | 步骤 | Skill | 来源 | 说明 |
17
+ |------|-------|------|------|
18
+ | -1 | `hooks-install` | githooks | `githooks/verify.sh` → 缺失则 `githooks/install.sh` |
19
+ | 0 | `dispatching-parallel-agents` | superpowers | 检测可并行任务 |
20
+ | 1 | `test-driven-development` | superpowers | RED → GREEN → REFACTOR |
21
+ | 2 | `executing-plans` | superpowers | 隔离 session,review checkpoint |
22
+ | 3 | `freeze` | gstack | 盲评隔离 |
23
+ | 4 | `requesting-code-review` | superpowers | 独立 agent 评审 |
24
+ | 5 | `unfreeze` | gstack | 解锁 |
25
+ | 6 | `verification-before-completion` | superpowers | 测试 + lint |
26
+ | 7 | 成本监控 | sprint-flow 编排层 | 超阈值 BLOCK |
27
+
28
+ ### GITHOOKS-GATE (Phase 1→2 闸门)
29
+
30
+ - 执行时机: Phase 1 完全通过、准备进入 Phase 2 BUILD 前
31
+ - `githooks/verify.sh` 全部存在 → 直接进入 BUILD
32
+ - 缺失 → `githooks/install.sh` 安装(hooks + adapter 基础设施)
33
+ - **核心原则**: 没有质量门禁的代码不可进入 BUILD。**失败 → 不可编码。**
34
+
35
+ ### 语言特定 TDD
36
+
37
+ 通过 `--lang` 参数注入:
38
+ - `springboot-tdd` → springboot-verification
39
+ - `django-tdd` → django-verification
40
+ - `golang-testing` → golang-verification
41
+
42
+ ---
43
+
44
+ ## Phase 3: REVIEW + TEST 工具链
45
+
46
+ | Skill | 模式 | 说明 |
47
+ |-------|------|------|
48
+ | `delphi-review` | `--mode code-walkthrough` | 多专家匿名代码走查 |
49
+ | `test-specification-alignment` | 默认 | 测试与 Spec 对齐验证 |
50
+ | `browse` | gstack | 浏览器自动化测试 |
51
+ | `k6` / `locust` / `gatling` | 可选 | 后端负载测试 |
52
+
53
+ ---
54
+
55
+ ## Phase 5: FEEDBACK 工具链
56
+
57
+ | Skill | 说明 |
58
+ |-------|------|
59
+ | `learn` | gstack,模式记录 |
60
+ | `retro` | gstack,工程回顾 |
61
+ | `systematic-debugging` | superpowers,根因调试 |
62
+
63
+ ---
64
+
65
+ ## Phase 6: SHIP 工具链
66
+
67
+ | Skill | 说明 |
68
+ |-------|------|
69
+ | `finishing-a-development-branch` | 4 选项: merge / PR / discard / keep |
70
+ | `ship` | gstack,创建 PR |
71
+ | `land-and-deploy` | 合并部署 |
72
+ | `canary` | 监控告警 |
73
+
74
+ ---
75
+
76
+ ## 项目类型 → Skill 注入映射
77
+
78
+ | Phase | Backend (default) | Web Frontend | Mobile |
79
+ |-------|------------------|-------------|--------|
80
+ | Phase 0 (THINK) | `brainstorming` | (同) | (同) |
81
+ | Phase 1 (PLAN) | `autoplan` + `delphi-review` | + `design-shotgun` | (同 web) |
82
+ | Phase 2 (BUILD) | TDD + blind-review | (同 backend) | + `vercel-react-native-skills` / `flutter-review` |
83
+ | Phase 3 (REVIEW) | `delphi-review --mode code-walkthrough` | + `qa` + `design-review` + `benchmark` | `flutter-test` / `detox E2E` |
84
+ | Phase 5 (FEEDBACK) | `learn` + `retro` | (同) | (同) |
85
+ | Phase 6 (SHIP) | `finishing-a-development-branch` + `ship` | (同) | + platform deploy |
86
+
87
+ ---
88
+
89
+ ## AHE 分类
90
+
91
+ | 字段 | 值 |
92
+ |------|---|
93
+ | 组件类型 | Tool Description |
94
+ | 修改频率预期 | 高(Phase 2 BUILD 工具链频繁调整) |
95
+ | 消融实验假设 | 增删 phase→skill 映射 → Sprint pass rate 变化 ±20%+ |
96
+ | 参考证据 | AHE 论文: Tool 组件单独修改带来 +3.3% 总增益 |
@@ -0,0 +1,115 @@
1
+ # Phase 0: THINK(需求探索与设计)
2
+
3
+ ## 目标
4
+
5
+ 使用 brainstorming skill 进行结构化需求探索,输出经用户批准的设计文档。
6
+
7
+ **关键变更(ISSUE30)**: 从 `office-hours` 切换到 `brainstorming`,原因:
8
+ - brainstorming 有 **HARD-GATE**(设计未批准 → 不可进入实现),防止 "觉得已经理解了就直接开始写代码"
9
+ - brainstorming 输出结构化设计文档,可直接作为 Phase 1 PLAN 的输入
10
+ - office-hours 的 YC 六问适合新产品方向验证,brainstorming 更适合"具体功能实现前设计"的场景
11
+
12
+ ---
13
+
14
+ ## 调用 Skills
15
+
16
+ - `brainstorming` (superpowers) — **HARD-GATE**: 设计未批准 → 不可进入实现
17
+ - 可选补充:`office-hours` (gstack) — 当用户需求非常模糊、需要先验证产品方向时
18
+
19
+ ---
20
+
21
+ ## HARD-GATE 机制
22
+
23
+ ```
24
+ DO NOT enter Phase 1 (PLAN) or do any implementation
25
+ until the brainstorming design has been APPROVED by the user.
26
+ ```
27
+
28
+ 这是 sprint-flow 的关键安全门。brainstorming skill 内部会执行:
29
+
30
+ 1. **Explore project context** — 检查文件、文档、最近 commits
31
+ 2. **Ask clarifying questions** — 一次一个,理解目的/约束/成功标准
32
+ 3. **Propose approaches** — 2-3 个方案,含 trade-offs 和建议
33
+ 4. **Present design** — 分节展示,每节获得用户批准
34
+ 5. **Write design doc** — 保存到 `docs/plans/YYYY-MM-DD-<topic>-design.md`
35
+ 6. **Transition to implementation** — brainstorming 自动调用 writing-plans
36
+
37
+ **sprint-flow 编排层行为**:
38
+ - 收到 brainstorming APPROVED 设计文档后,自动进入 Phase 1
39
+ - 如果 brainstorming 未完成(用户未 APPROVED),BLOCK 并等待
40
+
41
+ ---
42
+
43
+ ## 执行步骤
44
+
45
+ ### Step 1: 调用 brainstorming skill
46
+
47
+ ```
48
+ skill(name="brainstorming", user_message="[需求描述]")
49
+ ```
50
+
51
+ brainstorming 内部流程:
52
+
53
+ ```
54
+ Explore project context → Ask clarifying questions → Propose 2-3 approaches
55
+ → Present design sections → User approves design? → YES → Write design doc
56
+ → Invoke writing-plans skill
57
+ ```
58
+
59
+ **注意**: brainstorming 内部会自动调用 `writing-plans` 创建实现计划,该计划直接作为 Phase 1 的输入。
60
+
61
+ ### Step 2: 等待 HARD-GATE APPROVED
62
+
63
+ ```
64
+ ⚠️ HARD-GATE: 设计未 APPROVED → 不可进入 Phase 1
65
+
66
+ 等待用户审批 brainstorming 输出的设计文档。
67
+ ```
68
+
69
+ sprint-flow 编排层检查:
70
+ - [ ] 设计文档已保存 (`docs/plans/YYYY-MM-DD-<topic>-design.md`)
71
+ - [ ] 用户已 APPROVED
72
+ - [ ] 无未解决的 blocking questions
73
+
74
+ 如果任一条件不满足 → **BLOCK**,等待用户确认。
75
+
76
+ ### Step 3: 保存设计文档路径
77
+
78
+ ```
79
+ 设计文档路径写入 sprint-state,供 Phase 1 使用。
80
+ ```
81
+
82
+ 保存到 `<project-root>/.sprint-state/phase-outputs/design-doc.md`(内容为设计文档路径引用,或直接复制设计文档)。
83
+
84
+ ---
85
+
86
+ ## 可选补充: office-hours(方向验证)
87
+
88
+ 当用户输入非常模糊时(如 "我想做一个 AI 工具" 而不是 "开发用户登录功能"),可以先调用 `office-hours` 验证产品方向,再进入 brainstorming 详细设计:
89
+
90
+ ```
91
+ skill(name="office-hours", user_message="[模糊需求描述]")
92
+ // → Pain Document → 再进入 brainstorming 详细设计
93
+ ```
94
+
95
+ **使用场景**:
96
+ - 用户描述的是一个新产品/新功能方向,而非具体功能
97
+ - 需要先验证"是否值得做"再进入"怎么做"
98
+
99
+ **如果不满足以上条件**: 直接跳过 office-hours,只使用 brainstorming。
100
+
101
+ ---
102
+
103
+ ## 暂停点
104
+
105
+ | 暂停点 | 触发条件 | 用户操作 | 自动恢复条件 |
106
+ |--------|---------|---------|-------------|
107
+ | **HARD-GATE** | brainstorming 设计未 APPROVED | 用户审批设计文档 | 设计 APPROVED 后自动进入 Phase 1 |
108
+
109
+ ---
110
+
111
+ ## 输出
112
+
113
+ - Design Document (`docs/plans/YYYY-MM-DD-<topic>-design.md`)
114
+ - Implementation Plan(brainstorming 内部 writing-plans 输出)
115
+ - 进入 Phase 1 自动执行(使用设计文档作为输入)