بنقرة واحدة
branch-manager
管理 Git 分支的创建、推送和 PR 流程,支持十步循环中的 B.1 和 C.2。 使用场景:开始新任务时创建分支、完成开发后创建 PR。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
管理 Git 分支的创建、推送和 PR 流程,支持十步循环中的 B.1 和 C.2。 使用场景:开始新任务时创建分支、完成开发后创建 PR。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
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-manager |
| description | 管理 Git 分支的创建、推送和 PR 流程,支持十步循环中的 B.1 和 C.2。 使用场景:开始新任务时创建分支、完成开发后创建 PR。 |
| argument-hint | [branch-name] |
| disable-model-invocation | false |
| user-invocable | true |
| allowed-tools | Bash, Read, Grep |
版本: 2.0.0 | 十步循环: B.1, C.2 更新: 2026-01-20 - 自动模式决策 (单一入口架构)
使用场景:
不使用场景:
commit-msg-generatorstrategic-commit-orchestrator| 功能 | 十步循环 | 描述 |
|---|---|---|
| 自动模式决策 | B.1 | 根据任务复杂度智能选择 Branch/Worktree |
| 创建分支 | B.1 | 验证环境 + 创建规范分支 + 推送远程 |
| 创建 PR | C.2 | 推送分支 + 创建 Forgejo PR + 等待审批 |
新增于 v2.0.0 - 单一入口架构
branch-manager 现在支持自动模式决策,根据任务复杂度智能选择:
系统根据 5 个维度评分,总分 >= 3 分时自动选择 Worktree 模式:
| 评分因素 | 权重 | 评分规则 | 分数 |
|---|---|---|---|
file_count | 低 | 1-3 个文件 | 0 |
| 4-10 个文件 | +1 | ||
| 10+ 个文件 | +3 | ||
cross_directory | 中 | 不跨目录 | 0 |
| 跨目录 | +2 | ||
task_count | 低 | 1-3 个任务 | 0 |
| 4-8 个任务 | +1 | ||
| 8+ 个任务 | +3 | ||
risk_level | 中 | 低 (typo, config) | 0 |
| 中 (小功能) | +1 | ||
| 高 (重构, API 变更) | +3 | ||
parallel_needed | 高 | 不需要并行 | 0 |
| 需要并行开发 | +5 |
决策阈值: score >= 3 → Worktree, score < 3 → Branch
# 示例 1: 简单 bugfix → Branch 模式
输入:
files: ["lib/utils.py"]
task_count: 1
risk_level: low
评分: 0 + 0 + 0 + 0 + 0 = 0
结果: Branch 模式 (简单快速)
# 示例 2: 中等功能 → Branch 模式
输入:
files: 3 个 backend 文件
task_count: 2
risk_level: medium
评分: 0 + 0 + 0 + 1 + 0 = 1
结果: Branch 模式 (单目录修改)
# 示例 3: 跨模块功能 → Worktree 模式
输入:
files: 6 个文件 (backend + frontend)
task_count: 4
risk_level: high
评分: 1 + 2 + 1 + 3 + 0 = 7
结果: Worktree 模式 (隔离开发环境)
# 示例 4: 并行开发需求 → Worktree 模式
输入:
parallel_needed: true
评分: 0 + 0 + 0 + 0 + 5 = 5
结果: Worktree 模式 (并行隔离)
| 参数 | 说明 | 默认值 |
|---|---|---|
mode | auto (智能决策) | branch (强制分支) | worktree (强制隔离) | auto |
# 自动模式 (推荐) - 根据任务自动选择
branch-manager --mode auto --task-id TASK-001
# 强制使用 Branch
branch-manager --mode branch --task-id TASK-001
# 强制使用 Worktree
branch-manager --mode worktree --task-id TASK-001
系统根据描述关键词自动检测风险等级:
| 关键词 | 风险等级 |
|---|---|
| typo, format, lint, config, doc | low |
| refactor, architecture, api, breaking | high |
| 其他 | medium |
详细决策逻辑: 见 internal/MODE_DECISION_LOGIC.md
新增于 v2.0.0 | 自动验证开发环境配置
分支创建前,branch-manager 会自动验证开发环境状态,确保可以顺利开始开发。
action: create (= 进 Phase B.1) 前, 本 session 必须已有 active claim; 无则先跑
phase1_gate.py --raw-track-id <carry-id> --phase B --mode advisory (命令模板见
phase-b-developer SKILL.md §B.0)。直接调 branch-manager 绕过 phase-b-developer 的
session 同样适用。skip 条件: coordination.enabled 显式 false (默认 true) /
非协调项目。advisory — claim 失败不阻断分支创建, 但必须先尝试。
| 验证项 | 说明 | 自动修复 |
|---|---|---|
| Git 状态 | 当前分支、工作目录干净度 | 否 |
| .gitignore | 必需规则完整性 | 是 |
| 包管理器 | npm/pnpm/poetry/cargo/flutter/go 可用性 | 否 |
| 依赖安装 | node_modules/.venv/ 等依赖目录 | 是 |
| 测试基线 | 可选运行测试确保环境正常 | 否 |
自动检查以下必需规则:
| 类别 | 规则 |
|---|---|
| 构建产物 | /build/, /dist/, /target/, *.py[cod] |
| 依赖 | /node_modules/, .venv/, venv/ |
| IDE | .idea/, .vscode/, *.swp |
| 环境变量 | .env, .env.local |
| Worktree | .git/worktrees/ |
发现缺失规则时,会提示是否自动添加。
根据项目类型自动检测:
Node.js:
检测文件: package.json
包管理器: npm, pnpm, yarn
依赖检查: node_modules/
测试命令: npm test
Python:
检测文件: pyproject.toml, requirements.txt
包管理器: poetry, pip, uv
依赖检查: .venv/, venv/
测试命令: pytest
Rust:
检测文件: Cargo.toml
包管理器: cargo
依赖检查: 自动 (无需检查)
测试命令: cargo test
Flutter:
检测文件: pubspec.yaml
包管理器: flutter, dart
依赖检查: .dart_tool/
测试命令: flutter test
Go:
检测文件: go.mod
包管理器: go
依赖检查: 自动 (无需检查)
测试命令: go test ./...
| 参数 | 说明 | 默认值 |
|---|---|---|
skip_gitignore_check | 跳过 .gitignore 验证 | false |
skip_env_check | 跳过环境验证 | false |
run_tests | 运行测试基线 | false |
auto_fix | 自动修复发现的问题 | false |
成功输出:
environment:
gitignore: "valid"
ecosystem: "nodejs"
manager: "pnpm"
manager_version: "8.15.0"
dependencies: "installed"
tests: "skipped" | "passed" | "failed"
警告输出:
warnings:
- ".gitignore 缺少 /node_modules/ 规则"
- "依赖未完全安装"
错误输出:
errors:
- "找不到包管理器 (npm/pnpm/yarn)"
- "当前不在 develop 分支"
详细验证逻辑: 见 internal/GITIGNORE_VALIDATOR.md 和 internal/ENVIRONMENT_VALIDATOR.md
| 参数 | 必需 | 说明 | 示例 |
|---|---|---|---|
mode | ❌ | 模式选择 (默认 auto) | auto, branch, worktree |
module | ✅ | 目标模块 | backend, mobile, shared, cross, docs, standards |
task_id | ✅ | 任务标识 | TASK-001, ISSUE-42 |
description | ✅ | 简短描述 | user-auth, login-ui |
files | ❌ | 预期修改的文件列表 (用于自动决策) | ["lib/file.py"] |
task_count | ❌ | 预计任务数量 (用于自动决策) | 3 |
risk_level | ❌ | 风险等级 (自动检测) | low, medium, high |
parallel_needed | ❌ | 是否需要并行开发 | true, false |
branch_type | ❌ | 分支类型 (默认 feature) | feature, bugfix, hotfix, release, experiment |
in_submodule | ❌ | 是否在子模块内操作 | true, false (默认) |
B.1.0 - 模式决策 (mode=auto 时):
- 收集上下文: files, task_count, risk_level, parallel_needed
- 执行评分算法 (5 维度评分)
- 决定模式: score >= 3 → worktree, else → branch
- 输出决策结果和理由
B.1.1 - 环境验证:
- 确认当前在正确的工作目录
- 确认在 develop 分支
- 确认工作目录干净 (无未提交变更)
B.1.1.5 - .gitignore 验证 (新增):
- 检查 .gitignore 文件是否存在
- 验证必需规则 (构建产物、依赖、IDE、环境变量、worktree)
- 发现缺失? → 提示自动修复
B.1.1.6 - 开发环境验证 (新增):
- 检测项目类型 (Node/Python/Rust/Flutter/Go)
- 检查包管理器可用性 (npm/pnpm/poetry/cargo/flutter/go)
- 检查依赖安装状态
- 可选: 运行测试基线
B.1.1.7 - 拉取最新代码:
- git pull origin develop
B.1.2 - 分支创建 (根据模式):
模式 A - Branch:
- 生成分支名: {branch_type}/{module}/{task_id}-{description}
- 创建本地分支: git checkout -b {branch_name}
- 推送远程: git push -u origin {branch_name}
模式 B - Worktree:
- 生成分支名: {branch_type}/{module}/{task_id}-{description}
- 创建 worktree: git worktree add .git/worktrees/{task_id}-{desc} {branch_name}
- 输出 worktree 路径
| 类型 | 格式 | 示例 |
|---|---|---|
| feature | feature/{module}/{task-id}-{desc} | feature/backend/TASK-001-user-auth |
| bugfix | bugfix/{module}/{issue}-{desc} | bugfix/mobile/ISSUE-42-login-crash |
| hotfix | hotfix/{version}-{desc} | hotfix/v1.2.1-security-patch |
| release | release/{version} | release/v1.3.0 |
| experiment | experiment/{name} | experiment/openspec-pilot |
| 模块 | 标识符 | 说明 |
|---|---|---|
| Backend | backend | Python/FastAPI 服务 |
| Mobile | mobile | Flutter 应用 |
| Shared | shared | API 契约、schemas |
| Cross-module | cross | 多模块变更 |
| Documentation | docs | 仅文档变更 |
| Standards | standards | AI-DDD 规范 |
当 in_submodule=true 时:
# 1. 进入子模块目录
cd {submodule_path} # 如 backend/, mobile/
# 2. 确保子模块 develop 最新
git checkout develop
git pull origin develop
# 3. 创建分支 (在子模块内)
git checkout -b feature/{module}/{task-id}-{desc}
git push -u origin feature/{module}/{task-id}-{desc}
# 4. 返回主仓库 (提醒用户)
cd ..
# 提醒: 完成后需要在主仓库更新子模块指针
新增于 v1.2.0
Git Worktrees 允许在同一个仓库中同时检出多个分支到不同的工作目录,实现干净并行的开发。
| 场景 | 传统方式 | Worktrees 方式 |
|---|---|---|
| 同时开发多个功能 | 频繁切换分支,构建缓存失效 | 每个功能独立目录,构建隔离 |
| 紧急 hotfix | stash 当前工作,切换分支 | 直接在 worktree 中修复 |
| 代码审查 | 切换到 PR 分支查看 | 在 worktree 中并行查看 |
| 参数 | 必需 | 说明 | 示例 |
|---|---|---|---|
use_worktree | ❌ | 是否使用 worktree (默认 false) | true, false |
worktree_path | ❌ | worktree 路径 (默认 .git/worktrees/) | custom path |
# B.1 with --worktree flag
git worktree add .git/worktrees/{feature-name} feature/{module}/{task-id}-{desc}
# 完整示例
git worktree add .git/worktrees/TASK-001-user-auth feature/backend/TASK-001-user-auth
cd .git/worktrees/TASK-001-user-auth
repository/
├── .git/
│ ├── worktrees/
│ │ ├── TASK-001-user-auth/
│ │ │ ├── .git # worktree 的 git 文件
│ │ │ ├── lib/
│ │ │ ├── src/
│ │ │ └── tests/
│ │ ├── TASK-002-login-ui/
│ │ │ └── ...
│ │ └── ...
│ └── ...
├── lib/ # 主分支工作区
├── src/
└── tests/
# 列出所有 worktrees
git worktree list
# 创建 worktree
git worktree add <path> <branch>
# 删除 worktree
git worktree remove <path>
# 清理过期的 worktree
git worktree prune
# 移动 worktree
git worktree move <old-path> <new-path>
任务完成后,清理 worktree 目录:
# 切换回主分支
cd ../..
# 删除 worktree
git worktree remove .git/worktrees/TASK-001-user-auth
# 或手动删除
rm -rf .git/worktrees/TASK-001-user-auth
git worktree prune
# 检查所有 worktree 状态
git worktree list --porcelain
# 检查当前 worktree 分支
git branch --show-current
成功输出 (Branch 模式):
mode: "branch"
branch_name: "feature/backend/TASK-001-user-auth"
location: "main_repo" | "submodule:{name}"
remote_push: "success"
decision_reason: "简单修改,使用常规分支"
next_step: "开始 B.2 执行验证"
成功输出 (Worktree 模式):
mode: "worktree"
branch_name: "feature/backend/TASK-001-user-auth"
worktree_path: ".git/worktrees/TASK-001-user-auth"
location: "worktree"
remote_push: "success"
decision_reason: "跨目录修改,使用隔离环境"
next_step: "cd 到 worktree 路径开始开发"
失败输出:
error: "描述错误原因"
suggestion: "建议的解决方案"
| 参数 | 必需 | 说明 | 示例 |
|---|---|---|---|
branch_name | ❌ | 分支名 (默认当前分支) | feature/backend/TASK-001-user-auth |
base_branch | ❌ | 目标分支 (默认 develop) | develop, main |
spec_path | ❌ | Spec 文件路径 | standards/openspec/changes/auth/spec.md |
issue_number | ❌ | 关联的 Issue | 123 |
merge_strategy | ❌ | 合并策略 (默认 squash) | squash, merge, rebase |
auto_merge | ❌ | 自动合并 (默认 false) | true, false |
C.2.1 - 同步检查:
- 获取最新的 develop: git fetch origin develop
- Rebase 到最新: git rebase origin/develop
- 解决冲突 (如有)
C.2.2 - 推送分支:
- 推送到远程: git push origin {branch_name}
- 如果 rebase 后需要: git push --force-with-lease origin {branch_name}
C.2.3 - 创建 PR (Forgejo API):
⚠️ **强制前置检查** (不可跳过):
→ 引用: ../forgejo-sync/PRE_CHECK.md
→ 执行: 读取 forgejo.cloudflare_access.enabled
→ 决定: 使用标准模式或 Cloudflare Access 模式
- 加载环境变量: source ~/.bash_profile
- 根据检查结果选择 API 调用模式
- 调用 Forgejo API 创建 PR
- 检查响应,如遇 403/CF 错误自动提示配置
- 返回 PR URL
C.2.4 - 等待审批:
- 输出 PR URL 供用户查看
- 等待用户确认合并
C.2.5 - 合并 (可选,auto_merge=true 时):
- 同样需要执行前置检查
- 调用 Forgejo API 合并 PR
- 删除远程分支
- 删除本地分支
- 切换回 develop 并更新
标题格式:
{type}({scope}): {中文描述} / {English description}
正文模板:
## Summary
{从 commit 消息或 Spec 提取的摘要}
Implements: `{spec_path}` (如有)
Related Issue: #{issue_number} (如有)
## Changes
- {变更列表,从 git log 提取}
## Test Plan
- [ ] Unit tests pass
- [ ] Integration tests pass (if applicable)
- [ ] Manual testing completed
## Checklist
- [ ] Spec acceptance criteria satisfied
- [ ] Tests passing
- [ ] Documentation updated
- [ ] No security vulnerabilities
⚠️ 重要: 所有 Forgejo API 调用前必须执行前置检查 强制引用:
../forgejo-sync/PRE_CHECK.md前置检查是不可协商的强制步骤,嵌入在执行流程 C.2.3 中。
# 在执行任何 Forgejo API 调用前,必须先执行:
引用: ../forgejo-sync/PRE_CHECK.md
检查流程:
1. 读取 CLAUDE.local.md 中的 forgejo.cloudflare_access.enabled
2. enabled = true → 使用 Cloudflare Access 模式
3. enabled = false → 使用标准模式
4. API 调用失败 (403/CF) → 自动提示配置
标准模式 (无 Cloudflare Access):
curl -X POST "${FORGEJO_API}/repos/10CG/todo-app/pulls" \
-H "Authorization: token ${FORGEJO_TOKEN}" \
-H "Content-Type: application/json; charset=utf-8" \
-d '{
"title": "{pr_title}",
"body": "{pr_body}",
"head": "{branch_name}",
"base": "{base_branch}"
}'
Cloudflare Access 模式 (cloudflare_access.enabled = true):
curl -X POST "${FORGEJO_API}/repos/10CG/todo-app/pulls" \
-H "Authorization: token ${FORGEJO_TOKEN}" \
-H "CF-Access-Client-Id: ${CF_ACCESS_CLIENT_ID}" \
-H "CF-Access-Client-Secret: ${CF_ACCESS_CLIENT_SECRET}" \
-H "Content-Type: application/json; charset=utf-8" \
-d '{
"title": "{pr_title}",
"body": "{pr_body}",
"head": "{branch_name}",
"base": "{base_branch}"
}'
标准模式:
# squash (推荐)
curl -X POST "${FORGEJO_API}/repos/10CG/todo-app/pulls/{pr_number}/merge" \
-H "Authorization: token ${FORGEJO_TOKEN}" \
-H "Content-Type: application/json; charset=utf-8" \
-d '{"Do": "squash"}'
# merge
curl -X POST "${FORGEJO_API}/repos/10CG/todo-app/pulls/{pr_number}/merge" \
-H "Authorization: token ${FORGEJO_TOKEN}" \
-H "Content-Type: application/json; charset=utf-8" \
-d '{"Do": "merge"}'
Cloudflare Access 模式 (添加 CF 头部):
curl -X POST "${FORGEJO_API}/repos/10CG/todo-app/pulls/{pr_number}/merge" \
-H "Authorization: token ${FORGEJO_TOKEN}" \
-H "CF-Access-Client-Id: ${CF_ACCESS_CLIENT_ID}" \
-H "CF-Access-Client-Secret: ${CF_ACCESS_CLIENT_SECRET}" \
-H "Content-Type: application/json; charset=utf-8" \
-d '{"Do": "squash"}'
标准模式:
curl -X DELETE "${FORGEJO_API}/repos/10CG/todo-app/branches/{branch_name}" \
-H "Authorization: token ${FORGEJO_TOKEN}"
Cloudflare Access 模式:
curl -X DELETE "${FORGEJO_API}/repos/10CG/todo-app/branches/{branch_name}" \
-H "Authorization: token ${FORGEJO_TOKEN}" \
-H "CF-Access-Client-Id: ${CF_ACCESS_CLIENT_ID}" \
-H "CF-Access-Client-Secret: ${CF_ACCESS_CLIENT_SECRET}"
在子模块内创建的分支:
子模块 PR 流程:
1. 在子模块仓库创建 PR (如 10CG/todo-app-backend)
2. 合并后,回到主仓库
3. 更新子模块指针:
- git add {submodule_path}
- git commit -m "chore(submodule): update {module} pointer"
4. 主仓库可能也需要创建 PR
成功输出:
pr_url: "https://forgejo.10cg.pub/10CG/todo-app/pulls/42"
pr_number: 42
status: "open" | "merged"
branch_cleanup: "done" | "pending"
next_step: "等待审批" | "开始 D.1 进度更新"
失败输出:
error: "描述错误原因"
suggestion: "建议的解决方案"
用户请求: "开始 TASK-001 用户认证功能开发"
B.1 执行:
输入:
module: backend
task_id: TASK-001
description: user-auth
branch_type: feature
in_submodule: false
执行:
1. git checkout develop && git pull origin develop
2. git checkout -b feature/backend/TASK-001-user-auth
3. git push -u origin feature/backend/TASK-001-user-auth
输出:
✅ 分支创建成功: feature/backend/TASK-001-user-auth
📍 位置: 主仓库
➡️ 下一步: 开始 B.2 执行验证
用户请求: "在 mobile 子模块创建登录 UI 分支"
B.1 执行:
输入:
module: mobile
task_id: TASK-002
description: login-ui
in_submodule: true
执行:
1. cd mobile/
2. git checkout develop && git pull origin develop
3. git checkout -b feature/mobile/TASK-002-login-ui
4. git push -u origin feature/mobile/TASK-002-login-ui
5. cd ..
输出:
✅ 分支创建成功: feature/mobile/TASK-002-login-ui
📍 位置: 子模块 mobile
⚠️ 提醒: 完成后需在主仓库更新子模块指针
用户请求: "C.1 完成,创建 PR"
C.2 执行:
输入:
branch_name: feature/backend/TASK-001-user-auth
base_branch: develop
spec_path: standards/openspec/changes/user-auth/spec.md
merge_strategy: squash
执行:
1. git fetch origin develop
2. git rebase origin/develop
3. git push --force-with-lease origin feature/backend/TASK-001-user-auth
4. source ~/.bash_profile
5. forgejo-api -X POST ... (创建 PR)
输出:
✅ PR 创建成功
🔗 URL: https://forgejo.10cg.pub/10CG/todo-app/pulls/42
📋 状态: 等待审批
➡️ 用户确认合并后,执行 D.1
新增于 v2.0.0 | 使用 branch-manager 时需要注意的危险信号
| 场景 | 为什么危险 | 正确做法 |
|---|---|---|
| 简单修改使用 Worktree | 开销大于收益,浪费磁盘空间 | 使用 --mode branch |
| 复杂跨模块修改使用 Branch | 频繁切换分支,构建缓存失效 | 使用 --mode worktree |
| 强制指定模式但不符合实际 | 可能导致后续开发问题 | 信任 --mode auto 决策 |
| 场景 | 为什么危险 | 正确做法 |
|---|---|---|
| .gitignore 缺少关键规则 | 可能意外提交敏感文件或构建产物 | 运行 --auto-fix 修复 |
| 依赖未安装就开始开发 | 后续测试失败,浪费时间 | 先运行包管理器安装依赖 |
| 跳过测试基线验证 | 环境可能有问题,后续才发现 | 运行 --run-tests 验证 |
| 工作目录不干净 | 可能污染新分支 | 先提交或 stash 变更 |
| 场景 | 为什么危险 | 正确做法 |
|---|---|---|
| 从非 develop 分支创建 | 分支基线不正确 | 先 checkout 到 develop |
| 分支名不规范 | 难以识别和管理 | 遵循 {type}/{module}/{task_id}-{desc} 格式 |
| 子模块分支忘记更新指针 | 主仓库指针过期 | 完成后更新子模块指针 |
| Worktree 完成后不清理 | 磁盘空间浪费 | 运行 git worktree prune 清理 |
| 场景 | 原因 | 替代方案 |
|---|---|---|
| 紧急 hotfix 到 main | 需要直接修复主分支 | 直接在 main 分支操作 |
| 实验性探索 | 不需要规范分支 | 使用 experiment/ 前缀但不推远程 |
| 外部贡献者 PR | 使用 GitHub/Forgejo UI | 通过平台界面创建分支 |
新增于 v2.0.0 | branch-manager 的职责范围和限制
| 职责 | 说明 |
|---|---|
| 分支创建 | 自动创建规范命名的分支 |
| 模式选择 | 根据任务复杂度智能选择 Branch/Worktree |
| 环境验证 | 检查开发环境配置是否正确 |
| 远程推送 | 自动推送分支到远程仓库 |
| PR 创建 | 集成 Forgejo API 创建 PR |
| 不负责 | 说明 | 谁负责 |
|---|---|---|
| 代码编写 | 不涉及具体代码实现 | 开发者 / AI Assistant |
| 测试执行 | 不负责运行完整测试套件 | phase-b-developer (B.2) |
| 代码审查 | 不负责代码质量审查 | subagent-driver |
| 架构同步 | 不负责更新架构文档 | arch-update (B.3) |
| 依赖安装 | 只验证不安装 (除非 auto_fix) | 开发者手动安装 |
branch-manager (B.1)
│
├─ 输出到 → phase-b-developer (B.2)
│ ├─ 测试验证
│ └─ 调用 tdd-enforcer
│
├─ 输出到 → arch-update (B.3)
│ └─ 架构文档同步
│
└─ 输入来自 → task-planner (A.2/A.3)
└─ 任务分配信息
| 错误类型 | branch-manager 处理 | 上层处理 |
|---|---|---|
| 分支已存在 | ❌ 阻止并提示 | 用户选择新 task_id |
| Git 状态异常 | ❌ 阻止并提示 | 用户修复状态 |
| 包管理器缺失 | ⚠️ 警告但继续 | 后续步骤可能失败 |
| .gitignore 缺失 | ✅ 提示并自动修复 | - |
| 磁盘空间不足 | ❌ 阻止并提示 | 用户清理磁盘 |
| 错误 | 原因 | 解决方案 |
|---|---|---|
| 工作目录不干净 | 有未提交的变更 | git stash 或 commit 变更 |
| 分支已存在 | 分支名冲突 | 选择不同的 task_id 或 description |
| Rebase 冲突 | develop 有新变更 | 手动解决冲突后 git rebase --continue |
| PR 创建失败 | Forgejo API 错误 | 检查环境变量和网络连接 |
| 权限不足 | 仓库权限问题 | 联系仓库管理员 |
# 如果分支创建出错,删除分支
git branch -d {branch_name}
git push origin --delete {branch_name}
# 如果 rebase 出错,中止
git rebase --abort
# 如果需要重置到远程状态
git fetch origin
git reset --hard origin/{branch_name}
最后更新: 2026-01-20 Skill版本: 2.0.0 (自动模式决策)