원클릭으로
cmux-pane-chat
cmux 워크스페이스 안의 다른 터미널 패널(codex, 다른 claude 세션, 일반 shell)에 메시지를 보내고 응답을 읽기 위해 사용. "옆 패널", "다른 패널", "codex 에게"
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
cmux 워크스페이스 안의 다른 터미널 패널(codex, 다른 claude 세션, 일반 shell)에 메시지를 보내고 응답을 읽기 위해 사용. "옆 패널", "다른 패널", "codex 에게"
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Convert raw feature requirements, bug reports, or rough task descriptions into a goal-optimized prompt for the agentic coding tool that will run it — Claude Code or OpenAI Codex. 거친 요구사항·버그 리포트·대충 적은 작업 설명을, 그 작업을 실제로 실행할 코딩 에이전트(Claude Code 또는 Codex)에 맞춘 goal 최적화 프롬프트로 변환한다. Use when the user wants a requirement shaped into a prompt/spec/goal for an agent — "이거 프롬프트로 만들어줘 / 변환해줘", "코덱스(codex)/클로드코드용으로", "목표·범위·완료조건 갖춘 프롬프트로" — or mentions the goal feature or /goal command. By default targets the agent running the skill (Claude Code → Claude-optimized, Codex → Codex-optimized); honors an explicit named target. Proactively fire on vague requirements headed to a coding agent ("대시보드 빠르게 해줘", "add auth", "로그인 버그 고쳐줘"). Not for implementing/debugging it yourself, codex code review, explaining /goal, translating, editing AGENTS.md, multi-agent orchestration (cmux/herdr), or writing a plan.
Use when the user wants to turn a repetitive, reviewable task into a controlled agent loop — phrases like "이거 자동화/반복하고 싶어", "루프로 돌리고 싶어", "정기적으로 점검하게 해줘", "loop engineering", "agent loop 설계", or wants to audit existing loops ("루프 점검", "loop audit"). Designs a loop with trigger·state·verification·human-gate·stop + 7 guardrails + 6 metrics, maps it onto an existing engine (herdr/loop/Cron/Workflow/Codex Automations), and writes a spec to docs/loops/. Does NOT execute loops itself and is NOT for one-off prompts (use goalcraft) or multi-agent run orchestration (use herdr/cmux).
Convert a recurring or repetitive task description into a Claude Code /loop prompt — the loop sibling of goalcraft. 반복·주기적 작업 설명을 Claude Code /loop 용 프롬프트로 변환한다(goalcraft의 loop 형제). Use when the user wants a task shaped into a /loop prompt — "루프 프롬프트로 만들어줘", "/loop 용으로", "주기적으로 반복하게", "매 N분마다 ~", "~까지 반복해서", "이거 loop으로 돌려줘" — or mentions the /loop command, recurring/scheduled in-session execution, or babysitting/polling a long-running thing. Picks the mode (fixed interval → cron, self-paced → model self-paces, or loop.md default) and bakes in an objective stop condition, an iteration ceiling, and a verification check. Proactively fire on recurring-execution requests ("배포 끝날 때까지 확인", "CI 통과할 때까지 반복", "keep checking the deploy"). Not for single-shot tasks or /goal until-condition prompts (→ goalcraft, which owns /goal), running the loop yourself, deciding whether something should be a loop or auditing loop governance (→ loop-engineering), translating, or explaining /loop.
Use when creating, revising, or critiquing frontend UI (web or mobile) where visual quality, product fit, design-system fidelity, or avoiding generic "AI-slop" output matters — e.g. "make this look good", "why does this look AI-generated", building a landing page / app screen / dashboard, or a design pass on existing UI. Turns vague design intent into a decision-first workflow: classify the surface, decide direction before code, escape default looks, build to measurable craft standards, and verify the rendered result. Portable across Claude Code and Codex.
Use when the user asks to inspect, summarize, explain, configure, connect, curate, or troubleshoot the session-journal Obsidian logging workflow for Claude Code or Codex — including pointing it at an existing/Obsidian-Sync vault, keeping AI-generated notes distinct from hand-authored ones, multi-machine setup, distilling durable knowledge, or verifying the vault config.
Use when the user asks to save durable lessons from session-journal into the LLM-Wiki, collect mistakes or insights from agent work, create reviewable wiki draft candidates, or report those draft candidates to Slack.
| name | cmux-pane-chat |
| description | cmux 워크스페이스 안의 다른 터미널 패널(codex, 다른 claude 세션, 일반 shell)에 메시지를 보내고 응답을 읽기 위해 사용. "옆 패널", "다른 패널", "codex 에게" |
cmux 는 macOS 멀티터미널 앱이고, 한 워크스페이스 안에 여러 패널(surface)을 띄워 각각에서 다른 프로세스(예: claude code, codex, 일반 shell)를 돌릴 수 있다. cmux CLI 가 Unix socket 으로 그 패널들을 제어해서, 입력을 주입하고 화면을 뜯어보는 식으로 옆 패널의 agent 와 협업할 수 있다.
이 skill 은 그 워크플로우를 표준화한다.
먼저 한 번만 다음을 확인한다 — 둘 다 통과해야 진행할 수 있다.
echo "$CMUX_SOCKET_PATH" # 비어있지 않아야 함
which cmux # /Applications/cmux.app/.../bin/cmux 가 떠야 함
비어있으면 이 skill 은 동작하지 않는다 — 사용자에게 "cmux 환경이 아닌 것 같다"고 알리고 중단.
| 목적 | 명령 |
|---|---|
| 패널 구조 확인 | cmux tree |
| 화면 읽기 | cmux capture-pane --surface surface:N --lines 40 |
| 텍스트 전송 | cmux send --surface surface:N "메시지" |
| 키 전송 (Enter, Tab 등) | cmux send-key --surface surface:N Enter |
중요한 함정: send-panel --panel pane:N 형태는 Surface is not a terminal 에러를 낸다. 반드시 --surface surface:N 으로 surface ID 를 직접 지정해야 한다. cmux tree 출력에서 surface surface:8 [terminal] 처럼 보이는 ID 를 그대로 쓴다.
cmux tree
출력 예시:
window window:1 [current]
├── workspace workspace:1
│ ├── pane pane:1
│ │ └── surface surface:2 [terminal] "tmux new-session -s claude"
│ ├── pane pane:2 [focused] ◀ here
│ │ └── surface surface:1 [terminal] "현재 작업 제목"
│ └── pane pane:7
│ └── surface surface:8 [terminal] "tmux new-session -s qplace"
◀ here 는 현재 본인이 떠있는 패널 — 이건 건드리지 않는다. 나머지 surface 후보들 중 사용자가 말한 패널이 어느 것인지 애매하면 각 surface 의 마지막 화면을 살짝 잡아본다:
cmux capture-pane --surface surface:8 --lines 15
화면 텍스트로 무엇이 돌고 있는지 판별:
gpt-5.x 또는 Codex 프롬프트 → codexClaude / claude.ai 프롬프트, Opus/Sonnet 모델명 → claude code$ , % , (venv) , git status 같은 출력 → 일반 shellcmux send --surface surface:8 "여기에 보낼 본문"
cmux send-key --surface surface:8 Enter
두 번째 줄을 빼먹으면 입력만 들어가고 제출이 안 돼서 응답이 절대 안 온다 — 항상 짝으로 호출.
CLI 답게 따옴표 이스케이프에 주의. 본문이 길거나 줄바꿈/특수문자가 많으면 heredoc 보다 임시 파일에 적고 --text-file 같은 옵션을 찾기보다는 그냥 큰따옴표 + \n 변환 없이 그대로 보낸다 (cmux send 는 multi-line 텍스트 그대로 받음).
만약 메시지에 큰따옴표가 들어가야 한다면 작은따옴표로 감싸거나 \" 로 이스케이프.
상대 agent 가 답하는 데 걸리는 시간은 케이스마다 다르다. 첫 시도는 짧게, 안 끝났으면 더 기다린다.
sleep 4
cmux capture-pane --surface surface:8 --lines 60
응답이 끝났는지 판별하는 휴리스틱:
gpt-5.x · ~/... 같은 footer 가 다시 보이고, 그 위에 › 입력 프롬프트가 비어 있으면 답변 종료─── ❯ ─── 입력 프롬프트가 비어있고 모델 footer 가 보이면 종료긴 응답을 기다릴 때 (최대 ~60초 정도까지):
prev=""
for i in 1 2 3 4 5 6; do
sleep 5
cur=$(cmux capture-pane --surface surface:8 --lines 60)
[ "$cur" = "$prev" ] && break
prev=$cur
done
echo "$cur"
그 이상 걸리면 사용자에게 한 번 보고하고 계속 기다릴지 물어본다. 무한 폴링은 금지 — 상대가 멈췄거나 입력 대기 상태일 수 있다.
capture 한 화면에서 답변 본문만 추출해서 사용자에게 전달한다. capture 결과에는 footer, 입력 프롬프트, ANSI 잔재가 섞여 있으므로:
› 또는 ❯) 위쪽이 답변 본문• 또는 ⏺ 같은 응답 마커가 답변 시작점gpt-5.x ..., claude X.X.X)은 잘라낸다본인의 메시지에 답변을 그대로 인용해서 사용자에게 보여주는 게 좋다. "codex 가 이렇게 답했어:" + 본문.
A. 단발 질의 — 가장 흔함. 한 번 묻고 한 번 받음.
B. 의견 교환 — 사용자가 "codex 와 의논해서 결론 내" 같은 요구를 할 때:
C. 분업 — 같은 task 의 다른 부분을 codex 에게 맡기고 본인은 다른 부분 진행. 이 경우 메시지를 넘길 때 codex 가 자기 컨텍스트만으로도 task 를 시작할 수 있도록 충분한 정보(파일 경로, AC, 제약)를 한 번에 적어 보낸다 — 핑퐁 횟수를 줄여야 빠르다.
git reset --hard 같은 걸 자제하듯, 옆 agent 에게도 그런 걸 시키지 말 것. 사용자 승인이 필요한 행동을 굳이 우회하기 위해 이 채널을 쓰는 건 금지.새 패널과 처음 통신할 때는 진짜 ping 한 번 날려서 살아있는지 확인하면 좋다:
cmux send --surface surface:N "ping — 'pong' 한 줄로만 답해줘"
cmux send-key --surface surface:N Enter
sleep 3
cmux capture-pane --surface surface:N --lines 15
응답이 오면 본 작업 시작. 응답이 안 오면 surface 가 입력 대기가 아닌 다른 모드(예: vim, less, fzf) 일 수 있으니 사용자에게 알린다.