본문으로 건너뛰기
cccskills
무료GitHub에 공개

claude-team

Coordinate multiple Claude Code workers from iTerm2. Assign tasks or beads issues, give each worker an optional isolated git worktree, send instructions, and check logs and completion status while parallel development proceeds.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

원문원문 설명 보기

Orchestrate multiple Claude Code workers via iTerm2 using the claude-team MCP server. Spawn workers with git worktrees, assign beads issues, monitor progress, and coordinate parallel development work.

sundial-org/awesome-openclaw-skills스타 671(GitHub 671 + cccskills 0)
연동 도구Telegram

실행 점수 미검증

설치 방법 보기

이럴 때 유용합니다

  • Splitting development tasks across Claude Code workers
  • Assigning beads issues to isolated worktrees
  • Monitoring worker progress and reviewing logs

포함된 파일(2)

  • SKILL.md12.6 KB
  • assets/setup.sh1.6 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Claude Team

Claude-team is an MCP server that lets you spawn and manage teams of Claude Code sessions via iTerm2. Each worker gets their own terminal pane, optional git worktree, and can be assigned beads issues.

Why Use Claude Team?

  • Parallelism: Fan out work to multiple agents working simultaneously
  • Context isolation: Each worker has fresh context, keeps coordinator context clean
  • Visibility: Real Claude Code sessions you can watch, interrupt, or take over
  • Git worktrees: Each worker can have an isolated branch for their work

⚠️ Important Rule

NEVER make code changes directly. Always spawn workers for code changes. This keeps your context clean and provides proper git workflow with worktrees.

Prerequisites

  • macOS with iTerm2 (Python API enabled: Preferences → General → Magic → Enable Python API)
  • claude-team MCP server configured in ~/.claude.json

Using via mcporter

All tools are called through mcporter call claude-team.<tool>:

mcporter call claude-team.list_workers
mcporter call claude-team.spawn_workers workers='[{"project_path":"/path/to/repo","bead":"cp-123"}]'

Core Tools

spawn_workers

Create new Claude Code worker sessions.

mcporter call claude-team.spawn_workers \
  workers='[{
    "project_path": "/path/to/repo",
    "bead": "cp-123",
    "annotation": "Fix auth bug",
    "use_worktree": true,
    "skip_permissions": true
  }]' \
  layout="auto"

Worker config fields:

  • project_path: Required. Path to repo or "auto" (uses CLAUDE_TEAM_PROJECT_DIR)
  • bead: Optional beads issue ID — worker will follow beads workflow
  • annotation: Task description (shown on badge, used in branch name)
  • prompt: Additional instructions (if no bead, this is their assignment)
  • use_worktree: Create isolated git worktree (default: true)
  • skip_permissions: Start with --dangerously-skip-permissions (default: false)
  • name: Optional worker name override (auto-picks from themed sets otherwise)

Layout options:

  • "auto": Reuse existing claude-team windows, split into available space
  • "new": Always create fresh window (1-4 workers in grid layout)

list_workers

See all managed workers:

mcporter call claude-team.list_workers
mcporter call claude-team.list_workers status_filter="ready"

Status values: spawning, ready, busy, closed

message_workers

Send messages to one or more workers:

mcporter call claude-team.message_workers \
  session_ids='["Groucho"]' \
  message="Please also add unit tests" \
  wait_mode="none"

wait_mode options:

  • "none": Fire and forget (default)
  • "any": Return when any worker is idle
  • "all": Return when all workers are idle

check_idle_workers / wait_idle_workers

Check or wait for workers to finish:

# Quick poll
mcporter call claude-team.check_idle_workers session_ids='["Groucho","Harpo"]'

# Blocking wait
mcporter call claude-team.wait_idle_workers \
  session_ids='["Groucho","Harpo"]' \
  mode="all" \
  timeout=600

read_worker_logs

Get conversation history:

mcporter call claude-team.read_worker_logs \
  session_id="Groucho" \
  pages=2

examine_worker

Get detailed status including conversation stats:

mcporter call claude-team.examine_worker session_id="Groucho"

close_workers

Terminate workers when done:

