AgentSkillsCN

gitbutler-multi-agent

当您需要协调多个 AI 智能体同时工作、处理智能体交接、在智能体间转移提交记录,或当 GitButler 提及“多智能体”、“并发智能体”、“并行智能体”、“智能体协作”、“并行执行”等术语时,应使用此技能。它提供虚拟分支模式,让您在无需额外协调开销的情况下,实现并行执行。

SKILL.md
--- frontmatter
name: gitbutler-multi-agent
description: This skill should be used when coordinating multiple AI agents working concurrently, handling agent handoffs, transferring commits between agents, or when "multi-agent", "concurrent agents", "parallel agents", "agent collaboration", or "parallel execution" are mentioned with GitButler. Provides virtual branch patterns for parallel execution without coordination overhead.
metadata:
  version: "1.0.0"
  author: outfitter
  category: version-control
  related-skills:
    - gitbutler-virtual-branches
    - gitbutler-stacks
    - multi-agent-vcs

GitButler Multi-Agent Coordination

Multiple agents → virtual branches → parallel execution → zero coordination overhead.

<when_to_use>

  • Multiple agents working on different features simultaneously
  • Sequential agent handoffs (Agent A → Agent B)
  • Commit ownership transfer between agents
  • Parallel execution with early conflict detection
  • Post-hoc reorganization of multi-agent work

NOT for: single-agent workflows (use standard GitButler), projects needing PR automation (Graphite better)

</when_to_use>

Core Advantage

Traditional Git Problem:

  • Agents must work in separate worktrees (directory coordination)
  • Constant branch switching (context loss, file churn)
  • Late conflict detection (only at merge time)

GitButler Solution:

  • Multiple branches stay applied simultaneously
  • Single shared workspace, zero checkout operations
  • Immediate conflict detection (shared working tree)
  • Each agent manipulates their own lane

Workflow Patterns

Pattern 1: Parallel Feature Development

bash
# Agent 1
but branch new agent-1-auth
echo "auth code" > auth.ts
but rub auth.ts agent-1-auth
but commit agent-1-auth -m "feat: add authentication"

# Agent 2 (simultaneously, same workspace!)
but branch new agent-2-api
echo "api code" > api.ts
but rub api.ts agent-2-api
but commit agent-2-api -m "feat: add API endpoints"

# Result: Two independent features, zero conflicts

Pattern 2: Sequential Handoff

bash
# Agent A: Initial implementation
but branch new initial-impl
# ... code ...
but commit initial-impl -m "feat: initial implementation"

# Agent B: Takes ownership and refines
but rub <agent-a-commit> refinement-branch
# ... improve code ...
but commit refinement-branch -m "refactor: optimize implementation"

Pattern 3: Cross-Agent Commit Transfer

bash
# Instant ownership transfer
but rub <commit-sha> agent-b-branch  # Agent A → Agent B
but rub <commit-sha> agent-a-branch  # Agent B → Agent A

Pattern 4: Agent Code Review Cycle

Reviewer agent commits fixes separately, then swap/merge:

bash
# Author agent implements
but branch new author-impl
but commit author-impl -m "feat: implement feature"

# Reviewer agent creates sibling branch for fixes
but branch new reviewer-fixes
# ... reviewer makes fixes ...
but commit reviewer-fixes -m "fix: address review feedback"

# Adopt reviewer fixes into author branch
but rub <reviewer-commit> author-impl

# Clean audit trail, final branch has both

Pattern 5: Agent Swarm (Many Agents, One Branch)

Multiple agents contribute to a single feature:

bash
but branch new shared-feature

# Agent A assigns their work
but rub <a-file-id> shared-feature

# Agent B assigns their work
but rub <b-file-id> shared-feature

# Agent C assigns their work
but rub <c-file-id> shared-feature

# Single commit with all contributions
but commit shared-feature -m "feat: collaborative implementation"

Use with Workspace Rules (but mark) for auto-assignment by path patterns.

Pattern 6: Exploratory Development

Compare multiple approaches in parallel:

bash
# Parent branch with shared setup
but branch new perf-parent
but commit perf-parent -m "chore: benchmark setup"

# Strategy A
but branch new perf-strategy-a --anchor perf-parent
but commit perf-strategy-a -m "perf: try caching approach"

# Strategy B
but branch new perf-strategy-b --anchor perf-parent
but commit perf-strategy-b -m "perf: try batching approach"

# Run benchmarks on each, keep winner
but rub <winning-commit> perf-parent

Pattern 7: Emergency Hotfix (Feature Work Continues)

Ship a fix without disturbing ongoing multi-agent work:

bash
# Create isolated hotfix branch
but branch new hotfix-urgent
but rub <file-id> hotfix-urgent
but commit hotfix-urgent -m "fix: prod outage"

# Push and create PR
but publish -b hotfix-urgent

