SpyBara
Go Premium

plugins/mods/reference.md 2026-10-01 23:59 UTC to 2026-10-02 10:01 UTC

This page contains 326 additions and 0 deletions.

2026
Fri 2 10:01

Mods 레퍼런스

Claude Code mod의 전체 레퍼런스입니다. 훅 모듈 구조, 이벤트, mods API 메서드, 렌더링 지점, 사용 환경별 요소, 제한, 설정을 다룹니다.

v2.1.287 기준 Claude Code CLI와 Desktop 앱에서 mod가 처리할 수 있는 모든 이벤트, 호출할 수 있는 mods API 메서드, 그릴 수 있는 렌더링 지점을 찾아볼 수 있습니다. 각 항목에는 이름과 한 줄 설명이 있으며, 해당 내용을 설명하는 가이드 섹션이 있으면 그 링크도 함께 제공됩니다.

파일

mod는 다음 파일이 있는 플러그인 디렉터리입니다.

파일 필수 여부 내용
.claude-plugin/plugin.json 예 플러그인 매니페스트. mod는 필수 필드를 추가하지 않습니다.
hooks/hooks.json 예 modules: 훅 모듈에 대한 경로 하나(이 파일 기준 상대 경로)를 담은 배열로, "modules": ["./register.js"]와 같습니다. hooks 아래에 설정 훅을 담을 수도 있습니다.
hooks/register.js와 같은 훅 모듈 예 mod의 진입점입니다. register(on, options)를 내보냅니다. 이름은 .js, .mjs, .cjs, .jsx, .ts, .mts, .cts, .tsx 중 하나로 끝납니다. ES 모듈입니다.
매니페스트의 types로 지정한 types/index.d.ts mod가 $.state를 사용하거나 mods API에 네임스페이스를 추가할 때 PluginState 값과 mod가 추가하는 네임스페이스를 선언합니다
이름이 .test.ts 또는 .test.tsx로 끝나는 파일 아니요 claude plugin test가 실행하는 테스트

register는 on과 options를 받습니다. options에는 매니페스트가 선언한 userConfig 필드의 값이 기본값이 채워진 상태로 들어 있습니다.

훅 함수

mod는 register 안에서 on을 호출하여 각 훅(이벤트 핸들러)을 등록합니다. on은 이벤트 이름, 이벤트 필드에 대한 필터인 선택적 matcher, 그리고 훅을 받으며, on('tool.call', { tool: 'Bash' }, async ($, e, next) => next(e))와 같이 사용합니다. on은 메서드가 하나인 등록 객체를 반환합니다. 이 메서드 .catch(handler)는 훅의 오류 핸들러를 설정합니다.

인수 설명
$ mods API로, mods API 메서드의 모든 메서드를 포함합니다. 각 호출은 $.fs.read('notes.md')와 같이 네임스페이스 다음에 메서드를 붙여 전체 형태로 작성합니다.
e 깊이 동결된 일반 데이터 형태의 이벤트 입력입니다. 변경하려면 복사본을 next에 전달합니다.
next(e) 미들웨어처럼 동작하는 다음 핸들러입니다. 이 훅 다음의 훅들을 실행한 뒤 Claude Code의 동작을 실행합니다. 이벤트의 결과로 resolve됩니다.
next.signal 이벤트가 중단되면 abort되는 AbortSignal
next.origin 이벤트를 발생시킨 주체의 { plugin, tier }입니다. Claude Code 자체는 { plugin: 'engine', tier: 'core' }입니다. mod의 tier는 mod 실행 순서에서의 우선순위 그룹으로, prepend, user, append, builtin 중 하나입니다.
next.budget 훅의 시간 제한(밀리초)입니다. next.budget.ms는 전체 제한이고, next.budget.remainingMs는 현재 남은 시간입니다
next.to(e, tier) 이후 tier인 append, builtin, core 중 하나로 건너뜁니다. next.to(e, 'append')는 사용자가 설치한 mod를 건너뜁니다. prependPlugins 또는 appendPlugins에 있는 mod만 호출할 수 있습니다.
next.error, next.called .catch 핸들러에서만 사용됩니다. next.error.kind는 throw 또는 timeout이고, next.error.message는 오류 텍스트이며, next.called는 실패한 훅이 next를 호출했으면 true입니다.

이벤트

이벤트는 관련 대상별로 묶여 있으며, 각각 언제 발생하는지와 해당 이벤트의 훅이 무엇을 반환할 수 있는지가 나와 있습니다. turn.step과 process.spawn의 훅은 비동기 제너레이터이고, 나머지 훅은 비동기 함수입니다.

