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.
- package/adapter-common.sh +192 -0
- package/adapters/cpp.sh +76 -0
- package/adapters/dart.sh +41 -0
- package/adapters/flutter.sh +41 -0
- package/adapters/go.sh +59 -0
- package/adapters/iac.sh +189 -0
- package/adapters/java.sh +191 -0
- package/adapters/kotlin.sh +77 -0
- package/adapters/objectivec.sh +38 -0
- package/adapters/powershell.sh +138 -0
- package/adapters/python.sh +104 -0
- package/adapters/shell.sh +55 -0
- package/adapters/swift.sh +44 -0
- package/adapters/typescript.sh +61 -0
- package/bin/xp-gate.js +157 -0
- package/hooks/adapter-common.sh +192 -0
- package/hooks/pre-commit +1667 -0
- package/hooks/pre-push +395 -0
- package/lib/__tests__/detect-deps.test.js +209 -0
- package/lib/__tests__/doctor.test.js +448 -0
- package/lib/__tests__/download-skill.test.js +281 -0
- package/lib/__tests__/init.test.js +327 -0
- package/lib/__tests__/install-skill.test.js +326 -0
- package/lib/__tests__/migrate.test.js +212 -0
- package/lib/__tests__/rollback.test.js +183 -0
- package/lib/__tests__/ui-detector.test.ts +200 -0
- package/lib/__tests__/uninstall-skill.test.js +189 -0
- package/lib/__tests__/uninstall.test.js +589 -0
- package/lib/__tests__/update-skill.test.js +276 -0
- package/lib/detect-deps.js +157 -0
- package/lib/doctor.js +370 -0
- package/lib/download-skill.js +96 -0
- package/lib/init.js +367 -0
- package/lib/install-skill.js +184 -0
- package/lib/migrate.js +120 -0
- package/lib/rollback.js +78 -0
- package/lib/ui-detector.ts +99 -0
- package/lib/uninstall-skill.js +69 -0
- package/lib/uninstall.js +401 -0
- package/lib/update-skill.js +90 -0
- package/package.json +39 -0
- package/plugins/claude-code/.claude-plugin/plugin.json +21 -0
- package/plugins/claude-code/bin/delphi-review-guard.sh +68 -0
- package/plugins/claude-code/bin/xp-gate-check +47 -0
- package/plugins/claude-code/hooks/hooks.json +37 -0
- package/skills/delphi-review/.delphi-config.json.example +45 -0
- package/skills/delphi-review/AGENTS.md +54 -0
- package/skills/delphi-review/INSTALL.md +152 -0
- package/skills/delphi-review/SKILL.md +371 -0
- package/skills/delphi-review/evals/evals.json +82 -0
- package/skills/delphi-review/opencode.json.delphi.example +56 -0
- package/skills/delphi-review/references/code-walkthrough.md +486 -0
- package/skills/ralph-loop/SKILL.md +330 -0
- package/skills/ralph-loop/evals/evals.json +311 -0
- package/skills/ralph-loop/evolution-history.json +59 -0
- package/skills/ralph-loop/evolution-log.md +16 -0
- package/skills/ralph-loop/references/components/memory.md +55 -0
- package/skills/ralph-loop/references/components/middleware.md +54 -0
- package/skills/ralph-loop/references/components/skill-invocations.md +39 -0
- package/skills/ralph-loop/references/components/system-prompt.md +24 -0
- package/skills/ralph-loop/references/components/tool-descriptions.md +32 -0
- package/skills/ralph-loop/references/phase-2-build-ralph.md +89 -0
- package/skills/ralph-loop/templates/progress-log.md +36 -0
- package/skills/sprint-flow/SKILL.md +600 -0
- package/skills/sprint-flow/evals/evals.json +78 -0
- package/skills/sprint-flow/evolution-history.json +39 -0
- package/skills/sprint-flow/evolution-log.md +23 -0
- package/skills/sprint-flow/references/components/memory.md +87 -0
- package/skills/sprint-flow/references/components/middleware.md +72 -0
- package/skills/sprint-flow/references/components/skill-invocations.md +104 -0
- package/skills/sprint-flow/references/components/system-prompt.md +27 -0
- package/skills/sprint-flow/references/components/tool-descriptions.md +96 -0
- package/skills/sprint-flow/references/phase-0-think.md +115 -0
- package/skills/sprint-flow/references/phase-1-plan.md +178 -0
- package/skills/sprint-flow/references/phase-2-build.md +198 -0
- package/skills/sprint-flow/references/phase-3-review.md +213 -0
- package/skills/sprint-flow/references/phase-4-uat.md +125 -0
- package/skills/sprint-flow/references/phase-5-feedback.md +100 -0
- package/skills/sprint-flow/references/phase-6-ship.md +193 -0
- package/skills/sprint-flow/references/phase-7-land.md +140 -0
- package/skills/sprint-flow/references/phase-8-cleanup.md +192 -0
- package/skills/sprint-flow/templates/emergent-issues-template.md +120 -0
- package/skills/sprint-flow/templates/pain-document-template.md +115 -0
- package/skills/sprint-flow/templates/sprint-summary-template.md +120 -0
- package/skills/test-specification-alignment/AGENTS.md +59 -0
- package/skills/test-specification-alignment/SKILL.md +605 -0
- package/skills/test-specification-alignment/evals/evals.json +75 -0
- package/skills/test-specification-alignment/references/alignment-verification-algorithm.md +493 -0
- package/skills/test-specification-alignment/references/phase2-constraint-enforcement.md +431 -0
- package/skills/test-specification-alignment/references/specification-format.md +348 -0
|
@@ -0,0 +1,600 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sprint-flow
|
|
3
|
+
description: >
|
|
4
|
+
One-Shot Sprint 自动流水线。单一入口,自动串联 Think → Plan → Build →
|
|
5
|
+
Review → Ship 流程。整合 brainstorming + autoplan + delphi-review + TDD +
|
|
6
|
+
delphi-review --mode code-walkthrough + ship 等现有 Skills。关键节点暂停等待用户决策。
|
|
7
|
+
承认 Emergent Requirements 限制,设计用户验收环节。
|
|
8
|
+
|
|
9
|
+
TRIGGER:
|
|
10
|
+
- "开发新功能"
|
|
11
|
+
- "实现 X"
|
|
12
|
+
- "start sprint"
|
|
13
|
+
- "一键开发"
|
|
14
|
+
- "/sprint-flow"
|
|
15
|
+
|
|
16
|
+
用法: /sprint-flow "[需求描述]"
|
|
17
|
+
示例: /sprint-flow "开发访谈机器人,支持多轮对话"
|
|
18
|
+
|
|
19
|
+
可选参数:
|
|
20
|
+
--no-isolate: 跳过自动 worktree 隔离(⚠️ 在保护分支上有污染风险)
|
|
21
|
+
--branch-name <name>: 自定义分支名(默认自动生成 sprint/YYYY-MM-DD-NN)
|
|
22
|
+
--force: 强制在当前分支继续(即使已是保护分支,⚠️ 输出警告)
|
|
23
|
+
--stop-at <phase>: 执行到指定阶段后停止 (isolate/think/plan/build/review/ship/land/cleanup)
|
|
24
|
+
--resume-from <phase>: 从指定阶段继续,跳过前面阶段
|
|
25
|
+
--phase <phase>: 只执行单个阶段 (isolate-only/think-only/plan-only/build-only/review-only/ship-only/land-only/cleanup-only)
|
|
26
|
+
--lang <language>: 指定项目语言 (springboot/django/golang)
|
|
27
|
+
--type <project_type>: 指定项目类型 (web-nextjs/web-react/web-vue/mobile-flutter/mobile-react-native/backend-django/backend-go/backend-springboot)
|
|
28
|
+
--spec <file>: 使用已有的 specification.yaml 文件
|
|
29
|
+
--with-performance: 启用负载/压力测试(后端项目)
|
|
30
|
+
--mode <build_mode>: 指定 Phase 2 构建模式。默认 = ralph-loop(逐 REQ 迭代,token 节约)。parallel = 旧有并行模式(一次性 dispatch 所有需求)
|
|
31
|
+
|
|
32
|
+
maturity: beta
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
# Sprint Flow Skill
|
|
36
|
+
|
|
37
|
+
## 核心原则
|
|
38
|
+
|
|
39
|
+
| 原则 | 说明 |
|
|
40
|
+
|------|------|
|
|
41
|
+
| **单一入口** | 用户只需调用 `/sprint-flow`,自动串联全流程 |
|
|
42
|
+
| **自动流水线** | 类似 autoplan,自动执行多个阶段 |
|
|
43
|
+
| **关键节点暂停** | APPROVED 确认、Gate 1 通过、Ship 确认、⚠️ Phase 4 必须人工 |
|
|
44
|
+
| **承认 Emergent** | 用户验收环节必须人工,无法自动化(78% 失败不可见) |
|
|
45
|
+
| **复用现有 Skills** | 不重新发明,整合调用现有体系 |
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 完整流程(默认无参数)
|
|
50
|
+
|
|
51
|
+
调用 `/sprint-flow "[需求描述]"` 后,自动执行以下流程:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
Phase -1: ISOLATE → ⚠️ 检测保护分支(main/master/develop/trunk/mainline) → 强制创建 git worktree
|
|
55
|
+
→ 已在 worktree 中 → 跳过 → 项目 setup → .gitignore 校验 → sprint-state isolation 记录
|
|
56
|
+
Phase 0: THINK → brainstorming → ⚠️ HARD-GATE: 设计未批准 → 不可进入实现 → Design Document (AI编辑行为约束: 原则3 Surgical Changes, 验证循环要求: 原则4 Goal-Driven Execution - 见 AGENTS.md "## AI CODING DISCIPLINE (Karpathy Principles)")
|
|
57
|
+
Phase 1: PLAN → autoplan → ⚠️ (如有taste_decisions,暂停等用户确认)
|
|
58
|
+
→ delphi-review → ⚠️ (等待 APPROVED)
|
|
59
|
+
→ 自动生成 specification.yaml(无需独立 skill)
|
|
60
|
+
Phase 2: BUILD → ⚠️ GITHOOKS-GATE: 检查并安装 Git Hooks(缺失→阻断)
|
|
61
|
+
→ dispatching-parallel-agents (并行检测) + executing-plans (隔离执行)
|
|
62
|
+
→ test-driven-development (RED→GREEN→REFACTOR)
|
|
63
|
+
→ freeze (盲评隔离) → requesting-code-review → unfreeze
|
|
64
|
+
→ verification-before-completion → ⚠️ (验证失败超过 max 3)
|
|
65
|
+
→ MVP v1
|
|
66
|
+
Phase 3: REVIEW → delphi-review --mode code-walkthrough → test-specification-alignment
|
|
67
|
+
→ browse → ⚠️ (验证失败)
|
|
68
|
+
Phase 4: ⚠️ ⚠️ USER ACCEPTANCE → 必须人工验收 → Emergent Issues List
|
|
69
|
+
Phase 5: FEEDBACK → learn + retro(工程回顾)+ systematic-debugging(根因调试)
|
|
70
|
+
Phase 6: SHIP → finishing-a-development-branch (4 选项) → ship (PR 路径)
|
|
71
|
+
→ PR 创建完成
|
|
72
|
+
Phase 7: ⚠️ LAND → land-and-deploy → merge PR + wait CI + canary health check
|
|
73
|
+
→ deploy verification + auto-rollback on failure
|
|
74
|
+
Phase 8: CLEANUP → git worktree remove + sprint-state.json update → status: merged
|
|
75
|
+
→ Sprint Summary → IF emergent issues → Sprint 2
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 暂停点设计(不是随时停,而是设计明确的暂停点)
|
|
81
|
+
|
|
82
|
+
| 暂停点位置 | 触发条件 | 用户操作 | 自动恢复条件 |
|
|
83
|
+
|-----------|---------|---------|-------------|
|
|
84
|
+
| **Phase -1** | ⚠️ **保护分支强制隔离 / --no-isolate 跳过** | 输出 ⚠️ 警告或自动创建 worktree | 自动创建或用户确认后继续 |
|
|
85
|
+
| **Phase 0** | ⚠️ **设计未 APPROVED (HARD-GATE)** | 根据反馈修改设计 | 设计 APPROVED 后继续 |
|
|
86
|
+
| Phase 1 | autoplan surfacing taste_decisions | 用户确认每个决策 | 确认后自动继续 |
|
|
87
|
+
| Phase 1 | delphi-review 未 APPROVED | 修复并重新评审 | APPROVED 后自动继续 |
|
|
88
|
+
| Phase 2 | 验证失败超过 max 3 | 用户决定修复或放弃 | 验证通过后自动继续 |
|
|
89
|
+
| Phase 2 | 成本超阈值 | 用户决定继续或暂停 | 用户确认后自动继续 |
|
|
90
|
+
| Phase 3 | browse 发现问题 | 回退 Phase 2(不暂停) | 验证通过后自动继续 |
|
|
91
|
+
| **Phase 4** | ⚠️ **必须人工验收** | 用户实际使用后确认 | 用户确认后继续 |
|
|
92
|
+
| **Phase 5** | ⚠️ **必须执行,不可跳过 (HARD-GATE)** | Phase 5 完成后进入 Phase 6 | `feedback-log.md` 生成后自动继续 |
|
|
93
|
+
| Phase 6 | finishing-a-development-branch | 用户选择 4 选项 (merge/PR/discard/keep) | 确认后自动继续 |
|
|
94
|
+
| Phase 6 | ship PR 创建(PR 路径)| 用户确认合并 | 合并后自动继续 |
|
|
95
|
+
| **Phase 7** | **land-and-deploy 完成/失败** | **用户确认合并结果 / 处理部署失败** | **确认/修复后继续** |
|
|
96
|
+
| **Phase 8** | **worktree 清理完成/失败** | **用户确认清理 / 手动处理残留** | **确认后结束流程** |
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 各 Phase 调用的 Skills
|
|
101
|
+
|
|
102
|
+
### Phase -1: ISOLATE(git worktree 隔离)
|
|
103
|
+
|
|
104
|
+
**执行时机**: `/sprint-flow` 启动后、Phase 0 THINK 之前。**自动执行**。
|
|
105
|
+
|
|
106
|
+
**目的**: 默认在 git worktree 中隔离 sprint 工作,防止在保护分支上直接运行导致代码污染。
|
|
107
|
+
|
|
108
|
+
**AI agent 直接执行 bash 命令**(不需要调用外部 skill),步骤如下:
|
|
109
|
+
|
|
110
|
+
| 步骤 | 动作 | 说明 |
|
|
111
|
+
|------|------|------|
|
|
112
|
+
| 0 | **检测当前环境** | 运行 `git rev-parse --git-dir` 和 `git rev-parse --git-common-dir`。如果 `GIT_DIR != GIT_COMMON`:已在 worktree 中 → 输出 "Already in isolated worktree" → 进入 Phase 0 |
|
|
113
|
+
| 1 | **检查保护分支** | 获取当前分支名 `git branch --show-current`。保护分支列表: `main, master, develop, trunk, mainline`。保护分支 → 强制创建 worktree。非保护分支 → 依然创建 worktree(推荐,不阻断) |
|
|
114
|
+
| 2 | **创建 worktree** | 创建目录: `mkdir -p .worktrees/sprint`。检测已有 NN 编号: `ls .worktrees/sprint/ 2>/dev/null | grep -oE '[0-9]{2}$' | sort -n | tail -1`(取最后两位数字,数值排序,取最大),NN = 结果 + 1(无结果则从 01 开始)。运行 `git worktree add .worktrees/sprint/sprint-YYYY-MM-DD-NN -b sprint/YYYY-MM-DD-NN`。**注意**: `cd` 在 AI agent 单次工具调用中不保持状态,步骤 3-6 必须通过 `workdir` 参数或 `&&` 链式命令在新 worktree 目录下执行 |
|
|
115
|
+
| 3 | **项目 setup** | 在 worktree 目录下: 检测项目类型: `package.json` → `npm install`, `go.mod` → `go mod download`, `pyproject.toml` → `pip/poetry install` |
|
|
116
|
+
| 4 | **.gitignore 校验** | 在**仓库根目录**(非 worktree)执行: `git check-ignore -q .worktrees`。如果未忽略 → 将 `.worktrees/` 添加到 `.gitignore` → `git add .gitignore` → `git commit -m 'chore: ignore .worktrees directory'` |
|
|
117
|
+
| 5 | **Sprint State 记录** | `mkdir -p .sprint-state` 在 worktree 目录下。写入 `.sprint-state/sprint-state.json`(如已存在则合并,保留原有字段),新增/更新 `isolation` 对象,设置 `phase: -1`,`status: "running"` |
|
|
118
|
+
| 6 | **基线验证** | 在 worktree 目录下: 检测测试方式(package.json 有 "test" script → `npm test`, go.mod → `go test ./...`, pyproject.toml → `pytest`)。测试失败 → 输出失败信息 → 询问用户是否继续 |
|
|
119
|
+
|
|
120
|
+
**参数处理**:
|
|
121
|
+
|
|
122
|
+
- `--no-isolate`: 跳过自动创建,输出 ⚠️ 警告 `'[WARN] 未创建 worktree 隔离,在 {branch} 分支上直接运行 sprint 有污染风险'` → 进入 Phase 0
|
|
123
|
+
- `--branch-name <name>`: 使用自定义分支名(默认自动生成 `sprint/YYYY-MM-DD-NN`),分支名中的 `/` 在 worktree 路径中自动替换为 `-`(如 `feat/user-login` → 分支名 `feat/user-login`,路径 `.worktrees/sprint/feat-user-login`)
|
|
124
|
+
- `--force`: 强制在当前分支继续(即使已是保护分支),**要求用户显式确认**: 输出 ⚠️ 警告 `'[WARN] 使用 --force 在 {branch} 分支上直接运行 sprint。此操作绕过隔离保护,请确认风险。'` → 等待用户确认("继续" / "取消") → 确认后进入 Phase 0
|
|
125
|
+
|
|
126
|
+
**参数交互规则**:
|
|
127
|
+
|
|
128
|
+
| 参数组合 | 行为 |
|
|
129
|
+
|---------|------|
|
|
130
|
+
| `--no-isolate` 单独 | 跳过隔离,输出警告 → Phase 0 |
|
|
131
|
+
| `--force` 单独 | 跳过隔离,要求确认 → Phase 0 |
|
|
132
|
+
| `--no-isolate` + `--branch-name` | `--branch-name` 忽略,仅 `--no-isolate` 生效 |
|
|
133
|
+
| `--force` + `--branch-name` | `--branch-name` 忽略,仅 `--force` 生效 |
|
|
134
|
+
| `--no-isolate` + `--force` | 等效,输出 `--no-isolate` 警告 → Phase 0 |
|
|
135
|
+
| `--resume-from build` + `--no-isolate` | `--resume-from` 优先,直接跳过 Phase -1 |
|
|
136
|
+
|
|
137
|
+
**错误处理和回退**:
|
|
138
|
+
| 错误场景 | 回退行为 |
|
|
139
|
+
|---------|---------|
|
|
140
|
+
| `git worktree add` 失败(沙箱/权限问题) | 输出 `[ERROR] git worktree add 失败: {error}` → `[WARN] 无法创建 worktree 隔离,将在当前目录继续。请手动设置隔离分支。` → 在当前目录继续 |
|
|
141
|
+
| `.gitignore` 自动添加失败 | 输出 `[WARN] 无法自动添加 .gitignore,请手动将 .worktrees/ 添加到 .gitignore` → 继续 |
|
|
142
|
+
| 基线测试失败 | 输出 `[FAIL] 基线测试未通过:` + 失败详情 → 询问用户 `'基线测试失败,是否继续 sprint?(y/N)'` |
|
|
143
|
+
|
|
144
|
+
**sprint-state.json isolation 对象格式**:
|
|
145
|
+
```json
|
|
146
|
+
{
|
|
147
|
+
"isolation": {
|
|
148
|
+
"worktree_path": ".worktrees/sprint/sprint-2026-05-24-01",
|
|
149
|
+
"branch": "sprint/2026-05-24-01",
|
|
150
|
+
"created_from": "main",
|
|
151
|
+
"created_from_commit": "abc123def..."
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
> **清理提示**: Sprint 完成(Phase 6 SHIP)后,执行 `git worktree remove <worktree_path>` 清理 worktree 目录,同时保留 `.sprint-state/` 中的历史记录。
|
|
157
|
+
|
|
158
|
+
### Phase 0: THINK(需求探索与设计)
|
|
159
|
+
- `brainstorming` (superpowers) — **HARD-GATE**: 设计未批准 → 不可进入实现
|
|
160
|
+
- 输出: 结构化设计文档 → 直接作为 Phase 1 PLAN 的输入
|
|
161
|
+
- 替代原因: office-hours 的 YC 六问适合新产品方向验证,brainstorming 的"设计批准才可进入实现"机制更适合 sprint-flow 场景
|
|
162
|
+
|
|
163
|
+
### Phase 1: PLAN(共识评审)
|
|
164
|
+
- `autoplan` (gstack) — CEO → Design → Eng 自动流水线
|
|
165
|
+
- `delphi-review` — 多轮匿名评审直到共识
|
|
166
|
+
- `to-issues` — 将 APPROVED 的 PRD/spec 拆解为垂直切片 Issue(HITL/AFK + 依赖图 + effort 估算)
|
|
167
|
+
- **specification.yaml** — 自动生成(含 User Stories 段)
|
|
168
|
+
|
|
169
|
+
**条件分支逻辑**:
|
|
170
|
+
- IF autoplan AUTO_APPROVED + 无 taste_decisions → 跳过 delphi-review
|
|
171
|
+
- IF autoplan NEEDS_REVIEW OR taste_decisions > 0 → 调用 delphi-review
|
|
172
|
+
- delphi-review APPROVED → 生成 specification.yaml(含 user_stories[]) → **调用 /to-issues** 拆解为垂直切片 → slices-manifest.json → Phase 2 按 execution_order 执行
|
|
173
|
+
|
|
174
|
+
### Phase 1→2: GITHOOKS-GATE(质量门禁安装检查)
|
|
175
|
+
|
|
176
|
+
**执行时机**: Phase 1 完全通过、准备进入 Phase 2 BUILD 之前.
|
|
177
|
+
|
|
178
|
+
**必须执行**: 运行 `githooks/verify.sh` 检查当前项目的 hooks 是否安装。
|
|
179
|
+
|
|
180
|
+
**检查结果处理**:
|
|
181
|
+
- ✅ 全部存在 → 直接进入 Phase 2 BUILD
|
|
182
|
+
- ❌ 部分/全部缺失 → 运行 `githooks/install.sh` 安装(包括 `.git/hooks/pre-commit`、`.git/hooks/pre-push`、`githooks/adapter-common.sh`、`githooks/adapters/`)
|
|
183
|
+
- 如果 githooks/ 目录不存在于项目根目录(即当前项目不是 xp-gate) → 从 xp-gate 仓库拉取 `githooks/` 目录结构
|
|
184
|
+
- 安装完成后再次 `verify.sh` 确认
|
|
185
|
+
|
|
186
|
+
**核心原则**: 没有质量门禁的代码不可进入 BUILD 阶段。**GITHOOKS-GATE 失败 → 不可编码。**
|
|
187
|
+
|
|
188
|
+
### Phase 2: BUILD(DELPHI-GATE → ralph-loop 默认 + TDD + 盲评 + 验证)
|
|
189
|
+
|
|
190
|
+
**⚠️ DELPHI-GATE(BUILD 入口门禁)**:
|
|
191
|
+
Phase 2 第一步必须执行 DELPHI-GATE 检查。没有 delphi-review APPROVED → 不可编码。
|
|
192
|
+
|
|
193
|
+
检查步骤:
|
|
194
|
+
1. 读取 `.sprint-state/delphi-reviewed.json`
|
|
195
|
+
2. 验证文件存在 → 不存在 → 输出 `[BLOCKED] delphi-review not APPROVED. 必须先完成 Phase 1 的 delphi-review。` → 返回 Phase 1
|
|
196
|
+
3. 验证 `verdict` 字段 == `"APPROVED"` → 不等于 → 同上 BLOCK
|
|
197
|
+
4. ✅ 通过 → 进入 BUILD 编码
|
|
198
|
+
|
|
199
|
+
**输入**: `slices-manifest.json`(由 Phase 1 `/to-issues` 生成),按 `execution_order` 逐个执行。
|
|
200
|
+
|
|
201
|
+
**默认模式**: `ralph-loop` — 逐 REQ/切片 迭代构建。每个切片(REQ)dispatch 独立 subagent,干净上下文,全量回归测试。Token 节约 40-67%。参见 `skills/ralph-loop/SKILL.md`。
|
|
202
|
+
|
|
203
|
+
**并行模式**: 通过 `--mode parallel` 启用 `dispatching-parallel-agents`。仅分发无依赖的 AFK 切片(通过 `dependency_graph` 判定)。HITL 切片需人工确认后才可分发。
|
|
204
|
+
|
|
205
|
+
**替代原 xp-consensus**:使用 superpowers 成熟 skill 组合,保留关键行为(freeze 隔离、熔断回退、成本监控)。
|
|
206
|
+
|
|
207
|
+
| 步骤 | Skill | 说明 |
|
|
208
|
+
|------|-------|------|
|
|
209
|
+
| -1 | **`hooks-install`** _(githooks/scripts)_ | `githooks/verify.sh` → 缺失则 `githooks/install.sh` |
|
|
210
|
+
| 0 | **`dispatching-parallel-agents`** _(superpowers)_ | 检测可并行任务,并行分发独立子任务 |
|
|
211
|
+
| 1 | `test-driven-development` (superpowers) | RED → GREEN → REFACTOR 铁律执行 |
|
|
212
|
+
| 2 | **`executing-plans`** _(superpowers)_ | 在隔离 session 中执行计划,有 review checkpoint |
|
|
213
|
+
| 3 | `freeze` (gstack) | 锁定业务代码,盲评 agent 只能访问测试 |
|
|
214
|
+
| 4 | `requesting-code-review` (superpowers) | 独立 agent 盲评业务代码(隔离状态) |
|
|
215
|
+
| 5 | `unfreeze` (gstack) | 解锁业务代码 |
|
|
216
|
+
| 6 | `verification-before-completion` (superpowers) | 运行测试 + lint,证据优先 |
|
|
217
|
+
| 7 | 成本监控(sprint-flow 编排层) | 超阈值 BLOCK + 用户决策 |
|
|
218
|
+
|
|
219
|
+
**关键行为保留**(原 xp-consensus 17 状态机中的真实边缘情况):
|
|
220
|
+
|
|
221
|
+
| 原状态 | 新处理方案 |
|
|
222
|
+
|--------|-----------|
|
|
223
|
+
| `CIRCUIT_BREAKER_TRIGGERED` | sprint-flow 编排层监控成本,超阈值 BLOCK + 用户决策 |
|
|
224
|
+
| `ROLLBACK_TO_ROUND1` | verification-before-completion 失败 → 修复 max 3 次 → 仍失败 BLOCK |
|
|
225
|
+
| `GATE1_FAILED`/`GATE1_COMPLETE` | verification-before-completion 内置此区分 |
|
|
226
|
+
| `GATE2_RUNNING` | `cso` (gstack) — Phase 1-6 安全审计替代 |
|
|
227
|
+
| `SEALED_CODE_ISOLATION` | 保留 freeze skill 调用 |
|
|
228
|
+
|
|
229
|
+
**语言特定 TDD**:通过 `--lang` 参数选择:
|
|
230
|
+
- `springboot-tdd` / `django-tdd` / `golang-testing`
|
|
231
|
+
|
|
232
|
+
**Mock Minimization**(Phase 2 强制):
|
|
233
|
+
- 默认使用 integration-first:real DB (sqlite-in-memory), real collaborators
|
|
234
|
+
- Mock 仅用于:external services, network calls, I/O boundaries
|
|
235
|
+
- Mock 密度 > 30% 时必须添加 `// @mock-justified: <reason>` 注解(理由最少 10 字符)
|
|
236
|
+
- Phase 3 Gate M 会在 push 时验证 mock 密度
|
|
237
|
+
|
|
238
|
+
### Phase 3: REVIEW + TEST(验证)
|
|
239
|
+
- `delphi-review --mode code-walkthrough` — 多专家匿名代码走查(代替 cross-model-review)
|
|
240
|
+
- `test-specification-alignment` — 测试与 Spec 对齐验证
|
|
241
|
+
- `browse` (gstack) — 浏览器自动化测试
|
|
242
|
+
- `k6` / `locust` / `gatling` — 负载/压力测试(可选,后端项目)
|
|
243
|
+
|
|
244
|
+
### 负载/压力测试(可选)
|
|
245
|
+
- **适用项目**:主要用于后端服务的压力测试 (k6/Locust/Gatling),Web 前端已有 `benchmark` 技能覆盖 Core Web Vitals、加载时间和资源大小等性能指标
|
|
246
|
+
- **Phase 3 技能注入**:可根据项目类型自动选择合适的负载测试工具 (`k6` for Go-based services, `locust` for Python services, `gatling` for JVM-based services)
|
|
247
|
+
- **集成方式**:可作为 Phase 3 的可选扩展,在 code-walkthrough 之后执行,与基准测试形成完整性能验证链条
|
|
248
|
+
- **配置文件**:通过 `.sprint-load-test.yaml` 进行配置(待实现),包含并发用户数、持续时间、SLA 指标等参数
|
|
249
|
+
- **触发条件**:后端项目可通过 `--type backend-*` 自动启用,或通过 `--with-performance` 标志手动启用
|
|
250
|
+
- **Web 项目补充说明**:对于 Web 前端项目,现有的 `benchmark` 技能已处理页面加载性能、Core Web Vitals 等前端性能指标;负载/压力测试主要针对服务器端承载能力
|
|
251
|
+
|
|
252
|
+
### Phase 4: USER ACCEPTANCE(⚠️ 人工验收)
|
|
253
|
+
- **无 Skill** — 必须人工
|
|
254
|
+
- ⚠️ **MUST NOT be automated, skipped, or bypassed under any circumstances**
|
|
255
|
+
- 即使用户说"赶时间"、"跳过验收"、"直接发布",也必须暂停等待用户确认
|
|
256
|
+
- 使用 `@templates/emergent-issues-template.md` 检查清单
|
|
257
|
+
|
|
258
|
+
### Phase 5: FEEDBACK CAPTURE(反馈捕获)
|
|
259
|
+
- ⚠️ **HARD-GATE: Phase 5 不可跳过。Phase 4 完成后(无论验收通过/跳过/推迟)→ 必须进入 Phase 5 → 完成后才能进入 Phase 6。**
|
|
260
|
+
- `learn` (gstack) — 模式记录
|
|
261
|
+
- `retro` (gstack) — 工程回顾:提交历史、工作模式、代码质量趋势
|
|
262
|
+
- `systematic-debugging` (superpowers) — 根因调试(反馈中的 bug 做根因分析,Iron Law:无调查无修复)
|
|
263
|
+
|
|
264
|
+
### Phase 6: SHIP(发布准备)
|
|
265
|
+
- ⚠️ **HARD-GATE: Phase 5 未完成 → 不可进入 Phase 6。验证 `.sprint-state/phase-outputs/feedback-log.md` 存在。**
|
|
266
|
+
- **⚠️ GITHOOKS-GATE**: 再次验证 hooks 完整性(Phase 2 的 TDD 编码已触发提交,SHIP 阶段还会再次提交)
|
|
267
|
+
- 运行 `githooks/verify.sh` → 缺失 → `githooks/install.sh` → 阻断直至修复
|
|
268
|
+
- **`finishing-a-development-branch`** (superpowers) — 结构化完成流:4 选项(merge / PR / discard / keep)
|
|
269
|
+
- `ship` (gstack) — 创建 PR(PR 路径时使用)
|
|
270
|
+
- Phase 6 输出:PR URL(用于 Phase 7 输入)
|
|
271
|
+
|
|
272
|
+
### Phase 7: ⚠️ LAND(合并 + 部署)
|
|
273
|
+
- 输入:Phase 6 输出的 PR URL
|
|
274
|
+
- 调用:`land-and-deploy` skill
|
|
275
|
+
- 流程:
|
|
276
|
+
1. Merge PR(`gh pr merge --squash`)
|
|
277
|
+
2. 等待 CI 完成(poll `gh pr checks` 直到 success 或 10min timeout)
|
|
278
|
+
3. 等待 Deploy 完成(如已配置,10min timeout)
|
|
279
|
+
4. **Canary Health Check**(如已配置部署平台):
|
|
280
|
+
- 健康检查端点:项目根路径 `/` 或自定义 `/.well-known/health`
|
|
281
|
+
- SLA 指标:HTTP 200 响应 + 错误率 <1% + p99 响应 <2s
|
|
282
|
+
- 超时策略:最长 5 分钟,每 10s polling 一次
|
|
283
|
+
- 部署**失败**时的回滚:`git revert` 最后一次 merge commit + 输出 `[ERROR] Deploy failed, auto-rolled back merge`
|
|
284
|
+
- 条件跳过:无部署配置时,仅执行 merge + CI checks,跳过 deploy/canary
|
|
285
|
+
- 输出:部署状态 + Canary 报告(成功/失败/跳过)
|
|
286
|
+
|
|
287
|
+
### Phase 8: CLEANUP(清理 + 总结)
|
|
288
|
+
- 执行时机:Phase 7 LAND 成功后(或 Phase 6 Option 1 本地 Merge 后)
|
|
289
|
+
- 动作:
|
|
290
|
+
1. 检测 worktree 是否存在:`[ -d <worktree_path> ]`
|
|
291
|
+
2. `git worktree remove <worktree_path>` 删除 worktree
|
|
292
|
+
- **原子性保障**: 如果首次失败(权限问题),重试最多 3 次,间隔 1s
|
|
293
|
+
- 如果仍失败:输出 `[WARN] Failed to remove worktree, please manually run: git worktree remove <path>`
|
|
294
|
+
3. 检测残留目录:`[ -d <worktree_path> ]` → 如果仍有残留,输出警告
|
|
295
|
+
4. 更新 `.sprint-state/sprint-state.json`:
|
|
296
|
+
- `phase: 8`
|
|
297
|
+
- `status: "merged"` 或 `"completed"`
|
|
298
|
+
5. 输出 Cleanup Report + Sprint Summary
|
|
299
|
+
- 条件跳过:`--no-isolate` 路径(无 worktree 可清理)
|
|
300
|
+
- 输出:`[CLEANUP] Worktree removed:` + 残留检测(✅ clean / ⚠️ residual)
|
|
301
|
+
- IF emergent issues → Sprint 2
|
|
302
|
+
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
## Output Format (MANDATORY)
|
|
306
|
+
Sprint state is persisted as JSON in `.sprint-state/sprint-state.json`:
|
|
307
|
+
```json
|
|
308
|
+
{
|
|
309
|
+
"id": "sprint-2026-04-26-01",
|
|
310
|
+
"phase": -1,
|
|
311
|
+
"status": "running|paused|completed",
|
|
312
|
+
"isolation": {
|
|
313
|
+
"worktree_path": ".worktrees/sprint/sprint-2026-04-26-01",
|
|
314
|
+
"branch": "sprint/2026-04-26-01",
|
|
315
|
+
"created_from": "main",
|
|
316
|
+
"created_from_commit": "abc123def..."
|
|
317
|
+
},
|
|
318
|
+
"outputs": {
|
|
319
|
+
"pain_document": "docs/pain-document.md",
|
|
320
|
+
"specification": "specification.yaml",
|
|
321
|
+
"mvp": "mvp-v1/",
|
|
322
|
+
"review_report": "review-report.md"
|
|
323
|
+
},
|
|
324
|
+
"metrics": {
|
|
325
|
+
"tests_passed": 15,
|
|
326
|
+
"tests_failed": 0,
|
|
327
|
+
"coverage_pct": 85
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
```
|
|
331
|
+
**Eval assertions check for:** `phase`, `status`, `isolation.branch`, `outputs.specification`, `metrics.coverage_pct`.
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
## 参数说明
|
|
336
|
+
|
|
337
|
+
### 默认用法(无参数)
|
|
338
|
+
|
|
339
|
+
```bash
|
|
340
|
+
/sprint-flow "开发访谈机器人,支持多轮对话"
|
|
341
|
+
|
|
342
|
+
# 自动执行 Think → Plan → Build → Review → Ship 全流程
|
|
343
|
+
# 关键节点暂停等待用户确认
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### --stop-at(执行到某阶段后停止)
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
/sprint-flow "开发访谈机器人" --stop-at plan
|
|
350
|
+
# → Think → Plan → 输出 specification.yaml → 停止
|
|
351
|
+
# 适用场景:先评审方案,后续手动决定是否继续
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
### --resume-from(从某阶段继续)
|
|
355
|
+
|
|
356
|
+
```bash
|
|
357
|
+
/sprint-flow "继续 Sprint" --resume-from build --spec specification.yaml
|
|
358
|
+
# → 跳过 Think + Plan,直接从 Build 开始
|
|
359
|
+
# 适用场景:中断恢复,使用已有的 specification.yaml
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
### --phase(只执行单个阶段)
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
/sprint-flow "评审代码" --phase review-only
|
|
366
|
+
# → 只执行 Phase 3 的评审
|
|
367
|
+
# 适用场景:单独验证某个阶段
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
### --lang(指定项目语言)
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
/sprint-flow "开发用户认证模块" --lang springboot
|
|
374
|
+
# Phase 2 自动调用 springboot-tdd + springboot-verification
|
|
375
|
+
|
|
376
|
+
/sprint-flow "开发 REST API" --lang django
|
|
377
|
+
# Phase 2 自动调用 django-tdd + django-verification
|
|
378
|
+
|
|
379
|
+
/sprint-flow "开发并发任务调度器" --lang golang
|
|
380
|
+
# Phase 2 自动调用 golang-testing
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
### --type(指定项目类型)
|
|
384
|
+
|
|
385
|
+
```bash
|
|
386
|
+
/sprint-flow "开发用户登录页面" --type web-nextjs
|
|
387
|
+
/sprint-flow "开发 REST API" --type backend-django
|
|
388
|
+
# 默认: 从项目文件自动检测
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
自动检测逻辑(按顺序检查):
|
|
392
|
+
|
|
393
|
+
| 检测条件 | 类型 |
|
|
394
|
+
|---------|------|
|
|
395
|
+
| `package.json` + `next.config.js` | `web-nextjs` |
|
|
396
|
+
| `package.json` + `vite.config.ts` + `react` 依赖 | `web-react` |
|
|
397
|
+
| `package.json` + `vue` 依赖 | `web-vue` |
|
|
398
|
+
| `pubspec.yaml` + `flutter:` | `mobile-flutter` |
|
|
399
|
+
| `package.json` + `react-native` 依赖 or `ios/` + `android/` | `mobile-react-native` |
|
|
400
|
+
| `go.mod` | `backend-go` (可选 k6 负载测试)|
|
|
401
|
+
| `pom.xml` | `backend-springboot` (可选 gatling 负载测试)|
|
|
402
|
+
| `manage.py` 或 `pyproject.toml` (django) | `backend-django` (可选 locust 负载测试)|
|
|
403
|
+
| 无匹配 | `backend-cli` |
|
|
404
|
+
|
|
405
|
+
### 项目类型到 Skill 注入映射
|
|
406
|
+
|
|
407
|
+
| Phase | Backend (default) | Web Frontend | Mobile | Load/Performance Testing |
|
|
408
|
+
|-------|------------------|-------------|--------|--------------------------|
|
|
409
|
+
| Phase 0 (THINK) | `brainstorming` | (同) | (同) | (通用) |
|
|
410
|
+
| Phase 1 (PLAN) | `autoplan` + `delphi-review` | + `design-shotgun` | (同 web) | (同) |
|
|
411
|
+
| Phase 2 (BUILD) | TDD + blind-review | (同 backend) | + `vercel-react-native-skills` (RN) / `flutter-review` (Flutter) | (同) |
|
|
412
|
+
| Phase 3 (REVIEW) | `delphi-review --mode code-walkthrough` + `test-specification-alignment` + `k6` / `locust` / `gatling` | + `qa` + `design-review` + `benchmark` | Flutter: `flutter-test` / RN: `detox E2E` | k6/locust/gatling (补充 API 测试后的负载测试验证) |
|
|
413
|
+
| Phase 5 (FEEDBACK) | `learn` + `retro` | (同) | (同) | (同) |
|
|
414
|
+
| Phase 6 (SHIP) | `finishing-a-development-branch` + `ship` | (同) | + platform deploy (可选) | (同) |
|
|
415
|
+
| Phase 7 (LAND) | `land-and-deploy` + canary | (同) | (同) | (同) |
|
|
416
|
+
| Phase 8 (CLEANUP) | worktree remove + state update | (同) | (同) | (同) |
|
|
417
|
+
| Browse | `localhost:3000` | 部署 URL + 表单/交互 | Flutter Web / RN Web 测试 | (专用负载测试) |
|
|
418
|
+
|
|
419
|
+
**Mobile 专属工具链**:
|
|
420
|
+
- **Flutter**: `flutter analyze`, `flutter test`, `flutter build`, `pub publish`
|
|
421
|
+
- **React Native**: `metro`, `detox`, `jest`, `react-native run-ios/android`
|
|
422
|
+
|
|
423
|
+
---
|
|
424
|
+
|
|
425
|
+
## 状态管理
|
|
426
|
+
|
|
427
|
+
### Sprint State
|
|
428
|
+
|
|
429
|
+
```yaml
|
|
430
|
+
Sprint State:
|
|
431
|
+
id: sprint-YYYY-MM-DD-NN
|
|
432
|
+
phase: [-1, 0-6] # -1=ISOLATE, 0-6=各阶段
|
|
433
|
+
status: [pending, running, paused, completed, failed] # 统一状态
|
|
434
|
+
pause_reason: [none, wait_isolation, wait_approved, wait_gate1, wait_uat, wait_ship, wait_user_confirm]
|
|
435
|
+
isolation: # Phase -1 隔离信息
|
|
436
|
+
worktree_path: .worktrees/sprint/sprint-YYYY-MM-DD-NN
|
|
437
|
+
branch: sprint/YYYY-MM-DD-NN
|
|
438
|
+
created_from: main
|
|
439
|
+
created_from_commit: abc123def...
|
|
440
|
+
|
|
441
|
+
存储位置: <project-root>/.sprint-state/
|
|
442
|
+
├─ sprint-state.yaml # 当前 Sprint 状态
|
|
443
|
+
├─ sprint-state.json # 当前 Sprint 状态 (JSON 格式,同上)
|
|
444
|
+
└─ phase-outputs/
|
|
445
|
+
├─ pain-document.md # Phase 0 输出
|
|
446
|
+
├─ specification.yaml # Phase 1 输出
|
|
447
|
+
├─ mvp-v1/ # Phase 2 输出
|
|
448
|
+
├─ review-report.md # Phase 3 输出
|
|
449
|
+
├─ emergent-issues.md # Phase 4 输出
|
|
450
|
+
├─ feedback-log.md # Phase 5 输出
|
|
451
|
+
└─ sprint-summary.md # Phase 6 输出
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
### Sprint 2 自动触发机制
|
|
455
|
+
|
|
456
|
+
```yaml
|
|
457
|
+
Sprint 结束时 (Phase 6 完成):
|
|
458
|
+
IF emergent_issues_count == 0 → sprint_completed,结束流程
|
|
459
|
+
IF emergent_issues_count > 0 → sprint_2_needed:
|
|
460
|
+
├─ IF emergent_issues 有 Critical → 自动启动 Sprint 2
|
|
461
|
+
├─ IF emergent_issues 仅 Major/Minor → 询问用户
|
|
462
|
+
└─ Sprint 2 Pain Document 自动从 emergent-issues.md 转化
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
---
|
|
466
|
+
|
|
467
|
+
## 使用示例
|
|
468
|
+
|
|
469
|
+
### 示例 1:完整流程
|
|
470
|
+
|
|
471
|
+
```bash
|
|
472
|
+
/sprint-flow "开发访谈机器人,支持多轮对话"
|
|
473
|
+
|
|
474
|
+
# 输出:
|
|
475
|
+
# Phase 0: brainstorming 需求探索 → 设计文档 → ⚠️ HARD-GATE: 等待用户 APPROVED
|
|
476
|
+
# 用户 APPROVED → 自动进入 Phase 1
|
|
477
|
+
# Phase 1: autoplan 发现 2 个 taste_decisions → ⚠️ 暂停
|
|
478
|
+
# 用户确认决策后 → delphi-review → Round 1 REQUEST_CHANGES
|
|
479
|
+
# 修复 → Round 2 APPROVED → specification.yaml
|
|
480
|
+
# Phase 2: TDD + freeze + review → verification → MVP v1
|
|
481
|
+
# Phase 3: cross-model-review APPROVED → browse QA 通过
|
|
482
|
+
# Phase 4: ⚠️ 用户验收 → 发现 1 个 Major emergent issue
|
|
483
|
+
# Phase 5: learn → 记录 → Sprint 2 Pain Document
|
|
484
|
+
# Phase 6: ship → PR → 用户确认合并 → canary 监控
|
|
485
|
+
# → Sprint Summary → 发现 emergent issue → 提示是否开始 Sprint 2
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
### 示例 2:中断恢复
|
|
489
|
+
|
|
490
|
+
```bash
|
|
491
|
+
# 第一次:执行到 Plan 后停止
|
|
492
|
+
/sprint-flow "开发用户认证模块" --stop-at plan
|
|
493
|
+
# → 输出 specification.yaml
|
|
494
|
+
|
|
495
|
+
# 第二次:三天后继续
|
|
496
|
+
/sprint-flow "继续开发" --resume-from build --spec docs/specification.yaml
|
|
497
|
+
# → 跳过 Think + Plan,直接从 Build 开始
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
### 示例 3:语言特定
|
|
501
|
+
|
|
502
|
+
```bash
|
|
503
|
+
/sprint-flow "开发 REST API" --lang django
|
|
504
|
+
# Phase 2 自动调用 django-tdd + django-verification
|
|
505
|
+
# Gate 1 包含 Django 特定的验证(migrations, linting, coverage)
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
### 示例 4:使用 --mode parallel(旧有并行模式)
|
|
509
|
+
|
|
510
|
+
```bash
|
|
511
|
+
/sprint-flow "修改单行配置" --mode parallel
|
|
512
|
+
# 小改动可使用旧有并行模式,一次 dispatch 完成
|
|
513
|
+
# 注意:默认 ralph-loop 模式已覆盖绝大多数场景
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
### 示例 4b:仅验证隔离(--stop-at isolate)
|
|
517
|
+
|
|
518
|
+
```bash
|
|
519
|
+
/sprint-flow "开发用户登录" --stop-at isolate
|
|
520
|
+
# → 仅执行 Phase -1 ISOLATE
|
|
521
|
+
# → 检测 main 分支 → 创建 worktree → setup → .gitignore → baseline
|
|
522
|
+
# → 输出 worktree 路径 → 停止
|
|
523
|
+
# 适用场景:手动验证隔离是否正常创建,后续手动决定是否继续
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
### 示例 5:Worktree 隔离(默认行为)
|
|
527
|
+
|
|
528
|
+
```bash
|
|
529
|
+
/sprint-flow "开发用户登录"
|
|
530
|
+
# Phase -1 ISOLATE:
|
|
531
|
+
# → 检测当前在 main 分支(保护分支)→ 强制创建 worktree
|
|
532
|
+
# → mkdir -p .worktrees/sprint
|
|
533
|
+
# → 检测已有 NN 编号(.worktrees/sprint/ | grep -oE '[0-9]{2}$' | sort -n | tail -1)
|
|
534
|
+
# → git worktree add .worktrees/sprint/sprint-2026-05-24-01 -b sprint/2026-05-24-01
|
|
535
|
+
# → 在 worktree 目录下: npm install → 基线测试 → .sprint-state/ 记录
|
|
536
|
+
# → 进入 Phase 0 THINK...
|
|
537
|
+
|
|
538
|
+
# 跳过隔离(⚠️ 有污染风险)
|
|
539
|
+
/sprint-flow "开发用户登录" --no-isolate
|
|
540
|
+
# → [WARN] 未创建 worktree 隔离,在 main 分支上直接运行 sprint 有污染风险
|
|
541
|
+
# → 直接进入 Phase 0
|
|
542
|
+
|
|
543
|
+
# 强制跳过(需用户确认)
|
|
544
|
+
/sprint-flow "开发用户登录" --force
|
|
545
|
+
# → [WARN] 使用 --force 在 main 分支上直接运行 sprint → 等待用户确认 → 确认后进入 Phase 0
|
|
546
|
+
|
|
547
|
+
# 自定义分支名
|
|
548
|
+
/sprint-flow "开发用户登录" --branch-name feat/user-login
|
|
549
|
+
# → 分支名: feat/user-login(保留 /)
|
|
550
|
+
# → worktree 路径: .worktrees/sprint/feat-user-login(/ 替换为 -)
|
|
551
|
+
|
|
552
|
+
# 🧹 Sprint 完成后清理
|
|
553
|
+
git worktree remove .worktrees/sprint/sprint-2026-05-24-01
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
---
|
|
557
|
+
|
|
558
|
+
## 底层 Skills 保持独立
|
|
559
|
+
|
|
560
|
+
所有被调用的 Skills 保持独立可用:
|
|
561
|
+
- 用户可以直接调用 `delphi-review` 单独评审
|
|
562
|
+
- 用户可以直接调用 `test-driven-development` 单独执行 TDD
|
|
563
|
+
- sprint-flow 只是自动串联调用,不替代底层 Skills
|
|
564
|
+
|
|
565
|
+
---
|
|
566
|
+
|
|
567
|
+
## References
|
|
568
|
+
|
|
569
|
+
详细指令文件位于 `@references/`:
|
|
570
|
+
- `@references/phase-minus-1-isolate.md` — Phase -1 详细指令
|
|
571
|
+
- `@references/phase-0-think.md` — Phase 0 详细指令
|
|
572
|
+
- `@references/phase-1-plan.md` — Phase 1 详细指令
|
|
573
|
+
- `@references/phase-2-build.md` — Phase 2 详细指令
|
|
574
|
+
- `@references/phase-3-review.md` — Phase 3 详细指令
|
|
575
|
+
- `@references/phase-4-uat.md` — Phase 4 详细指令(人工)
|
|
576
|
+
- `@references/phase-5-feedback.md` — Phase 5 详细指令
|
|
577
|
+
- `@references/phase-6-ship.md` — Phase 6 详细指令
|
|
578
|
+
|
|
579
|
+
---
|
|
580
|
+
|
|
581
|
+
## Templates
|
|
582
|
+
|
|
583
|
+
模板文件位于 `@templates/`:
|
|
584
|
+
- `@templates/pain-document-template.md` — Pain Document 模板
|
|
585
|
+
- `@templates/emergent-issues-template.md` — Emergent Issues 检查清单
|
|
586
|
+
- `@templates/sprint-summary-template.md` — Sprint Summary 模板
|
|
587
|
+
|
|
588
|
+
---
|
|
589
|
+
|
|
590
|
+
## 研究证据
|
|
591
|
+
|
|
592
|
+
| 证据 | 来源 | 应用 |
|
|
593
|
+
|------|------|------|
|
|
594
|
+
| One-shot = 单次迭代执行 | Boris Cherny interview | Phase 2 设计 |
|
|
595
|
+
| 80% session 从 Plan Mode 开始 | Boris skill | Phase 1 设计 |
|
|
596
|
+
| Verification improves 2-3x | Boris #1 tip | Phase 3 设计 |
|
|
597
|
+
| Emergent requirements 无法消除 | Mike Cohn, Rafael Santos | Phase 4 人工设计 |
|
|
598
|
+
| 78% failures invisible | arXiv research | Phase 4 必要性证明 |
|
|
599
|
+
| Think → Plan → Build → Ship | gstack ETHOS | 整体流程设计 |
|
|
600
|
+
|