tmux-agent
npx skills add https://github.com/ssiumha/dots --skill tmux-agent
Agent 安装分布
Skill 文档
tmux-agent
Claudeê° tmux를 ìì¨ì ì¼ë¡ ì¡°ìíì¬ ë¤ë¥¸ paneì ì¸ìíê³ , ëª ë ¹ì ì ì¡íë©°, íë¡ì¸ì¤ ìí를 íì í©ëë¤.
Quick Reference
| ìì | ìí¬íë¡ì° | íµì¬ ëª ë ¹ì´ |
|---|---|---|
| Pane ëª©ë¡ | WF1: Discover | tmux list-panes -a -F "..." |
| ì¶ë ¥ ìº¡ì² | WF2: Observe | tmux capture-pane -t {target} -p |
| ëª ë ¹ ì ì¡ | WF3: Command | tmux send-keys "cmd" Enter |
| ìëì° ìì± | WF4: Create | tmux new-window -n "name" |
| ì í´ ê°ì§ | WF5: Idle | í롬íí¸ í¨í´ ë§¤ì¹ |
íµì¬ ì² í
- ë¹ì¹¨í¬ì ê´ì°°:
capture-paneì¼ë¡ íë¡ì¸ì¤ ë°©í´ ìì´ ìí íì - ê°ê²°í ì ì¡:
send-keys "cmd" Enteríìì¼ë¡ í ë²ì ì ì¡ - Escape ì²ë¦¬: í¹ì문ì ì´ì¤ì¼ì´í ì² ì í (
resources/02-send-keys-safety.md) - Naming convention: 구조íë ì´ë¦ì¼ë¡ pane ìí ëª ì
Instructions
ìí¬íë¡ì° 1: Discover (Pane ì¸ì)
목ì : íì¬ tmux ì¸ì ì 모ë pane íì
ë¨ê³:
-
ì ì²´ pane ëª©ë¡ (ëë í 리 + íë¡ì¸ì¤ í¬í¨)
tmux list-panes -a -F "#{session_name}:#{window_index}.#{pane_index} [#{pane_current_command}] #{pane_current_path}" -
íì¬ ì¸ì ë§
tmux list-panes -F "#{window_index}.#{pane_index} [#{pane_current_command}] #{pane_current_path}" -
í¹ì íë¡ì¸ì¤ íí°ë§ (ì: Claude)
tmux list-panes -a -F "#{session_name}:#{window_index}.#{pane_index}" -f "#{m:*claude*,#{pane_current_command}}" -
íê² ì í: ë¤ì ìí¬íë¡ì°ì ì¬ì©í pane ìë³
í¸ë¦¬ê±° í¤ìë: “pane 목롔, “ì´ë¤ pane”, “tmux ìí”
ìí¬íë¡ì° 2: Observe (ì¶ë ¥ 캡ì²)
목ì : í¹ì paneì ì¶ë ¥ ë´ì© ì½ê¸° (íë¡ì¸ì¤ ë°©í´ ìì´)
ë¨ê³:
-
기본 ìº¡ì² (íì¬ íë©´)
tmux capture-pane -t {target} -p -
íì¤í 리 í¬í¨ (ìµê·¼ Nì¤)
tmux capture-pane -t {target} -p -S -100 -
ANSI ì½ë í¬í¨ (ëë²ê¹ ì©)
tmux capture-pane -t {target} -p -e -
ì¶ë ¥ ë¶ì: ìë¬ í¨í´, ìë£ ìí, í롬íí¸ ë기 ì¬ë¶ íì¸
- í¨í´ 참조:
resources/01-capture-patterns.md
- í¨í´ 참조:
í¸ë¦¬ê±° í¤ìë: “pane ì¶ë ¥”, “캡첔, “ë¡ê·¸ í츔
ìí¬íë¡ì° 3: Command (ëª ë ¹ ì ì¡)
목ì : ë¤ë¥¸ paneì ëª ë ¹ì´ ì ì¡ (race condition ìì )
ë¨ê³:
-
íê² íì¸: paneì´ ëª ë ¹ ë기 ì¤ì¸ì§ íì¸ (WF5 ì í ê¶ì¥)
-
ìì í ì ì¡ í¨í´
tmux send-keys -t {target} "command" Enter -
í¹ì문ì ì´ì¤ì¼ì´í (íì íì¸)
# ìë°ì´í ë´ tmux send-keys -t 1.0 "echo \"hello\"" # " â \" tmux send-keys -t 1.0 "echo \$HOME" # $ â \$ # ììë°ì´í (ë ìì ) tmux send-keys -t 1.0 'echo "$HOME"'- ìì¸ ì°¸ì¡°:
resources/02-send-keys-safety.md
- ìì¸ ì°¸ì¡°:
-
í¹ì í¤ ì ì¡
tmux send-keys -t {target} C-c # Ctrl+C tmux send-keys -t {target} C-d # Ctrl+D tmux send-keys -t {target} -l "C-c" # 리í°ë´ "C-c" í ì¤í¸ -
ê²°ê³¼ íì¸ (ì í): WF2ë¡ ì¶ë ¥ 캡ì²
í¸ë¦¬ê±° í¤ìë: “ëª ë ¹ ì ì¡”, “send”, “ì¤íí´ì¤”, “paneì”
ìí¬íë¡ì° 4: Create (ìëì°/Pane ìì±)
목ì : ì ìì ê³µê° ìì± ë° ì´ê¸°í
ë¨ê³:
-
ì ìëì° ìì±
tmux new-window -n "agent-1" # ë¹ ìëì° tmux new-window -n "agent-1" "claude" # Claude ì¤í -
Pane ë¶í
tmux split-window -h -t 0 # ìí ë¶í tmux split-window -v -t 0 # ìì§ ë¶í -
ì´ë¦ ì§ì
tmux rename-window -t {target} "new-name" tmux select-pane -t {target} -T "pane-title" -
Naming convention
agent-{N}: Claude ì¸ì¤í´ì¤monitor-{purpose}: 모ëí°ë§ ì ì©build-{project}: ë¹ë íë¡ì¸ì¤- ìì¸ ì°¸ì¡°:
resources/03-window-management.md
-
ì´ê¸° ëª ë ¹: WF3ì¼ë¡ ì´ê¸°í ì¤í¬ë¦½í¸ ì ì¡
í¸ë¦¬ê±° í¤ìë: “ì pane”, “window ìì±”, “Claude ì¤í”, “ë¶í “
ìí¬íë¡ì° 5: Idle Detection (ì í´ ìí ê°ì§)
목ì : paneì´ ëª ë ¹ ë기 ì¤ì¸ì§, ìì ì¤ì¸ì§ íë¨
ë¨ê³:
-
ì¶ë ¥ 캡ì²
tmux capture-pane -t {target} -p | tail -5 -
í롬íí¸ í¨í´ 매ì¹
# Shell í롬íí¸: $, %, â¯, >, â echo "$output" | grep -qE '(\$|%|â¯|â|>)\s*$' && echo "IDLE" # Claude í롬íí¸ echo "$output" | grep -qE '(You:)\s*$' && echo "IDLE" # ìë¬ í¨í´ echo "$output" | grep -qE '(Error:|FAIL|Traceback|panic:)' && echo "FAILED" -
ìí íì
- í롬íí¸ í¨í´ ë§¤ì¹ â IDLE
- ìë¬ í¨í´ â FAILED
- ê·¸ ì¸ â ACTIVE
í¸ë¦¬ê±° í¤ìë: “idle”, “ë기 줔, “ì¤í ì룔, “ìí í츔
ì¤ì ìì¹
-
íê² ê²ì¦: ëª ë ¹ ì ì¡ ì pane ì¡´ì¬ íì¸
tmux list-panes -F "#{pane_id}" | grep -q "{target}" -
ê°ê²°í ì ì¡:
send-keys "cmd" Enteríì (sleep ì¬ì© ê¸ì§) -
Escape ì²ë¦¬: ìë°ì´í ë´
",$,`ë°ëì ì´ì¤ì¼ì´í -
ìë¬ ì í: íì pane ìë¬ë¥¼ ìì í¸ì¶ììê² ì¦ì ë³´ê³
-
ì´ë¦ íì¤í: Naming convention ì¤ìë¡ pane ìí ëª íí
Anti-patterns
| â ìíí í¨í´ | â ìì í í¨í´ |
|---|---|
send-keys "cmd" (Enter ëë½) |
send-keys "cmd" Enter |
send-keys "echo $VAR" |
send-keys "echo \$VAR" ëë 'echo "$VAR"' |
| Idle íì¸ ìì´ ëª ë ¹ ì ì¡ | WF5ë¡ Idle íì¸ í ì ì¡ |
íëì½ë©ë íê² 0.0 |
WF1ì¼ë¡ ëì íê² íì |
Examples
ë¤ë¥¸ paneìì í ì¤í¸ ì¤í
User: "pane 1ìì npm test ì¤ííê³ ê²°ê³¼ ìë ¤ì¤"
â WF1: list-panesë¡ 1ë² pane íì¸
â WF5: Idle ìí íì¸
â WF3: send-keys "npm test"
â WF5: ìë£ ë기 (polling)
â WF2: ê²°ê³¼ ìº¡ì² ë° ë³´ê³
ì Claude ì¸ì¤í´ì¤ ìì± í ìì í ë¹
User: "ì Claude ëìì ì½ë 리뷰 ìì¼"
â WF4: new-window -n "agent-review" "claude"
â WF5: Claude ì¤ë¹ ë기
â WF6: í롬íí¸ ì ì¡ + ìëµ ë기
â WF2: ê²°ê³¼ 캡ì²
ë³ë ¬ ìì ì¤ì¼ì¤í¸ë ì´ì
User: "3ê° paneìì ê°ê° ë¤ë¥¸ í
ì¤í¸ ì¤í"
â WF1: ì¬ì© ê°ë¥í pane 3ê° ìë³
â WF3 x 3: ê° paneì í
ì¤í¸ ëª
ë ¹ ì ì¡ (ë³ë ¬)
â WF5: 모ë pane ìë£ ë기 (polling)
â WF2 x 3: ê²°ê³¼ ìì§ ë° íµí© ë³´ê³
Technical Details
리ìì¤ íì¼:
resources/01-capture-patterns.md: ìë¬/ìë£/í롬íí¸ í¨í´resources/02-send-keys-safety.md: Escape ì²ë¦¬resources/03-window-management.md: ë ì´ìì ë° ì´ë¦ ê·ì¹