mcporter call claude-team.close_workers session_ids='["Groucho","Harpo"]'

⚠️ Worktree cleanup: Workers with worktrees commit to ephemeral branches. After closing:

  1. Review commits on the worker's branch
  2. Merge or cherry-pick to a persistent branch
  3. Delete the branch: git branch -D <branch-name>

bd_help

Quick reference for beads commands:

mcporter call claude-team.bd_help

Worker Identification

Workers can be referenced by any of:

  • Internal ID: Short hex string (e.g., 3962c5c4)
  • Terminal ID: iterm:UUID format
  • Worker name: Human-friendly name (e.g., Groucho, Aragorn)

Workflow: Assigning a Beads Issue

# 1. Spawn worker with a bead assignment
mcporter call claude-team.spawn_workers \
  workers='[{
    "project_path": "/Users/phaedrus/Projects/myrepo",
    "bead": "proj-abc",
    "annotation": "Implement config schemas",
    "use_worktree": true,
    "skip_permissions": true
  }]'

# 2. Worker automatically:
#    - Creates worktree with branch named after bead
#    - Runs `bd show proj-abc` to understand the task
#    - Marks issue in_progress
#    - Implements the work
#    - Closes the issue
#    - Commits with issue reference

# 3. Monitor progress
mcporter call claude-team.check_idle_workers session_ids='["Groucho"]'
mcporter call claude-team.read_worker_logs session_id="Groucho"

# 4. When done, close and merge
mcporter call claude-team.close_workers session_ids='["Groucho"]'
# Then: git merge or cherry-pick from worker's branch

Workflow: Parallel Fan-Out

# Spawn multiple workers for parallel tasks
mcporter call claude-team.spawn_workers \
  workers='[
    {"project_path": "auto", "bead": "cp-123", "annotation": "Auth module"},
    {"project_path": "auto", "bead": "cp-124", "annotation": "API routes"},
    {"project_path": "auto", "bead": "cp-125", "annotation": "Unit tests"}
  ]' \
  layout="new"

# Wait for all to complete
mcporter call claude-team.wait_idle_workers \
  session_ids='["Groucho","Harpo","Chico"]' \
  mode="all"

# Review and close
mcporter call claude-team.close_workers \
  session_ids='["Groucho","Harpo","Chico"]'

Best Practices

  1. Use beads: Assign bead IDs so workers follow proper issue workflow
  2. Use worktrees: Keeps work isolated, enables parallel commits
  3. Skip permissions: Workers need skip_permissions: true to write files
  4. Monitor, don't micromanage: Let workers complete, then review
  5. Merge carefully: Review worker branches before merging to main
  6. Close workers: Always close when done to clean up worktrees

HTTP Mode (Streamable HTTP Transport)

For persistent server operation, claude-team can run as an HTTP server. This keeps the MCP server running continuously with persistent state, avoiding cold starts.

Starting the HTTP Server

Run the claude-team HTTP server directly:

# From the claude-team directory
uv run python -m claude_team_mcp --http --port 8766

# Or specify the directory explicitly
uv run --directory /path/to/claude-team python -m claude_team_mcp --http --port 8766

For automatic startup on login, use launchd (see the "launchd Auto-Start" section below).

mcporter.json Configuration

Once the HTTP server is running, configure mcporter to connect to it. Create ~/.mcporter/mcporter.json:

{
  "mcpServers": {
    "claude-team": {
      "transport": "streamable-http",
      "url": "http://127.0.0.1:8766/mcp",
      "lifecycle": "keep-alive"
    }
  }
}

Benefits of HTTP Mode

  • Persistent state: Worker registry survives across CLI invocations
  • Faster responses: No Python environment startup on each call
  • External access: Can be accessed by cron jobs, scripts, or other tools
  • Session recovery: Server tracks sessions even if coordinator disconnects

Connecting from Claude Code

Update your .mcp.json to use HTTP transport:

{
  "mcpServers": {
    "claude-team": {
      "transport": "streamable-http",
      "url": "http://127.0.0.1:8766/mcp"
    }
  }
}

launchd Auto-Start

