with one click
branch-finisher
分支开发完成后的收尾工作执行器,负责测试验证、worktree 清理。 使用场景:分支开发完成后的收尾工作
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
分支开发完成后的收尾工作执行器,负责测试验证、worktree 清理。 使用场景:分支开发完成后的收尾工作
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Aria 项目级配置加载器(内部基础设施)。 查找、解析、验证 .aria/config.json 并合并默认值。 此 Skill 不直接触发,由其他 Skills 引用以读取项目配置。
项目状态扫描与智能工作流推荐,十步循环的统一入口。 收集项目状态、分析变更、推荐最佳工作流、引导用户确认执行。 使用场景:"查看项目当前状态"、"我要提交代码"、"开发新功能"
会话收尾 —— 在任意对话(含未走完十步循环的探索/调试/讨论 session)把"未交接成果" 固化为 handoff。**与十步循环正交平级的会话仪式**(非周期收尾): AI 先内省本对话出 未完成线程 + 待固化经验, 再用机械 autofill 交叉核验补漏, 写 docs/handoff/。leaf — 终结于写交接, 不拖入十步循环。 使用场景: "对话收尾" / "执行对话收尾" / "会话收尾" / "session closeout" / "收尾这次对话" / "写交接" / "写 handoff" / "收工" / "结束本次对话" / context 快满时主动收尾。 不适用 (用 phase-d-closer): "Phase D" / "周期收尾" / "归档 Spec" / "更新 cycle 进度" —— 那是开发周期收尾, 不是会话收尾。
Git 多远程 parity 检测与 push 验证的共享基础设施。 内部工具, 仅供其他 skills 引用。提供标准化 Bash/Python 执行脚本段 + 输出 JSON schema 契约。
任务到 Agent 的智能路由器,根据任务类型、文件路径自动选择最合适的 Agent。 使用场景:subagent-driver 需要为任务选择 Agent、不确定应该使用哪个 Agent
向 Aria 维护团队报告 Bug 或提交功能建议。自动收集环境信息, 自动路由到 Forgejo(内部用户)或 GitHub(外部用户)。 使用场景:"报告 bug"、"report an issue"、"提交功能建议"、 "aria 有个问题想反馈"、"feature request"、"提 issue"、 "反馈问题"、"report bug to aria"
| name | branch-finisher |
| description | 分支开发完成后的收尾工作执行器,负责测试验证、worktree 清理。 使用场景:分支开发完成后的收尾工作 |
| disable-model-invocation | false |
| user-invocable | true |
| allowed-tools | Bash, Read, Grep, Task |
版本: 1.0.0 | 十步循环: B.2 → C.1 更新: 2026-01-21 - 初始版本
| 场景 | 使用 branch-finisher? |
|---|---|
| 完成分支开发,准备提交 | ✅ 是 |
| 需要运行测试验证 | ✅ 是 |
| 需要清理 worktree | ✅ 是 |
| 刚开始开发 | ❌ 否,使用 branch-manager |
| 代码审查中 | ❌ 否,使用 subagent-driver |
执行前读取 .aria/config.json,缺失则使用默认值。参见 config-loader。
| 字段 | 默认值 | 说明 |
|---|---|---|
benchmarks.require_before_merge | true | 合并前是否要求 AB 基准测试 |
| 功能 | 说明 |
|---|---|
| 测试前置验证 | 确保所有测试通过后才能继续 |
| 4 选项完成流程 | 提供标准化的完成选项 |
| Worktree 清理 | 智能决策是否清理 worktree |
| 状态同步 | 与 subagent-driver 状态同步 |
┌─────────────────────────────────────────────────────────────┐
│ Branch Finisher 执行流程 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 接收完成信号 │
│ ├─ 来自 subagent-driver (所有任务完成) │
│ └─ 来自用户手动触发 │
│ │
│ 2. 测试前置验证 │
│ ├─ 运行测试套件 │
│ ├─ 检查测试覆盖率 │
│ └─ 验证构建成功 │
│ │
│ 2.5 Skill 变更 AB 验证 (v1.7.0 新增) │
│ ├─ 检测分支 diff 中是否包含 SKILL.md 变更 │
│ ├─ Zone 分类: 逻辑变更 vs 文档变更 │
│ ├─ 检查 ab-results/ 中是否有新鲜 AB 结果 │
│ └─ 缺失时: warn/block (由 config 控制) │
│ 详见 references/ab-benchmark-gate.md │
│ │
│ 3. 变更摘要 │
│ ├─ 收集所有变更文件 │
│ ├─ 统计代码行数变化 │
│ └─ 列出完成的任务 │
│ │
│ 4. 4 选项完成流程 │
│ ├─ [1] 提交并创建 PR │
│ ├─ [2] 继续修改 │
│ ├─ [3] 放弃变更 │
│ └─ [4] 暂停保存 │
│ │
│ 5. Worktree 清理决策 │
│ ├─ 选项 1: 清理 worktree │
│ ├─ 选项 2: 保留 worktree │
│ └─ 选项 3: 稍后决定 │
│ │
│ 6. 执行选择的操作 │
│ └─ 调用相应的后续 skill │
│ │
└─────────────────────────────────────────────────────────────┘
| 验证项 | 说明 | 阻塞级别 |
|---|---|---|
| 单元测试 | 所有单元测试通过 | 阻塞 |
| 集成测试 | 集成测试通过 (如有) | 阻塞 |
| 类型检查 | TypeScript/mypy 等类型检查 | 阻塞 |
| Lint 检查 | ESLint/Pylint 等代码检查 | 警告 |
| 构建验证 | 项目可以成功构建 | 阻塞 |
| 覆盖率检查 | 测试覆盖率达标 (可选) | 警告 |
| Skill AB 验证 | SKILL.md 逻辑变更需要 AB 测试结果 (详见) | 可配置 (warn/block) |
测试验证流程:
1. 检测项目类型:
- Node.js: npm test / pnpm test
- Python: pytest / python -m unittest
- Rust: cargo test
- Flutter: flutter test
- Go: go test ./...
2. 运行测试:
- 执行测试命令
- 收集测试结果
- 记录失败的测试
3. 验证结果:
- 全部通过 → 继续
- 有失败 → 阻塞,显示失败详情
- 有警告 → 显示警告,询问是否继续
成功输出:
tests:
total: 42
passed: 42
failed: 0
skipped: 0
coverage: 85%
build: success
lint: pass
失败输出:
tests:
total: 42
passed: 40
failed: 2
skipped: 0
failed_tests:
- test_auth.py::test_login_invalid_password
- test_auth.py::test_register_duplicate_email
build: success
lint: 3 warnings
┌─────────────────────────────────────────────────────────────┐
│ 4 选项完成流程 │
├─────────────────────────────────────────────────────────────┤
│ │
│ [1] 提交并创建 PR (Commit & PR) │
│ → 提交所有变更 │
│ → 创建 Pull Request │
│ → 清理 worktree (如适用) │
│ │
│ [2] 继续修改 (Continue Editing) │
│ → 返回开发状态 │
│ → 保留所有变更 │
│ → 可以继续使用 subagent-driver │
│ │
│ [3] 放弃变更 (Discard Changes) │
│ → 撤销所有变更 │
│ → 删除分支 │
│ → 清理 worktree (如适用) │
│ │
│ [4] 暂停保存 (Pause & Save) │
│ → 保存当前状态 │
│ → 可以稍后恢复 │
│ → 保留 worktree │
│ │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ │
│ ✅ 分支开发完成 │
│ │
│ 分支: feature/backend/TASK-001-user-auth │
│ 模式: Worktree (L2 隔离) │
│ │
│ 测试验证: ✅ 通过 (42/42) │
│ 覆盖率: 85% │
│ 构建: ✅ 成功 │
│ │
│ 变更摘要: │
│ - 修改: 5 个文件 (+142, -28) │
│ - 新增: 2 个文件 (+85) │
│ - 删除: 0 个文件 │
│ │
│ 完成的任务: │
│ ✅ TASK-001: 实现用户认证 │
│ ✅ TASK-002: 添加登录 API │
│ ✅ TASK-003: 添加注册 API │
│ │
│ 请选择下一步: │
│ [1] 提交并创建 PR │
│ [2] 继续修改 │
│ [3] 放弃变更 │
│ [4] 暂停保存 │
│ │
│ 选择 [1/2/3/4]: _ │
│ │
└─────────────────────────────────────────────────────────────┘
| 选项 | 清理 Worktree? | 原因 |
|---|---|---|
| [1] 提交并创建 PR | ✅ 是 (默认) | 开发完成,不再需要 |
| [2] 继续修改 | ❌ 否 | 还需要继续开发 |
| [3] 放弃变更 | ✅ 是 | 变更已撤销 |
| [4] 暂停保存 | ❌ 否 | 稍后可能恢复 |
Worktree 清理流程:
1. 确认清理:
- 显示 worktree 路径
- 询问用户确认
2. 执行清理:
- cd 回主目录
- git worktree remove {path}
- git worktree prune
3. 验证清理:
- 检查 worktree 已删除
- 检查分支状态
┌─────────────────────────────────────────────────────────────┐
│ │
│ Worktree 清理 │
│ │
│ 路径: .git/worktrees/TASK-001-user-auth │
│ 大小: 约 50MB │
│ │
│ 请选择: │
│ [1] 立即清理 (推荐) │
│ [2] 保留 worktree │
│ [3] 稍后决定 │
│ │
│ 选择 [1/2/3]: _ │
│ │
└─────────────────────────────────────────────────────────────┘
| 参数 | 必需 | 说明 | 示例 |
|---|---|---|---|
branch_name | ✅ | 分支名 | feature/backend/TASK-001-user-auth |
session_id | ❌ | subagent-driver 会话 ID | sess-20260121-001 |
worktree_path | ❌ | worktree 路径 (如适用) | .git/worktrees/TASK-001 |
skip_tests | ❌ | 跳过测试验证 (不推荐) | false |
auto_cleanup | ❌ | 自动清理 worktree | false |
成功输出 (选项 1):
action: "commit_and_pr"
branch_name: "feature/backend/TASK-001-user-auth"
commit_hash: "abc1234"
pr_url: "https://forgejo.example.com/repo/pulls/42"
worktree_cleaned: true
next_step: "等待 PR 审核"
成功输出 (选项 2):
action: "continue_editing"
branch_name: "feature/backend/TASK-001-user-auth"
worktree_path: ".git/worktrees/TASK-001-user-auth"
next_step: "继续开发"
成功输出 (选项 3):
action: "discard_changes"
branch_deleted: true
worktree_cleaned: true
next_step: "返回 develop 分支"
成功输出 (选项 4):
action: "pause_and_save"
state_file: ".claude/branch-state/TASK-001.yaml"
resume_command: "branch-finisher --resume TASK-001"
next_step: "稍后恢复"
集成点:
输入:
- session_id: 从 subagent-driver 获取
- completed_tasks: 已完成的任务列表
- changes: 所有变更文件
触发:
- subagent-driver 所有任务完成时自动触发
- 或用户手动调用
输出:
- 完成状态反馈给 subagent-driver
- 更新会话状态
集成点:
选项 1 (提交并创建 PR):
- 调用 commit-msg-generator 生成提交消息
- 调用 branch-manager C.2 创建 PR
选项 3 (放弃变更):
- 调用 branch-manager 删除分支
Worktree 清理:
- 使用 branch-manager 的 worktree 清理模板
集成点:
测试验证:
- 调用 tdd-enforcer 运行测试
- 获取测试结果和覆盖率
- 验证 TDD 流程完整性
| 场景 | 为什么危险 | 正确做法 |
|---|---|---|
| 跳过测试验证 | 可能提交有 bug 的代码 | 始终运行测试 |
| 测试失败仍提交 | 破坏主分支稳定性 | 修复测试后再提交 |
| 不清理 worktree | 磁盘空间浪费 | 完成后清理 |
| 放弃大量变更 | 工作丢失 | 确认前仔细检查 |
| 职责 | 说明 |
|---|---|
| 测试验证 | 确保代码质量 |
| 完成流程 | 提供标准化的完成选项 |
| Worktree 清理 | 管理 worktree 生命周期 |
| 状态同步 | 与其他 skills 协调 |
| 不负责 | 说明 | 谁负责 |
|---|---|---|
| 代码编写 | 具体实现 | subagent-driver |
| 分支创建 | 创建新分支 | branch-manager |
| PR 创建 | 创建 Pull Request | branch-manager (C.2) |
| 代码审查 | 审查代码质量 | subagent-driver |
# 完成分支开发
branch-finisher --branch feature/backend/TASK-001-user-auth
# 从 subagent-driver 会话恢复
branch-finisher --session sess-20260121-001
# 跳过测试 (不推荐)
branch-finisher --branch feature/backend/TASK-001 --skip-tests
# 自动清理 worktree
branch-finisher --branch feature/backend/TASK-001 --auto-cleanup
# workflow-runner 调用
Phase B:
B.1: branch-manager --mode auto
B.2: subagent-driver --tasks ${TASK_LIST}
B.2.5: branch-finisher --session ${SESSION_ID} # 新增
Phase C:
C.1: commit-msg-generator
C.2: branch-manager --create-pr
最后更新: 2026-01-21 Skill版本: 1.0.0