각 표의 마지막 열은 약식 표기를 사용합니다. next(e)는 이벤트를 변경 없이 전달합니다. next({ ...e, text })는 next({ ...e, text: e.text.trim() })처럼 지정한 필드를 변경한 복사본을 전달합니다. 객체는 next를 호출하지 않고 이벤트에 응답하며, reason과 같은 단어는 { deny: 'Use the file tools.' }처럼 직접 작성하는 문자열을 나타냅니다.

도구

도구 이벤트는 Claude가 수행하는 각 도구 호출을 전후하여, Claude가 읽는 설명부터 호출 실행 여부 결정까지에 걸쳐 발생합니다.

이벤트 발생 시점 훅이 반환할 수 있는 값
tool.call 도구가 실행되기 직전 next(e), { deny: reason }, 또는 { result }
tool.check tool.call 및 PreToolUse 훅 이후, Claude Code가 도구 호출 실행 가능 여부를 결정할 때. next(e)는 규칙, 권한 모드, 그리고 그 훅들이 내린 결정으로 resolve됩니다. allow, ask, deny 중 하나인 { decision }
tool.describe 각 도구의 설명이 처음 Claude에게 전송될 때 도구마다 한 번 { description }

프롬프트와 Claude가 읽는 내용

프롬프트 이벤트는 사용자가 입력하는 텍스트와, 시스템 프롬프트나 리마인더처럼 Claude Code가 자체적으로 Claude에게 보내는 텍스트를 다룹니다.

이벤트 발생 시점 훅이 반환할 수 있는 값
prompt.submit 프롬프트가 제출될 때 next({ ...e, text }), next({ ...e, context }), 또는 { drop: reason }
prompt.fill, prompt.suggest 텍스트가 초안으로, 또는 흐린 제안으로 프롬프트 상자에 들어가기 직전 텍스트를 변경한 next(e)
prompt.edit 사용자가 프롬프트 상자를 편집할 때 next(e)
prompt.compose Claude Code가 시스템 프롬프트를 렌더링할 때 { sections }, 전송 순서대로 나열한 { id, text, scope }의 목록
prompt.section 시스템 프롬프트의 이름 있는 섹션마다 한 번. e.name은 prompt.compose에서의 섹션 id입니다. { text }, 또는 섹션을 생략하려면 { text: null }
prompt.context 대화마다 한 번, 첫 메시지와 함께 전송되는 컨텍스트에 대해 { blocks }
prompt.attachment Claude Code가 리마인더처럼 Claude를 위한 자체 메시지를 추가할 때. e.type은 종류를 나타내며, 타입에 선언된 종류의 경우 e.detail에 텍스트 작성의 근거가 된 정보가 들어 있습니다. { text }, 또는 생략하려면 { text: null }
skill.prompt 스킬의 텍스트가 Claude를 위해 확장될 때 { text }
attribution.text Claude Code가 커밋 또는 풀 리퀘스트 attribution 텍스트를 작성할 때 { text }

명령과 구성

명령 및 구성 이벤트는 명령이 실행되거나 나열될 때, 그리고 /config 행이 표시되거나 변경될 때 발생합니다.

이벤트 발생 시점 훅이 반환할 수 있는 값
command.run 명령이 실행되기 직전 { text }, {}, 또는 next(e)
command.describe 명령 목록을 위해 명령마다 한 번 { description, argumentHint, isHidden }
config.set /config 행이 변경되기 직전 next({ ...e, value }) 또는 { deny: reason }
config.describe /config 행마다 한 번 { label, description, isHidden }

턴

턴 이벤트는 하나의 답변을 처음부터 끝까지, 그 안에서 모델에 보내는 각 요청을 포함하여 추적합니다.

이벤트 발생 시점 훅이 반환할 수 있는 값
turn.start 턴이 시작될 때 next(e)
turn.step 요청 하나가 모델에 전송되기 직전 yield* next(e), 또는 next({ ...e, model }), next({ ...e, effort })
turn.complete 턴이 끝났을 때 next(e), 또는 답변 아래에 한 줄을 표시하려면 { text }

세션

세션 이벤트는 세션의 시작, 종료, 압축, 그리고 다른 세션과의 메시지 교환을 나타냅니다.

