Skip to main content

multi-agent-vcs

This skill should be used when dispatching subagents for parallel development, coordinating multi-branch implementations, or when "parallel agents", "orchestrator commits", "subagent filesystem only", "multi-agent git", or "prevent stack corruption" are mentioned. Prevents stack corruption through orchestrator-only git policy.

Source facts

Repository
outfitter-dev/agents
Last source activity
January 27, 2026 at 15:45
Detected SKILL.md language
English
Stars
28
Forks
1

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
multi-agent-vcs
description
This skill should be used when dispatching subagents for parallel development, coordinating multi-branch implementations, or when "parallel agents", "orchestrator commits", "subagent filesystem only", "multi-agent git", or "prevent stack corruption" are mentioned. Prevents stack corruption through orchestrator-only git policy.
metadata
{"version":"1.0.0","author":"outfitter","category":"version-control"}
# Multi-Agent Version Control Tool-agnostic patterns for coordinating git operations across parallel AI agents. <when_to_use> - Dispatching subagents for parallel work - Planning multi-branch implementations - Recovering from parallel agent corruption - Any workflow where multiple agents touch the filesystem </when_to_use> ## The Problem When parallel subagents perform git operations independently: - **Mixed content** - Multiple features end up in wrong branches - **Broken stacks** - Branches become siblings instead of parent-child - **Mislabeled PRs** - PR titles don't match branch content - **Hours of recovery** - Manual intervention required to fix structure This happens because each agent sees the same starting state and creates branches independently, resulting in siblings instead of a proper stack. ## The Policy > **Subagents MUST NOT perform git operations.** > > Only the **orchestrator** handles git state. Subagents write code to the filesystem and report completion. <rules> **ALWAYS:** - Orchestrator creates branches before dispatching subagents - Subagents write to filesystem only - Subagents report which files they created/modified - Orchestrator stages, commits, and pushes **NEVER:** - Subagents commit, push, or create branches - Parallel git operations from different agents - Background agents managing branch state </rules> ## Correct Workflow ``` ┌─────────────────────────────────────────────────────────────┐ │ ORCHESTRATOR (main agent) │ │ - Manages git state, branches, commits │ │ - Dispatches subagents for CODE ONLY │ │ - Collects results, stages files, commits to correct branch│ └─────────────────────────────────────────────────────────────┘ │ ├──► [subagent-1] Write feature-a.ts → filesystem only ├──► [subagent-2] Write feature-b.ts → filesystem only ├──► [subagent-3] Write feature-c.ts → filesystem only │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ ORCHESTRATOR collects, then: │ │ - Stages feature-a.ts → commits to branch-a │ │ - Stages feature-b.ts → commits to branch-b │ │ - Stages feature-c.ts → commits to branch-c │ └─────────────────────────────────────────────────────────────┘ ``` ## Subagent Prompt Template Add to subagent prompts when dispatching parallel work: ``` IMPORTANT: Do NOT perform any git operations (commit, push, branch creation). Write code to the filesystem only. The orchestrator handles all git state. Report which files you created/modified when done. ``` ## Task Integration Track git operations explicitly in task lists: ``` # Stage: Parallel Implementation - [ ] [engineer] Implement config module (filesystem only) - [ ] [engineer] Implement logging module (filesystem only) - [ ] [engineer] Implement state module (filesystem only) - [ ] ORCHESTRATOR: Stage and commit implementations - Stage config/ → commit to feature/config - Stage logging/ → commit to feature/logging - Stage state/ → commit to feature/state ``` The `ORCHESTRATOR:` prefix makes it clear which tasks involve git operations. ## Graphite-Specific Commands When using Graphite for stacked PRs, the orchestrator handles all git operations: ```bash # After subagents complete, orchestrator commits to each branch # For feature/config branch gt checkout feature/config git add packages/config/ gt modify -am "feat(config): implement module" # For feature/logging branch gt checkout feature/logging git add packages/logging/ gt modify -am "feat(logging): implement module" # Alternative: Use absorb from top of stack # Graphite routes staged files to the branch that owns them gt top git add . gt absorb # Restack and submit gt restack gt submit --stack ``` See [graphite-stacks](../graphite-stacks/SKILL.md) for full Graphite workflow. ## GitButler-Specific Commands When using GitButler virtual branches: ```bash # Subagents write files, orchestrator assigns to virtual branches but branch create feature-a but branch create feature-b # Move files to appropriate branches but move path/to/file.ts --to feature-a but move path/to/other.ts --to feature-b # Commit within each branch but commit feature-a -m "feat: implement feature-a" but commit feature-b -m "feat: implement feature-b" ``` ## Recovery When parallel agents have corrupted git state: 1. **Stop all agents** - Prevent further damage 2. **Assess damage** - Check branch structure (`gt status` or `git log --graph`) 3. **Stash work** - Save uncommitted changes 4. **Fix relationships** - Move branches to correct parents 5. **Redistribute files** - Commit files to correct branches 6. **Verify** - Check structure matches intent For Graphite-specific recovery, see [recovery.md](../graphite-stacks/references/recovery.md). ## Sequential vs Parallel | Approach | When | Git Handling | | -------- | ---- | ------------ | | Sequential | Dependent tasks | Each agent can commit (handoff) | | Parallel | Independent tasks | Orchestrator-only commits | | Background | Fire-and-forget | Never commits | Sequential agents can safely commit because they hand off state explicitly. Parallel agents cannot because they don't see each other's changes. ## Enforcement Currently relies on explicit instructions. Always include the git policy when: - Dispatching parallel subagents - Using background agents - Coordinating multi-branch work Future: Hook-based enforcement could intercept and block git operations from subagent contexts. <references> - [graphite-stacks](../graphite-stacks/SKILL.md) - Graphite-specific workflows - [recovery.md](../graphite-stacks/references/recovery.md) - Stack corruption recovery </references>
View on GitHub