Community라이팅 & 에디팅github.com

netheremp/baton-pass-netheremp

적은 토큰으로 Claude와 Codex 에이전트 간 작업을 원활하게 인계하는 핸드오프 스킬입니다. CLI와 앱에서 모두 사용 가능하며, francisN21/baton-pass (MIT)에서 파생되었습니다.

baton-pass-netheremp란 무엇인가요?

Baton Pass는 여러 AI 에이전트(Claude Code, Codex 등) 간 작업 연속성을 최소한의 텍스트로 유지하도록 설계된 저토큰 워크플로 유틸리티입니다. 에이전트 간 핸드오프 시 발생하는 맥락 손실 문제를 해결하며, 각 에이전트가 이전 작업 상태를 정확히 파악하고 중단 없이 작업을 이어갈 수 있도록 지원합니다. 설치와 초기화는 `npx github:netheremp/baton-pass-netheremp install` 및 `init` 명령어로 간단히 수행되며, Claude Code(CLI + IDE), Codex CLI, Codex 데스크탑 앱 등 다양한 플랫폼에서 자동으로 로드됩니다. 각 플랫폼에 맞는 슬래시 명령어(`/new-game`, `/baton-pass`, `/foresight` 등)를 제공하여 에이전트가 직관적으로 사용할 수 있습니다. 핵심은 `baton-pass`, `save-state`, `foresight` 등 7개의 '기술'로 구성된 워크플로입니다. 에이전트는 작업을 저장하거나(`save-state`), 인계하거나(`baton-pass`), 인계받아 검증한 후 계속 진행하며(`foresight`), 필요할 때만 워크플로를 개선합니다(`dragon-dance`). 또한 `party-check`로 현재 소유권을 확인하고, `hindsight`로 전체 핸드오프 이력을 감사할 수 있습니다. 가장 중요한 원칙은 '델타(변경분)만 전달, 요약 금지'입니다. 핸드오프 시 전체 프로젝트 이력을 반복하지 않고, 변경된 부분과 다음에 필요한 최소 정보만 전달하여 토큰을 절약합니다. 작업 상태, 브랜치, 환경 변수, 검증 상태 등 에이전트가 알아야 할 필수 정보를 구조화된 형식으로 기록하도록 가이드하여, 핸드오프로 인한 재작업과 오류를 최소화합니다.

지원 대상✓Claude Code✓Codex CLI~Cursor
npx skills add netheremp/baton-pass-netheremp

Installed? Explore more 라이팅 & 에디팅 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

배턴 패스 (Baton Pass)

목적: 여러 에이전트 간 연속성을 최소한의 텍스트로 유지합니다.

저토큰 워크플로 유틸리티이며, 문서화 의식이 아닙니다.

빠른 설정

모든 에이전트에 설치 (머신당 한 번)

npx github:netheremp/baton-pass-netheremp install

이 스킬을 ~/.claude 및 모든 ~/.codex* 홈 디렉토리에 설치합니다. 그 다음:

  • Claude Code (CLI + IDE) — 스킬이 자동 로드됨; /new-game /save-state /baton-pass /foresight /dragon-dance /party-check /hindsight
  • Codex CLI — 스킬이 자동 로드됨; 명시적으로 $baton-pass 실행
  • Codex 데스크탑 앱 — 스킬이 자동 로드됨; 컴포저에서 /prompts:baton-pass 입력

대안: /plugin marketplace add netheremp/baton-pass-netheremp (Claude Code) 또는 /plugins → 설치 (Codex).

멀티 에이전트 작업을 위한 리포지토리 초기화

npx github:netheremp/baton-pass-netheremp init

--track-state를 추가하면 핸드오프 상태를 git에 커밋합니다 (공유 히스토리가 필요한 팀용). 기본값은 로컬 전용 (gitignore 처리됨)입니다.

다음 파일이 생성됩니다:

  • baton-pass.config.json — 워크플로가 메모리 파일을 찾는 설정
  • baton-pass.state.json — 가벼운 공유 소유권 상태
  • docs/agent-handoff.md — 모든 에이전트를 위한 리포지토리별 규칙
  • docs/current-state.md — 현재 진행 중인 작업
  • docs/next-task.md — 작업 소유자와 다음 단계
  • docs/progress.md — 실행 중인 세션 로그 (추가 전용)