To automatically start the claude-team server on login, use the bundled setup script.

Quick Setup

Run the setup script from the skill's assets directory:

# From the skill directory
./assets/setup.sh

# Or specify a custom claude-team location
CLAUDE_TEAM_DIR=/path/to/claude-team ./assets/setup.sh

What the Setup Does

The setup script:

  1. Detects your uv installation path
  2. Creates the log directory at ~/.claude-team/logs/
  3. Generates a launchd plist from assets/com.claude-team.plist.template
  4. Installs it to ~/Library/LaunchAgents/com.claude-team.plist
  5. Loads the service to start immediately

The plist template uses uv run to start the HTTP server on port 8766, configured for iTerm2 Python API access (Aqua session type).

Managing the Service

# Stop the service
launchctl unload ~/Library/LaunchAgents/com.claude-team.plist

# Restart (re-run setup)
./assets/setup.sh

# Check if running
launchctl list | grep claude-team

# View logs
tail -f ~/.claude-team/logs/stdout.log
tail -f ~/.claude-team/logs/stderr.log

Troubleshooting launchd

# Check for load errors
launchctl print gui/$UID/com.claude-team

# Force restart
launchctl kickstart -k gui/$UID/com.claude-team

# Remove and reload (if plist changed)
launchctl bootout gui/$UID/com.claude-team
launchctl bootstrap gui/$UID ~/Library/LaunchAgents/com.claude-team.plist

Cron Integration

For background monitoring and notifications, claude-team supports cron-based worker tracking.

Worker Tracking File

Claude-team writes worker state to ~/.claude-team/memory/worker-tracking.json:

{
  "workers": {
    "Groucho": {
      "session_id": "3962c5c4",
      "bead": "cp-123",
      "annotation": "Fix auth bug",
      "status": "busy",
      "project_path": "/Users/phaedrus/Projects/myrepo",
      "started_at": "2025-01-05T10:30:00Z",
      "last_activity": "2025-01-05T11:45:00Z"
    },
    "Harpo": {
      "session_id": "a1b2c3d4",
      "bead": "cp-124",
      "annotation": "Add API routes",
      "status": "idle",
      "project_path": "/Users/phaedrus/Projects/myrepo",
      "started_at": "2025-01-05T10:30:00Z",
      "last_activity": "2025-01-05T11:50:00Z",
      "completed_at": "2025-01-05T11:50:00Z"
    }
  },
  "last_updated": "2025-01-05T11:50:00Z"
}

Cron Job for Monitoring Completions

Create a monitoring script at ~/.claude-team/scripts/check-workers.sh:

#!/bin/bash
# Check for completed workers and send notifications

TRACKING_FILE="$HOME/.claude-team/memory/worker-tracking.json"
NOTIFIED_FILE="$HOME/.claude-team/memory/notified-workers.json"
TELEGRAM_BOT_TOKEN="${TELEGRAM_BOT_TOKEN}"
TELEGRAM_CHAT_ID="${TELEGRAM_CHAT_ID}"

# Exit if tracking file doesn't exist
[ -f "$TRACKING_FILE" ] || exit 0

# Initialize notified file if needed
[ -f "$NOTIFIED_FILE" ] || echo '{"notified":[]}' > "$NOTIFIED_FILE"

