بنقرة واحدة
parallel
Split implementation tasks into independent workstreams running as parallel agents in git worktrees
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Split implementation tasks into independent workstreams running as parallel agents in git worktrees
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
MECE decompose a research question, run parallel Codex web-research agents via tmux, iteratively deepen via DAG, synthesize findings
Decompose a research question into MECE domains and run parallel Claude agents via tmux
Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.
Guided learning through Socratic questioning - teaches through discovery, not answers
Extract coding patterns and preferences from session transcripts for CLAUDE.md
Full TDD red-green-refactor cycle with automatic framework detection
| name | parallel |
| description | Split implementation tasks into independent workstreams running as parallel agents in git worktrees |
| disable-model-invocation | true |
| allowed-tools | Read, Write, Edit, Bash, Glob, Grep |
| argument-hint | [task description or 'plan' to use current plan] |
Split a task into independent workstreams and run them as parallel Claude Code agents in separate tmux panes, each in its own git worktree.
Either a task description to plan and decompose, or the word "plan" to use the current plan from this conversation.
If the argument is "plan": use the existing plan from the current conversation context.
Otherwise: create a plan for the given task. Identify what needs to be built, the modules involved, and the dependencies between them.
Split the plan into 3-4 independent workstreams (hard maximum: 4).
Decomposition rules:
Present the decomposition table and wait for user approval:
| Agent | Domain | Owned Files | Read-Only Files | Depends On |
|-------|--------|-------------|-----------------|------------|
| auth | Authentication | src/auth/* | src/models/* | none |
| api | API endpoints | src/api/* | src/auth/* | auth |
| ui | Frontend | src/ui/* | src/api/* | none |
Do NOT proceed until the user approves this decomposition.
For each agent in the approved decomposition:
git worktree add ./worktrees/{agent-name} -b parallel/{agent-name}
Add worktrees/ to .gitignore if not already present.
For each worktree:
# Copy environment files
cp .env ./worktrees/{agent-name}/.env 2>/dev/null || true
cp -r venv ./worktrees/{agent-name}/venv 2>/dev/null || true
# Create coordination directories
mkdir -p ./worktrees/{agent-name}/run
mkdir -p ./shared/progress
Install dependencies if needed:
cd ./worktrees/{agent-name} && source venv/bin/activate && uv pip install -e . 2>/dev/null || true
For each agent, write ./worktrees/{agent-name}/run/prompt.md containing:
if __name__ == '__main__' blocks with hardcoded examplesuv pip install, source venv/bin/activate../shared/progress/{agent-name}.json after each major milestone
using this format:
{
"agent": "{agent-name}",
"timestamp": "ISO-8601",
"status": "in_progress|blocked|done",
"completed": ["list of completed items"],
"remaining": ["list of remaining items"],
"blocked_by": null,
"notes": ""
}
Write ./run-agent.sh in the project root:
#!/bin/bash
# Usage: bash run-agent.sh /path/to/worktree [model]
# Pipes the agent prompt to claude -p with pre-approved tools.
# Writes output to run/output.md and prints a COMPLETE marker when done.
cd "$1"
source venv/bin/activate 2>/dev/null || true
MODEL="${2:-claude-sonnet-4-6}"
echo "=== Starting agent: $(basename $1) with model $MODEL ==="
echo "=== $(date) ==="
echo ""
cat run/prompt.md | claude -p \
--model "$MODEL" \
--allowedTools "Read,Write,Edit,Bash,Glob,Grep" \
2>&1 | tee run/output.md
echo ""
echo "=== Agent $(basename $1) COMPLETE at $(date) ==="
Make it executable: chmod +x run-agent.sh
CRITICAL: Pipe the prompt via stdin (cat prompt.md | claude -p).
NEVER pass the prompt content through tmux send-keys -- any quotes,
backticks, $, backslashes, or newlines in the prompt will be
shell-expanded or break the command. The launcher script avoids this
entirely by keeping the prompt in a file and piping it.
Create a tmux session and launch agents via the launcher script:
# Create session
tmux new-session -d -s parallel -x 200 -y 50
# First agent gets the first pane
tmux send-keys -t parallel "bash run-agent.sh $(pwd)/worktrees/{agent-1}" Enter
# Additional agents get split panes
tmux split-window -t parallel -h
tmux send-keys -t parallel "bash run-agent.sh $(pwd)/worktrees/{agent-2}" Enter
# Repeat for agents 3-4 if needed
tmux split-window -t parallel -v
tmux send-keys -t parallel "bash run-agent.sh $(pwd)/worktrees/{agent-3}" Enter
After launching, verify processes are running:
ps aux | grep "claude -p" | grep -v grep | wc -l
Print monitoring instructions for the user:
## Parallel Agents Running
Attach to the session:
tmux attach -t parallel
Monitor progress:
cat shared/progress/*.json | jq .
Switch between panes:
Ctrl-b + arrow keys
Kill session when done:
tmux kill-session -t parallel
Use the wait-for-text.sh helper from the /tmux skill to
automatically detect when each agent finishes:
WAIT="$HOME/Developer/personal_projects/agent-skills/skills/tmux/scripts/wait-for-text.sh"
TIMEOUT=600 # 10 minutes per agent; adjust as needed
all_done=true
for pane_id in {list of parallel:0.N targets}; do
agent_name="{name for this pane}"
if bash "$WAIT" -t "$pane_id" -p "COMPLETE" -T "$TIMEOUT" -i 5; then
echo "$agent_name: DONE"
else
echo "$agent_name: TIMED OUT or FAILED -- check pane manually"
all_done=false
fi
done
if $all_done; then
echo "All agents complete. Ready to merge."
else
echo "Some agents did not finish. Check timed-out panes before merging."
fi
The loop watches for the COMPLETE marker that run-agent.sh prints
when claude -p exits. Each agent gets the full timeout before moving
to the next check.
You can also manually check progress via cat shared/progress/*.json.
After all agents report "done", provide merge commands:
# Merge each agent branch with --no-ff to preserve history
git merge --no-ff parallel/{agent-1} -m "Merge {agent-1}: {description}"
git merge --no-ff parallel/{agent-2} -m "Merge {agent-2}: {description}"
git merge --no-ff parallel/{agent-3} -m "Merge {agent-3}: {description}"
Conflict resolution guidance:
Cleanup commands:
# Remove worktrees
git worktree remove ./worktrees/{agent-1}
git worktree remove ./worktrees/{agent-2}
git worktree remove ./worktrees/{agent-3}
# Delete branches
git branch -d parallel/{agent-1}
git branch -d parallel/{agent-2}
git branch -d parallel/{agent-3}
# Remove shared progress
rm -rf ./shared/progress/
Check agent status
Run the health-check recipe from /tmux to classify every pane:
DIAG="$HOME/Developer/personal_projects/agent-skills/skills/tmux/scripts/diagnose-agents.sh"
bash "$DIAG" parallel "worktrees/*/run/output.md"
Each pane is classified as DONE, WORKING, FAILED, or UNKNOWN. See the
/tmux skill's "Health-Check Running Agents" recipe for details on
what each state means and how it's detected.
FAILED state -- what to do Inspect the pane for the root cause:
tmux capture-pane -t parallel:0.{pane} -p -S - | tail -30
Common causes: rate limit hit, permission denial (missing
--allowedTools), Python/Node traceback, or OOM. Fix the cause and
re-launch the agent (see below).
DONE but no run/output.md
This is a tee buffering issue. The agent finished (COMPLETE marker
present in the pane) but the file wasn't flushed. Capture the pane
scrollback directly:
tmux capture-pane -t parallel:0.{pane} -p -S - > worktrees/{agent}/run/output.md
Re-running a single failed agent Send the launcher command to the same pane:
tmux send-keys -t parallel:0.{pane} "bash run-agent.sh $(pwd)/worktrees/{agent-name}" Enter
The previous output.md will be overwritten by tee.
tmux session died
Re-create the session (Phase 5). Run diagnose-agents.sh or check
which agents have the COMPLETE marker in their run/output.md. Only
re-launch agents that didn't complete. Completed agents already
committed their work to their worktree branch.
Worktree in a bad state after agent crash
Check the branch for partial commits: cd worktrees/{agent} && git log --oneline -5.
If the agent made useful partial progress, you can keep the branch and
re-launch to continue. If the state is unrecoverable:
git worktree remove ./worktrees/{agent-name}
git branch -D parallel/{agent-name}
Then re-create the worktree (Phase 3) and re-launch.
Merge conflicts during Phase 6
If agents violated file ownership rules and both modified the same file,
the owning agent's version wins. Use git checkout --theirs {file} or
git checkout --ours {file} accordingly. Run tests after each merge.