Claude Code는 보통 한 가지 톤으로 답합니다. 소프트웨어 엔지니어처럼요 — 물으면 코드를 내놓고, 설명은 짧게 답니다.
그런데 작업의 성격에 따라 답변 스타일 바꾸고 싶을 때가 있습니다. 어떤 작업은 "왜 그렇게 짰는지 설명도 같이" 보고 싶고, 어떤 작업은 "내가 직접 짜볼 테니 핵심만 비워둬"하고 싶습니다. 코딩이 아닌 다른 작업에는 다른 역할이 필요할 때가 있습니다.
그때마다 다시 부탁하는 대신, 답하는 방식 자체를 바꿔 둘 수 있습니다. 그게 출력 스타일입니다.
출력 스타일이 뭔가
출력 스타일은 Claude가 무엇을 아는지가 아니라 어떻게 답하는지를 바꿉니다. 공식 문서가 한 문장으로 정의합니다.
Output styles change how Claude responds, not what Claude knows. They modify the system prompt to set role, tone, and output format.
(출력 스타일은 Claude가 무엇을 아는지가 아니라 어떻게 답하는지를 바꿉니다. 시스템 프롬프트를 고쳐 역할·톤·형식을 정합니다.)
핵심은 시스템 프롬프트를 고친다는 데 있습니다. 비슷해 보이는 CLAUDE.md와는 작동하는 방식이 다릅니다 — CLAUDE.md는 시스템 프롬프트 뒤에 사용자 메시지로 덧붙이고, 출력 스타일은 시스템 프롬프트 자체를 바꿉니다. 문서도 이 둘을 이렇게 구분합니다.
내장 네 가지
Claude Code에는 출력 스타일이 네 개 들어 있습니다. 기본은 Default고, 나머지는 골라야 켜집니다.
- Default — 기본값. 소프트웨어 작업을 효율적으로 끝내도록 맞춰진, 늘 쓰던 그 톤입니다.
- Proactive — 덜 묻고 바로 실행하는 쪽. 사소한 결정은 합리적으로 가정하고, 계획보다 행동을 앞세웁니다. 문서는 평소보다 더 적극적으로 밀어붙이는 안내라고 적습니다. 단 그렇다고 확인 없이 다 실행하는 건 아닙니다 — 도구가 돌기 전 승인 요청은 여전히 뜹니다.
- Explanatory — 작업을 하면서 중간중간 해설을 끼웁니다.
- Learning — 해설을 주는 데서 더 나아가, 코드 일부를 사용자에게 직접 채우게 넘깁니다.
뒤의 둘이 이 글의 핵심이라 따로 보겠습니다.
설명을 더해 주게 — Explanatory
Explanatory로 두고 작업을 시켜 보니, 작업 중간이나 끝에 'Insight'라는 작은 해설 상자가 붙었습니다(화면엔 앞에 별표가 달립니다). "왜 이 순서로 했는지", "왜 이렇게 구현했는지" 같은 내용을 말해 줍니다.
문서가 말하는 그대로입니다.
Explanatory: Provides educational "Insights" in between helping you complete software engineering tasks. Helps you understand implementation choices and codebase patterns.
(Explanatory: 소프트웨어 작업을 도우면서 중간중간 교육용 "Insights"를 줍니다. 구현 선택과 코드베이스 패턴을 이해하도록 돕습니다.)
일은 그대로 하되, 끝에 "방금 그건 이래서 그랬다"를 붙이는 셈입니다. 왜 그런지 같이 보고 싶을 때 좋습니다.
직접 가르치게 — Learning
Learning은 한 발 더 나아갑니다. 문서부터 보겠습니다.
Learning: Collaborative, learn-by-doing mode where Claude will not only share "Insights" while coding, but also ask you to contribute small, strategic pieces of code yourself. Claude Code will add
TODO(human)markers in your code for you to implement.(Learning: 함께 만들어 가는, 직접 해보며 배우는 모드입니다. Claude가 코딩 중 "Insights"를 줄 뿐 아니라, 작지만 핵심이 되는 코드 조각을 당신이 직접 채우게 합니다. Claude Code가 코드에
TODO(human)표시를 남겨, 당신이 구현하도록 합니다.)
직접 시켜 봤습니다. 이미 코드가 있는 프로젝트에서 흔히 하는 간단한 요청 하나 — 회원가입을 받는 함수에 "이메일 형식 검사를 넣고, 틀리면 등록을 막아 줘"였습니다.
Claude는 곧장 다 짜 주지 않았습니다. 대신 형식을 검사하는 함수(is_valid_email)를 새로 만들고, 회원가입 함수가 그걸 불러 "틀리면 막는" 연결까지 해 둔 뒤, 정작 형식이 맞는지 판단하는 한 줄을 이렇게 비워 두고 멈췄습니다.
# TODO(human): 이메일 형식 검사 로직을 구현하세요.
그러고는 "막는 부분은 끝냈고, 무엇을 통과시키고 무엇을 막을지 판단하는 두뇌만 비어 있습니다 — 여기는 당신이 채우세요" 하고 손을 놓더군요. 어떻게 풀 수 있는지(간단한 문자열 검사냐 정규식이냐, 빈 값이나 @가 여러 개인 경우 같은 예외 상황)까지 짚어 주고요. 키보드가 잠깐 저에게 넘어온 겁니다.
아무 때나 이러는 건 아니었습니다. 한 줄이면 끝나는 사소한 요청에는 그냥 다 짜서 내놓았고, 이렇게 직접 판단해 볼 만한 핵심이 있을 때 비로소 TODO(human)을 남겼습니다. 배우는 게 목적인 모드답게, 넘길 만한 게 있을 때만 넘기는 셈입니다.
역할까지 바꾸기 — 커스텀
여기까지는 기본으로 제공하는 스타일을 고른 거고, 직접 만들 수도 있습니다. 커스텀 출력 스타일은 마크다운 파일 하나입니다 — 맨 위에 메타 정보를 적고, 그 아래에 "이렇게 답해라"를 적습니다.
여기서 한 칸이 중요합니다. keep-coding-instructions입니다.
Set
keep-coding-instructions: trueif you're changing how Claude communicates but still want it coding the same way. Leave it out if Claude won't be doing software engineering.(소통 방식만 바꾸고 코딩은 그대로 시키려면
keep-coding-instructions: true로 두세요. Claude가 소프트웨어 작업을 안 할 거면 빼세요.)
이 칸을 빼면(빼는 게 기본값입니다) Claude를 소프트웨어 엔지니어로 만들던 지침이 통째로 빠집니다. 그래서 코딩이 아닌 다른 역할도 맡길 수 있습니다.
직접 해봤습니다. "글쓰기 도우미"라고만 적은 커스텀 스타일을 만들어 켜고, 코드와 상관없는 문장 다듬기를 부탁했더니 — 코드 이야기는 한 줄도 없이, 문장을 줄이고 왜 줄였는지만 한 줄로 답했습니다. 평소의 엔지니어 톤이 사라진 거죠.
비개발자라면 이쪽이 더 와닿을 수 있습니다. Claude Code를 꼭 코딩에만 쓸 필요는 없습니다 — 문서가 직접 드는 예가 "글쓰기 도우미나 데이터 분석가"입니다. 답하는 방식을 바꾸는 같은 장치로, 역할까지 바꾸는 셈입니다.
(커스텀 스타일은 나만 쓰게, 이 프로젝트에서만 쓰게, 조직 정책으로 강제하게 — 세 곳에 둘 수 있습니다. 기회가 된다면 다른 글에서 다뤄보겠습니다.)
어떻게 바꾸나
바꾸는 방법은 두 가지입니다.
하나, /config를 열어 Output style에서 고릅니다. 고른 값은 .claude/settings.local.json에 적힙니다(이 프로젝트 한정).
둘, 그 설정을 직접 적어도 됩니다.
{ "outputStyle": "Explanatory" }
주의 하나. 예전엔 /output-style이라는 단독 명령이 있었는데, 지금은 없습니다. v2.1.73부터 "더는 쓰지 말라"는 안내가 붙었고(deprecated), v2.1.91에서 아예 빠졌습니다. 옛 글을 보고 /output-style을 치면 안 됩니다 — /config나 위 설정으로 가세요.
주의 둘. 출력 스타일은 시스템 프롬프트의 일부라, Claude Code가 세션을 시작할 때 한 번 읽습니다. 그래서 쓰는 도중에 바꿔도 곧장 바뀌지 않습니다 — /clear하거나 새 세션을 열어야 그때부터 새 스타일로 답합니다.
Output style is part of the system prompt, which Claude Code reads once at session start. Changes take effect after
/clearor a new session.(출력 스타일은 시스템 프롬프트의 일부라, Claude Code가 세션 시작 때 한 번 읽습니다. 변경은
/clear나 새 세션 뒤에 적용됩니다.)
(한 가지 더. Explanatory와 Learning은 기본보다 답이 깁니다 — 그만큼 토큰을 더 씁니다.)
한눈에
| 스타일 | 답이 어떻게 달라지나 | 언제 |
|---|---|---|
| Default | 늘 쓰던 엔지니어 톤 | 보통의 코딩 |
| Proactive | 덜 묻고 바로 실행(확인은 여전히 뜸) | 손 덜 가게 밀어붙일 때 |
| Explanatory | 답에 'Insight' 해설 상자가 붙음 | 왜 그런지 같이 보고 싶을 때 |
| Learning | 핵심 한 줄을 TODO(human)으로 넘김 | 직접 짜보며 배울 때 |
| 커스텀 | 역할까지 바뀜(예: 글쓰기 도우미) | 코딩 아닌 일·형식 고정 |
정리하면, 출력 스타일은 Claude가 무엇을 하느냐가 아니라 어떻게 답하느냐를 고르는 손잡이입니다. 설명을 더 받고 싶으면 Explanatory, 직접 짜보며 배우고 싶으면 Learning, 코딩 밖의 일이면 커스텀.
답하는 방식을 정했다면, 다음 질문은 보통 "어디까지 맡길까"입니다. 그건 권한 모드 이야기라, 다른 글에서 따로 다뤘습니다.
참고한 문서
- Anthropic Claude Code: Output styles
- Anthropic Claude Code: Commands
- 직접 관측 — claude 2.1.195 (Explanatory·Learning·커스텀 스타일 실행), 2026-06-29