From sundial-org-awesome-openclaw-skills-4
Orchestrates multiple parallel Claude Code sessions across projects using tmux, enables remote monitoring and control via WhatsApp approvals and status commands.
npx claudepluginhub joshuarweaver/cascade-ai-ml-agents-misc-2 --plugin sundial-org-awesome-openclaw-skills-4This skill uses the workspace's default tool permissions.
Your multi-session orchestrator - manage multiple Claude Code instances working on different projects simultaneously, all from WhatsApp.
CHANGELOG.mdREADME.mdUSAGE.mdauto-approver.shcheck-approvals.shclaude-wingman.shclawdbot-skill/README.mddashboard.shinteractive-approver.shlib/README.mdlib/approval-respond.shlib/handle-approval.shlib/send-notification.shlib/session-send.shlib/session-status.shmaster-monitor.shmonitor-session.shresearch.mdrespond-approval.shtest-project/CLAUDE.mdGuides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
Your multi-session orchestrator - manage multiple Claude Code instances working on different projects simultaneously, all from WhatsApp.
GitHub: https://github.com/yossiovadia/claude-code-orchestrator
When a user message matches these patterns, IMMEDIATELY run the corresponding command:
| User Message Pattern | Command to Run |
|---|---|
approve <session> | ~/code/claude-code-orchestrator/lib/handle-approval.sh approve <session> |
always <session> | ~/code/claude-code-orchestrator/lib/handle-approval.sh always <session> |
deny <session> | ~/code/claude-code-orchestrator/lib/handle-approval.sh deny <session> |
Examples:
~/code/claude-code-orchestrator/lib/handle-approval.sh approve vsr-bugfix~/code/claude-code-orchestrator/lib/handle-approval.sh always heartbeat-test~/code/claude-code-orchestrator/lib/handle-approval.sh deny proxy-refactorAfter running, respond with the command output (e.g., "✓ Session 'vsr-bugfix' approved (once)")
Why this is critical: The master monitor daemon sends WhatsApp notifications when Claude Code sessions need approval. The user responds with these commands from their phone. Fast response = unblocked sessions.
| User Message | Command to Run |
|---|---|
sessions or status | ~/code/claude-code-orchestrator/lib/session-status.sh --all --json |
status <session> | ~/code/claude-code-orchestrator/lib/session-status.sh <session> --json |
Parse the JSON and respond with a human-readable summary.
Orchestrates multiple Claude Code sessions in parallel, each working on different tasks in different directories. You monitor and control everything remotely via WhatsApp/chat.
The Vision:
Morning - You (via WhatsApp): "Start work on VSR issue #1131, Clawdbot authentication feature, and refactor the proxy"
Clawdbot spawns 3 sessions:
✅ Session: vsr-issue-1131 (~/code/semantic-router)
✅ Session: clawdbot-auth (~/code/clawdbot)
✅ Session: proxy-refactor (~/code/claude-code-proxy)
During lunch - You: "Show me the dashboard"
Clawdbot:
┌─────────────────────────────────────────────────────────┐
│ Active Claude Code Sessions │
├─────────────────┬──────────────────────┬────────────────┤
│ vsr-issue-1131 │ semantic-router │ ✅ Working │
│ clawdbot-auth │ clawdbot │ ✅ Working │
│ proxy-refactor │ claude-code-proxy │ ⏳ Waiting approval │
└─────────────────┴──────────────────────┴────────────────┘
You: "How's the VSR issue going?"
Clawdbot captures session output: "Almost done - fixed the schema validation bug, running tests now. 8/10 tests passing."
You: "Tell proxy-refactor to run tests next"
Clawdbot sends command to that specific session.
Result: 3 parallel tasks, full remote control from your phone. 🎯
clawdbot skill install claude-code-wingman
Or visit: https://clawdhub.com/skills/claude-code-wingman
cd ~/code
git clone https://github.com/yossiovadia/claude-code-orchestrator.git
cd claude-code-orchestrator
chmod +x *.sh lib/*.sh
claude CLI (Claude Code)tmux (terminal multiplexer)jq (JSON processor)CRITICAL: When interacting with Claude Code sessions, ALWAYS use the wingman script (claude-wingman.sh). Never run raw tmux commands directly.
Why:
Wrong (DON'T DO THIS):
tmux send-keys -t my-session "Run tests"
# ^ Might forget C-m, won't be tracked in dashboard
Right (ALWAYS DO THIS):
~/code/claude-code-orchestrator/claude-wingman.sh \
--session my-session \
--workdir ~/code/myproject \
--prompt "Run tests"
When a user asks for coding work, spawn Claude Code:
~/code/claude-code-orchestrator/claude-wingman.sh \
--session <session-name> \
--workdir <project-directory> \
--prompt "<task description>"
To send a new task to an already-running session:
~/code/claude-code-orchestrator/claude-wingman.sh \
--session <existing-session-name> \
--workdir <same-directory> \
--prompt "<new task>"
Note: The script detects if the session exists and sends the command to it instead of creating a duplicate.
tmux capture-pane -t <session-name> -p -S -50
Parse the output to determine if Claude Code is:
User: "Fix the bug in api.py"
Clawdbot:
Spawning Claude Code session for this...
[Runs wingman script]
✅ Session started: vsr-bug-fix
📂 Directory: ~/code/semantic-router
🎯 Task: Fix bug in api.py
User: "What's the status?"
Clawdbot:
tmux capture-pane -t vsr-bug-fix -p -S -50
Then summarize: "Claude Code is running tests now, 8/10 passing"
User: "Tell it to commit the changes"
Clawdbot:
~/code/claude-code-orchestrator/claude-wingman.sh \
--session vsr-bug-fix \
--workdir ~/code/semantic-router \
--prompt "Commit the changes with a descriptive message"
~/code/claude-code-orchestrator/claude-wingman.sh \
--session <name> \
--workdir <dir> \
--prompt "<task>"
~/code/claude-code-orchestrator/claude-wingman.sh \
--session <existing-session> \
--workdir <same-dir> \
--prompt "<new command>"
tmux capture-pane -t <session-name> -p -S -100
tmux ls
Filter for Claude Code sessions:
tmux ls | grep -E "(vsr|clawdbot|proxy|claude)"
cat /tmp/auto-approver-<session-name>.log
tmux kill-session -t <session-name>
tmux attach -t <session-name>
# Detach: Ctrl+B, then D
Planned features:
wingman dashboardShows all active Claude Code sessions:
┌─────────────────────────────────────────────────────────┐
│ Active Claude Code Sessions │
├─────────────────┬──────────────────────┬────────────────┤
│ Session │ Directory │ Status │
├─────────────────┼──────────────────────┼────────────────┤
│ vsr-issue-1131 │ ~/code/semantic-... │ ✅ Working │
│ clawdbot-feat │ ~/code/clawdbot │ ⏳ Waiting approval │
│ proxy-refactor │ ~/code/claude-co... │ ❌ Error │
└─────────────────┴──────────────────────┴────────────────┘
Total: 3 sessions | Working: 1 | Waiting: 1 | Error: 1
wingman status <session>Detailed status for a specific session:
Session: vsr-issue-1131
Directory: ~/code/semantic-router
Started: 2h 15m ago
Last activity: 30s ago
Status: ✅ Working
Current task: Running pytest tests
Progress: 8/10 tests passing
For now: Use tmux commands directly, but always via the wingman script for sending commands!
When running in a new directory, Claude Code asks:
"Do you trust the files in this folder?"
First run: User must attach and approve (press Enter). After that, it's automatic.
Handle it:
User, Claude Code needs you to approve the folder trust (one-time). Please run:
tmux attach -t <session-name>
Press Enter to approve, then Ctrl+B followed by D to detach.
✅ Use orchestrator for:
❌ Don't use orchestrator for:
Use descriptive names:
vsr-issue-1131 - specific issue workvsr-feature-auth - feature developmentproject-bugfix-X - bug fixesThe orchestrator sends Enter twice with delays. If stuck, user can attach and press Enter manually.
Check logs: cat /tmp/auto-approver-<session-name>.log
Should see: "Approval prompt detected! Navigating to option 2..."
Kill it: tmux kill-session -t <name>
After successful tasks, update TOOLS.md:
### Recent Claude Code Sessions
- 2026-01-26: VSR AWS check - verified vLLM server running ✅
- Session pattern: vsr-* for semantic-router work
The master monitor daemon sends WhatsApp notifications when sessions need approval. Handle them with these commands:
When you receive an approval notification, respond with:
Clawdbot parses your message and runs:
# Approve once
~/code/claude-code-orchestrator/lib/handle-approval.sh approve <session-name>
# Approve all similar (always)
~/code/claude-code-orchestrator/lib/handle-approval.sh always <session-name>
# Deny
~/code/claude-code-orchestrator/lib/handle-approval.sh deny <session-name>
Notification received:
🔒 Session 'vsr-bugfix' needs approval
Bash(rm -rf ./build && npm run build)
Reply with:
• approve vsr-bugfix - Allow once
• always vsr-bugfix - Allow all similar
• deny vsr-bugfix - Reject
You reply: "approve vsr-bugfix"
Clawdbot:
~/code/claude-code-orchestrator/lib/handle-approval.sh approve vsr-bugfix
Response: "✓ Session 'vsr-bugfix' approved (once)"
# Start monitoring all sessions (reads config from ~/.clawdbot/clawdbot.json)
~/code/claude-code-orchestrator/master-monitor.sh &
# With custom intervals
~/code/claude-code-orchestrator/master-monitor.sh --poll-interval 5 --reminder-interval 120 &
# Check if running
cat /tmp/claude-orchestrator/master-monitor.pid
# View logs
tail -f /tmp/claude-orchestrator/master-monitor.log
# Stop the daemon
kill $(cat /tmp/claude-orchestrator/master-monitor.pid)
No environment variables needed - phone and webhook token are read from Clawdbot config.