이벤트 발생 시점 훅이 반환할 수 있는 값
session.start 로드된 mod마다 첫 프롬프트 전에 한 번, 그리고 해당 mod를 다시 로드한 후 다시 한 번. /clear, /resume, /branch 이후에는 발생하지 않습니다. next(e)
session.end 세션이 종료되거나 /clear, /resume, /branch가 실행될 때. e.reason은 clear, resume, logout, prompt_input_exit, other 중 하나입니다. /branch는 resume을 보고합니다. next(e)
session.compact 대화가 압축되기 직전 { skip: reason }
session.receive, session.send 다른 에이전트나 세션으로부터 메시지가 도착하거나, 다른 에이전트나 세션으로 메시지가 전송되기 직전. 세션 간 메시지 보내기 및 받기를 참조하십시오. receive의 경우 { consumed: reason }, send의 경우 { isDelivered: false, reason }
session.append 프롬프트, 응답 블록, 도구 결과, 알림 등 대화가 보관하는 각 행마다 저장되기 전에 한 번 행의 content를 다시 작성하려면 next({ ...e, message })
session.attach, session.detach 다른 앱이 세션에 연결되거나 연결이 해제될 때 next(e)
session.measure 각 턴 이후, 그리고 플랜 한도 사용률이 변경될 때 next(e)

서브에이전트

서브에이전트 이벤트는 서브에이전트 유형이 Claude에게 제공될 때와 서브에이전트가 시작되기 직전에 발생합니다.

이벤트 발생 시점 훅이 반환할 수 있는 값
agent.offer 서브에이전트 유형이 Claude에게 제공될 때 제공하지 않으려면 { isOffered: false }
agent.spawn 서브에이전트가 시작되기 직전 { model } 또는 { deny: reason }

인터페이스

인터페이스 이벤트는 Claude Code가 렌더링 지점을 그릴 때와 사용자가 mod가 그린 컨트롤을 사용할 때 발생합니다. ui.render 훅이 반환하는 내용은 인터페이스에 그리기에서 확인할 수 있습니다.

이벤트 발생 시점
ui.render 렌더링 지점이 그려지기 직전
ui.resolve mod가 로드될 때 앱, 렌더링 지점, mod마다 한 번. 결과는 $.ui.resolve(e)가 읽는 요소 테이블입니다.
ui.press, ui.input, ui.select mod가 그린 Button, Input, Select가 사용될 때
ui.focus, ui.scroll 포커스된 컨트롤, 또는 창이나 밴드의 스크롤 위치가 변경되기 직전
ui.close 창이 닫히기 직전. e.id는 창이고 e.origin.kind는 plugin, person, unload 중 하나입니다.
ui.message Client 요소가 자신의 mod에 데이터를 게시할 때

다른 mod

이 이벤트를 사용하면 mod가 다른 mod가 로드될 때 이에 대해 조치하여, 로드를 거부하거나 해당 mod가 받는 mods API를 변경할 수 있습니다.

이벤트 발생 시점 훅이 반환할 수 있는 값
plugin.register 훅 모듈이 로드되기 직전. e.uses는 claude plugin validate가 출력하는 형태로 해당 모듈의 이벤트, mods API 호출, 환경 변수, 상태를 나열합니다. 각 호출은 fs.read처럼 $. 접두사 없이 작성됩니다. { refuse: reason }
engine.create 이 mod를 위한 mods API가 구성될 때 네임스페이스를 추가하거나 제외하도록 변경한 mods API

텔레메트리

텔레메트리 이벤트는 Claude Code가 로그에 기록하는 사용 레코드에 대해 발생합니다.

이벤트 발생 시점 훅이 반환할 수 있는 값
telemetry.log, telemetry.mark 텔레메트리 레코드가 로그에 기록되기 직전, 또는 기능 사용 한 번이 표시될 때. 직접 설치하는 mod에서는 on('telemetry.log', { to: 'collector' }, hook)처럼 텔레메트리 훅에 { to: 'collector' } 필터를 지정하십시오. 필터가 없으면 mod가 claude plugin validate를 통과하지 못합니다. *는 이 이벤트와 일치하지 않습니다. next(e), 또는 { deny: reason }

설정 훅 이벤트

각 설정 훅 이벤트는 classic.Stop이나 classic.PostToolUse처럼 classic.<Event>라는 이름의 이벤트입니다. e는 훅의 stdin JSON입니다.

Mods API 호출

모든 mods API 메서드는 fs.read, model.complete, ui.open처럼 네임스페이스와 메서드 이름을 딴 이벤트이기도 합니다. 이러한 이벤트의 훅은 자신보다 뒤에 실행되는 mod의 호출을 가로채며, next(e), { deny: reason }, 또는 { value }를 반환할 수 있습니다.

