
Claude Code의 내장 도구 실례: plan mode와 Monitor
요약
Claude Code의 핵심 내장 도구인 Plan mode와 Monitor의 활용 사례를 소개합니다. Plan mode는 구현 전 사용자의 암묵적 전제를 질문하여 재작업을 방지하며, Monitor는 백그라운드에서 스크립트 출력을 실시간 감시하여 특정 이벤트에 반응합니다.
핵심 포인트
- Plan mode를 통해 구현 전 불확실한 요구사항을 명확히 정의 가능
- 커스텀 명령어를 통해 Plan의 구조와 검증 절차를 제어할 수 있음
- Monitor 도구로 장시간 실행되는 스크립트의 출력을 실시간 모니터링
- 에러 발생 시 즉각적인 감지 및 요약 기능 제공
Claude Code의 내장 도구에는 공식 리퍼런스 (Official Reference)에서 목록화된 30종류 이상의 Tool이 있습니다. 본 기사에서는 그중에서도 가벼운 태스크에서 효과가 큰 다음 두 가지를 실례를 통해 소개합니다.
EnterPlanMode
/ExitPlanMode
/AskUserQuestion
: 구현 전에 암묵적인 전제를 질문을 통해 표면화함 -
Monitor
: 장시간 스크립트의 출력을 스트리밍 (Streaming)으로 감시하며, 특정 행에서 반응함
다음과 같은 지시를 내렸습니다.
플랜 모드 (Plan mode)로 진행해줘.
~/scratch/에 「오늘의 날짜 + 요일 + 날씨 칸 (수동 입력용)」을 출력하는 Python 스크립트를 만들어줘.
수십 줄로 끝나는 심플한 태스크입니다.
Claude가 AskUserQuestion으로 다음 두 가지를 물어왔습니다.
- 출력 포맷 (Markdown / 텍스트)
- 재실행 시의 동작 (스킵 / 덮어쓰기 / 타임스탬프별 파일)
둘 다 초기 지시에는 적혀 있지 않았던 항목입니다.
「Markdown (제목과 빈칸)」, 「기존 파일이 있으면 스킵」을 선택했습니다.
답변을 바탕으로 한 계획서가 제시됩니다.
승인 후에는 통상 모드로 돌아가 구현이 진행됩니다.
from datetime import date
from pathlib import Path
WEEKDAYS_JA = ["月", "火", "水", "木", "金", "土", "日"]
...
지시가 심플할수록 의뢰자의 머릿속에는 「당연히 이랬으면 좋겠다」라는 생각이 무의식중에 존재합니다. plan mode의 질문 단계에서 Claude 측으로부터 확인을 받음으로써, 그 암묵적인 전제가 첫 구현에 반영되어 재작업 (Rework)을 줄일 수 있습니다.
「전부 맡김」으로 사용하면 plan의 구조는 Claude에게 맡겨지게 되지만, ~/.claude/CLAUDE.md에 plan 규약을 적거나, /plan-strict와 같은 커스텀 슬래시 커맨드 (Slash command)로 「필수 섹션 · 하지 말아야 할 것 · 검증 절차」를 고정하거나, 생성 후에 Ctrl+G로 직접 편집함으로써 태스크 종류에 따른 plan format을 선택적으로 구분하여 사용할 수 있습니다. 개조의 여지를 알고 있으면 가벼운 태스크에서도 plan mode의 활용 폭이 넓어집니다.
공식 문서에서는 다음과 같이 설명하고 있습니다.
"The Monitor tool lets Claude watch something in the background and react when it changes, without pausing the conversation."
로그 감시 · CI 잡 (CI Job) 폴링 · 디렉토리 감시 · 임의의 장시간 스크립트 출력 추적 등에 사용할 수 있습니다. Claude가 뒤에서 스크립트를 작성하여 백그라운드에서 실행하고, 출력 한 줄마다 반응합니다. 대화 자체는 멈추지 않습니다.
다음과 같은 지시를 내렸습니다.
~/scratch/dummy_etl.py를 만들어줘. 10개 파일을 처리하는 것을 모사한 스크립트로, 4초 간격으로 「[N/10] OK」를 출력하고, 6번째 파일에서만 「[6/10] ERROR: KeyError 'purchase_date'」를 출력하고 종료해줘. 이것을 Monitor로 실행해서 ERROR 행을 감지하면 즉시 정지하고 에러 내용을 요약해줘.
Claude가 Monitor 도구를 기동하여 출력 한 줄마다 알림이 날아옵니다.
1~5건째는 [N/10] OK를 받고 Claude가 「N번째 OK」라고 짧게 반응합니다. 6건째에서 [6/10] ERROR: KeyError 'purchase_date'를 수령한 순간, 스크립트가 sys.exit(1)로 종료되며 Monitor의 스트림 (Stream)도 닫힙니다. Claude는 그 직후에 에러 내용을 요약했습니다.
발생 위치: 6/10번째 파일
에러 종류: KeyError
누락된 키: 'purchase_date'
...
Bash로 동일한 스크립트를 실행하면 완료될 때까지 Claude의 턴 (Turn)이 멈춥니다. Monitor라면 스트리밍 수신을 통해 Claude가 대화를 계속하면서도 순차적으로 반응할 수 있습니다. 장시간 잡 (Job)이나 폴링 (Polling)에서는 그 차이가 현저합니다.
| 상황 | 사용하는 도구 |
|---|---|
| 구현 전에 방침을 확인하고 싶을 때 | EnterPlanMode → AskUserQuestion → ExitPlanMode |
| 장시간 잡 (Job) 로그를 모니터링하고 싶을 때 | Monitor |
| 단일 명령 실행 | Bash |
공식 레퍼런스에는 이 외에도 Workflow, Agent, Skill 등의 내장 도구 (Built-in tools)가 정의되어 있습니다. 현재 사용 중인 Claude Code 세션에 어떤 도구들이 로드되어 있는지 궁금하다면, What tools do you have access to?라고 물어보면 목록을 보여줍니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기