一键导入
team-finish
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - merge, PR, or cleanup
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - merge, PR, or cleanup
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when task needs full spec→impl→test→review pipeline with CONFIRM_GOAL-HUMAN_ACCEPT human checkpoints and directed-graph rollback
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes
Use when code + tests exist and you need structured review + asset update
Use when starting a new feature, need SDD spec, or requirements are ambiguous
Use when requirements are fuzzy, need to discuss and form a plan before writing code
Use when receiving code review feedback, before implementing suggestions - requires technical verification, not performative agreement
| name | team-finish |
| description | Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - merge, PR, or cleanup |
CRITICAL: DO NOT use EnterPlanMode. This skill defines its own structured workflow. Follow STEPS below directly.
分支生命周期:
team-orchestrator在 CONFIRM_GOAL 确认后创建功能分支(Step 1.5),本 Skill 在流程尾部(Step 7)负责分支收尾。
角色:分支完成处理——验证测试 → 展示选项 → 执行选择 → 清理
核心原则:测试未通过不展示选项,用户未选择不执行操作
测试未通过 = 不展示合并选项
_team-rules/first-principles.md: First Principle #4。用户未选择 = 不执行操作_team-rules/first-principles.md: First Principle #1。每步有明确前置条件。
推理框架:
对抗自检:
NO BRANCH COMPLETION WITHOUT TEST VERIFICATION FIRST
| 质量维度 | 产出文件 |
|---|---|
| 测试验证 | 测试命令输出 |
| 分支处理 | 合并/PR 结果 |
| 清理确认 | 工作目录状态 |
| 知识沉淀 | 13-retrospective.md、15-brief.md(编排模式) |
| 进度追踪 | progress.md 更新(编排模式) |
| 来源 | 必需 | 说明 |
|---|---|---|
| 功能分支(全部测试通过) | required | 待合并的工作分支 |
base_branch | required | 合并目标分支(通常为 main/master) |
task-rules.md | 可选 | 任务级规则(mode == orchestrated 时需合并到项目级) |
progress.md | 可选 | 进度账本(mode == orchestrated 时需更新) |
用新鲜执行结果确认代码可交付。"上次跑过了"不是证据——只有当次输出才是。
TRAP:你会倾向于引用上一轮的测试结果来跳过重新执行。Iron Law 不允许——每次进入 finish 都必须重新运行。
RESOLVE verify_cmd(首个命中即停):
READ("05-risk.md", "§一验证计划")(精简模式下不存在属于正常)READ("CLAUDE.md").verify_cmd / READ(".cursor/rules/")READ("package.json").scripts.test / READ("Makefile") / READ("Cargo.toml") / READ("CI 配置")EXEC verify_cmd → ASSERT exit_code == 0 && failures == 0
mode:
orchestrated → ROLLBACK 编排器,向编排器报告:建议路由到 team-impl(附上失败输出)team-debug,修复后 GOTO Step 1不可忽略失败继续展示选项
_team-rules/first-principles.md: First Principle #4。
推送前最后一道安全防线。凭证泄露一旦进入远程仓库,撤回成本极高。
EXEC grep -rn -E '(AK|SK|access[_-]?key|secret[_-]?key|api[_-]?key|token|password|passwd|credential)\s*[:=]' . — 推送前凭证扫描(team-security: RED_LINE_2)
exit_code == 0 → 逐条排除占位符/测试值/注释 → 真实凭证 → BLOCKED,WRITE(对话中)凭证位置,要求修复后重新验证精确找到合并目标。基准错误 = 合并到错误分支,后果比不合并更糟。
EXEC git branch --show-current → ASSERT exit_code == 0 → 获取 branch
RESOLVE base_branch(首个命中即停):
READ("docs/tasks/{slug}/.checkpoint.json").base_branchREAD("CLAUDE.md").base_branch / READ(".cursor/rules/").default_branchEXEC("git symbolic-ref refs/remotes/origin/HEAD") → 解析分支名name IN [main, master, develop] → EXEC("git show-ref --verify refs/heads/{name}") 首个存在即停git branch --list 和 git remote -v,让用户指定EXEC git merge-base HEAD {base_branch} → 获取合并基点
ASSERT exit_code == 0
IF branch == base_branch → WRITE(对话中)"当前已在基准分支 {base_branch} 上,无功能分支需要完成。" → BLOCKED
让用户在完整信息下做选择。选项列表必须覆盖所有合理路径,不替用户预判。
WRITE(对话中)选项列表:
当前分支:{branch},基准分支:{base_branch}
实现完成,测试已通过。请选择集成方式:
1. [默认] 合并到 {base_branch} 并推送
→ push {branch}(留档) → 切换到 {base_branch} → merge → push → 清理 {branch}
适用:有合并权限,可直接集成
2. 创建 Pull Request
→ push {branch} → 创建 PR 等待审查
适用:需要 Code Review 或 CI 门禁
3. 保留当前分支
→ 不做任何操作,{branch} 原样保留
适用:尚需打磨,或等待外部依赖就绪
4. 丢弃本次工作(需二次确认)
→ 切换到 {base_branch} → 强制删除 {branch}
适用:实验性工作,确认不再需要
请选择 [1]:
严格按用户选择执行,不添加未要求的操作。不可逆操作必须二次确认。
TRAP:合并成功后你会倾向于跳过重新测试("刚才不是通过了吗")。合并引入的代码交互可能导致回归——必须重新验证。
MATCH user_choice:
Option 1(合并到 {base_branch} 并推送,默认):
git push -u origin {branch}
exit_code == 0
git checkout {base_branch} && git pull
exit_code == 0
git merge {branch} --no-ff
_team-rules/verification-protocol.md: 验证执行步骤
exit_code == 0 && failures == 0
git push
exit_code == 0
git branch -d {branch}
exit_code != 0 → WRITE(对话中)"分支未完全合并,需 -D 强制删除?",等待用户确认Option 2(创建 PR):
git push -u origin {branch}
exit_code == 0
pr_cmd(首个命中即停):
READ("CLAUDE.md").pr_cmd / READ(".cursor/rules/").pr_cmdgh pr create --title "{slug}: {一句话描述}" --body "{变更摘要}"{pr_cmd}
exit_code == 0
Option 3(保留分支):
WRITE(对话中)"保留分支 {branch}。"
Option 4(丢弃):
ASSERT user_input == "discard"
git checkout {base_branch}
exit_code == 0git branch -D {branch}
exit_code == 0DEFAULT(无效输入)→ WRITE(对话中)"请选择 1-4",重新展示选项
WRITE(对话中)冲突文件列表(不自动解决冲突)
MATCH conflict_choice:
A → 手动解决冲突后继续B → 中止合并,改为创建 PRC → 中止合并,保留分支操作完成后工作区必须干净。残留的 worktree 或未提交变更是下次操作的隐患。
SIGNAL:
git status显示未提交变更 → 提交纪律不完整,有文件遗漏在 commit 之外。 SIGNAL:git worktree list仍有关联目录 → 清理未完成,可能影响后续分支操作。
IF user_choice IN [Option 1, Option 2, Option 4]:
git worktree list
output CONTAINS 关联工作目录 → 移除工作目录ELSE:
完成是知识固化的唯一窗口。"下次再整理"等于永远不整理——知识随 context window 关闭而丢失。
TRAP:你会因为"终于要结束了"而跳过知识沉淀。这一步的价值不亚于代码本身——未沉淀的经验下次会重复踩坑。
SIGNAL:
task-rules.md存在可泛化规则但未合并到 CLAUDE.md → 知识流失,下个任务不会继承本次经验。 SIGNAL:测试通过但没有新增测试 → 覆盖率可能存在缺口,需在 retrospective 中记录。
IF mode == orchestrated:
IF docs/tasks/{slug}/task-rules.md EXISTS → READ task-rules.md,将"可泛化"规则合并到项目级 CLAUDE.md / .cursor/rules/
IF docs/tasks/progress.md EXISTS → 追加本任务记录
progress.md,追加记录WRITE docs/tasks/{slug}/13-retrospective.md:
# 个人复盘 — {slug}
## 任务概要
| 维度 | 内容 |
|------|------|
| 目标 | {一句话目标} |
| 实际耗时 | {Phase 数} 个阶段,{回退次数} 次回退 |
| 最终状态 | {DONE / DONE_WITH_CONCERNS} |
## 做得好的
- {具体行为 + 产生的正面效果}
## 待改进的
- {具体问题 + 建议改进方式}
## 新规则沉淀
| 规则 | 触发条件 | 可执行指令 | 已合并到 |
|------|----------|-----------|---------|
| {规则名} | {何时适用} | {具体做什么} | 项目 CLAUDE.md / 未合并 |
WRITE docs/tasks/{slug}/15-brief.md:
# 答辩提纲 — {slug}
## 一句话总结
{做了什么 + 为什么做 + 结果如何}
## 关键决策
| 决策点 | 选择 | 拒绝方案 | 理由 |
|--------|------|---------|------|
| {决策} | {选项} | {备选} | {为什么} |
## 质量证据
- 测试:{通过数}/{总数},覆盖率 {N}%
- Review:P0={N} P1={N} P2={N}(全部已修复 / 有遗留)
- TDD 循环:{N} 个功能点,{N} 次 commit
## 遗留事项
| 事项 | 严重级别 | 处理计划 |
|------|---------|---------|
| {事项} | P{N} | {计划} |
ELSE:
GOOD:测试新鲜通过 → 凭证扫描干净 → 用户选择合并 → 合并后重新测试通过 →
progress.md已更新 →task-rules.md中可泛化规则已合并到 CLAUDE.md → 分支已删除 → 工作区干净。 每一步有证据链,不依赖记忆。
BAD:引用"上次测试通过了"跳过 Step 1 → 合并后未重新测试 →
progress.md未更新 →task-rules.md有可泛化规则但"下次再合并" → 工作区残留未提交文件。 典型的"终于要结束了"心态——降低标准换取速度。
REF _team-rules/constitutional-rules.md — 10 条 Constitutional Rules
REF _team-rules/first-principles.md — 4 条第一性原理(First Principle #1 ~ #4)
REF _team-rules/verification-protocol.md — verify_cmd 解析流程与 5 步验证协议
REF _team-rules/task-lifecycle.md — 进度追踪与知识合并(§3)
分支完成阶段尤其注意:
_team-rules/first-principles.md: First Principle #1_team-rules/first-principles.md: First Principle #4_team-rules/first-principles.md: First Principle #4GATE 完成前自检(全部通过才放行):
exit_code == 0 && failures == 0(测试已通过)base_branch NOT_EMPTYuser_choice NOT_EMPTY(用户已选择,非擅自决定)[Option 4] ASSERT user_input == "discard"user_choice == Option 1 → ASSERT merge_test_exit_code == 0(合并后测试通过)user_choice IN [Option 1, Option 2, Option 4] → ASSERT worktree 已清理无占位符残留({N}、{slug} 等已被实际值替换)IRON_LAW 遵守 — 测试通过后才展示选项,未跳过验证mode == orchestrated → ASSERT progress.md 已更新mode == orchestrated && task-rules.md 有可泛化规则 → ASSERT 已合并到 CLAUDE.mdREF _team-rules/four-state-protocol.md — 四态完成状态
MATCH result:
操作成功 → DONE操作成功但有 warning → DONE_WITH_CONCERNS无法确定基准分支 → NEEDS_CONTEXT测试失败 || 合并冲突 → BLOCKED被谁调用:
team-orchestrator(编排模式)配对使用:
team-review — 合并前确认审查已完成team-brainstorm / team-spec — 下一个功能team-brainstorm 或 team-specteam-review