ワンクリックで
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 (自动模式决策)