Mods API 메서드

mods API는 모든 훅이 받는 $ 인수입니다. 메서드는 $.ui와 같은 네임스페이스로 묶여 있습니다. 이 표는 각 네임스페이스의 메서드를 이름으로 나열하므로, $.ui 행의 open은 $.ui.open(...) 호출을 의미합니다. 가이드에서는 자주 쓰이는 메서드의 사용 예를 보여 주며, 사용자 빌드용 타입에는 모든 메서드가 예제와 함께 문서화되어 있습니다.

네임스페이스 메서드
$.plugin name, root: 이 플러그인의 이름과 디렉터리
$.ui resolve, invalidate, open, close, panes, focus, scroll, toast, status, log, notice, ask, copy, blit
$.command register, run, list
$.tool register, call, check, list
$.agent register, spawn, list
$.model complete, fork, classify
$.prompt submit, read, fill, suggest, compose. Claude는 submit({ text })의 텍스트를 사용자의 mod를 발신자로 명시하는 문장 다음에 읽습니다. submit({ text, asUser: true })는 그 문장 없이 텍스트를 사용자 자신의 말로 전송합니다.
$.turn abort
$.session messages, cwd, root, model, turns, id, repo, surfaces, usage, version, compact, send, append, authorize. usage()는 { startedAt, context, rateLimits, cost }를 반환합니다. context에는 tokens, window, percent가 있고, rateLimits는 { kind, percentUsed, resetsAt }의 목록입니다.
$.config list, set
$.settings read
$.env get, set
$.fs read, write, list, exists, stat, ancestors. write는 원자적이지 않습니다. 파일 내용을 제자리에서 교체하므로 다른 프로세스가 일부만 작성된 파일을 읽을 수 있습니다. 여러 세션이 변경하는 데이터는 $.store에 보관하십시오.
$.store get, set, delete, keys. 머신의 모든 세션이 공유하는 키-값 저장소입니다. 둘 이상의 세션에서 저장하기를 참조하십시오.
$.state 반응형 상태: get, set과 함께, claude-code에서 가져오는 헬퍼 atom, read, update, derive, memberOf
$.clock now, sleep, after, every
$.http fetch
$.process run, spawn
$.mcp call, connect. connect(server)는 사용자 플러그인의 매니페스트에 나열된 MCP 서버를 연결합니다.
$.audio play, speak
$.telemetry log, mark. 레코드는 Claude Code 또는 기본 제공 mod가 호출할 때만 전송됩니다.

렌더링 지점

렌더링 지점은 Claude Code 인터페이스의 확장 지점입니다. 각 행은 ui.render 훅에서 e.component의 값 하나에 해당하며, e.props의 필드와 이를 렌더링하는 앱이 함께 나와 있습니다. e.surface는 terminal 또는 desktop입니다. 훅이 각 지점에서 할 수 있는 일은 Claude Code가 이미 그리는 내용 변경하기에서 선택지별 예제와 함께 확인할 수 있습니다.

지점 e.props e.requestId 렌더링되는 곳
Pane title, isFocused, bodyColumns, placement, scroll, view 창의 id Terminal, Desktop
AbovePrompt hasSurvey, isWorking, maxRows, bodyColumns, scroll, view 단일 인스턴스 Terminal, Desktop
UserMessage text, origin, isExpanded, 그리고 origin에 따라 task 또는 from 메시지 id Terminal, Desktop
AssistantMessage 답변의 텍스트 메시지 id Terminal, Desktop
ToolUse, ToolResult, ToolGroup 도구의 이름, 입력, 결과 도구 호출 id Terminal, Desktop
CommandOutput command, text 메시지 id Terminal, Desktop
AskUserQuestion 질문과 옵션 도구 호출 id Terminal, Desktop
ToolProgress kind 도구 호출 id Terminal
Spinner word, message, suffix, mode 에이전트 id Terminal, Desktop
TurnDuration word, durationMs 메시지 id Terminal
InfoNotice text, command 메시지 id Terminal
SessionMode modes 단일 인스턴스 Terminal, Desktop
PromptHint isDraft, isWorking, hint 단일 인스턴스 Terminal, Desktop

e.viewport에는 columns, rows, isFullscreen이 들어 있습니다. 앱이 창 크기를 측정하기 전까지는 존재하지 않습니다. 여기서 rows는 사용자 창(pane)이 아니라 전체 윈도우의 높이입니다.