# Find idle workers that haven't been notified
IDLE_WORKERS=$(jq -r '
  .workers | to_entries[] |
  select(.value.status == "idle") |
  .key
' "$TRACKING_FILE")

for worker in $IDLE_WORKERS; do
  # Check if already notified
  ALREADY_NOTIFIED=$(jq -r --arg w "$worker" '.notified | index($w) != null' "$NOTIFIED_FILE")

  if [ "$ALREADY_NOTIFIED" = "false" ]; then
    # Get worker details
    BEAD=$(jq -r --arg w "$worker" '.workers[$w].bead // "no-bead"' "$TRACKING_FILE")
    ANNOTATION=$(jq -r --arg w "$worker" '.workers[$w].annotation // "no annotation"' "$TRACKING_FILE")

    # Send Telegram notification
    MESSAGE="🤖 Worker *${worker}* completed
📋 Bead: \`${BEAD}\`
📝 ${ANNOTATION}"

    curl -s -X POST "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
      -d chat_id="$TELEGRAM_CHAT_ID" \
      -d text="$MESSAGE" \
      -d parse_mode="Markdown" > /dev/null

    # Mark as notified
    jq --arg w "$worker" '.notified += [$w]' "$NOTIFIED_FILE" > "${NOTIFIED_FILE}.tmp"
    mv "${NOTIFIED_FILE}.tmp" "$NOTIFIED_FILE"
  fi
done

Make it executable:

chmod +x ~/.claude-team/scripts/check-workers.sh

Crontab Entry

Add to crontab (crontab -e):

# Check claude-team workers every 2 minutes
*/2 * * * * TELEGRAM_BOT_TOKEN="your-bot-token" TELEGRAM_CHAT_ID="your-chat-id" ~/.claude-team/scripts/check-workers.sh

Environment Setup

Set Telegram credentials in your shell profile (~/.zshrc):

export TELEGRAM_BOT_TOKEN="123456789:ABCdefGHIjklMNOpqrsTUVwxyz"
export TELEGRAM_CHAT_ID="-1001234567890"

Alternative: Using clawdbot for Notifications

If you have clawdbot configured, you can send notifications through it instead:

# In check-workers.sh, replace the curl command with:
clawdbot send --to "$TELEGRAM_CHAT_ID" --message "$MESSAGE" --provider telegram

Clearing Notification State

When starting a fresh batch of workers, clear the notified list:

echo '{"notified":[]}' > ~/.claude-team/memory/notified-workers.json

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

1password

무료

Set up and use the 1Password command-line tool `op` to sign in, verify account access, and work with vault data. The skill covers single or multiple accounts and shows how to run commands or fill templates with secrets while limiting exposure in logs and files.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Set up the `op` command-line tool
  • Sign in and verify access to an account
  • Run a command with vault secrets
sundial-org/awesome-openclaw-skills6712026년 3월 7일 업데이트

Check live prices, price changes, and trading volume for Shanghai, Shenzhen, and Beijing stocks. Review intraday volume patterns and possible large-investor activity, and manage holdings with cost, quantity, and profit or loss summaries.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Checking current prices for A-share stocks
  • Reviewing intraday volume and large-investor signals
  • Managing a stock portfolio and checking profit or loss
sundial-org/awesome-openclaw-skills6712026년 3월 7일 업데이트

Scan HTML or JSX files and directories for accessibility issues such as missing image descriptions, form labels, and keyboard access problems. The skill identifies WCAG guideline failures and provides suggested code fixes alongside its findings.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Checking a new component before release
  • Auditing an inherited codebase
  • Preparing for an accessibility compliance review
sundial-org/awesome-openclaw-skills6712026년 3월 7일 업데이트

Plan A/B tests that compare page or product changes, with clear hypotheses, sample sizes, success metrics, and traffic allocation. Get a structured test plan and guidance for interpreting results and deciding what to try next.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Comparing signup button copy
  • Planning a pricing page experiment
  • Estimating sample size and test duration
sundial-org/awesome-openclaw-skills6712026년 3월 7일 업데이트

Turn LinkedIn profile URLs into coordinated account-based outreach. The workflow gathers profile details, enriches contacts with email and phone data, looks up mailing addresses, and prepares email, LinkedIn, and handwritten-letter touches with the specified services.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Building a multichannel campaign from LinkedIn prospect URLs
  • Enriching prospect records with work contact details
  • Coordinating email, LinkedIn, and handwritten mail outreach
sundial-org/awesome-openclaw-skills6712026년 3월 7일 업데이트

accli

무료

Work with Apple Calendar on macOS to list calendars, find and view events, and check busy time slots across calendars. Create, update, or delete events with details such as dates, locations, and descriptions.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Reviewing events on a work or personal calendar
  • Checking availability before scheduling a meeting
  • Creating or updating a calendar event
sundial-org/awesome-openclaw-skills6712026년 3월 7일 업데이트

sundial-org의 스킬 모두 보기

이 스킬의 문제 신고