surfacing-work-in-cmux
Use when work in this repo produces something the user would want to look at — a new spec or plan file under parfait/, a plan phase finishing, a test or gradle run, a screenshot or build artifact — an
Files1
View on GitHubSKILL.md.claude/skills/surfacing-work-in-cmux/SKILL.md
GitHubSurfacing Work in cmux
Overview
superpowers가 순서와 게이트를 정한다. cmux는 그 진행을 보이게 할 뿐이다.
핵심 원칙: cmux는 가산적 장식층이다. cmux가 있든 없든 산출물의 경로·내용·커밋은 동일해야 한다. cmux 없이 이 repo를 쓰는 터미널에서 결과가 달라지면 이 스킬이 틀린 것이다.
게이트 (먼저 실행 — 필수)
[ -n "${CMUX_WORKSPACE_ID:-}" ] && command -v cmux >/dev/null 2>&1 && echo cmux || echo plain
plain→ 이 스킬은 여기서 끝난다. 아무 것도 하지 않고 평소 superpowers 흐름 그대로 진행. "cmux가 없어서 X를 못 한다"고 보고하지 않는다. 없어도 잃는 게 없어야 정상이다.cmux→ 아래 매핑 적용.
매핑 (superpowers 단계 → cmux)
| 단계 | 행동 |
|---|---|
brainstorming 스펙 확정 |
파일 저장 후 cmux open parfait/android/specs/<f>.md --workspace "$CMUX_WORKSPACE_ID" --pane pane:<helper> --no-focus |
writing-plans 계획 확정 |
같음(parfait/android/plans/) + cmux set-status plan "0/<N>" --workspace "$CMUX_WORKSPACE_ID" |
executing-plans phase 전환 |
cmux set-progress <done/total> --label "Phase <n>: <제목>" + cmux log --level info -- "<phase> done" |
test-driven-development 루프 |
테스트를 helper surface에 cmux send, 결과는 cmux read-screen. 실패 출력이 사용자 화면에 남는다 |
verification-before-completion |
이미 만든 아티팩트를 cmux open ... --no-focus. 아티팩트 경로는 cmux와 무관하게 정한다 |
requesting-code-review |
cmux diff로 리뷰 대상 표시 |
helper pane 해소·surface 생성 규칙은 cmux-workspace 스킬을 따른다(여기 복제하지 않는다).
이 repo 전용 override
/cmux-assets/<branch>/쓰지 않는다.cmux-workspace스킬의 기본값이지만 이 repo에선 무효다. 산출물은parfait/또는 세션 scratchpad에 두고, cmux는 열기만 한다. cmux 전용 경로에 산출물을 두면 non-cmux 터미널에서 그 파일이 사라진다.- cmux 관련 파일을 커밋하지 않는다. helper pane 배치, workspace 이름, surface ref는 세션 상태지 repo 상태가 아니다.
parfait/문서 본문에 cmux 명령·pane ref·workspace ID를 쓰지 않는다. 문서는 어느 터미널에서 읽어도 실행 가능해야 한다.- git 3작업(commit/push/PR)은 여전히 사용자 확인 필수. cmux 자동화로 우회하지 않는다.
실패 처리
cmux 호출 실패는 작업 실패가 아니다. 한 번 실패하면 그 단계의 cmux 표시를 포기하고 본 작업을 계속한다. 재시도 루프·대체 경로 탐색 금지.
helper terminal을 만든 직후에는 cmux surface-health 또는 read-screen으로 실제로
붙었는지 확인한 뒤에만 "저기서 돌고 있다"고 말한다. 안 붙었으면 nohup·tmux 같은
숨김 fallback을 쓰지 말고 그대로 보고한다.
포커스
select-workspace·focus-pane·focus-panel·포커스성 tab-action은 사용자가 명시적으로
요청할 때만. 생성·이동 계열은 전부 --focus false / --no-focus. 사용자가 다른
workspace나 다른 앱을 보고 있을 수 있다.
흔한 실수
| 실수 | 결과 |
|---|---|
| cmux 없는 터미널에서 "표시 못 함" 보고 | 게이트가 plain이면 조용히 넘어가야 함 |
아티팩트를 /cmux-assets에 저장 |
non-cmux 사용자에게 파일 없음 |
| 사이드바 진행률을 진행상황 정본으로 취급 | 정본은 parfait/android/plans/*.md 체크박스. 사이드바는 투영 |
cmux send로 테스트 돌리고 결과 확인 없이 통과 선언 |
read-screen으로 실제 출력 확인 후 판단 |
| cmux 호출 실패 → 작업 중단 | best-effort. 계속 진행 |
Red Flags — 멈추고 재검토
- "cmux에서만 되는 방식으로 하면 편한데" → 이식성 위반
- "이 경로는 cmux가 열어주니까 괜찮다" → non-cmux에서 깨진다
- "포커스 한 번만 옮기면 사용자가 볼 텐데" → 명시 요청 없으면 금지
- "진행률 다 찼으니 승인된 걸로" → 게이트는 사람이다
연관
cmux-workspace— helper pane·surface·사이드바 명령 상세cmux-cli— CLI 문법 확인(cmux <command> --help먼저)superpowers:executing-plans·superpowers:test-driven-development— 순서와 게이트의 정본