트리를 지점에 맞추려면 훅에서 다음 prop을 읽습니다.

  • Pane 또는 밴드의 너비: e.props.bodyColumns에 맞춰 그립니다
  • 트랜스크립트 옆 Pane의 높이: e.props.placement가 'dock'이면 e.props.scroll.bodyRows가 창이 가진 행 수입니다
  • 프롬프트 위 Pane의 높이: e.props.placement가 'inline'이면 창은 한도 내에서 트리에 맞춰 커지며, bodyRows는 현재 표시되는 행만 셉니다. $.ui.open의 rows 필드로 다른 한도를 요청할 수 있습니다.

창보다 높은 트리는 전체가 스크롤됩니다.

요소

요소는 ui.render 훅이 반환하는 트리의 구성 요소이며, $.ui.resolve(e)에서 얻습니다. 요소로 트리 만들기에서는 자주 쓰이는 요소와 터미널에서 그려지는 모습을 보여 주며, 인터페이스 갤러리에는 대부분의 요소에 대한 스크린샷이 있습니다. 체크 표시는 앱이 해당 요소를 그릴 수 있음을 뜻합니다.

요소 주요 prop Terminal Desktop
Box key, flex 레이아웃, gap, padding, margin, width, height, borderStyle, backgroundColor, position, hover ✓ ✓
Text color, backgroundColor, bold, italic, underline, dimColor, inverse, wrap ✓ ✓
Button key, label, onPress, hotkey, plain, dimColor, autoFocus, action ✓ ✓
Link href, label ✓ ✓
Code 최대 10,000자의 코드 ✓ ✓
Markdown 최대 10,000자의 text, key, dimColor, onLinkPress, pressableLinks ✓ ✓
Input key, label, placeholder, value, submitLabel, onSubmit, onInput, autoFocus ✓ ✓
Select key, label, options, value, onSelect, autoFocus ✓ ✓
Svg 최대 131,072자의 SVG 문서 ✓
Client module, key ✓ ✓
Raster key, 최대 512의 columns, 최대 256의 rows, cells. 색상 셀 격자 그리기를 참조하십시오. ✓
Image 최대 2 MiB의 PNG 또는 RGBA 바이트, 또는 파일 경로 ✓

추가 Button 규칙: action은 Claude Code 자체의 키보드 단축키 동작 중 하나를 지정하며, 해당 동작에 대한 사용자의 바인딩이 코드(chord)이거나 수정자 키 조합이면 그 바인딩으로 버튼이 눌립니다. 밴드에 있는 버튼의 숫자 hotkey는 사용자가 빈 프롬프트에 해당 숫자만 입력하고 잠시 멈췄을 때도 동작합니다. 한 번의 그리기에서 두 버튼이 같은 hotkey를 지정하면 나중 버튼이 해당 키를 가져갑니다. autoFocus는 모든 컨트롤에서 true만 허용하므로, 끄려면 prop을 생략하십시오.

제한

훅과 mods API 호출은 시간 및 크기 제한 아래에서 실행됩니다. Claude Code는 시간 제한을 초과한 훅을 건너뛰고 크기 제한을 초과한 호출을 거부합니다.

제한 값
한 이벤트에 대한 훅 자체의 실행 시간(next 내부 시간이나 $.clock.sleep 이외의 mods API 호출 시간은 제외) 10초
.catch 핸들러의 실행 시간 1초
모든 session.end 훅의 합계 1.5초
$.process.run 타임아웃 기본 30초, 최대 10분
$.model.complete maxTokens 기본 1024, 최대 64,000 또는 모델의 출력 한도
$.fs.read 및 $.fs.write 파일 하나당 4 MiB
Text의 문자열 자식 하나 10,000자
$.store 전체 JSON 4 MiB
$.session.messages() 최신 항목 4,096개
$.ui.invalidate('ui.render') 다시 그리기 초당 10회로 제한되며, 터미널에서 표시 중인 창, 펼쳐진 밴드, 프롬프트 아래 힌트 줄의 경우 초당 30회입니다. 이보다 빨리 들어오는 호출은 병합됩니다.
$.ui.toast { timeoutMs }를 전달하지 않으면 4초간 표시
사용자가 요청하지 않았는데 열린 창 터미널 144열부터 배치되며, 사용자가 한 번 연 후에는 110열부터 배치
명령, 도구, 서브에이전트 유형, 창 이름 문자, 숫자, _, -로 최대 64자
claude plugin test 테스트 하나 테스트가 timeoutMs를 설정하지 않으면 5초

설정 및 환경 변수

