Operational guide for installing, running, and using claude-conductor to coordinate parallel Claude Code sessions.
- macOS or Linux
- Bash 3.2+
- Claude Code installed
- claude-team-cli installed (recommended, for personas and
/parallel) ~/.local/binon your PATH
cd ~/d20m-development/code-katz/claude-conductor
bash install.shThis installs three things:
- Skill file →
~/.claude/skills/conductor/SKILL.md- Claude Code reads this automatically and enables the
/conductorbehavior
- Claude Code reads this automatically and enables the
- Slash commands →
~/.claude/commands/conductor.mdandsessions.md- Enables
/conductorand/sessionsin Claude Code
- Enables
- CLI →
~/.local/bin/claude-conductor(symlinked tobin/claude-conductorin the repo)- Available in any terminal session
# CLI should respond
claude-conductor help
# Check that the skill file is in place
ls ~/.claude/skills/conductor/SKILL.md
# Check that slash commands are in place
ls ~/.claude/commands/conductor.md
ls ~/.claude/commands/sessions.mdIf you only want the Claude Code skill without the terminal CLI:
mkdir -p ~/.claude/skills/conductor
cp SKILL.md ~/.claude/skills/conductor/SKILL.md
mkdir -p ~/.claude/commands
cp commands/conductor.md ~/.claude/commands/
cp commands/sessions.md ~/.claude/commands/Before using the conductor in a project, initialize SESSIONS.md:
cd ~/your-project
claude-conductor initThis creates SESSIONS.md in the project root (same directory as your DEVLOG.md, ROADMAP.md, and TODOS.md). It prompts for the project name and sets up the empty session tables.
Open Claude Code in your project and type:
/conductor start
If SESSIONS.md doesn't exist, the skill creates it automatically when registering the first session.
Step 1: Plan parallel sessions
In your coordination session (the Claude Code terminal you keep open for planning and commits):
/parallel
This generates a session plan with personas, tasks, and file scopes. Review and approve it.
Step 2: Register sessions
/conductor start
The conductor parses the /parallel output and registers all sessions into SESSIONS.md. Each session gets a number, persona, task, file scope, status (planning), and dependency information.
Or combine planning and registration:
/conductor plan
Step 3: Open terminals and work
For each session in the plan, open a new Claude Code terminal:
- Activate the persona:
/akira(or whichever persona the plan specifies) - Paste the task from the plan
- Work
Step 4: Track progress
From your coordination session, check on all sessions:
/conductor
This shows the compact status view:
Session Status for The Chronicle:
#1 ⚡ Akira — Implement /battles CRUD [coding]
#2 🚫 Sasha — BattleLog wizard [blocked → waiting on #1]
#3 📋 Robin — Integration tests [planning]
Merge order: #1 → (#2, #3)
Update statuses as work progresses:
/conductor update 1 done
The conductor will notify you when blocked sessions become unblocked.
Step 5: Merge and close
When a session completes:
/conductor done 1
The conductor prompts for an outcome summary and offers to create a devlog entry. It also tells you the next step in the merge order.
After merging:
/conductor merge 1
Step 6: Archive when the sprint is done
/conductor clear
Moves all completed and merged sessions to the archive section and resets for the next sprint.
These commands work from any terminal (not just Claude Code):
| Command | What it does |
|---|---|
claude-conductor |
Show all active sessions (default) |
claude-conductor status |
Same as above (alias: s) |
claude-conductor start [count] |
Register new session(s) interactively |
claude-conductor update <#> <status> |
Update a session's status (alias: u) |
claude-conductor done <#> |
Mark a session complete (alias: d) |
claude-conductor merge <#> |
Mark a session as merged (alias: m) |
claude-conductor abandon <#> [reason] |
Mark a session as abandoned |
claude-conductor clear |
Archive completed sessions, renumber remaining |
claude-conductor conflicts |
Check for file scope overlaps between sessions |
claude-conductor dashboard |
Generate static HTML dashboard (alias: dash) |
claude-conductor dashboard --open |
Generate and open static dashboard in browser |
claude-conductor dashboard --live |
Start real-time Node.js dashboard |
claude-conductor dashboard --live --stop |
Stop the live dashboard |
claude-conductor link <#> <session_id> |
Link a Claude Code session to a conductor session |
claude-conductor unlink <#> |
Remove a session link |
claude-conductor init |
Create SESSIONS.md in the current project |
claude-conductor help |
Show full command reference |
The live dashboard is a real-time Node.js web application that auto-detects your Claude Code sessions, tracks token usage and costs, and overlays persona/task data from SESSIONS.md.
# Start the live dashboard (requires Node.js 18+)
claude-conductor dashboard --live
# Stop it
claude-conductor dashboard --live --stopFeatures: 2-second polling, per-session token/cost tracking, context window bars, auto-linking to conductor personas, conductor-aware status (coding/planning/reviewing/needs_input), merge order visualization.
The live dashboard runs at http://localhost:3001. For remote access from a phone or another machine, use a tunnel such as Tailscale Funnel or ngrok. This is outside the scope of conductor.
The static dashboard generates a self-contained HTML file (.conductor-dashboard.html) in your project root. It works without Node.js and serves as a fallback.
# Generate and open the static dashboard
claude-conductor dashboard --open
# After the first run, the dashboard auto-regenerates on every status change
claude-conductor update 1 coding # dashboard updates silentlyThe static dashboard uses the Code Katz dark theme with persona avatars and auto-refreshes every 5 seconds.
The conductor warns when parallel sessions have overlapping file scopes:
claude-conductor conflictsConflict warnings also appear in claude-conductor status and on the dashboard. The check compares file paths from the Files column in SESSIONS.md; it flags exact matches and parent/child directory relationships (e.g., src/api/ overlaps with src/api/routes.py).
| Command | What it does |
|---|---|
/conductor |
Show current session status |
/sessions |
Alias for /conductor |
/conductor start |
Register sessions (from /parallel output or manual) |
/conductor update <#> <status> |
Update a session's status |
/conductor done <#> |
Mark a session complete |
/conductor merge <#> |
Mark a session as merged |
/conductor abandon <#> |
Mark a session as abandoned |
/conductor plan |
Generate /parallel plan and auto-register |
/conductor clear |
Archive completed sessions and reset |
| Status | Icon | Meaning |
|---|---|---|
planning |
📋 | Session is in plan mode, no edits yet |
coding |
⚡ | Actively writing code |
reviewing |
🔍 | Code complete, reviewing or testing |
blocked |
🚫 | Waiting on another session or external input |
done |
✅ | Task complete, ready to merge |
merged |
🏁 | Code merged into main branch |
abandoned |
❌ | Session stopped without completing task |
| File | Location | Purpose |
|---|---|---|
SESSIONS.md |
Project root (e.g., ~/my-project/SESSIONS.md) |
Session state for this project |
.conductor-dashboard.html |
Project root (gitignored) | Auto-generated HTML dashboard |
SKILL.md |
~/.claude/skills/conductor/SKILL.md |
Claude Code skill definition |
conductor.md |
~/.claude/commands/conductor.md |
Slash command |
sessions.md |
~/.claude/commands/sessions.md |
Alias slash command |
claude-conductor |
~/.local/bin/claude-conductor |
CLI (symlinked to repo) |
generate-dashboard |
~/.local/bin/generate-dashboard or repo bin/ |
Dashboard HTML generator |
- Check the skill is installed:
ls ~/.claude/skills/conductor/SKILL.md - Check the command is installed:
ls ~/.claude/commands/conductor.md - Start a new Claude Code session (skills are loaded at session start)
- Check it exists:
ls -la ~/.local/bin/claude-conductor - Check your PATH:
echo $PATH | tr ':' '\n' | grep local - If missing, add to
~/.zshrc:export PATH="$HOME/.local/bin:$PATH"and runsource ~/.zshrc
The conductor looks for SESSIONS.md by walking up from the current directory to find the git root. Make sure you're inside a git repository:
git rev-parse --show-toplevelIf not in a git repo, SESSIONS.md defaults to the current directory.
The conductor only knows about sessions that were registered via /conductor start. If you opened terminals without registering them, use /conductor start to register them manually.
cd ~/d20m-development/code-katz/claude-conductor
bash tests/run.sh # 104 tests: CLI commands, conflict detection
bash tests/dashboard.sh # 27 tests: static HTML dashboard generation
bash tests/dashboard-live.sh # 26 tests: live Node.js dashboard integrationExpected output: 157 tests total, all passing. Tests create temporary git repos, test CLI commands, verify SESSIONS.md parsing, conflict detection, static dashboard HTML generation, and live dashboard API endpoints.
# Remove skill
rm -rf ~/.claude/skills/conductor
# Remove slash commands
rm ~/.claude/commands/conductor.md
rm ~/.claude/commands/sessions.md
# Remove CLI
rm ~/.local/bin/claude-conductorSESSIONS.md files in your projects can be deleted or kept as historical records.