Use this file to discover all available pages before exploring further.
Skills는 Claude가 할 수 있는 작업을 확장합니다. SKILL.md 파일을 지침과 함께 생성하면 Claude가 이를 자신의 도구 모음에 추가합니다. Claude는 관련이 있을 때 skills를 사용하거나 /skill-name으로 직접 호출할 수 있습니다.같은 지침, 체크리스트 또는 다단계 절차를 계속 채팅에 붙여넣거나, CLAUDE.md의 섹션이 사실이 아닌 절차로 성장했을 때 skill을 생성합니다. CLAUDE.md 콘텐츠와 달리, skill의 본문은 사용할 때만 로드되므로 긴 참조 자료는 필요할 때까지 거의 비용이 들지 않습니다.
/help 및 /compact와 같은 기본 제공 명령어와 /debug 및 /code-review와 같은 번들 skills는 명령어 참조를 참조하세요.사용자 정의 명령어가 skills로 병합되었습니다..claude/commands/deploy.md의 파일과 .claude/skills/deploy/SKILL.md의 skill은 모두 /deploy를 생성하고 동일하게 작동합니다. 기존 .claude/commands/ 파일은 계속 작동합니다. Skills는 선택적 기능을 추가합니다: 지원 파일을 위한 디렉토리, skill을 누가 호출하는지 제어하기 위한 frontmatter, 그리고 Claude가 관련이 있을 때 자동으로 로드할 수 있는 기능입니다.
Claude Code에는 모든 세션에서 사용 가능한 번들 skills 세트가 포함되어 있으며, /code-review, /batch, /debug, /loop, /claude-api를 포함합니다. 고정 로직을 직접 실행하는 대부분의 기본 제공 명령어와 달리, 번들 skills는 프롬프트 기반입니다: Claude에 상세한 지시사항을 제공하고 도구를 사용하여 작업을 조율하도록 합니다. 다른 skill과 동일한 방식으로 호출합니다: / 다음에 skill 이름을 입력합니다.번들 skills는 명령어 참조에 나열되어 있으며, 목적 열에 Skill로 표시됩니다.
세 가지 번들 skills는 함께 작동하여 앱을 시작하고 테스트만이 아닌 실행 중인 앱에 대해 변경 사항을 확인합니다:
Skill
목적
/run
앱을 시작하고 변경 사항이 작동하는지 확인하기 위해 앱을 실행합니다
/verify
앱을 빌드하고 실행하여 코드 변경이 의도한 대로 작동하는지 확인하며, 테스트나 타입 체크로 돌아가지 않습니다
/run-skill-generator
/run과 /verify에 프로젝트를 빌드하고 시작하는 방법을 가르칩니다
세 가지 skills 모두 Claude Code v2.1.145 이상이 필요합니다./run과 /verify는 설정 없이 작동합니다. 프로젝트 유형(CLI, 서버, TUI, 브라우저 기반)과 README, package.json 또는 Makefile의 내용으로부터 시작을 추론합니다. 이 추론은 표준 시작 이상의 것이 필요한 프로젝트(데이터베이스, env 파일, 그래픽 세션, 다단계 빌드)에 대해서는 신뢰할 수 없게 됩니다./run-skill-generator는 대신 레시피를 기록합니다. 깨끗한 환경에서 앱을 실행하고, 작동한 것(설치 명령어, env 변수, 시작 스크립트)을 캡처하고, 프로젝트별 skill로 .claude/skills/run-<name>/에 커밋합니다. 그 후 /run, /verify 및 리포지토리의 다른 모든 에이전트는 레시피를 다시 발견하는 대신 기록된 레시피를 따릅니다. 프로젝트당 한 번 /run-skill-generator를 실행하고, 빌드 또는 시작 프로세스가 변경되면 다시 실행합니다.
이 예제는 git 저장소의 커밋되지 않은 변경 사항을 요약하고 위험한 항목을 표시하는 skill을 생성합니다. 라이브 diff를 Claude가 읽기 전에 프롬프트로 가져오므로, 응답은 Claude가 열린 파일에서 추측할 수 있는 것이 아니라 실제 작업 트리에 기반합니다. Claude는 변경 사항에 대해 물어볼 때 자동으로 skill을 로드하거나 /summarize-changes로 직접 호출할 수 있습니다.
1
skill 디렉토리 생성
개인 skills 폴더에 skill을 위한 디렉토리를 생성합니다. 개인 skills는 모든 프로젝트에서 사용 가능합니다.
mkdir -p ~/.claude/skills/summarize-changes
2
SKILL.md 작성
모든 skill에는 두 부분이 있는 SKILL.md 파일이 필요합니다: Claude에게 skill을 언제 사용할지 알려주는 YAML frontmatter (--- 마커 사이)와 skill이 실행될 때 Claude가 따르는 지침이 있는 markdown 콘텐츠입니다. 디렉토리 이름이 입력하는 명령어가 되고, description은 Claude가 자동으로 skill을 로드할 시기를 결정하는 데 도움이 됩니다.이를 ~/.claude/skills/summarize-changes/SKILL.md에 저장합니다:
---description: Summarizes uncommitted changes and flags anything risky. Use when the user asks what changed, wants a commit message, or asks to review their diff.---## Current changes!`git diff HEAD`## InstructionsSummarize the changes above in two or three bullet points, then list any risks you notice such as missing error handling, hardcoded values, or tests that need updating. If the diff is empty, say there are no uncommitted changes.
!`git diff HEAD` 줄은 동적 컨텍스트 주입을 사용합니다: Claude Code는 명령어를 실행하고 Claude가 skill 콘텐츠를 보기 전에 줄을 출력으로 바꾸므로, 지침은 현재 diff가 이미 인라인된 상태로 도착합니다.
3
skill 테스트
git 프로젝트를 열고, 파일을 약간 편집한 후, claude를 실행하여 Claude Code를 시작합니다. 두 가지 방법으로 skill을 테스트할 수 있습니다.Claude가 자동으로 호출하도록 하기 - 설명과 일치하는 항목을 물어봅니다:
Skills가 여러 수준에서 같은 이름을 공유할 때, enterprise가 personal을 재정의하고, personal이 project를 재정의합니다. Plugin skills는 plugin-name:skill-name 네임스페이스를 사용하므로 다른 수준과 충돌할 수 없습니다. .claude/commands/에 파일이 있으면 동일한 방식으로 작동하지만, skill과 명령어가 같은 이름을 공유하면 skill이 우선합니다.
.claude-plugin/plugin.json을 skill 폴더에 추가하면 <name>@skills-dir이라는 플러그인으로 로드되므로, agents, hooks 및 MCP 서버를 번들로 제공할 수 있습니다. 프로젝트의 .claude/skills/에서는 먼저 작업 공간 신뢰 대화를 수락해야 합니다.
Claude Code는 skill 디렉토리의 파일 변경을 감시합니다. ~/.claude/skills/, 프로젝트 .claude/skills/, 또는 --add-dir 디렉토리 내의 .claude/skills/ 아래에서 skill을 추가, 편집 또는 제거하면 Claude Code를 다시 시작하지 않고도 현재 세션 내에서 적용됩니다. 세션이 시작되었을 때 존재하지 않았던 최상위 skills 디렉토리를 생성하려면 Claude Code를 다시 시작해야 새 디렉토리를 감시할 수 있습니다.
라이브 변경 감지는 SKILL.md 텍스트만 포함합니다. skill 폴더가 플러그인이기도 한 경우, hooks/, .mcp.json, agents/ 및 output-styles/의 변경 사항은 /reload-plugins를 실행해야 적용됩니다.
프로젝트 skills는 시작 디렉토리의 .claude/skills/와 저장소 루트까지의 모든 상위 디렉토리에서 로드되므로, 하위 디렉토리에서 Claude를 시작해도 루트에서 정의된 skills를 선택합니다. 시작 디렉토리 아래의 하위 디렉토리에 있는 파일로 작업할 때, Claude Code는 필요에 따라 중첩된 .claude/skills/ 디렉토리에서 skills를 검색합니다. 예를 들어, packages/frontend/의 파일을 편집하는 경우, Claude Code는 packages/frontend/.claude/skills/에서도 skills를 찾습니다. 이는 패키지가 자신의 skills를 가진 monorepo 설정을 지원합니다.각 skill은 SKILL.md를 진입점으로 하는 디렉토리입니다:
my-skill/├── SKILL.md # 주요 지침 (필수)├── template.md # Claude가 채울 템플릿├── examples/│ └── sample.md # 예상 형식을 보여주는 예제 출력└── scripts/ └── validate.sh # Claude가 실행할 수 있는 스크립트
SKILL.md는 주요 지침을 포함하며 필수입니다. 다른 파일은 선택적이며 더 강력한 skills를 구축할 수 있습니다: Claude가 채울 템플릿, 예상 형식을 보여주는 예제 출력, Claude가 실행할 수 있는 스크립트 또는 상세한 참조 문서. SKILL.md에서 이러한 파일을 참조하여 Claude가 각 파일의 내용과 로드 시기를 알 수 있도록 합니다. 자세한 내용은 지원 파일 추가를 참조하세요.
.claude/commands/의 파일은 계속 작동하며 동일한 frontmatter를 지원합니다. Skills는 지원 파일과 같은 추가 기능을 지원하므로 권장됩니다.
--add-dir 플래그와 /add-dir 명령어는 파일 액세스를 부여하지만 구성 검색은 하지 않습니다. 그러나 skills는 예외입니다: 추가된 디렉토리 내의 .claude/skills/는 자동으로 로드됩니다. 이 예외는 --add-dir과 /add-dir에만 적용됩니다. settings.json의 permissions.additionalDirectories 설정은 파일 액세스만 부여하며 skills를 로드하지 않습니다. 라이브 변경 감지를 참조하여 세션 중에 편집이 어떻게 선택되는지 확인하세요.다른 .claude/ 구성(예: subagents, 명령어 및 출력 스타일)은 추가 디렉토리에서 로드되지 않습니다. 로드되는 항목과 로드되지 않는 항목의 전체 목록과 프로젝트 간 구성을 공유하는 권장 방법은 예외 표를 참조하세요.
--add-dir 디렉토리의 CLAUDE.md 파일은 기본적으로 로드되지 않습니다. 로드하려면 CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1을 설정하세요. 추가 디렉토리에서 로드를 참조하세요.
Skill 파일은 모든 지침을 포함할 수 있지만, 호출 방식을 생각하면 포함할 내용을 안내하는 데 도움이 됩니다:참조 콘텐츠는 Claude가 현재 작업에 적용하는 지식을 추가합니다. 규칙, 패턴, 스타일 가이드, 도메인 지식. 이 콘텐츠는 인라인으로 실행되므로 Claude가 대화 컨텍스트와 함께 사용할 수 있습니다.
---name: api-conventionsdescription: API design patterns for this codebase---When writing API endpoints:- Use RESTful naming conventions- Return consistent error formats- Include request validation
작업 콘텐츠는 배포, 커밋 또는 코드 생성과 같은 특정 작업에 대한 단계별 지침을 제공합니다. 이는 Claude가 자동으로 실행하도록 하기보다는 /skill-name으로 직접 호출하려는 작업입니다. disable-model-invocation: true를 추가하여 Claude가 자동으로 트리거하는 것을 방지합니다.
---name: deploydescription: Deploy the application to productioncontext: forkdisable-model-invocation: true---Deploy the application:1. Run the test suite2. Build the application3. Push to the deployment target
SKILL.md는 모든 것을 포함할 수 있지만, skill을 호출하는 방식(사용자, Claude 또는 둘 다)과 실행 위치(인라인 또는 subagent)를 생각하면 포함할 내용을 안내하는 데 도움이 됩니다. 복잡한 skills의 경우, 지원 파일을 추가하여 주요 skill을 집중적으로 유지할 수도 있습니다.본문 자체는 간결하게 유지합니다. Skill이 로드되면, 그 콘텐츠는 턴 전체에 걸쳐 컨텍스트에 유지되므로, 모든 줄이 반복되는 토큰 비용입니다. 어떻게 또는 왜인지 설명하기보다는 무엇을 할지 명시하고, CLAUDE.md 콘텐츠에 적용할 동일한 간결성 테스트를 적용합니다.
markdown 콘텐츠 외에도, SKILL.md 파일 상단의 --- 마커 사이의 YAML frontmatter 필드를 사용하여 skill 동작을 구성할 수 있습니다:
---name: my-skilldescription: What this skill doesdisable-model-invocation: trueallowed-tools: Read Grep---Your skill instructions here...
모든 필드는 선택적입니다. Claude가 skill을 언제 사용할지 알 수 있도록 description만 권장됩니다.
필드
필수
설명
name
아니오
skill 목록에 표시되는 표시 이름입니다. 디렉토리 이름으로 기본값이 설정됩니다. skill을 호출하기 위해 입력하는 이름과 어떻게 다른지는 skill이 명령어 이름을 얻는 방법을 참조하세요.
description
권장
skill이 무엇을 하는지, 언제 사용할지. Claude는 이를 사용하여 skill을 자동으로 적용할 시기를 결정합니다. 생략하면 markdown 콘텐츠의 첫 번째 단락을 사용합니다. 주요 사용 사례를 앞에 배치합니다: 결합된 description 및 when_to_use 텍스트는 컨텍스트 사용을 줄이기 위해 skill 목록에서 1,536자로 잘립니다.
when_to_use
아니오
Claude가 skill을 호출해야 할 때에 대한 추가 컨텍스트(예: 트리거 구문 또는 예제 요청). skill 목록에서 description에 추가되며 1,536자 제한에 포함됩니다.
argument-hint
아니오
예상 인수를 나타내기 위해 자동 완성 중에 표시되는 힌트. 예: [issue-number] 또는 [filename] [format].
arguments
아니오
skill 콘텐츠에서 $name 치환을 위한 명명된 위치 인수. 공백으로 구분된 문자열 또는 YAML 목록을 허용합니다. 이름은 순서대로 인수 위치에 매핑됩니다.
disable-model-invocation
아니오
Claude가 이 skill을 자동으로 로드하는 것을 방지하려면 true로 설정합니다. /name으로 수동으로 트리거하려는 워크플로우에 사용합니다. 또한 skill이 subagents에 미리 로드되는 것을 방지합니다. 기본값: false.
user-invocable
아니오
/ 메뉴에서 숨기려면 false로 설정합니다. 사용자가 직접 호출하지 않아야 하는 배경 지식에 사용합니다. 기본값: true.
allowed-tools
아니오
이 skill이 활성화되었을 때 Claude가 권한을 요청하지 않고 사용할 수 있는 도구. 공백 또는 쉼표로 구분된 문자열 또는 YAML 목록을 허용합니다.
disallowed-tools
아니오
이 skill이 활성화되었을 때 Claude의 사용 가능한 도구 풀에서 제거되는 도구. AskUserQuestion과 같이 배경 루프에 대해 특정 도구를 호출하지 않아야 하는 자율 skills에 사용합니다. 공백 또는 쉼표로 구분된 문자열 또는 YAML 목록을 허용합니다. 다음 메시지를 보낼 때 제한이 해제됩니다.
model
아니오
이 skill이 활성화되었을 때 사용할 모델. 재정의는 현재 턴의 나머지 부분에 적용되며 설정에 저장되지 않습니다. 다음 프롬프트에서 세션 모델이 재개됩니다. /model과 동일한 값을 허용하거나 활성 모델을 유지하려면 inherit을 허용합니다.
effort
아니오
노력 수준 - 이 skill이 활성화되었을 때. 세션 노력 수준을 재정의합니다. 기본값: 세션에서 상속. 옵션: low, medium, high, xhigh, max; 사용 가능한 수준은 모델에 따라 다릅니다.
이 skill이 활성화되는 시기를 제한하는 Glob 패턴. 쉼표로 구분된 문자열 또는 YAML 목록을 허용합니다. 설정하면 Claude는 패턴과 일치하는 파일로 작업할 때만 자동으로 skill을 로드합니다. 경로별 규칙과 동일한 형식을 사용합니다.
shell
아니오
이 skill의 !`command` 및 ```! 블록에 사용할 shell. bash(기본값) 또는 powershell을 허용합니다. powershell을 설정하면 Windows에서 PowerShell을 통해 인라인 shell 명령어를 실행합니다. CLAUDE_CODE_USE_POWERSHELL_TOOL=1이 필요합니다.
skill을 호출하기 위해 입력하는 명령어는 skill 파일이 있는 위치에서 나옵니다. frontmatter name 필드는 skill 목록에 표시되는 표시 레이블을 설정하며, plugin 루트 SKILL.md를 제외하고는 / 뒤에 입력하는 내용을 변경하지 않습니다.아래 표는 각 레이아웃에 대해 명령어 이름이 어디에서 나오는지 보여줍니다:
Skill 위치
명령어 이름 소스
예제
~/.claude/skills/ 또는 .claude/skills/ 아래의 Skill 디렉토리
skill을 호출할 때 전달된 모든 인수. $ARGUMENTS가 콘텐츠에 없으면 인수가 ARGUMENTS: <value>로 추가됩니다.
$ARGUMENTS[N]
0 기반 인덱스로 특정 인수에 액세스합니다(예: $ARGUMENTS[0]은 첫 번째 인수).
$N
$ARGUMENTS[N]의 약자(예: $0은 첫 번째 인수, $1은 두 번째 인수).
$name
arguments frontmatter 목록에서 선언된 명명된 인수. 이름은 순서대로 위치에 매핑되므로, arguments: [issue, branch]를 사용하면 플레이스홀더 $issue는 첫 번째 인수로 확장되고 $branch는 두 번째 인수로 확장됩니다.
${CLAUDE_SESSION_ID}
현재 세션 ID. 로깅, 세션별 파일 생성 또는 skill 출력을 세션과 연관시키는 데 유용합니다.
${CLAUDE_EFFORT}
현재 노력 수준: low, medium, high, xhigh, 또는 max. Ultracode는 별개의 수준이 아니며 xhigh로 보고됩니다. 이를 사용하여 활성 노력 설정에 맞게 skill 지침을 조정합니다.
${CLAUDE_SKILL_DIR}
skill의 SKILL.md 파일을 포함하는 디렉토리. plugin skills의 경우, 이는 plugin 루트가 아닌 plugin 내의 skill 하위 디렉토리입니다. bash 주입 명령어에서 현재 작업 디렉토리와 관계없이 skill과 함께 번들된 스크립트 또는 파일을 참조하는 데 사용합니다.
인덱싱된 인수는 shell 스타일 인용을 사용하므로 다중 단어 값을 따옴표로 감싸서 단일 인수로 전달합니다. 예를 들어, /my-skill "hello world" second는 $0을 hello world로, $1을 second로 확장합니다. $ARGUMENTS 플레이스홀더는 항상 입력한 전체 인수 문자열로 확장됩니다.치환을 사용한 예제:
---name: session-loggerdescription: Log activity for this session---Log the following to logs/${CLAUDE_SESSION_ID}.log:$ARGUMENTS
Skills는 디렉토리에 여러 파일을 포함할 수 있습니다. 이는 SKILL.md를 필수 항목에 집중하게 하면서 Claude가 필요할 때만 상세한 참조 자료에 액세스할 수 있게 합니다. 큰 참조 문서, API 사양 또는 예제 컬렉션은 skill이 실행될 때마다 컨텍스트에 로드될 필요가 없습니다.
my-skill/├── SKILL.md (required - overview and navigation)├── reference.md (detailed API docs - loaded when needed)├── examples.md (usage examples - loaded when needed)└── scripts/ └── helper.py (utility script - executed, not loaded)
SKILL.md에서 지원 파일을 참조하여 Claude가 각 파일의 내용과 로드 시기를 알 수 있도록 합니다:
## Additional resources- For complete API details, see [reference.md](reference.md)- For usage examples, see [examples.md](examples.md)
SKILL.md를 500줄 이하로 유지합니다. 상세한 참조 자료를 별도 파일로 이동합니다.
기본적으로 사용자와 Claude 모두 모든 skill을 호출할 수 있습니다. /skill-name을 입력하여 직접 호출할 수 있고, Claude는 대화와 관련이 있을 때 자동으로 로드할 수 있습니다. 두 frontmatter 필드를 사용하여 이를 제한할 수 있습니다:
disable-model-invocation: true: 사용자만 skill을 호출할 수 있습니다. 부작용이 있거나 타이밍을 제어하려는 워크플로우(예: /commit, /deploy 또는 /send-slack-message)에 사용합니다. Claude가 코드가 준비된 것처럼 보인다고 해서 배포하기로 결정하지 않기를 원합니다.
user-invocable: false: Claude만 skill을 호출할 수 있습니다. 명령어로 실행할 수 없는 배경 지식에 사용합니다. legacy-system-context skill은 오래된 시스템이 어떻게 작동하는지 설명합니다. Claude는 관련이 있을 때 이를 알아야 하지만, /legacy-system-context는 사용자가 취할 의미 있는 작업이 아닙니다.
이 예제는 사용자만 트리거할 수 있는 배포 skill을 생성합니다. disable-model-invocation: true 필드는 Claude가 자동으로 실행하는 것을 방지합니다:
---name: deploydescription: Deploy the application to productiondisable-model-invocation: true---Deploy $ARGUMENTS to production:1. Run the test suite2. Build the application3. Push to the deployment target4. Verify the deployment succeeded
두 필드가 호출 및 컨텍스트 로딩에 미치는 영향은 다음과 같습니다:
Frontmatter
사용자가 호출 가능
Claude가 호출 가능
컨텍스트에 로드되는 시기
(기본값)
예
예
설명은 항상 컨텍스트에 있고, 호출될 때 전체 skill이 로드됨
disable-model-invocation: true
예
아니오
설명은 컨텍스트에 없고, 사용자가 호출할 때 전체 skill이 로드됨
user-invocable: false
아니오
예
설명은 항상 컨텍스트에 있고, 호출될 때 전체 skill이 로드됨
일반 세션에서 skill 설명은 Claude가 사용 가능한 항목을 알 수 있도록 컨텍스트에 로드되지만, 전체 skill 콘텐츠는 호출될 때만 로드됩니다. 미리 로드된 skills가 있는 Subagents는 다르게 작동합니다: 전체 skill 콘텐츠는 시작 시 주입됩니다.
사용자 또는 Claude가 skill을 호출하면, 렌더링된 SKILL.md 콘텐츠는 대화에 단일 메시지로 들어가고 세션의 나머지 부분 동안 그대로 유지됩니다. Claude Code는 나중의 턴에서 skill 파일을 다시 읽지 않으므로, 작업 전체에 적용되어야 하는 지침을 일회성 단계가 아닌 상시 지침으로 작성합니다.자동 압축은 토큰 예산 내에서 호출된 skills를 전달합니다. 대화가 요약되어 컨텍스트를 확보하면, Claude Code는 요약 후 각 skill의 가장 최근 호출을 다시 첨부하여 처음 5,000토큰을 유지합니다. 다시 첨부된 skills는 25,000토큰의 결합 예산을 공유합니다. Claude Code는 가장 최근에 호출된 skill부터 시작하여 이 예산을 채우므로, 한 세션에서 많은 skills를 호출한 경우 압축 후 이전 skills가 완전히 삭제될 수 있습니다.skill이 첫 번째 응답 후 동작에 영향을 미치지 않는 것처럼 보이면, 콘텐츠는 일반적으로 여전히 존재하며 모델이 다른 도구나 접근 방식을 선택하고 있습니다. skill의 description 및 지침을 강화하여 모델이 계속 선호하도록 하거나, hooks를 사용하여 동작을 결정론적으로 적용합니다. skill이 크거나 그 후에 다른 여러 skills를 호출한 경우, 압축 후 전체 콘텐츠를 복원하려면 다시 호출합니다.
allowed-tools 필드는 skill이 활성화되었을 때 나열된 도구에 대한 권한을 부여하므로 Claude는 승인을 요청하지 않고 사용할 수 있습니다. 사용 가능한 도구를 제한하지 않습니다: 모든 도구는 호출 가능하게 유지되며, 권한 설정은 나열되지 않은 도구에 대한 도구를 계속 관리합니다.프로젝트의 .claude/skills/ 디렉토리에 체크인된 skills의 경우, allowed-tools는 해당 폴더에 대한 작업 공간 신뢰 대화를 수락한 후 적용되며, .claude/settings.json의 권한 규칙과 동일합니다. 프로젝트 skills를 신뢰하기 전에 검토하세요. skill은 자신에게 광범위한 도구 액세스 권한을 부여할 수 있습니다.이 skill은 skill을 호출할 때마다 Claude가 승인을 요청하지 않고 git 명령어를 실행할 수 있게 합니다:
---name: commitdescription: Stage and commit the current changesdisable-model-invocation: trueallowed-tools: Bash(git add *) Bash(git commit *) Bash(git status *)---
skill이 특정 도구를 사용하지 못하도록 차단하려면, 권한 설정에 거부 규칙을 추가합니다.
사용자와 Claude 모두 skill을 호출할 때 인수를 전달할 수 있습니다. 인수는 $ARGUMENTS 플레이스홀더를 통해 사용 가능합니다.이 skill은 GitHub 이슈를 번호로 수정합니다. $ARGUMENTS 플레이스홀더는 skill 이름 뒤에 오는 모든 것으로 대체됩니다:
---name: fix-issuedescription: Fix a GitHub issuedisable-model-invocation: true---Fix GitHub issue $ARGUMENTS following our coding standards.1. Read the issue description2. Understand the requirements3. Implement the fix4. Write tests5. Create a commit
/fix-issue 123을 실행하면 Claude는 “Fix GitHub issue 123 following our coding standards…”를 받습니다.인수를 사용하여 skill을 호출하지만 skill에 $ARGUMENTS가 포함되지 않으면, Claude Code는 ARGUMENTS: <your input>을 skill 콘텐츠의 끝에 추가하므로 Claude는 여전히 입력한 내용을 봅니다.위치별로 개별 인수에 액세스하려면 $ARGUMENTS[N] 또는 더 짧은 $N을 사용합니다:
---name: migrate-componentdescription: Migrate a component from one framework to another---Migrate the $ARGUMENTS[0] component from $ARGUMENTS[1] to $ARGUMENTS[2].Preserve all existing behavior and tests.
/migrate-component SearchBar React Vue를 실행하면 $ARGUMENTS[0]을 SearchBar로, $ARGUMENTS[1]을 React로, $ARGUMENTS[2]를 Vue로 대체합니다. $N 약자를 사용하는 동일한 skill:
---name: migrate-componentdescription: Migrate a component from one framework to another---Migrate the $0 component from $1 to $2.Preserve all existing behavior and tests.
!`<command>` 구문은 skill 콘텐츠가 Claude로 전송되기 전에 shell 명령어를 실행합니다. 명령어 출력이 플레이스홀더를 대체하므로 Claude는 명령어 자체가 아닌 실제 데이터를 받습니다.이 skill은 GitHub CLI를 사용하여 라이브 PR 데이터를 가져와 pull request를 요약합니다. !`gh pr diff` 및 기타 명령어가 먼저 실행되고, 출력이 프롬프트에 삽입됩니다:
---name: pr-summarydescription: Summarize changes in a pull requestcontext: forkagent: Exploreallowed-tools: Bash(gh *)---## Pull request context- PR diff: !`gh pr diff`- PR comments: !`gh pr view --comments`- Changed files: !`gh pr diff --name-only`## Your taskSummarize this pull request...
이 skill이 실행될 때:
각 !`<command>`가 즉시 실행됩니다(Claude가 보기 전에).
출력이 skill 콘텐츠의 플레이스홀더를 대체합니다.
Claude는 실제 PR 데이터가 있는 완전히 렌더링된 프롬프트를 받습니다.
이는 전처리이며, Claude가 실행하는 것이 아닙니다. Claude는 최종 결과만 봅니다.대체는 원본 파일에 대해 한 번 실행됩니다. 명령어 출력은 일반 텍스트로 삽입되며 추가 !`<command>` 플레이스홀더에 대해 다시 스캔되지 않으므로, 명령어는 나중의 패스에서 확장할 플레이스홀더를 내보낼 수 없습니다.인라인 형식은 !이 줄의 시작 또는 공백 직후에 나타날 때만 인식됩니다. !이 KEY=!`cmd`처럼 다른 문자 뒤에 오면, 플레이스홀더는 리터럴 텍스트로 남겨지고 명령어는 실행되지 않습니다.다중 라인 명령어의 경우, 인라인 형식 대신 ```!로 열린 펜스 코드 블록을 사용합니다:
## Environment```!node --versionnpm --versiongit status --short```
사용자, 프로젝트, 플러그인 또는 추가 디렉토리 소스의 skills 및 사용자 정의 명령어에 대해 이 동작을 비활성화하려면, 설정에서 "disableSkillShellExecution": true를 설정합니다. 각 명령어는 실행되는 대신 [shell command execution disabled by policy]로 대체됩니다. 번들 및 관리 skills는 영향을 받지 않습니다. 이 설정은 사용자가 재정의할 수 없는 관리 설정에서 가장 유용합니다.
context: fork를 사용하면 skill에 작업을 작성하고 실행할 에이전트 유형을 선택합니다. 기본 제공 Explore 및 Plan 에이전트는 컨텍스트를 작게 유지하기 위해 CLAUDE.md 및 git status를 건너뜁니다. 따라서 agent: Explore를 사용하는 forked skill은 SKILL.md 콘텐츠와 에이전트 자체의 시스템 프롬프트만 봅니다. 역방향(skills를 참조 자료로 사용하는 사용자 정의 subagent 정의)은 Subagents를 참조하세요.
이 skill은 forked Explore 에이전트에서 연구를 실행합니다. skill 콘텐츠는 작업이 되고, 에이전트는 코드베이스 탐색에 최적화된 읽기 전용 도구를 제공합니다:
---name: deep-researchdescription: Research a topic thoroughlycontext: forkagent: Explore---Research $ARGUMENTS thoroughly:1. Find relevant files using Glob and Grep2. Read and analyze the code3. Summarize findings with specific file references
이 skill이 실행될 때:
새로운 격리된 컨텍스트가 생성됩니다.
subagent는 skill 콘텐츠를 프롬프트로 받습니다(“Research $ARGUMENTS thoroughly…”).
agent 필드는 실행 환경(모델, 도구 및 권한)을 결정합니다.
결과는 요약되어 주 대화로 반환됩니다.
agent 필드는 사용할 subagent 구성을 지정합니다. 옵션에는 기본 제공 에이전트(Explore, Plan, general-purpose) 또는 .claude/agents/의 모든 사용자 정의 subagent가 포함됩니다. 생략하면 general-purpose를 사용합니다.
기본적으로 Claude는 disable-model-invocation: true가 설정되지 않은 모든 skill을 호출할 수 있습니다. allowed-tools를 정의하는 Skills는 skill이 활성화되었을 때 사용자별 승인 없이 Claude에게 이러한 도구에 대한 액세스를 부여합니다. 권한 설정은 여전히 다른 모든 도구에 대한 기본 승인 동작을 관리합니다. /init, /review, /security-review를 포함한 몇 가지 기본 제공 명령어도 Skill 도구를 통해 사용 가능합니다. /compact와 같은 다른 기본 제공 명령어는 그렇지 않습니다.Claude가 호출할 수 있는 skills를 제어하는 세 가지 방법:/permissions에서 Skill 도구를 거부하여 모든 skills를 비활성화합니다:
# Allow only specific skillsSkill(commit)Skill(review-pr *)# Deny specific skillsSkill(deploy *)
권한 구문: 정확한 일치는 Skill(name), 모든 인수를 사용한 접두사 일치는 Skill(name *).개별 skills를 숨기기 - frontmatter에 disable-model-invocation: true를 추가합니다. 이는 Claude의 컨텍스트에서 skill을 완전히 제거합니다.
user-invocable 필드는 메뉴 가시성만 제어하고 Skill 도구 액세스는 제어하지 않습니다. 프로그래밍 방식 호출을 차단하려면 disable-model-invocation: true를 사용합니다.
skillOverrides 설정은 skill의 자체 frontmatter 대신 설정에서 skill 가시성을 제어합니다. 공유 프로젝트 리포지토리에 체크인되거나 MCP 서버에서 제공하는 것처럼 SKILL.md를 편집하고 싶지 않은 skills에 사용합니다. /skills 메뉴가 이를 작성합니다: skill을 강조하고 Space를 눌러 상태를 순환한 다음 Enter를 눌러 .claude/settings.local.json에 저장합니다.각 키는 skill 이름이고 각 값은 다음 네 가지 상태 중 하나입니다:
값
Claude에 나열됨
/ 메뉴에서
"on"
이름 및 설명
예
"name-only"
이름만
예
"user-invocable-only"
숨김
예
"off"
숨김
숨김
skillOverrides에 없는 skill은 "on"으로 처리됩니다. 아래 예제는 한 skill을 이름으로 축소하고 다른 skill을 완전히 끕니다:
Skills는 모든 언어의 스크립트를 번들하고 실행할 수 있으므로 Claude에게 단일 프롬프트로 가능한 것 이상의 기능을 제공합니다. 강력한 패턴 중 하나는 시각적 출력을 생성하는 것입니다: 브라우저에서 열리는 대화형 HTML 파일로 데이터 탐색, 디버깅 또는 보고서 생성에 사용됩니다.이 예제는 코드베이스 탐색기를 생성합니다: 디렉토리를 확장 및 축소할 수 있는 대화형 트리 보기로, 한눈에 파일 크기를 보고, 색상으로 파일 유형을 식별할 수 있습니다.Skill 디렉토리 생성:
~/.claude/skills/codebase-visualizer/SKILL.md에 저장합니다. 설명은 Claude에게 이 Skill을 언제 활성화할지 알려주고, 지침은 Claude에게 번들 스크립트를 실행하도록 알려줍니다. 스크립트 경로는 ${CLAUDE_SKILL_DIR}를 사용하므로 skill이 개인, 프로젝트 또는 플러그인 수준에서 설치되었는지 여부에 관계없이 올바르게 해석됩니다:
---name: codebase-visualizerdescription: Generate an interactive collapsible tree visualization of your codebase. Use when exploring a new repo, understanding project structure, or identifying large files.allowed-tools: Bash(python3 *)---# Codebase VisualizerGenerate an interactive HTML tree view that shows your project's file structure with collapsible directories.## UsageRun the visualization script from your project root:```bashpython3 ${CLAUDE_SKILL_DIR}/scripts/visualize.py .```This creates `codebase-map.html` in the current directory and opens it in your default browser.## What the visualization shows- **Collapsible directories**: Click folders to expand/collapse- **File sizes**: Displayed next to each file- **Colors**: Different colors for different file types- **Directory totals**: Shows aggregate size of each folder
~/.claude/skills/codebase-visualizer/scripts/visualize.py에 저장합니다. 이 스크립트는 디렉토리 트리를 스캔하고 다음을 포함하는 자체 포함 HTML 파일을 생성합니다:
파일 수, 디렉토리 수, 총 크기 및 파일 유형 수를 보여주는 요약 사이드바
파일 유형별로 코드베이스를 분석하는 막대 차트(크기 기준 상위 8개)
디렉토리를 확장 및 축소할 수 있는 축소 가능한 트리로, 색상으로 코딩된 파일 유형 표시기 포함
스크립트는 Python 3이 필요하지만 기본 제공 라이브러리만 사용하므로 설치할 패키지가 없습니다:
테스트하려면 모든 프로젝트에서 Claude Code를 열고 “Visualize this codebase”를 요청합니다. Claude는 스크립트를 실행하고, codebase-map.html을 생성하고, 브라우저에서 엽니다.이 패턴은 모든 시각적 출력에 작동합니다: 종속성 그래프, 테스트 커버리지 보고서, API 문서 또는 데이터베이스 스키마 시각화. 번들 스크립트가 무거운 작업을 수행하는 동안 Claude는 조율을 처리합니다.
Skill 설명은 Claude가 사용 가능한 항목을 알 수 있도록 컨텍스트에 로드됩니다. 모든 skill 이름은 항상 포함되지만, 많은 skills가 있으면 설명이 단축되어 문자 예산에 맞출 수 있으며, 이는 Claude가 요청과 일치하는 데 필요한 키워드를 제거할 수 있습니다. 예산은 모델의 컨텍스트 윈도우의 1%에서 확장됩니다. 예산이 초과되면, 가장 적게 호출하는 skills의 설명이 먼저 삭제되므로 실제로 사용하는 skills는 전체 텍스트를 유지합니다. /doctor를 실행하여 예산이 초과되었는지 확인하고 어떤 skills가 영향을 받는지 확인합니다.예산을 높이려면 skillListingBudgetFraction 설정(예: 0.02 = 2%)을 설정하거나 SLASH_COMMAND_TOOL_CHAR_BUDGET 환경 변수를 고정 문자 수로 설정합니다. 다른 skills를 위해 예산을 확보하려면 skillOverrides에서 낮은 우선순위 항목을 "name-only"로 설정하여 설명 없이 나열되도록 합니다. 또한 소스에서 description 및 when_to_use 텍스트를 자를 수 있습니다: 주요 사용 사례를 먼저 배치합니다. 각 항목의 결합된 텍스트는 예산과 관계없이 1,536자로 제한되기 때문입니다. 이 제한은 maxSkillDescriptionChars로 구성할 수 있습니다.