Claude Code 모드(mods) 직접 만들어 본 기록: 작업 띠·Haiku 자동 전환·할 일 패널
Claude Code 모드(mods)를 공식 문서대로 직접 세 개 만들어 돌려 봤습니다. 프롬프트 위 작업 띠, 쉬운 요청을 Haiku로 보내는 saver, 할 일 패널의 실제 화면과 비용, 남의 모드 설치 전 검사법까지 정리했습니다.
이전 글에서는 Claude Code 플러그인 5종을 깔기 전에 직접 재본 기록을 정리했습니다. 그때는 플러그인이 대화 시작마다 얼마나 많은 글자를 먼저 읽히는지가 관심사였습니다. 그런데 요즘 Claude Code에 모드(mods)라는 게 생겼습니다. 플러그인의 한 종류인데, 지시서를 얹는 수준이 아니라 Claude Code 화면과 동작 자체를 바꿉니다.
계기는 OpusJake(Jake Schincariol)가 공개한 "Claude Code Mods" 리소스 팩이었습니다. 세션끼리 대화하는 팀룸, 쉬운 일은 싼 모델로 보내는 세이버, 메일과 일정을 보여주는 대시보드 세 가지를 "프롬프트만 붙여 넣으면 Claude가 만들어 준다"고 소개합니다. 소개만 보면 군침이 흐를 수 있는데, 실제로 만들어지는지, 돈이 얼마나 줄어드는지, 남이 만든 걸 깔아도 괜찮은지는 직접 해봐야 알 수 있습니다.
이번 글에서는 그 아이디어를 제 작업 방식에 맞게 각색해서 모드 세 개(작업 띠, saver, 할 일 패널)를 직접 만들어 돌린 과정과, Claude Code 공식 문서에서 꼭 알아야 할 부분을 같이 정리하겠습니다. 세이버는 같은 요청 6개를 모드를 끄고 켜서 12번 돌려 비용을 쟀습니다.
(작성일 기준 2026-10-27입니다. Windows 11, Claude Code 2.1.311, 기본 모델 Opus 5.5에서 확인했습니다. 모드는 나온 지 얼마 안 된 기능이라 버전이 오르면 이벤트 이름이나 화면이 달라질 수 있습니다.)
사용 도구 및 준비물
모드(mods)란?
공식 문서의 정의를 풀어 쓰면 모드는 Claude Code 안에서 실행되는 자바스크립트 함수 묶음입니다. Claude가 도구를 쓰려는 순간, 내가 프롬프트를 보내는 순간, 화면 한 부분을 그리는 순간 같은 사건(event)마다 Claude Code가 모드의 함수를 불러 줍니다. 그 함수는 지켜보기만 할 수도, 내용을 바꿀 수도, 아예 대신 처리할 수도 있습니다.
비유하자면 게임 모드(mod)와 거의 같은 개념입니다. 게임 본체는 그대로 두고 HUD에 체력 바를 하나 더 그리거나, 특정 동작을 막거나, 새 단축키를 추가하는 것처럼, Claude Code 본체는 그대로 두고 화면과 동작을 덧씌웁니다.
먼저 용어 몇 개만 짚고 가겠습니다.
- plugin(플러그인): 스킬, 명령어, 훅, MCP 서버를 한 번에 설치하게 묶은 꾸러미입니다. 모드도 플러그인의 한 형태라 설치·삭제 방법이 같습니다.
- hook(훅): 특정 순간에 자동으로 실행되는 처리입니다. 이 글에서 훅은 모드 안의 함수를 말하고 설정 파일에 적는 기존 훅은 "설정 훅"이라고 따로 부르겠습니다. (공식 문서도 이렇게 구분합니다.)
- token(토큰): 모델이 글자를 세는 단위이자 요금 단위입니다. 비용 표의 숫자는 전부 여기서 나옵니다.
헷갈리기 쉬운 친구들과 비교하면 다음과 같습니다. 공식 문서 비교표를 제 말로 옮긴 것입니다.
| 구분 | 모드 | 설정 훅 | 스킬 | MCP 서버 |
|---|---|---|---|---|
| 정체 | Claude Code 안에서 도는 함수 | 정해진 순간에 도는 스크립트 | Claude가 읽는 지시서(SKILL.md) | 밖에서 도구를 빌려주는 프로그램 |
| 화면에 그리기 | 가능 (띠, 패널, 스피너) | 불가 | 불가 | 불가 |
| 쓰는 언어 | JavaScript / TypeScript | 아무 스크립트 + settings.json | Markdown | 아무 언어 |
| 고를 때 | 패널·띠·명령이 필요하거나 요청을 바꿔치기할 때 | 막기·허용·기록만 하면 될 때 | 같은 지시를 계속 붙여 넣을 때 | 외부 시스템에 닿아야 할 때 |
돌아가는 곳은 터미널의 claude, 데스크톱 앱 Code 탭, VS Code 확장입니다. claude.ai 일반 채팅에서는 돌지 않습니다. 화면 없이 한 번 실행하는 claude -p(헤드리스 모드)에서는 훅은 돌지만 그림은 안 그려집니다. 아래 saver 비용 실험은 이 성질을 이용했습니다.
시작 전에 확인할 건 버전 하나입니다. 터미널은 2.1.287 이상, 데스크톱 앱은 2.1.286 이상이어야 하고 모드는 기본으로 켜져 있습니다. 제 PC에서 claude --version을 치면 2.1.311 (Claude Code)이 나왔습니다. 데스크톱 앱이라면 Code 탭에서 /status를 입력해 Claude Code 줄을 보시면 됩니다.
만드는 길은 두 가지입니다.
-
Claude에게 말로 부탁하기: "git 브랜치를 프롬프트 위에 보여주는 모드 만들어줘"처럼 말하면, Claude Code에 내장된
plugin-authoring스킬이 이 버전에 맞는 이벤트와 파일 위치를 알려주고 Claude가 파일을 씁니다. 파일은~/.claude/dev-mods/<세션 ID>/아래에 생기고 첫 파일이 저장될 때 "이 세션에서 켤까요?"라는 질문이 뜹니다. 켜면 턴이 끝날 때 바로 로드됩니다. 대신 그 세션에서만 돌고 오래된 세션 폴더는 지워지니, 마음에 들면 폴더를~/mods같은 곳으로 복사해 두어야 합니다. -
폴더를 직접 만들고
--plugin-dir로 띄우기: 파일 세 개(plugin.json,hooks.json, 코드 파일)짜리 폴더를 만들고claude --plugin-dir ./폴더로 시작합니다. 파일을 고치면 세션을 켠 채로 다시 로드됩니다.
어느 쪽이든 제대로 로드됐는지는 /plugin을 열어 확인하시면 됩니다. 탭 아래 흐린 줄에 1 mod active · 이름처럼 켜진 모드가 나오고 Installed 탭에서 하나씩 끌 수도 있습니다. 터미널에서 새로 설치한 모드는 열려 있는 세션에서 /reload-plugins를 쳐야 바로 들어옵니다.
이번 실험은 Claude(이 글을 쓰는 데 같이 쓴 세션)에게 아래 프롬프트를 주고 2번 방식으로 폴더를 고정했습니다. 같은 폴더를 여러 번 띄워 화면을 찍고 비용을 재야 해서 세션마다 위치가 바뀌는 1번보다 다루기 편했습니다.
프롬프트 위 작업 띠 모드
첫 번째는 원 자료의 "git 브랜치를 프롬프트 위에 보여주는 모드"와 공식 튜토리얼의 "도구 호출 세기"를 합친 것입니다. 저는 블로그·영상 작업을 할 때 브랜치를 자주 바꾸는데, Claude가 지금 어느 브랜치에서 일하는지, 이번 세션에서 파일을 몇 번 건드렸는지를 프롬프트 바로 위에서 보고 싶었습니다. Claude에게 준 프롬프트는 다음과 같습니다.
work-band라는 모드를 만들어줘.
- 프롬프트 바로 위 띠에 지금 폴더의 git 브랜치와, 이 세션에서 Claude가 도구를 쓴 횟수를 한 줄로 보여줘.
- 턴이 끝날 때마다 브랜치를 다시 읽어줘.
- /tally를 입력하면 같은 횟수를 대화창에 알려줘. 이 버전의 모드 타입을 먼저 확인하고, 다 쓰면 claude plugin validate로 검사해서 나온 문제를 고쳐줘.
마지막 줄은 원 자료의 프롬프트에도 있는 습관인데, 실제로 해보니 꼭 넣어야 하는 문장이었습니다. 이유는 바로 아래 실패 기록에 있습니다.
만들어진 코드의 핵심은 띠를 그리는 부분입니다. 띠 자리(AbovePrompt)를 그릴 차례가 오면 저장해 둔 브랜치 이름과 횟수를 읽어 한 줄짜리 화면을 돌려줍니다.
on('ui.render', { component: 'AbovePrompt' }, async ($, e, next) => {
const name = await read($, branch) // 세션 시작·턴 종료 때 git으로 읽어 둔 브랜치
const n = await read($, calls) // tool.call 훅이 셀 때마다 1씩 올린 값
const { Box, Text } = $.ui.resolve(e)
return (
<Box>
<Text color="cyan">브랜치 {name || '(git 아님)'}</Text>
<Text dimColor> · 도구 호출 {n}회</Text>
</Box>
)
})
코드를 안 읽으셔도 괜찮습니다. 요지는 "그릴 차례가 오면 내가 만든 한 줄을 대신 내놓는다"입니다. 이 폴더를 claude --plugin-dir로 띄우고 "README.md와 notes.md를 읽고 각각 한 줄로 요약해줘"를 보낸 화면입니다.
화면을 읽어 보면 맨 아래 입력창 바로 위에 브랜치 blog/claude-mods · 도구 호출 2회가 떠 있습니다. Claude가 파일 2개를 읽었으니(Read 2회) 숫자가 정확히 맞습니다. 그다음 /tally를 치면 대화창에 work-band: 이 세션에서 Claude가 도구를 2번 썼습니다가 찍힙니다. 앞에 붙은 work-band:는 Claude Code가 모드 이름을 자동으로 붙여 준 것입니다.
여기까지 오는 동안 두 번 막혔습니다.
1. 검사기에서 바로 실패
첫 검사에서 ✘ Validation failed가 떴습니다. 원문은 다음과 같습니다.
❯ types: line 7:
exportat the top level is followed bytypeorinterface: a contract exports types and nothing else
값을 저장할 때 쓰는 "타입 약속 파일"에 export {}라는 빈 줄을 넣었더니, 약속 파일에는 타입 말고 아무것도 내보내면 안 된다고 거절한 것입니다. export type Branch = string으로 바꾸자 통과했습니다. 사람이 눈으로 봐서는 문제없어 보이는 줄이라, 검사 문장이 프롬프트에 없었다면 "왜 아무것도 안 뜨지?"에서 한참 헤맸을 것 같습니다.
2. Windows Git Bash에서 /tally가 경로로 바뀜
화면 없이 명령을 시험하려고 Git Bash에서 claude -p "/tally"를 실행했더니 Claude가 엉뚱한 답을 했습니다. 받은 메시지가 C:/Program Files/Git/tally였다는 것입니다. Git Bash가 /로 시작하는 인자를 Windows 경로로 자동 변환해서 생긴 일입니다. 앞에 MSYS_NO_PATHCONV=1을 붙이자 work-band: 이 세션에서 Claude가 도구를 0번 썼습니다가 정상으로 나왔습니다. (PowerShell이나 일반 터미널에서는 생기지 않는 문제입니다.)
마지막으로 공식 문서에 나오는 claude plugin test도 돌려 봤습니다. 세션도 로그인도 없이 "도구 호출 3번이 일어났다"고 가짜 사건을 쏘고 /tally 답이 맞는지 확인하는 방식입니다. 전체 0.19초, 테스트 자체는 30ms 남짓 만에 통과했습니다.
쉬운 요청은 Haiku로, saver 모드
두 번째가 이번 글에서 제일 궁금했던 부분입니다. Claude Code는 기본적으로 한 세션의 모든 요청을 같은 모델로 보냅니다. 제 기본 모델은 Opus 5.5(Anthropic의 상위 모델)라서 띄어쓰기 하나 고치는 일에도 Opus 값을 냅니다. 원 자료의 세이버는 쉬운 요청만 골라 Claude Haiku 5.5(가장 작고 싼 모델)로 보내자는 아이디어입니다.
먼저 공식 가격표를 다시 확인했습니다(100만 토큰당, 2026-10-27 기준).
| 모델 | 입력 | 출력 |
|---|---|---|
| Claude Haiku 5.5 (요청 하나가 10만 토큰 이하) | $0.10 | $0.50 |
| Claude Haiku 5.5 (10만 토큰 초과) | $0.50 | $2.50 |
| Claude Sonnet 5.5 | $2 | $10 |
| Claude Opus 5.5 | $4 | $20 |
| Claude Fable 5.1 | $10 | $50 |
표에서 놓치기 쉬운 건 Haiku 5.5의 두 번째 줄입니다. 요청 하나가 10만 토큰을 넘으면 단가가 5배가 됩니다. 대화가 길어진 세션에서 무작정 Haiku로 보내면 기대만큼 안 줄 수 있다는 뜻입니다. 그래서 각색한 프롬프트에 상한을 넣었습니다.
saver라는 모드를 만들어줘.
- 프롬프트를 보낼 때 쉬운 일인지 어려운 일인지 나눠줘. 쉬운 일: 오타·맞춤법, 이름 바꾸기, 요약, 표로 정리, 형식 바꾸기. 어려운 일: 기획, 설계, 디버깅, 구현, 새 기능.
- 쉬운 일이면 그 턴의 요청을 claude-haiku-5-5로 보내고, 어려운 일은 지금 모델에 남겨줘. 서브에이전트 요청은 건드리지 마.
- 지금 대화가 8만 토큰을 넘으면 쉬운 일이어도 Haiku로 보내지 마 (Haiku 5.5는 10만 토큰부터 비싸짐).
- 프롬프트 위 띠에 마지막으로 답한 모델과 Haiku로 보낸 횟수를 보여주고, /saver on, /saver off로 켜고 끌 수 있게 해줘.
원 자료는 애매하면 Haiku에게 한 단어로 판정을 맡기라고 하는데, 저는 판정에도 모델 호출이 붙는 게 싫어서 단어 규칙만 썼습니다. 그래서 "이 문단 좀 다듬어줘"처럼 규칙에 없는 말은 전부 어려운 쪽(지금 모델)으로 갑니다. 아끼는 쪽보다 안전한 쪽으로 틀리게 한 셈입니다.
여기서도 한 번 막혔습니다. 요청을 다른 모델로 바꾸는 turn.step 이벤트를 보통 함수로 썼더니 검사기가 이렇게 거절했습니다.
❯ the hook on "turn.step" is not an async generator: turn.step streams, so it takes async function* ($, e, next) { ... }
모델 답은 한 번에 오지 않고 조금씩 흘러나오기(스트리밍) 때문에, 이 이벤트만은 async function*라는 특별한 형태로 써야 한다는 뜻입니다. 고친 핵심 부분은 다음과 같습니다.
on('turn.step', async function* ($, e, next) {
const isMain = e.agentId === undefined // 서브에이전트 요청은 그대로 둔다
const response = yield* next(routeToHaiku && isMain ? { ...e, model: HAIKU } : e)
// response.usage.model 에 실제로 답한 모델 이름이 들어 있다 → 띠에 표시
return response
})
next({ ...e, model: HAIKU }) 한 줄이 "이번 요청은 Haiku로 보내라"입니다. 공식 문서에서 모드가 할 수 있는 일로 소개한 "요청 하나를 다른 모델로 보내기"가 정말 이 한 줄이었습니다.
실제 화면에서는 이렇게 보입니다. 쉬운 요청(표로 정리) 뒤에는 띠에 claude-haiku-5-5가, 어려운 요청(함수 구현) 뒤에는 claude-opus-5-5가 찍혔습니다.
그럼 돈은 얼마나 줄었을까요? 같은 요청 6개(쉬운 것 3, 어려운 것 3)를 모드 없이 한 번, saver를 켜고 한 번, 총 12번 claude -p로 돌렸습니다. 측정 조건은 매번 새 세션, 같은 데모 폴더(파일 2개), 요청마다 1회이고 비용은 Claude Code가 결과에 적어 주는 total_cost_usd(API 정가 기준 환산값)입니다.
| 요청 | 구분 | 모드 없음 | saver 켬 | 답한 모델 (켬) |
|---|---|---|---|---|
| notes.md 띄어쓰기 오타 고치기 | 쉬움 | $0.1607 · 11.7초 | $0.0052 · 8.6초 | Haiku 5.5 |
| 문장 한 줄 요약 | 쉬움 | $0.1084 · 6.8초 | $0.0029 · 6.4초 | Haiku 5.5 |
| 목록을 표로 정리 | 쉬움 | $0.1072 · 6.0초 | $0.0029 · 6.8초 | Haiku 5.5 |
| 블로그 글 기획안 | 어려움 | $0.1770 · 24.0초 | $0.1670 · 27.0초 | Opus 5.5 |
| 할 일 기능 설계 계획 | 어려움 | $0.1847 · 26.8초 | $0.1744 · 26.5초 | Opus 5.5 |
| 피보나치 함수 구현 | 어려움 | $0.1172 · 10.9초 | $0.1064 · 10.4초 | Opus 5.5 |
쉬운 요청 3개를 합치면 $0.376이 $0.011이 됐습니다. 약 34분의 1입니다. 체감으로 바꾸면, Opus로 오타 하나 고칠 돈이면 Haiku로 오타를 30번 넘게 고칠 수 있는 정도입니다. 어려운 요청 3개는 둘 다 Opus가 답했고 차이(5~10%)는 실행할 때마다 생기는 흔들림 수준이라 의미를 두지 않았습니다. 6개 전체로 보면 $0.855가 $0.459로, 절반 가까이 줄었습니다.
결과물도 같이 봤습니다. 오타는 둘 다 "바꿀수"를 "바꿀 수"로 정확히 고쳤고 요약도 둘 다 한 문장으로 잘 냈습니다. 차이가 보인 건 표 정리입니다. Opus는 묻지 않은 합계 줄을 하나 더 붙였고, Haiku는 "3개"처럼 원래 단위를 그대로 살렸습니다. 이 정도 일에서는 Haiku 쪽이 오히려 말을 더 잘 들은 느낌입니다. 반대로 Haiku는 오타 고치기에서 턴을 4번 썼고(Opus는 3번) 이 부분은 조금 아쉬웠습니다.
한 가지 짚을 점이 있습니다. 표의 비용 대부분은 새 세션마다 Claude Code 기본 안내문(1만 2천~1만 6천 토큰)을 처음 저장(캐시 쓰기)하는 값입니다. 이미 길게 이어지는 세션이라면 요청당 비용 자체가 이보다 작고 모델을 바꿀 때마다 그 모델용 저장(캐시)을 새로 써야 해서 차이가 이만큼 크지 않을 수 있을 것 같습니다. 이번에는 새 세션 기준으로만 쟀습니다. (그리고 저처럼 정액 요금제(Pro·Max·Team)를 쓰면 돈이 바로 나가는 대신 사용량 한도에서 빠집니다.)
할 일 패널 모드
세 번째는 원 자료의 대시보드입니다. 원안은 Gmail·Google Calendar 커넥터를 붙여 답장할 메일과 오늘 일정까지 한 패널에 띄우는데, 저는 메일 내용이 화면에 고스란히 뜨는 게 부담스러워서 할 일 탭 하나로 줄였습니다. 대신 세션을 닫았다 열어도 목록이 남는지를 꼭 확인하고 싶었습니다.
todo-pane이라는 모드를 만들어줘.
- /todo를 입력하면 "할 일" 패널을 열어줘. 맨 위에 할 일을 적고 Enter로 추가하는 칸, 그 아래 한 줄에 하나씩 할 일을 두고 눌러서 체크하게 해줘.
- 목록은 세션을 닫았다 열어도 남게 저장해줘.
- 맨 아래에 남은 일 개수를 보여줘.
/todo를 치고 할 일 세 개를 적은 다음, 첫 번째를 눌러 체크한 과정입니다.
패널은 대화창 아래, 입력창 위에 테두리 상자로 열렸습니다. 공식 문서에 따르면 터미널이 전체 화면 모드일 때는 대화 옆 사이드바로 붙고 지금처럼 일반 화면이거나 폭이 좁으면 입력창 위에 뜹니다. 첫 항목을 누르면 [x]로 바뀌고 글자가 흐려지며 "남은 일 2개"로 줄어듭니다.
그다음 Claude Code를 완전히 끄고 새로 띄워서 /todo를 다시 쳤습니다.
체크 상태까지 그대로 남아 있습니다. 모드에는 세션 동안만 쓰는 값($.state)과 세션을 넘어 남는 저장소($.store)가 따로 있는데, 목록을 후자에 같이 써 두었기 때문입니다. 이 부분은 공식 문서를 안 읽었다면 몰랐을 차이라, 직접 만드실 때 "세션을 닫아도 남게"라는 말을 프롬프트에 꼭 넣으시길 추천합니다.
남이 만든 모드, 깔기 전 검사
여기까지 해보니 모드가 할 수 있는 일이 생각보다 넓었습니다. 그래서 남이 만든 모드를 깔 때가 더 신경 쓰였습니다. 공식 문서에도 경고가 분명하게 적혀 있습니다. "Mods aren't sandboxed."(샌드박스 안에 갇혀 있지 않다, Claude Code 공식 문서 Mods overview) 문서 내용을 정리하면 모드는 로드되는 순간 다음을 할 수 있습니다.
- 내 계정 권한으로 파일 읽기·쓰기, 프로그램 실행, 인터넷 요청
- 환경 변수와 설정 파일 읽기 (API 키가 들어 있다면 그것까지)
- 내가 보내는 모든 프롬프트와 Claude의 모든 도구 호출 보기, 바꾸기
- 묻기 전에 도구 호출을 승인하기, 내 요금제로 모델 부르기
다행히 실행하지 않고 미리 들여다보는 방법이 있습니다. 모드 폴더에 claude plugin validate를 돌리면 코드를 읽기만 하고 hooks:(어떤 순간을 듣는지)와 calls:(무엇을 하려는지) 줄을 보여줍니다. Anthropic이 공개한 샘플 모드 세 개(claude-code-playground, 2026-10-01 커밋)에 직접 돌려 봤습니다.
세 개를 표로 정리하면 다음과 같습니다.
| 샘플 모드 | 하는 일 | hooks (듣는 순간) | calls 중 눈여겨볼 것 |
|---|---|---|---|
| token-weather | 컨텍스트가 얼마나 찼는지 날씨 예보처럼 띠에 표시 | 세션 시작, 턴 종료, 띠 그리기 | $.session.usage (사용량 읽기) 정도 |
| blast-radius | rm -rf, 강제 푸시 같은 위험 명령을 붙잡고 영향 범위를 보여준 뒤 진행/취소 | Bash 도구 호출, 패널, 띠 | $.process.run (프로그램 실행) |
| replay-theater | /replay로 지난 턴에 Claude가 고친 파일을 한 단계씩 다시 보기 | 명령, 모든 도구 호출, 턴 시작·종료 | $.fs.read (파일 읽기) |
공식 문서는 calls: 줄에서 특히 다음을 보라고 합니다. $.fs.read·$.fs.write(아무 파일이나 읽고 쓰기), $.process.run(프로그램 실행), $.http.fetch(인터넷 요청), $.env.get·$.settings.read(키가 들어 있을 수 있는 환경 변수·설정 읽기), $.model.complete(내 요금으로 모델 호출), $.session.send(다른 세션에 메시지 보내기)입니다. hooks: 줄에 tool.call이나 prompt.submit이 있으면 모든 도구 호출이나 모든 프롬프트를 보고 바꿀 수 있다는 뜻입니다.
blast-radius를 이 기준으로 읽어 보면 위험 명령이 지울 파일 목록을 세려고 git status나 bash를 직접 실행합니다($.process.run). 목적에 맞는 호출이라 납득은 가는데, "프로그램을 실행하는 모드"라는 건 알고 까는 게 맞다고 봅니다. 참고로 저는 이번에 샘플들을 검사만 했고 제 PC 세션에서 직접 돌리지는 않았습니다. 같은 기준으로 제가 만든 saver를 검사하면 calls: $.command.register, $.session.usage, $.state.get, $.state.set, $.store.get, $.store.set, $.ui.resolve로, 파일·프로그램·인터넷 호출이 하나도 없습니다.
공식 문서에서 같이 기억해 둘 만한 안전 장치는 네 가지입니다.
- 권한 확인 창은 모드가 못 바꿉니다. 모드가 화면 대부분을 다시 그릴 수 있어도 "이거 실행해도 될까요?" 창의 내용은 손대지 못합니다.
- 권한 규칙은 모드 자신의 파일·프로그램 호출까지 막지 않습니다. 예를 들어
.env읽기를 Claude에게 금지해 두어도, 모드가$.fs.read로 직접 읽는 건 그 규칙에 걸리지 않습니다. 이건 문서를 읽기 전까지 저도 착각하던 부분입니다. - 끄는 스위치가 세 단계입니다. 하나만 끄려면
/plugin의 Installed 탭, 한 세션만 전부 끄려면claude --safe-mode, 계속 전부 끄려면~/.claude/settings.json에"disableAllHooks": true입니다(이 경우 설정 훅과 상태 줄도 같이 꺼집니다). - 회사 계정이면 기본 가드가 먼저 뜹니다. Team·Enterprise 로그인이거나 관리 설정이 있는 PC에서는
sec-default라는 내장 모드가 다른 모드보다 먼저 로드되어, 모드가 거부 규칙을 넘어서 승인하는 걸 막습니다. 제 환경이 Claude Team 로그인이라 이 조건에 해당합니다(문서 기준이고 가드 동작을 따로 시험하지는 않았습니다).
개인적인 생각
모드를 써보고 나서 든 생각은, 이게 "Claude에게 일을 시키는 도구"라기보다 "Claude Code를 내 작업대에 맞게 고치는 도구"에 가깝다는 것입니다. 스킬이 Claude의 머릿속을 바꾼다면 모드는 책상 배치를 바꿉니다. 지금 브랜치가 뭔지, 이번 턴을 어느 모델이 답했는지처럼 매번 묻기 귀찮던 것들이 화면 한 줄로 해결되는 경험은 생각보다 컸습니다.
다만 좋은 tool이 나오면 이것저것 다 깔아보고 싶은 게 사람 마음인데, 모드는 그 마음을 한 번 경계해야 하는 종류라고 생각합니다. 스킬은 읽히기만 하는 문서지만 모드는 내 권한으로 실행되는 코드이기 때문입니다. 상황별로 정리하면 다음과 같습니다.
1. 코드를 전혀 안 읽는 경우 - 남의 모드는 깔지 말고 필요한 걸 Claude에게 말로 만들게 하는 쪽을 추천합니다. 내가 시킨 모드는 무엇을 하는지 내가 알고 있고 프롬프트 끝에 "validate로 검사하고 고쳐줘"만 붙이면 됩니다.
2. 비용이 신경 쓰이는 경우 - saver 같은 모델 전환은 효과가 확실했습니다. 다만 쉬운 일의 기준은 사람마다 달라서 규칙을 넓게 잡기보다 제 경우처럼 "애매하면 지금 모델"로 두고 띠를 보며 조금씩 넓히는 게 안전한 것 같습니다. Haiku 5.5는 10만 토큰부터 비싸진다는 점도 꼭 프롬프트에 넣으셔야 합니다.
3. 남이 만든 모드를 꼭 써야 하는 경우 - 받은 폴더에 claude plugin validate부터 돌리고 calls: 줄에 $.http.fetch, $.process.run, $.env.get이 있으면 그 이유를 README에서 찾아보시길 권장합니다. 이유가 납득되면 --plugin-dir로 한 세션만 먼저 띄워 보고 그다음에 설치해도 늦지 않습니다.
원 자료의 첫 번째 아이디어였던 팀룸(세션 셋이 서로 메시지를 주고받고 매니저 세션이 스탠드업을 받는 구조)은 이번에 만들지 못했습니다. 세션을 여러 개 동시에 띄워 놓고 재야 해서 이 글에 넣기에는 판이 너무 커졌습니다.
이 글을 마치며 & Reference
다음 글에는 이번에 못 한 팀룸, 그러니까 Claude Code 세션 세 개가 서로 메시지를 주고받으며 리서치·초안·감수를 나눠 맡는 구조를 실제로 띄워 보겠습니다. 이번에 만든 모드 세 개도 몇 주 써보고 계속 남길지 정리해 보겠습니다.
관련 글
- Claude Code 플러그인 5종, 깔기 전에 직접 재본 기록 : 이번 글의 바로 앞 단계. 플러그인이 대화 시작마다 읽히는 토큰을 쟀습니다
- CLAUDE.md 진단 : 모드보다 먼저 손볼 곳. 규칙 파일이 정말 일을 하는지 점검하는 방법입니다
Reference
- Claude Code Mods, OpusJake : 이번 글의 출발점. 팀룸·세이버·대시보드 세 가지를 복사해 쓰는 프롬프트로 정리한 리소스 팩(PDF)이고, 이 글의 프롬프트는 여기서 각색했습니다
- Mods overview, Claude Code 공식 문서 : 모드가 할 수 있는 일, 비교표, 끄는 법, 내장 모드 목록까지 한 페이지에 있습니다. 처음이라면 여기부터 읽으시면 됩니다
- Create a mod, Claude Code 공식 문서 : 말로 부탁하는 방법과 파일 세 개로 직접 만드는 튜토리얼, validate·test 사용법
- Manage mods for your organization, Claude Code 공식 문서 : 관리자용 문서지만
calls:줄 읽는 표와 기본 가드 설명은 개인 사용자에게도 쓸모 있습니다 - claude-code-playground mods, Anthropic GitHub : token-weather, blast-radius, replay-theater 샘플. 지원 없이 공개된 예제라 읽고 쓰시면 됩니다
- Claude 가격표 : Haiku 5.5의 10만 토큰 기준 이중 가격이 여기 나옵니다
(최대한 작성 시점 기준으로 확인했지만 모드는 빠르게 바뀌는 기능이라 틀린 부분도 있을 수 있습니다.)
긴 글 읽어주셔서 감사합니다 :)
추가 학습 자료 신청
ZEXEA 메인 사이트의 자료 신청 페이지로 이동합니다. 이름·이메일·전화번호 등의 입력이 필요합니다. 블로그 글과 실습 예제는 신청 없이 모두 읽을 수 있습니다.
관련 가이드
Claude Code 플러그인 5종, 깔기 전에 직접 재본 기록 (Karpathy 스킬·I Have ADHD·Superpowers·Grilling·Claude Octopus)
Claude Code 플러그인 추천으로 자주 보이는 Karpathy 스킬, I Have ADHD, Superpowers, Grilling, Claude Octopus를 직접 설치해 대화 시작 토큰과 같은 지시 A/B 결과를 쟀습니다. 무엇을 남길지 정리했습니다.
전체 과정 보기
CLAUDE.md, 잘 쓰고 있는지 5가지 기준으로 진단하세요 (복붙용 개선 프롬프트 포함)
CLAUDE.md가 방치되는 이유는 관리 플러그인이 없어서가 아니라 진단이 없어서입니다. 프로젝트 지도부터 실행 모델까지 5가지 판정 기준과 200줄 룰 구조 점검, 그리고 진단에서 개선 실행까지 한 번에 굴리는 3-Phase 프롬프트 전문을 정리했습니다.
전체 과정 보기Claude Code 프론트엔드 디자인 도구 5종, AI 티 나는 웹사이트를 고치는 스킬·CLI 사용법
Claude Code로 만든 웹사이트의 AI 티를 줄이는 디자인 도구 5종. Awesome DESIGN.md, Taste Skill, Image to Code, Playwright CLI, Vercel 규칙 스킬의 정체와 설치법, 쓰는 시점, 직접 돌려본 결과를 정리했습니다.
전체 과정 보기