Claude Code 한 세션에 다 우겨넣지 마라, 분리 4가지
데일리로 Claude Code 돌리면 토큰 폭발과 자기 편향 리뷰 두 페인이 동시에 와요. Skills·Subagents·Worktrees·Writer-Reviewer 4가지로 컨텍스트와 작업을 분리하는 법.
한 세션에 다 우겨넣으면 두 가지가 동시에 깨져요. 토큰이 폭발하고, Claude가 자기 코드를 자기가 리뷰해서 통과시킵니다. 데일리로 Claude Code를 굴리는 사람이라면 두 페인 다 겪어요. Skills, Subagents, Worktrees, Writer-Reviewer — 컨텍스트와 작업을 떼어내는 4가지로 끊는 법.

한 세션의 두 가지 한계
첫 벽은 토큰 폭발이에요. context 누적으로 "edit this file" 한 줄도 한 번에 50,000~150,000 토큰을 씁니다. 세션 위생(Plan mode·세 슬래시·! prefix·/resume)으로 어느 정도 잡아도, 작업 자체가 크면 한 세션에 안 들어가요.
두 번째 벽이 더 까다로워요. 자기 리뷰 편향입니다. 같은 대화에서 Claude한테 리뷰를 시키면 자기가 쓴 코드를 검토해요. 거의 무조건 통과예요.
"AI models have a well-documented tendency toward agreement. When you ask a model to review something it generated... it often validates the work rather than critically challenging it."
([Auto-Reviewing Claude's Code — O'Reilly](https://www.oreilly.com/radar/auto-reviewing-claudes-code/))
훈련 자체가 사용자 의도에 동의하는 방향이라 자기 출력 검토에도 confirmation bias가 따라옵니다. 깐 지 1~2주짜리는 시간 손해지만, 데일리 유저가 그렇게 하면 통과한 줄 알았는데 production에서 깨지는 패턴이 반복돼요.
답은 분리예요. 컨텍스트 분리(Skills) + 작업 분리(Subagents) + 공간 분리(Worktrees) + 시점 분리(Writer-Reviewer). 4가지가 각각 다른 축을 잡습니다.

Skills vs CLAUDE.md — 무엇을 어디에 둘 것인가
CLAUDE.md는 매 호출마다 context에 load돼요. 500줄짜리에 10개 작업 룰 다 박혀 있으면, 한 줄 prompt에도 그 500줄이 토큰을 먹습니다. 모든 작업에 적용되는 정보만 CLAUDE.md에, 작업별 룰은 Skill로.
판단 룰: "이 프로젝트에서는..."으로 시작하면 → CLAUDE.md. "code review할 때는..." / "commit message 쓸 때는..."이면 → Skill.
어디에 | CLAUDE.md | SKILL.md |
|---|---|---|
적용 범위 | 프로젝트 전체 | 매칭된 작업만 |
로드 시점 | 모든 호출 | on-demand |
포터블 | X (프로젝트 종속) | O (여러 프로젝트 공유) |
예시 | 스택·관습·자주 쓰는 명령 | code review·commit msg·test |
Skills는 폴더 단위로 작성하고 description에 매칭 트리거를 박아요. 사용자가 "이 PR 리뷰해줘"라고 하면 Claude가 review skill 매칭해서 그때만 SKILL.md를 load. ([Claude Code 공식 docs — Skills](https://code.claude.com/docs/en/skills) · [SKILL.md vs CLAUDE.md — agensi.io](https://www.agensi.io/learn/skill-md-vs-claude-md))

Subagents — 노이즈 작업은 격리해서 흘려보내라
Subagent는 별도 context window를 가진 Claude 인스턴스예요. main 대화는 흐름 유지하고, 탐색·검색·로그 읽기 같은 노이즈는 subagent 안에서만 발생합니다. 결과 요약만 main으로 돌아와요.
"Each subagent runs in its own context window with a custom system prompt, specific tool access, and independent permissions."
([Claude Code 공식 docs — Subagents](https://code.claude.com/docs/en/sub-agents))
사용 예 3가지.
- 리서치 위임 — 문서 10개 읽고 요약만 main으로
- 코드베이스 탐색 — 파일 30개 읽고 흐름 한 문단으로
- 테스트 실행 — npm test 돌리고 실패 케이스만 main에 보고
비용 제어도 가능해요. 빠른 작업은 Haiku, 큰 작업은 Opus로 라우팅 — subagent frontmatter에 model 1줄. /agents 슬래시로 정의 파일 열고 description에 트리거 박으면 Claude가 매칭해서 자동 위임합니다.

Worktrees — 한 레포 안에서 병렬 세션
같은 git repo의 별도 작업 디렉터리예요. 각자 다른 브랜치, 다른 파일 상태. Claude Code native flag로 지원합니다.
claude --worktree feature-auth다른 터미널에서 같은 명령어 다른 이름으로 또 한 번. 두 세션이 병렬로 굴러가요. 한쪽은 auth refactor, 한쪽은 bug fix. 파일 충돌 0. git history만 공유하고 working tree는 분리. ([Claude Code 공식 docs — Common workflows](https://code.claude.com/docs/en/common-workflows))
실용 한도는 2~4 세션이에요. 더 늘리면 사용자가 리뷰 못 따라가고 rate limit도 닿아서 오히려 느려져요. cleanup: 변경 없으면 worktree·브랜치 자동 삭제. commit 있으면 keep/remove 선택 prompt가 뜹니다. 가볍게 띄우고 깨끗하게 정리하는 모델.

Writer-Reviewer — 자기 코드 리뷰 통과 막기
핵심 룰 하나. review는 새 context에서. 같은 대화 review는 confirmation bias로 통과시켜요. fresh context로 reviewer subagent를 spawn하면 Claude가 처음 보는 PR 검토하는 senior engineer처럼 행동합니다.
운영 패턴 3단계.
- Writer subagent가 코드 작성 → PR 생성 → reasoning은 writer context에만
- Reviewer subagent를 Task tool로 새로 spawn → PR description + linked issue만 줌
- Reviewer는 writer 흐름 0 → 깐깐하게 review
더 강한 분리는 cross-provider review예요. 다른 provider 모델(예: OpenAI Codex)로 review 돌리면 sycophancy bias가 서로 정확히 겹치지 않아서 더 줄어듭니다. Skills로 reviewer 패키징해두면 어느 프로젝트에서든 한 줄로 호출 가능해요. ([Auto-Reviewing Claude's Code — O'Reilly](https://www.oreilly.com/radar/auto-reviewing-claudes-code/) · [Cross-provider review — MindStudio](https://www.mindstudio.ai/blog/openai-codex-plugin-claude-code-cross-provider-review))

다음 세션, 처음 할 일
한 가지부터 시작하세요. 다음 작업이 분기 가능한 모양(리서치 후 구현 / 구현 후 리뷰 / 두 기능 동시)이면 그 분기 1개만 분리. 가장 효과 빠른 건 Subagent 위임이에요. 다음 리서치 작업에 "use a subagent to research..." 한 줄만 추가. main 대화에 파일 30개 read 결과 대신 한 문단 요약이 돌아옵니다.
1주 돌리면 main 대화 토큰이 절반 가까이 줄어요. 자기 편향 리뷰가 production을 깨는 사고도 같이 사라집니다. 데일리 유저가 같은 한도에서 두 배의 일을 하는 길은 분리뿐이에요.

자주 묻는 질문
Skill과 CLAUDE.md 둘 다 가지면 충돌하지 않나요?
충돌 없어요. CLAUDE.md는 항상 load되고 Skill은 매칭될 때만 load됩니다. 같은 룰이 둘 다 있으면 Skill이 작업 시점에 더 구체적으로 덮어쓰는 게 default 흐름이에요.
Subagent와 plugin은 어떻게 다른가요?
Subagent는 별도 context를 가진 Claude 인스턴스(단일 세션 안), plugin은 Skills·MCP·hooks 묶음 배포 단위예요. Subagent를 plugin에 패키징해 다른 프로젝트로 옮길 수도 있습니다.
worktree 몇 개까지 동시에 돌릴 수 있나요?
머신은 16GB RAM 기준 3~5개 가능. 사람이 review 따라가는 한도가 2~4개예요. 더 늘리면 rate limit과 review 부담이 동시에 닿아서 오히려 느려져요.
Writer-Reviewer 패턴, 같은 모델 두 번 호출해도 효과가 있나요?
네. 핵심은 fresh context예요. 같은 Claude 모델이라도 writer의 reasoning이 안 보이는 새 세션에서 review하면 confirmation bias가 크게 줄어들어요.
CLAUDE.md를 짧게 유지하라는 이유가 뭐인가요?
CLAUDE.md는 매 호출마다 context에 load되거든요. 500줄이면 한 줄 prompt에도 그 500줄이 토큰을 차지해요. 작업별 룰을 Skill로 분리하면 매 호출 비용이 줄어듭니다.
Subagent를 정의하지 않고 그냥 Task tool만 써도 되나요?
가능해요. ad-hoc Task tool 호출도 fresh context를 제공합니다. 다만 같은 작업을 반복한다면 frontmatter에 subagent 정의해두는 게 토큰·일관성 모두 효율적이에요.
작성: Bruce Choe · agenticworkflows.club
인사이트를 놓치지 마세요
새 글이 발행되면 이메일로 알려드립니다.