# Other agents continue unaffected in their lanes

Branch Naming Convention

code
<agent-name>-<task-type>-<brief-description>

Examples:
- claude-feat-user-auth
- droid-fix-api-timeout
- codex-refactor-database-layer

Makes ownership immediately visible in but status and but log.

AI Integration Methods

1. Agents Tab (GUI)

  • Branch-agent binding in GitButler GUI
  • Each virtual branch = independent agent session
  • Automatic commit management per session
  • Parallel execution with branch isolation
  • Access: but . then navigate to Agents Tab

2. Lifecycle Hooks (CLI)

PlatformCommands
Claude Codebut claude pre-tool, but claude post-tool, but claude stop
Cursorbut cursor after-edit, but cursor stop

Example Claude Code hooks config (.claude/hooks.json):

json
{
  "hooks": {
    "PostToolUse": [{"matcher": "Edit|Write", "hooks": [{"type": "command", "command": "but claude post-tool"}]}],
    "Stop": [{"matcher": "", "hooks": [{"type": "command", "command": "but claude stop"}]}]
  }
}

3. MCP Server

bash
but mcp  # Start MCP server for programmatic access

Exposes gitbutler_update_branches tool for async commit processing.

4. Workspace Rules (Auto-Assignment)

bash
but mark "src/auth/**" agent-auth-branch
but mark "src/api/**" agent-api-branch

Files matching patterns auto-route to designated branches.

Key Instruction for All Agents:

"Never use the git commit command after a task is finished"

For detailed hook configs and MCP schemas, see references/ai-integration.md.

The but rub Power Tool

Single command handles four critical multi-agent operations:

OperationExampleUse Case
Assignbut rub m6 claude-branchOrganize files to branches post-hoc
Movebut rub abc1234 other-branchTransfer work between agents
Squashbut rub newer olderClean up history
Amendbut rub file commitFix existing commits

Coordination Protocols

Status Broadcasting:

bash
# File-based coordination
but status > /tmp/agent-$(whoami)-status.txt

# Or use Linear/GitHub comments
# "[AGENT-A] Completed auth module, committed to claude-auth-feature"

Concurrent Safety:

  1. Snapshot before risky operations
  2. Broadcast status regularly to other agents
  3. Respect 🔒 locks — files assigned to other branches
  4. Use but --json for programmatic state inspection

vs Other Workflows

AspectGraphiteGit WorktreesGitButler
Multi-agent concurrencySerialN directoriesParallel ✓
Post-hoc organizationDifficultDifficultbut rub
PR Submissiongt submitManualbut publish
Physical layout1 directoryN × repo1 directory ✓
Context switchinggt checkoutcdNone ✓
Conflict detectionLate (merge)Late (merge)Early ✓
Disk usage1 × repoN × repo1 × repo ✓

Decision Framework: When to Use What

Use GitButler when:

  • Multiple agents work in same repo simultaneously
  • Exploratory development (organize code after writing)
  • Frequent reorganization of commits between branches
  • Visual organization preferred (GUI + CLI)
  • Early conflict detection matters

Use Graphite when:

  • Fully automated CLI workflows (scripted end-to-end)
  • Terminal-first teams
  • Established stacked PR practices
  • Need gt up/gt down stack navigation

Use Git Worktrees when:

  • Complete branch isolation required
  • Different dependencies per branch
  • CI/CD needs separate checkouts

Don't mix in same repo - Choose one model per repository.

<rules>

ALWAYS:

  • Use unique branch names per agent: <agent>-<type>-<desc>
  • Assign files immediately after creating: but rub <id> <branch>
  • Snapshot before coordinated operations
  • Broadcast status to other agents when completing work
  • Check for 🔒 locked files before modifying

NEVER:

  • Use git commit — breaks GitButler state
  • Let files sit in "Unassigned Changes" — assign immediately
  • Modify files locked to other branches
  • Mix git and but commands during active agent sessions
</rules>

Troubleshooting

SymptomCauseSolution
Agent commit "orphaned"Used git commitFind with git reflog, recover
Files in wrong branchForgot assignmentbut rub <id> <correct-branch>
Conflicting editsOverlapping filesReassign hunks to different branches
Lost agent workBranch deletedbut undo or restore from oplog

Recovery

bash
# Find orphaned commits
git reflog

# Recover agent work
but oplog
but undo

# Extract from snapshot
git show <snapshot>:index/path/to/file.txt

Limitations

  • Overlapping file edits — adjacent lines can only go to one branch
  • No stack navigation CLI — no gt up/gt down equivalent (all branches always applied)
  • MCP server limited — only gitbutler_update_branches tool currently exposed
<references>

Reference Files

  • references/ai-integration.md — Detailed hook configs, MCP schemas, troubleshooting

Related Skills

External

</references>