init은 또한 /move 슬래시 명령어를 리포지토리의 .claude/commands/에 추가합니다.

기술 목록 (The Move Set)

  • new-game = 새 리포지토리에서 워크플로 초기화
  • save-state = 핸드오프 없이 안전하게 일시 중지
  • baton-pass = 토큰이 부족하거나 소유권이 변경될 때 작업 인계
  • foresight = 작업을 받거나 재개하고, 정렬을 확인한 후 계속 진행
  • dragon-dance = 실제 교훈이 있을 때만 워크플로 개선
  • party-check = 마지막 작업자, 다음 작업자, 현재 리포지토리 상태 확인
  • hindsight = 전체 배턴 체인 감사 — 주장된 마일스톤, 검증 사항, 전달된 위험, 미해결 항목

핵심 규칙

델타(변경분)를 기본으로, 요약하지 마십시오.

수신자가 안전하게 계속 진행할 수 없는 경우가 아니라면, 안정적인 프로젝트 이력을 반복해서 말하지 마십시오.

각 기술 사용 시기

new-game

리포지토리 시작 시 한 번 사용하거나, 공유 메모리 파일이 없는 리포지토리에 이 워크플로를 도입할 때 사용합니다.

save-state

다음과 같은 경우에 사용합니다:

  • 갑자기 중단해야 할 때
  • 나중에 작업을 재개하기 위해 일시 중지할 때
  • 소유권이 아직 변경되지 않았을 때

save-state는 로컬 체크포인트이며, 인계가 아닙니다.

baton-pass

다음과 같은 경우에 사용합니다:

  • 토큰이 부족할 때
  • 다른 에이전트가 작업을 인계받을 때
  • 이전 가능한 연속성 패키지가 필요할 때

baton-pass는 인계 체크포인트입니다.

foresight

다음과 같은 경우에 사용합니다:

  • 배턴을 받을 때
  • save-state 후 돌아왔을 때
  • 기록된 상태가 여전히 리포지토리와 일치하는지 의심될 때

dragon-dance

다음과 같은 경우에만 사용합니다:

  • 워크플로 자체가 무언가를 배웠을 때
  • 수신자가 드리프트(차이)를 발견했을 때
  • 배턴이 중요한 내용을 누락했을 때
  • 새로운 규칙이 반복적인 낭비를 확실히 방지할 수 있을 때

dragon-dance를 반사적으로 실행하지 마십시오. 모든 세션이나 baton-pass에 기본으로 포함하지 마십시오.

party-check

다음과 같은 경우에 사용합니다:

  • 누구 차례인지 잊어버렸을 때
  • 여러 에이전트가 리포지토리를 공유할 때
  • 전체 foresight 비용을 지불하지 않고 현재 상태를 확인하고 싶을 때

party-check는 세션 내 기술입니다. 일반 터미널(에이전트 없음, 토큰 없음)에서 baton-pass status를 실행하면 동일한 소유권 정보와 최근 배턴 체인이 출력되며, baton-pass status --json은 스크립트와 훅을 위한 기계 판독 가능 출력을 제공합니다.

hindsight

다음과 같은 경우에 사용합니다:

  • 마일스톤이나 주요 기능이 완료되어 깔끔한 기록이 필요할 때
  • 무언가 잘못된 느낌이 들어 실제로 주장된 것과 완료된 것을 추적해야 할 때
  • 새로운 에이전트가 합류하여 마지막 배턴뿐만 아니라 전체 이력이 필요할 때
  • foresight에서 심각한 드리프트를 발견하여 그 시작점을 파악해야 할 때
  • 프로젝트가 검토 중이거나, 사람에게 인계되거나, 보관될 때

모든 배턴 후에 hindsight를 실행하지 마십시오. 이는 감사(audit)이지, 일상적인 체크포인트가 아닙니다.

각 기술이 기록해야 할 내용

save-state

최소 출력:

  • 현재 작업
  • 중단 시점
  • 수정한 파일
  • 다음 즉시 조치
  • 차단 요소 또는 위험

