
Claude Code의 커스텀 슬래시 명령어를 만들어 보았다 ~Skills와의 차이점 정리~
요약
Claude Code에서 사용할 수 있는 커스텀 슬래시 명령어 생성 방법과 활용법을 정리합니다. 명령어의 스코프 설정, 구성 필드, 인자 전달 방식 및 기존 Skills 기능과의 차이점을 상세히 다룹니다.
핵심 포인트
- 커스텀 슬래시 명령어를 통해 정형화된 지시를 간편하게 호출 가능
- 프로젝트 단위 또는 사용자 전체 단위로 명령어 스코프 설정 가능
- description, argument-hint, allowed-tools 등 다양한 설정 필드 지원
- 명시적 호출 중심인 슬래시 명령어와 자율 호출 중심인 Skills의 차이점 이해
Claude Code에서 「커스텀 슬래시 명령어 (Custom Slash Command)」를 만드는 절차를 실제 구동 예시와 함께 정리합니다. 아울러 Skills (SKILL.md)와의 차이점 및 활용법도 소개합니다.
/명령어이름
이라고 입력하면, 미리 준비해 둔 Markdown 파일의 내용이 Claude에 대한 지시 사항으로 전달되는 기능입니다. 정형화된 지시를 매번 다시 쓸 필요 없이 호출할 수 있습니다.
| 스코프 | 경로 | 용도 |
|---|---|---|
| 프로젝트용 | <프로젝트>/.claude/commands/명령어이름.md | 해당 리포지토리에서만 사용 |
| 사용자 전체용 | ~/.claude/commands/명령어이름.md | 모든 프로젝트 공통으로 사용 |
서브 디렉터리를 만들면 /카테고리:명령어이름
과 같이 네임스페이스화할 수 있습니다 (예: .claude/commands/docker/ps.md
→ /docker:ps).
.claude/commands/greet.md를 새로 생성하고, 아래 내용을 작성합니다.
---
description: 지정된 이름으로 인사하기 (슬래시 명령어 동작 확인용 샘플)
argument-hint: [name]
...
저장하는 것만으로 완료됩니다. Claude Code 자체를 재시작할 필요는 없으며, 다음 세션을 시작하거나 / 메뉴를 여는 시점에 자동으로 인식됩니다.
/greet 太郎
라고 입력하면, $ARGUMENTS 부분이 「太郎」로 치환된 지시문이 Claude에 전달되어, 다음과 같이 인사 메시지가 돌아옵니다.
太郎님, 안녕하세요! 잘 지내시나요? 최근 어떻게 지내셨나요?
명령 실행 결과를 포함하는 예시로, Docker 컨테이너의 가동 상황을 확인하는 명령어를 만듭니다.
.claude/commands/dockps.md
---
description: 현재 Docker 컨테이너 가동 상황을 확인한다
allowed-tools: Bash(docker compose ps:*)
...
!``command`` 라고 쓴 부분은 명령어를 실행하고 그 출력 결과를 본문에 포함하는 표기법입니다. allowed-tools에서 사용해도 좋은 Bash 명령어의 범위를 사전에 지정해 둠으로써, 실행할 때마다 허가 프롬프트가 뜨는 것을 방지할 수 있습니다.
| 필드 | 내용 |
|---|---|
description | 명령어 설명. /help 목록이나 Claude의 자동 판단 재료로 사용됨 |
argument-hint | 사용자에 대한 인자 힌트 표시 (예: [name]) |
allowed-tools | 이 명령어를 실행할 때 무허가로 사용할 수 있는 툴 |
model | 이 명령어 전용으로 모델을 지정 |
disable-model-invocation | true로 설정하면 Claude가 자율적으로 호출하는 것을 금지하고, 사용자가 수동으로 /를 입력했을 때만 동작 |
$ARGUMENTS … 인자 전체를 전달 -
$1, $2 … 위치 인자 (bash의 $1과 동일한 개념) -
!``bash 명령어`` … 명령어를 실행하고 그 출력 결과를 포함 -
@파일경로 … 지정한 파일의 내용을 참조·포함
| 관점 | 슬래시 명령어 | Skills |
|---|---|---|
| 파일 형식 | .claude/commands/name.md 단일 Markdown | .claude/skills/name/SKILL.md를 포함하는 디렉터리 (보조 스크립트나 참조 파일을 동봉할 수 있음) |
| 호출 방법 | 사용자가 명시적으로 /name을 입력했을 때만 | 사용자의 /name 호출에 더해, Claude가 대화 문맥에서 description을 보고 자율적으로 판단하여 호출 |
| 특기 | 정형화된 짧은 지시. 확실하게 동일한 동작을 시키고 싶은 처리 | 복잡한 절차, 여러 파일 참조, 조건 분기가 필요한 판단 처리가 필요한 처리 |
| 실행 확실성 | 높음 (사람이 명시적으로 기동하므로 오작동하지 않음) | description 작성 방식에 따라 발화 정밀도가 달라짐 |
구현상으로는 거의 동일한 기구이며, .claude/commands/*.md에 둔 파일은 Skill로서도 인식됩니다 (이번에 작성한 greet / dockps...
Skill 목록에도 표시되었습니다). 주요 차이점은 "사용자가 명시적으로 호출하는가"와 "Claude가 문맥으로부터 자동으로 판단하여 호출하는가"라는 트리거(Trigger) 조건의 차이입니다.
슬래시 명령어 (Slash Commands)
- 장점: 심플하고 가시성이 좋음, 오작동하지 않음, 즉시 제작 가능
- 단점: 자동 트리거가 되지 않음 (매번
/로 호출해야 함), 복잡한 다단계 로직에는 부적합
Skills
-
장점: 대화 흐름에 따라 자동으로 호출됨, 보조 파일(스크립트·참조 자료)을 동봉할 수 있음, 복잡한 판단 로직을 작성할 수 있음
-
단점:
description의 정밀도가 호출의 품질을 좌우함 (모호하면 잘못 호출되거나, 반대로 호출되어야 할 때 호출되지 않을 수 있음) -
매번 직접 명시적으로 입력하는 짧은 정형 처리 → 슬래시 명령어 (예:
docker compose ps확인,git status확인 등) -
문맥에 따라 Claude가 자동 판단하게 하고 싶거나 / 여러 파일이나 절차서를 동반하는 복잡한 처리 → Skills
먼저 슬래시 명령어로 작게 시도해 보고, 내용이 복잡해지거나 자동화하고 싶어지면 Skills로 승격시키는 흐름이 무리가 없을 것이라고 생각합니다.
.claude/commands/하위에 Markdown 파일을 저장함- Claude Code 자체를 재시작할 필요 없음
/만 입력하면 명령어 목록이 표시되므로, 거기서 존재 여부를 확인할 수 있음/명령어이름 인자형태로 실행함
필요 없어진 경우에는 파일을 삭제하기만 하면 명령어/Skill 목록에서도 사라집니다.
커스텀 슬래시 명령어는 Markdown 파일 하나로 정형 처리를 /name으로 호출할 수 있는 간편한 메커니즘입니다. 자동 판단을 맡기고 싶은 복잡한 처리는 Skills에 맡기면서, 확실하게 직접 호출하고 싶은 처리는 슬래시 명령어로 분리하는 방식의 활용을 추천합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기