Assign and resolve multiple independent backlog issues in parallel using git worktrees and coordinated agents
From vibannpx claudepluginhub happy-nut/claude-plugin-viban --plugin vibanThis skill uses the workspace's default tool permissions.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Details PluginEval's skill quality evaluation: 3 layers (static, LLM judge), 10 dimensions, rubrics, formulas, anti-patterns, badges. Use to interpret scores, improve triggering, calibrate thresholds.
Parallel resolution of independent backlog issues via git worktrees.
CLI only (no direct viban.json access) | Opus sub-agents in isolated worktrees
vibanis a zsh CLI tool. Always invoke asviban <command>, NEVER aspython -m vibanorpython viban.
Input: $ARGUMENTS (optional: number of issues, default 3)
[ -f ".viban/workflow.md" ] && cat ".viban/workflow.md"
Fallback to CLAUDE.md, then default. Same as /viban:assign Phase 0.1.
Extract count from $ARGUMENTS:
/viban:parallel-assign 5) → use that numberviban list
Count available backlog issues. Adjust N down if fewer available. If backlog is empty: notify user and exit.
[ -n "$(git status --porcelain)" ] && echo "Warning: Uncommitted changes"
git checkout main && git fetch origin main && git reset --hard origin/main
Assign N issues, each with a unique session ID. Determine branch names per workflow convention:
ISSUES=() # Array of "ID|BRANCH" pairs
for i in $(seq 1 $N); do
SESSION=$(echo "${RANDOM}${i}" | md5 | head -c 8)
ID=$(viban assign "$SESSION" 2>&1 | tail -1)
[[ -z "$ID" || "$ID" == "No backlog" ]] && break
BRANCH="issue-${ID}"
ISSUES+=("${ID}|${BRANCH}")
done
If no issues were assigned: notify user and exit.
For each assigned issue, create an isolated git worktree:
mkdir -p "$PWD/.viban/worktrees"
for entry in "${ISSUES[@]}"; do
ID="${entry%%|*}"
BRANCH="${entry##*|}"
# Use issue ID as worktree dir name (matches cmd_done cleanup at .viban/worktrees/{ID})
WT_DIR="$PWD/.viban/worktrees/$ID"
git worktree add -b "$BRANCH" "$WT_DIR" origin/main
done
viban sync --push-only
Spawn one opus agent per issue using Task tool. All agents launch in a single message with run_in_background: true.
Agent prompt template (per issue):
You are resolving viban issue #{ID} in an isolated git worktree.
## Environment
- Worktree path: {PROJECT_ROOT}/.viban/worktrees/{ID}
- Branch: {BRANCH}
- Main repo: {PROJECT_ROOT}
- ALL file operations must happen inside the worktree path
## Workflow (Analyze + Implement + Verify only)
{paste workflow.md Phase 1 (Analyze), Phase 2 (Implement), and Phase 3 (Verify) sections ONLY}
{DO NOT include: Pipeline summary, GitHub Sync, Phase 4 (Build and Test), Phase 5 (Ship), Issue Management, Post-merge, or Additional Rules}
## Issue Details
{paste viban get output}
## Plan (if available)
{paste .viban/plans/{ID}.md content, or "No plan available"}
## Instructions
You are one of {N} parallel agents working in isolated git worktrees.
1. Work ONLY inside your worktree: {PROJECT_ROOT}/.viban/worktrees/{ID}
- cd to the worktree before any work
- All reads, edits, and writes must target files under this path
2. Follow the project workflow phases:
- Analyze: understand the issue, locate code, identify root cause
- Implement: make focused changes following project conventions
- Verify: manual verification of the fix
3. After implementation, commit on your branch:
```bash
cd {PROJECT_ROOT}/.viban/worktrees/{ID}
git add <specific files>
git commit -m "type: description
- Root cause: ...
- Solution: ...
Resolves: #{ID}"
ABSOLUTE RULES:
git push — the coordinator pushes from the main repo after verifying.gh pr create — the coordinator creates PRs after transplanting branches.viban done — this DELETES the card permanently.viban review — the coordinator handles issue status.viban.json — use CLI commands only.
### Dispatch Pattern
```text
# Pseudo-code for the dispatch
for each (ID, BRANCH) in ISSUES:
Task(
subagent_type="general-purpose",
model="opus",
run_in_background=True,
prompt=filled_template(ID, BRANCH, workflow, issue_json, plan)
)
TaskOutput)After all agents finish, the coordinator handles everything from the main project root ($PWD).
Confirm each branch has commits from the agent:
for entry in "${ISSUES[@]}"; do
BRANCH="${entry##*|}"
git log --oneline -3 "$BRANCH"
done
If a branch has no new commits (agent failed), skip it and report.
For each branch with commits, push from the main repo and create a PR:
for entry in "${ISSUES[@]}"; do
ID="${entry%%|*}"
BRANCH="${entry##*|}"
# Push the local branch to remote
git push -u origin "$BRANCH"
# Create PR
gh pr create --head "$BRANCH" --base main \
--title "type: title" \
--body "Resolves: #${ID}"
# Move issue to review
viban review "$ID"
done
for entry in "${ISSUES[@]}"; do
BRANCH="${entry##*|}"
gh pr list --head "$BRANCH" --json number,title,url -q '.[0]'
done
Run the full test suite once on main (not per-agent):
zsh tests/run_all.zsh
If tests fail: identify which agent's changes caused the failure and report.
viban sync --push-only
Parallel Resolution Complete
| Issue | Title | Branch | PR | Status |
|-------|-------|--------|----|--------|
| #ID | ... | ... | #N | review |
Total: N issues processed
Succeeded: X
Failed: Y
Local branches available:
- {BRANCH_1}
- {BRANCH_2}
...
Worktrees cleaned up. All PRs ready for human review.
viban review {ID} to unblock the card.
- NEVER read or write
viban.jsondirectly — always usevibanCLI commands. Direct JSON access causes race conditions and data corruption.- NEVER exit with any issue still in
in_progress. For every assigned issue, ensureviban review {ID}has been called.- Do NOT remove worktrees after PRs are created. Worktrees stay at
.viban/worktrees/{ID}for the review flow (/viban:approvecleans up).
| Command | Description |
|---|---|
viban list | Print board |
viban assign [session] | Assign issue |
viban get <id> | View issue |
viban review <id> | Move to review |
viban sync --push-only | Sync to GitHub |