Created
March 1, 2026 22:41
-
-
Save jaigouk/ade6d8ede25029a0bc656776a651c017 to your computer and use it in GitHub Desktop.
zshrc or bashrc alias for claude-team command
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # claude teammate mode via tmux | |
| # Uses standard tmux on all platforms (iTerm2 -CC control mode is fragile across updates) | |
| function claude-team() { | |
| local cmd="${1:-}" | |
| # sanitize a string into a valid tmux session name | |
| _ct_sanitize() { | |
| echo "$1" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9_-]/-/g' | sed 's/^-//;s/-$//' | cut -c1-50 | |
| } | |
| case "$cmd" in | |
| now) | |
| # use current folder name as session name | |
| local raw_name="${PWD##*/}" | |
| local session="ct-$(_ct_sanitize "$raw_name")" | |
| if tmux has-session -t "$session" 2>/dev/null; then | |
| tmux attach-session -t "$session" | |
| else | |
| tmux new-session -s "$session" claude --dangerously-skip-permissions --teammate-mode tmux | |
| fi | |
| ;; | |
| new) | |
| # claude-team new <name> | |
| local name="${2:?usage: claude-team new <name>}" | |
| local session="ct-$(_ct_sanitize "$name")" | |
| if tmux has-session -t "$session" 2>/dev/null; then | |
| echo "Session '$session' already exists. Use: claude-team attach $name" | |
| return 1 | |
| fi | |
| tmux new-session -s "$session" claude --dangerously-skip-permissions --teammate-mode tmux | |
| ;; | |
| attach|a) | |
| local name="${2:?usage: claude-team attach <name>}" | |
| local session="ct-$(_ct_sanitize "$name")" | |
| if tmux has-session -t "$session" 2>/dev/null; then | |
| tmux attach-session -t "$session" | |
| else | |
| echo "No session '$session'. Use: claude-team ls" | |
| return 1 | |
| fi | |
| ;; | |
| ls|list) | |
| tmux ls 2>/dev/null | grep '^ct-' || echo "No claude-team sessions." | |
| ;; | |
| kill) | |
| local name="${2:?usage: claude-team kill <name>}" | |
| local session="ct-$(_ct_sanitize "$name")" | |
| if tmux has-session -t "$session" 2>/dev/null; then | |
| tmux kill-session -t "$session" | |
| echo "Killed session '$session'." | |
| else | |
| echo "No session '$session'." | |
| return 1 | |
| fi | |
| ;; | |
| kill-all) | |
| local sessions=($(tmux ls 2>/dev/null | grep '^ct-' | cut -d: -f1)) | |
| if [[ ${#sessions[@]} -eq 0 ]]; then | |
| echo "No claude-team sessions to kill." | |
| return 0 | |
| fi | |
| for s in "${sessions[@]}"; do | |
| tmux kill-session -t "$s" | |
| echo "Killed '$s'." | |
| done | |
| ;; | |
| *) | |
| cat <<'EOF' | |
| claude-team - Claude teammate mode via tmux | |
| usage: claude-team <command> [args] | |
| commands: | |
| now start/attach session named after current folder | |
| new <name> start a new named session | |
| attach <name> attach to an existing session (alias: a) | |
| ls list all claude-team sessions (alias: list) | |
| kill <name> kill a named session | |
| kill-all kill all claude-team sessions | |
| EOF | |
| ;; | |
| esac | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment