baton v0.1.1 — 사용 가이드

baton 사람과 Claude 사이의 폴더 기반 통신 컨벤션

docs/usage-guide.html · baton v0.1.1

핵심 아이디어

Markdown은 사람→Claude 방향에, HTML은 Claude→사람 방향에 쓴다.
폴더 이름이 곧 인터페이스다.

Claude와 긴 대화를 나눌수록 컨텍스트는 흘러가고 결과물은 흩어진다. baton은 이 문제를 폴더 구조로 해결한다 — 지시는 inbox/에, 결과는 outbox/에, 공유 메모리는 memory/에. 새 세션이 시작돼도 CLAUDE.md 하나만 읽으면 Claude는 컨벤션을 파악한다.

사람 inbox/task.md
Claude 작업 수행
🌐 사람 outbox/NNN.html
양방향 공유 memory/decisions.md  &  memory/open-questions.md

1 · 설치

$ npm install -g @zollibee/baton@latest
# 업데이트:
$ npm install -g @zollibee/baton@latest
# 또는 로컬 개발:
$ git clone https://github.com/sohee-zoe/baton.git && cd baton && npm link
의존성 없음. Node.js 내장 모듈만 사용. Node 18+ 필요.

2 · 프로젝트 시작

  1. baton init — 폴더 스켈레톤 생성
    프로젝트 이름 지정 가능. 없으면 현재 디렉토리 이름 사용.
  2. inbox/task.md 작성
    Goal / Constraints / Output 세 섹션. 40줄 이내.
  3. Claude에게 작업 지시
    새 세션에서 CLAUDE.md를 읽으면 Claude가 컨벤션을 파악함.
  4. baton open — 결과 확인
    최신 outbox HTML을 브라우저로 열어줌.
$ mkdir my-project && cd my-project
$ baton init "My Project"
✓ baton 프로젝트 생성: My Project
  CLAUDE.md, inbox/, outbox/, memory/ 준비됨.
# task.md 작성 후 Claude에게 지시...
$ baton status
baton: My Project
  task    : (새 작업 제목)
  outbox  : 1개 (최신: 001-slug.html)
  open Q  : 0개
$ baton open

3 · 폴더 구조

project/
├── CLAUDE.md              ← Claude 진입점. 항상 로드. <100줄.
├── baton.json             ← 프로젝트 마커 (이름·버전)
├── inbox/
│   ├── task.md            ← 현재 할 일 (사람이 씀, 40줄 이내)
│   ├── .archive/          ← 이전 task.md 자동 보관
│   └── context/           ← 참조 문서 (명시 요청 시 로드)
├── outbox/
│   └── 001-slug.html      ← Claude 산출물. 번호 prefix로 정렬.
└── memory/
    ├── decisions.md        ← 결정 누적 (한 줄씩, 덮어쓰기 금지)
    ├── open-questions.md   ← 미결 질문. 해결 시 [resolved] 추가.
    └── summary.md          ← 세션 부트스트랩 요약 (20줄 이내)
폴더방향형식규칙
inbox 사람 → Claude Markdown 40줄 이내.
outbox Claude → 사람 HTML NNN-slug.html. Self-contained. No CDN.
memory 양방향 Markdown Append-only. 줄 삭제 금지.

4 · CLI 명령

baton init [name] 프로젝트 폴더 스켈레톤 생성
$ baton init "Research Notes"
✓ baton 프로젝트 생성: Research Notes
# name 생략 시 현재 디렉토리 이름 사용
# 이미 초기화된 경우 오류 없이 건너뜀 (idempotent)
baton new "<task>" 새 task 시작 (이전 task.md 자동 보관)
$ baton new "데이터 시각화 대시보드 설계"
✓ inbox/task.md 갱신: 데이터 시각화 대시보드 설계
  이전 task → inbox/.archive/2026-05-09T02-30-00.md
# task.md를 열어 Goal / Constraints / Output 작성
baton open 최신 outbox HTML을 브라우저로 열기
$ baton open
→ outbox/003-dashboard.html
# mtime 기준 최신 파일. outbox가 비어있으면 안내 메시지.
baton status 현재 task·outbox·미결 질문 요약
$ baton status
baton: Research Notes
  task    : 데이터 시각화 대시보드 설계
  outbox  : 3개 (최신: 003-dashboard.html)
  open Q  : 2개
$ baton status --json
{
  "projectName": "Research Notes",
  "task": "데이터 시각화 대시보드 설계",
  "outboxCount": 3,
  "latestOutbox": "003-dashboard.html",
  "openQuestionsCount": 2,
  "batonVersion": { "file": "0.1.1", "running": "0.1.1" }
}

5 · Claude와 함께 쓰는 법

산출물 규칙 (Claude가 따라야 할 것)

Claude는 결과를 outbox/NNN-slug.html로 출력한다. 번호는 현재 최댓값 + 1을 3자리 zero-pad. 파일 첫 줄에 메타 주석 필수:

<!-- title: 제목 task: task명 created: YYYY-MM-DD -->

결정 기록

새 결정이 생기면 memory/decisions.md에 한 줄 append. 덮어쓰거나 줄 삭제 금지.

2026-05-09: Chart.js 채택 [근거: zero-dep 유지, CDN 불필요]

미결 질문

memory/open-questions.md에 한 줄씩. 해결되면 같은 줄에 [resolved: YYYY-MM-DD 내용] 추가. 줄 삭제는 금지 — 결정 히스토리 보존용.

새 세션 시작 시: Claude에게 "CLAUDE.md를 읽어" 또는 "inbox/task.md를 읽어"라고 지시하면 컨텍스트 없이도 작업을 이어받는다.

6 · 설계 원칙

진입점 하나

CLAUDE.md가 유일한 자동 로드 파일. 100줄 이내로 유지. 세부는 링크로 연결.

짧게 / 자주

inbox/task.md는 40줄 이내. 마크다운 파일이 200줄을 넘으면 분할을 검토한다. 긴 컨텍스트는 Claude가 흘려읽는다.

풍부한 HTML 출력

HTML은 테이블, 다이어그램, 코드 하이라이팅, 인터랙션을 담을 수 있다. 단 outbox/ 산출물은 외부 CDN 없이 self-contained로 작성.

Append-only 메모리

decisions.mdopen-questions.md는 줄을 지우지 않는다. 수정 이력이 곧 프로젝트 히스토리다.

외부 의존성 0

Node.js 내장 모듈만 사용. 추가 패키지가 필요하면 PRD/design을 먼저 수정하고 승인을 받는다.