Add parallel-worktree-builds Claude Code skill
This commit is contained in:
parent
01bb447a59
commit
88133f1f9d
1 changed files with 150 additions and 0 deletions
150
dot_claude/skills/parallel-worktree-builds/SKILL.md
Normal file
150
dot_claude/skills/parallel-worktree-builds/SKILL.md
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
---
|
||||
name: parallel-worktree-builds
|
||||
description: |
|
||||
Build large projects faster using parallel subagent worktrees in Claude Code.
|
||||
Use when: (1) implementing a multi-service or multi-component project,
|
||||
(2) multiple tasks can be worked on independently (non-overlapping files),
|
||||
(3) you want to parallelize code generation across isolated git worktrees.
|
||||
Covers: spawning parallel Task agents with worktree isolation, merging
|
||||
branches back to master, resolving conflicts when agents create overlapping
|
||||
files, and the tradeoff between TeamCreate agent teams vs direct Task subagents.
|
||||
author: Claude Code
|
||||
version: 1.0.0
|
||||
date: 2026-02-22
|
||||
---
|
||||
|
||||
# Parallel Worktree Builds
|
||||
|
||||
## Problem
|
||||
Large projects with multiple independent components (microservices, shared libraries,
|
||||
frontend + backend) take too long to build sequentially. Claude Code can parallelize
|
||||
by spawning multiple subagents, but they need isolated workspaces to avoid conflicts.
|
||||
|
||||
## Context / Trigger Conditions
|
||||
- Building a project with 3+ independent modules or services
|
||||
- Implementation plan has tasks that don't depend on each other
|
||||
- You want to maximize throughput by running agents in parallel
|
||||
- Each agent needs to create files, run tests, and commit independently
|
||||
|
||||
## Solution
|
||||
|
||||
### Pattern: Parallel Task Agents with Worktree Isolation
|
||||
|
||||
**1. Identify parallelizable tasks.** Tasks are parallel-safe when they create/modify
|
||||
non-overlapping files. Example: broker abstraction vs news fetcher vs sentiment analyzer.
|
||||
|
||||
**2. Spawn agents in parallel with `isolation: "worktree"`:**
|
||||
|
||||
```
|
||||
// Send a SINGLE message with multiple Task tool calls
|
||||
Task(
|
||||
description: "Build component A",
|
||||
isolation: "worktree",
|
||||
mode: "bypassPermissions",
|
||||
subagent_type: "general-purpose",
|
||||
prompt: "... detailed instructions ..."
|
||||
)
|
||||
Task(
|
||||
description: "Build component B",
|
||||
isolation: "worktree",
|
||||
mode: "bypassPermissions",
|
||||
subagent_type: "general-purpose",
|
||||
prompt: "... detailed instructions ..."
|
||||
)
|
||||
```
|
||||
|
||||
**3. Each agent returns:** agentId, worktreePath, worktreeBranch (e.g., `worktree-agent-af48b960`)
|
||||
|
||||
**4. Merge branches sequentially:**
|
||||
|
||||
```bash
|
||||
git merge worktree-agent-XXXX --no-edit # first branch (fast-forward)
|
||||
git merge worktree-agent-YYYY --no-edit # second branch (merge commit)
|
||||
```
|
||||
|
||||
**5. Handle conflicts.** When two agents create the same files (e.g., both created
|
||||
`shared/strategies/`), resolve with:
|
||||
|
||||
```bash
|
||||
git checkout --ours shared/strategies/ # keep the dedicated agent's version
|
||||
git add shared/strategies/
|
||||
git commit --no-edit
|
||||
```
|
||||
|
||||
**6. Clean up worktrees and branches:**
|
||||
|
||||
```bash
|
||||
git worktree remove /path/to/worktree --force
|
||||
git branch -d worktree-agent-XXXX
|
||||
```
|
||||
|
||||
**7. Verify after merge:**
|
||||
|
||||
```bash
|
||||
pip install -e ".[dev]"
|
||||
python -m pytest tests/ -v
|
||||
```
|
||||
|
||||
### Sprint Structure for Large Projects
|
||||
|
||||
Organize work into sprints with clear boundaries:
|
||||
|
||||
1. **Sprint = set of parallel tasks** with defined acceptance criteria
|
||||
2. **Merge + verify** after each sprint before starting the next
|
||||
3. **Dependency order**: foundation → services → API → frontend → integration
|
||||
4. **Parallelism within sprints**: independent services build simultaneously
|
||||
|
||||
### Key Rules
|
||||
|
||||
- **Give agents FULL context** in the prompt. Include exact file paths, schemas to use,
|
||||
test expectations, and commit messages. Agents in worktrees can't see your conversation.
|
||||
- **Include dependency code references** in prompts (e.g., "Read `shared/schemas/trading.py`
|
||||
for the TradeSignal schema to use").
|
||||
- **One agent per non-overlapping file set.** If two agents might create the same file,
|
||||
assign it to only one agent or accept you'll resolve conflicts.
|
||||
- **Always run full test suite after merge** to catch integration issues.
|
||||
- **Install deps in the main repo** after merge if agents added new dependencies.
|
||||
|
||||
## Verification
|
||||
- All worktree branches merge cleanly (or conflicts resolve easily)
|
||||
- Full test suite passes after merge
|
||||
- No duplicate or conflicting file contents
|
||||
|
||||
## Example
|
||||
|
||||
Sprint 2 of a trading bot — 3 independent services built in parallel:
|
||||
|
||||
| Agent | Task | Files | Tests |
|
||||
|-------|------|-------|-------|
|
||||
| broker-builder | Broker abstraction + Alpaca | shared/broker/* | 18 |
|
||||
| news-builder | News fetcher (RSS + Reddit) | services/news_fetcher/* | 10 |
|
||||
| sentiment-builder | Sentiment analyzer | services/sentiment_analyzer/* | 19 |
|
||||
|
||||
All 3 ran simultaneously in ~5 minutes. Merged sequentially. 122 total tests passed.
|
||||
|
||||
## Notes
|
||||
|
||||
### Agent Teams (TeamCreate) vs Direct Subagents (Task)
|
||||
|
||||
**Prefer direct Task subagents over TeamCreate for code generation:**
|
||||
|
||||
- TeamCreate agents require explicit message-based coordination and often go idle
|
||||
waiting for instructions, requiring multiple nudges
|
||||
- Direct Task subagents with `isolation: "worktree"` run autonomously with the full
|
||||
prompt and return results directly
|
||||
- Teams are better for long-running coordination tasks; subagents are better for
|
||||
well-defined build tasks
|
||||
|
||||
### Conflict Prevention
|
||||
|
||||
To minimize merge conflicts:
|
||||
- Don't have two agents modify `pyproject.toml` — let one agent do it, or accept
|
||||
the auto-merge (usually works for different sections)
|
||||
- Don't have two agents create the same package `__init__.py` files
|
||||
- If an agent needs shared code that another agent is creating, include the code
|
||||
directly in the prompt rather than expecting them to read from each other
|
||||
|
||||
### pyproject.toml Conflicts
|
||||
|
||||
When multiple agents modify `pyproject.toml` (e.g., adding package discovery paths),
|
||||
git's auto-merge usually handles it. If not, manually combine the changes.
|
||||
Loading…
Add table
Add a link
Reference in a new issue