baton-pass

최소 출력:

  • 목표
  • 완료된 작업
  • 작업 (작업 계획을 사용하는 경우 각 작업 상태: 완료 / 진행 중 / 대기 중)
  • 파일
  • 작업 트리 (git worktree를 사용하는 경우 브랜치 이름과 작업 트리 경로)
  • 검증 완료 항목
  • 이탈 사항 (원래 계획과 다르게 세션 중 결정된 사항)
  • 환경 (다음 에이전트가 확인해야 할 전제 조건: 실행 중인 서비스, .env 변수, 테스트 DB 등)
  • 다음 단계
  • 위험
  • 다음 에이전트

커밋 규율:

  • 인계 전에 커밋하거나, 그렇지 않은 이유를 문서화하십시오.
  • 커밋되지 않은 상태를 명시적으로 언급하지 않고 더티 작업 트리를 인계하지 마십시오.
  • 검증을 실행하지 않은 경우, 그렇게 말하십시오 — 통과한 것으로 암시하지 마십시오.

작업, 작업 트리, 이탈 사항, 환경이 중요한 이유: 세션 메모리는 인계 시 손실됩니다. 20개 작업 계획의 중간에 있다면, 다음 에이전트는 git 로그만으로 어떤 작업이 완료되었는지 재구성할 수 없습니다 — 상태를 명시적으로 기록하십시오. 작업 트리 내에서 작업 중이라면 다음 에이전트는 정확한 경로가 필요합니다. 계획과 다르게 무언가를 수정했다면 기록하십시오 — 다음 에이전트는 계획을 다시 읽고 잘못된 방식으로 다시 시도할 것입니다. 환경이 특정 상태여야 한다면(데이터베이스 실행 중, .env 설정됨) 이름을 지정하십시오 — 새 에이전트는 그것 없이 동일한 장애물에 부딪힐 것입니다.

foresight

최소 출력:

  • 정렬 여부
  • 정렬되지 않은 경우, 무엇이 오래되었거나 누락되었는지
  • 필요한 경우에만 수정된 다음 단계

드리프트가 심각한 경우(배턴이 작업이 완료되었다고 주장하지만 리포지토리가 그렇지 않은 경우), 계속 진행하기 전에 구조화된 드리프트 보고서를 작성하십시오:

  • 주장된 내용
  • 리포지토리가 실제로 보여주는 내용
  • 다시 해야 할 작업
  • 이 드리프트가 dragon-dance를 정당화하는지 여부

dragon-dance

최소 출력:

  • 문제
  • 영향
  • 개선 사항
  • 새로운 규칙

party-check

최소 출력:

  • 상태
  • 마지막 기술
  • 마지막 에이전트
  • 다음 에이전트
  • 업데이트 시간
  • 간단한 요약

hindsight

최소 출력:

  • 감사 범위 (전체 체인 또는 제한된 범위)
  • 배턴 체인 테이블 (발신자 → 수신자, 날짜, 목표 요약)
  • 에이전트별 주장된 마일스톤 및 검증 상태
  • 검증 격차 (증거 없이 주장된 내용)
  • 배턴 간 전달된 위험
  • 배턴 간 발견된 드리프트
  • 미해결 항목
  • 감사 평결: clean, gaps found, risks unresolved, 또는 action required

확인할 출처:

  • docs/progress.md — 전체 세션 로그
  • docs/next-task.md — 턴 상태 이력
  • baton-pass.state.json — 프로그램 상태
  • git 로그 — 커밋 메시지 및 날짜
  • progress에 참조된 저장된 배턴 또는 save-state 파일

foresight 수신 절차

실수를 피하기 위해 필요한 최소한만 확인하십시오:

  • 현재 사용자 목표
  • 작업 트리 상태
  • 최신 커밋
  • current-state
  • next-task
  • 최신 progress 항목
  • 저장된 상태 또는 배턴에 명명된 파일
  • 계획이 진행 중인 경우 작업 목록 상태