다음은 mod에 영향을 주는 설정과 환경 변수입니다. 위치 열은 각 항목을 어느 설정 파일이나 환경에서 읽는지 나타냅니다.

이름 위치 동작
CLAUDE_CODE_PLUGIN_DIRS 환경, 또는 ~/.claude/settings.json의 env 플래그를 전달할 수 없는 앱을 위해 --plugin-dir처럼 로드할 플러그인 디렉터리입니다. :로 구분한 절대 경로이며, Windows에서는 ;로 구분합니다.
CLAUDE_CODE_PLUGIN_DIR_WATCH 환경 1이면 장시간 실행되는 비대화형 세션이 저장 시 --plugin-dir mod를 다시 로드합니다
prependPlugins, appendPlugins 관리형 설정. 관리형 설정이 없는 머신에서 Team 또는 Enterprise 플랜으로 로그인하지 않은 사용자의 경우에만 사용자 설정. acme-guard@acme-tools와 같은 플러그인 id 목록입니다. prependPlugins의 mod는 사용자가 설치한 모든 mod보다 먼저, appendPlugins의 mod는 그 이후에 나열된 순서대로 실행됩니다. mod 실행 순서를 참조하십시오.
allowManagedModsOnly 관리형 설정, 기본 제공 가드의 옵션으로 조직의 mod로 간주되는 mod와 Claude Code에 기본 제공되는 mod만 로드됩니다. 사용자의 설정 훅은 계속 실행됩니다.
allowModsToOverrideDenyRules 관리형 설정, 기본 제공 가드의 옵션으로 사용자가 설치한 mod가 deny 규칙이 거부하는 도구 호출을 승인할 수 있게 합니다
allowManagedHooksOnly 관리형 설정 조직의 것이 아닌 훅과 설치된 mod를 차단합니다. 계속 실행되는 항목을 참조하십시오.
disableAllHooks 모든 설정 파일 관리형 설정에서는 설치된 플러그인의 mod나 훅이 실행되지 않습니다. 사용자 자신의 설정에서는 조직이 관리하는 항목이 계속 실행됩니다. disableAllHooks를 참조하십시오.
disableSideloadFlags 관리형 설정 시작 시 --plugin-dir과 --plugin-url을 거부합니다
pluginConfigs 사용자 또는 관리형 설정 mod의 userConfig 값을 보관하며, 키는 acme-guard@acme-tools와 같은 플러그인 id이거나, --plugin-dir로 로드한 경우 first-mod@inline처럼 이름에 @inline을 붙인 것입니다

sec-default@builtin은 Claude Code에 기본 제공되는 가드로, /plugin과 디버그 로그에는 cc-plugin-sec-default로 표시됩니다. 관리형 설정이 있는 머신이거나 Team 또는 Enterprise 플랜으로 로그인한 사용자의 경우, 사람이 설치한 모든 mod보다 먼저 로드됩니다. 관리형 prependPlugins가 설정되어 있으면 가드는 해당 목록에 지정된 경우에만 나열된 위치에서 로드됩니다. 소스는 Claude Code 저장소의 mods/sec-default 디렉터리에 있습니다.

명령

다음 명령과 플래그는 mod를 로드, 검사, 테스트합니다. claude 명령은 셸에서, / 명령은 Claude Code 프롬프트에서 실행합니다. 표에서 <directory>는 claude plugin validate ./first-mod처럼 사용자가 입력하는 경로를 나타냅니다. 대괄호는 선택적 인수를 표시합니다.

명령 동작
/plugin 기본 제공이 아닌 mod가 로드되었을 때 탭 아래에 1 mod active · first-mod와 같은 줄을 표시합니다
claude plugin validate <directory> 플러그인의 매니페스트와 훅 모듈을 읽고 오류, 처리하는 이벤트, 수행하는 mods API 호출을 보고합니다. --strict는 경고를 오류로 취급하고 --json은 기계가 읽을 수 있는 보고서를 출력합니다.
claude plugin test [directory] 디렉터리(지정하지 않으면 현재 디렉터리) 아래에서 이름이 .test.ts 또는 .test.tsx로 끝나는 모든 파일을 실행합니다. 테스트가 실패하면 상태 1로 종료합니다.
claude --plugin-dir <directory> 한 세션 동안 플러그인 디렉터리를 로드하고, 저장할 때 훅 모듈을 다시 로드합니다. 여러 개를 로드하려면 플래그를 반복합니다.
/reload-plugins 실행 시 플러그인을 다시 로드합니다