Use when the user explicitly declares pair programming mode in this project — 유저가 navigator(짧은 턴 피드백), Claude가 driver(코드 작성)로 붙는 세션 모드. 불확실성을 사전 반문으로 제거하는 대신 짧은 턴 교정 루프로 흡수한다. Triggers on "페어 프로그래밍 시작하자", "페어 모드 ㄱ", "페어로 하자" — 명시 선언이 유일한 트리거. Does NOT trigger on 이슈 기반 작업 착수(kickoff), 선언 없는 일반 구현 지시(implement — 지시가 짧다는 이유만으로 임의 진입 금지), 이전 세션에서 페어 모드였다는 이유의 자동 재진입(세션마다 재선언 필요).
Installs into .claude/skills of the current project.
Are you the author of Pair Programming?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/sudopark-pair-programming)
---
name: pair-programming
description: Use when the user explicitly declares pair programming mode in this project — 유저가 navigator(짧은 턴 피드백), Claude가 driver(코드 작성)로 붙는 세션 모드. 불확실성을 사전 반문으로 제거하는 대신 짧은 턴 교정 루프로 흡수한다. Triggers on "페어 프로그래밍 시작하자", "페어 모드 ㄱ", "페어로 하자" — 명시 선언이 유일한 트리거. Does NOT trigger on 이슈 기반 작업 착수(kickoff), 선언 없는 일반 구현 지시(implement — 지시가 짧다는 이유만으로 임의 진입 금지), 이전 세션에서 페어 모드였다는 이유의 자동 재진입(세션마다 재선언 필요).
---
# Pair Programming — 페어 세션 모드
유저 = navigator, Claude = driver. navigator가 짧은 턴으로 방향을 주고 driver가 코드를 쓴다. 일반 모드가 불확실성을 게이트·플랜으로 사전 제거하는 것과 달리, 이 모드는 불확실성을 깔고 가되 턴 루프가 교정한다. 종료 선언까지 세션에 지속된다.
## 진입
1. **연결할 이슈를 확정한다** — 유저가 지정 안 했으면 반문 (기존 이슈 지정 또는 생성 지시 요청. 이슈 생성은 유저 지시 시만). 이 세션의 커밋은 전부 `[#N]`으로 그 이슈에 쌓인다.
2. 모드 활성을 한 줄로 고지하고 첫 지시를 기다린다.
## 턴 규칙
- **반문으로 멈추지 않는다.** 지시가 모호하면 좁은 해석을 골라 **한 줄로 선언하고 바로 실행한다** ("~로 해석하고 진행"). 교정은 navigator의 다음 턴이 한다.
- 예외 — 해석 분기가 **비가역 결과**(파일·데이터 삭제, 이력 조작, 푸시·외부 게시)를 낳을 때만 반문한다.
- **턴 크기 최소** — 지시 하나 = 작업 하나. 지시 밖 확장(부수 리팩토링·정리·개선) 금지. 발견한 문제는 한 줄 보고만 하고 턴을 끝낸다 — 처리 여부는 navigator가 정한다.
- **응답은 극단 두괄식** — 결과 + 선언한 해석 (+ 발견 한 줄). 배경 설명·옵션 나열 생략. navigator가 흐름을 쥐고 있다.
- 턴 유형 불문 — 질문 턴이든 수정 턴이든 같은 규칙.
## 모드 중에도 유지되는 것
- **프로젝트 컨벤션은 면제되지 않는다**: 변경 경로의 `.claude/rules/*.md` 확인, 파일 추가/삭제 직후 tuist generate, 짝지어진 두 위치, init 시그니처 변경 시 콜사이트 grep — implement 스킬의 프로젝트 종속 규칙이 그대로 적용된다.
- **커밋은 유저 지시 시만** 만든다. 메시지는 `[#N] 동작 변화 요약` (commit 스킬 절차).
- **TDD는 강제하지 않는다** — navigator 판단에 위임. 테스트 없이 진행한 변경은 **테스트 공백으로 추적**해 wrap-up에서 보고한다. navigator가 테스트를 지시하면 그 턴은 TDD로 돈다.
- **충언은 축약 채널로** — 글로벌 충언 의무는 이 모드에선 '발견 한 줄 보고'로 수행한다. 실행을 멈추는 반문은 비가역 분기만 (모드 선언이 짧은 턴 진행에 대한 사전 동의).
## 종료 — wrap-up
유저의 명시 종료 선언("페어 끝", "여기까지", "모드 종료") 시:
1. 잔여 상태를 보고한다: **미커밋 diff 요약 / 쌓인 테스트 공백 목록 / `bash .claude/skills/implement/scripts/impact-check.sh` 결과**(테스트 스킴·짝 경고).
2. 처리(커밋 구성·테스트 보강·후속 기록)는 유저 결정을 기다린다 — wrap-up이 자동으로 커밋하지 않는다.
3. 잔여 상태 보고 직후 `log-record.py skill_end --name pair-programming` (명령·compliance 규칙은 CLAUDE.md §1). 유저의 후속 결정을 기다리지 않고 여기서 남긴다 — 결정이 커밋이면 그때부턴 commit 스킬 소관이다.
세션이 그냥 끊기면 자연 종료다 — 모드는 세션을 넘어 지속되지 않고, 다음 세션에서 재선언해야 켜진다. 이 경로엔 기록을 남길 주체가 없어 종료 레코드가 구조적으로 안 남는다. 그래서 이 스킬은 누락률 임계에서 면제돼 있다 (`.claude/scripts/usage-thresholds.json`의 `missing_rate_exempt_skills`) — 준수 신호는 위 명시 종료의 skill_end로만 잡는다.
페어 중 이슈 기반 착수 요청(kickoff 트리거)이 오면 **모드 종료 여부를 먼저 확인한다** — 자동 종료하지 않는다.