그런 다음 결정:

  • 정렬되면 계속 진행
  • 정렬되지 않으면 배턴을 수정하고 계속 진행
  • 정렬 불일치가 재사용 가능한 교훈을 드러내면 dragon-dance 실행

에이전트 간 스킬 검색

스킬이 프로젝트 로컬에 설치되면(.claude/commands/ 또는 플러그인 설치를 통해 리포지토리에), Codex 및 리포지토리를 사용하는 다른 에이전트도 동일한 스킬 정의를 찾을 수 있습니다. 스킬 파일은 리포지토리와 함께 이동합니다.

세션 경계를 넘어 전달되지 않는 스킬:

  • 인메모리 작업 관리자의 작업 상태 (TaskCreate 목록은 세션이 종료되면 손실됨)
  • 하위 에이전트 실행 상태 (어떤 검토 루프가 완료되었는지, 어떤 에이전트가 실행되었는지)
  • 환경 상태 (어떤 서비스가 실행 중인지, 어떤 .env 변수가 설정되었는지)

배턴 패스는 이 모든 것을 명시적으로 기록해야 합니다. 스킬은 에이전트에게 작업 방법을 알려주고, 배턴은 상황이 어떻게 진행 중인지 알려줍니다.

상태 모델

공유 상태 파일을 사용하여 다음을 추적합니다:

  • 현재 상태
  • 마지막 기술
  • 마지막 에이전트
  • 다음 에이전트
  • 업데이트 시간
  • 요약

권장 상태:

  • active
  • paused
  • handed-off
  • claimed
  • blocked

검증 용어

일관된 언어를 사용하여 수신자가 정확히 무엇이 확인되었는지 알 수 있도록 합니다.

  • passed — 로컬에서 실행, 출력이 깨끗함 확인됨
  • passed outside sandbox — 로컬에서 실행되었지만 CI/빌드 환경에서는 아님
  • not run — [reason] — 건너뜀, 이유 명시
  • expected to pass, unverified — 실행되지 않았지만 정확하다고 믿음

expected to pass, unverified일 때 passed라고 절대 쓰지 마십시오. 이 하나의 모호함이 핸드오프 재작업의 가장 큰 원인입니다.

턴 상태 (Turn State)

next-task의 턴 상태 블록은 사람이 읽을 수 있는 기본 소유권 신호입니다. baton-pass.state.json은 프로그램 사용을 위해 이를 미러링합니다.

하나를 업데이트할 때는 둘 다 업데이트하십시오. 둘이 일치하지 않으면 next-task가 우선합니다.

둘 다에서 권장되는 state 값:

  • active — 누군가 작업 중
  • paused — 안전하게 중단됨, 동일한 에이전트가 재개 예정
  • handed-off — 전송됨, 수신자가 수신 대기 중
  • claimed — 수신자가 foresight를 실행하고 계속 진행 중
  • blocked — 진행 불가, 이유가 next-task에 있어야 함

안티 패턴

피해야 할 사항:

  • 모든 사소한 체크포인트에 baton-pass 사용
  • 아무것도 배우지 않았을 때 dragon-dance 사용
  • 사소한 작업을 위해 모든 메모리 파일 재작성
  • 매번 foresight를 전체 리포지토리 감사로 전환
  • 모든 배턴 후 hindsight 실행 — 이는 감사이지 일상적인 단계가 아님
  • 델타 대신 전체 프로젝트를 반복해서 말하기
  • expected to pass, unverified일 때 passed라고 쓰기
  • 커밋되지 않은 상태를 명시하지 않고 더티 작업 트리 인계
  • 번호가 매겨진 계획 중간일 때 작업 상태 생략
  • git worktree 내에서 작업 중일 때 작업 트리 경로 생략
  • 새 에이전트가 알지 못할 환경 전제 조건 생략

모범 실무 흐름

일시 중지:

  • save-state
  • 나중에 foresight

인계:

  • baton-pass
  • 수신자가 foresight 실행

개선:

  • foresight가 의미 있는 워크플로 문제를 드러낸 경우에만 dragon-dance

턴 소유권 확인:

  • party-check

전체 체인 감사:

  • hindsight
  • 격차 또는 미해결 위험이 발견되면 dragon-dance 실행

관련 스킬