11. 커스텀 슬래시 명령과 출력 스타일

🎯 이 장의 목표
  • 커스텀 슬래시 명령(프롬프트 템플릿)을 만들고 쓸 수 있다
  • 슬래시 명령이 Skills와 어떻게 통합되었는지 안다
  • 인자 치환($ARGUMENTS 등)으로 동적인 명령을 만든다
  • 출력 스타일로 Claude의 응답 형식을 조절한다

커스텀 슬래시 명령이란

3장에서 /init·/review 같은 내장 슬래시 명령을 봤습니다. 여기에 더해, 당신만의 명령을 만들 수 있습니다. 가장 단순하게는, 자주 입력하는 긴 프롬프트를 짧은 명령으로 저장하는 프롬프트 템플릿입니다.

비유하자면, 매번 길게 설명하던 주문을 메뉴판의 "1번 세트"로 등록하는 것입니다. "1번"만 외치면 정해진 구성이 나오죠.

flowchart LR
    A["매번 긴 프롬프트<br/>'main과 HEAD 차이를 보안 관점에서...'"]:::user --> B[명령 파일로 저장<br/>.claude/commands/security.md]:::tool
    B --> C["/security 한 번으로 호출"]:::result

    classDef user fill:#FFE082,stroke:#F9A825,color:#000
    classDef tool fill:#90CAF9,stroke:#1E88E5,color:#000
    classDef result fill:#A5D6A7,stroke:#43A047,color:#000

만드는 법

커스텀 명령은 마크다운 파일입니다. 위치에 따라 범위가 정해집니다.

위치범위
.claude/commands/<name>.md프로젝트(팀 공유)
~/.claude/commands/<name>.md유저(개인, 모든 프로젝트)

마크다운 본문이 곧 프롬프트 템플릿이고, 선택적 YAML frontmatter로 설명·허용 도구·기본 모델을 지정합니다.

MARKDOWN
---
description: 스테이징 브랜치 보안 리뷰 실행
allowed-tools: Read, Grep, Glob, Bash, WebFetch
model: sonnet
---
`main`과 `HEAD` 사이의 diff를 보안 이슈 관점에서 감사해줘. 특히:
- 인증/인가 변경
- 입력 처리 경계
- 로그에 노출된 비밀
- 새로 추가된 의존성

발견 사항을 punch list로 보고해줘.

이렇게 저장하면 세션 시작 시 로드되어 /<name>(예: /security)으로 호출됩니다.

📌 핵심
allowed-tools로 명령이 쓸 도구를 한정할 수 있고, model로 이 명령만 다른 모델로 돌릴 수 있습니다. 모델명은 자주 바뀌니 별칭(sonnet·opus·haiku)을 쓰거나 공식 문서를 확인하세요.

슬래시 명령과 Skills의 통합

여기서 한 가지 중요한 변화를 짚어야 합니다. 2026년 기준, 슬래시 명령과 Skills는 통합되었습니다. 예전의 "커스텀 명령"은 Skills 시스템으로 합쳐졌습니다.

  • .claude/commands/의 파일은 여전히 동작하지만, 권장 방식은 .claude/skills/입니다.
  • 모든 스킬은 자동으로 /스킬이름 형태의 슬래시 명령 인터페이스를 갖습니다.
  • frontmatter로 Claude의 자동 호출 여부·메뉴 노출 여부·서브에이전트 실행 여부를 제어합니다.
flowchart TB
    subgraph Old["예전"]
        Cmd[커스텀 명령<br/>.claude/commands/]:::tool
    end
    subgraph New["2026 통합 후"]
        Skill[Skill<br/>.claude/skills/]:::tool
        Skill --> Slash["/스킬이름 으로 호출"]:::result
        Skill --> Auto["Claude 자동 호출"]:::agent
    end
    Cmd -.여전히 동작.-> New

    classDef tool fill:#90CAF9,stroke:#1E88E5,color:#000
    classDef result fill:#A5D6A7,stroke:#43A047,color:#000
    classDef agent fill:#80DEEA,stroke:#00ACC1,color:#000
💡 팁
언제 무엇을 쓸까: 단순히 "이 프롬프트 템플릿을 끼워 넣는" 수준이면 슬래시 명령으로 충분합니다. 실제 도메인 로직·구조화된 입력 파라미터·동봉 헬퍼 파일이 있으면 Skill로 만드는 게 맞습니다. 컨텍스트 격리가 핵심이면 서브에이전트입니다. 이 구분은 12장에서 깊이 다룹니다.

인자 치환: 동적인 명령

명령에 인자를 넘겨 동적으로 만들 수 있습니다.

토큰의미
$ARGUMENTS전달된 모든 인자
$0, $1, $2위치 인자
${CLAUDE_SKILL_DIR}스킬 디렉터리 경로

예를 들어 /fix-issue 123처럼 호출하면 명령 본문 안의 $1123으로 치환됩니다.

💡 팁
슬래시 명령은 직접 입력(/명령)으로도, 설명이 작업과 맞으면 Claude가 자동으로 호출할 수도 있습니다. 또한 명령 안에서 "서브에이전트를 띄워라", "이 스킬을 써라"처럼 다른 동작을 오케스트레이션해(research → 코드 스캔 → 문서 작성) 파이프라인을 짤 수도 있습니다.

출력 스타일: 응답 형식 바꾸기

출력 스타일(output styles) 은 Claude가 응답을 어떻게 포맷하는지를 조절합니다 — 장황함(verbosity), 코드 주석 밀도, 문체 등. /config 설정 UI나 settings.jsonoutputStyle로 선택하며, 몇 가지 내장 스타일과 사용자 정의 스타일이 있습니다.

대표 활용 — Explanatory(설명형) 스타일:

CODE
/output-style explanatory

또는 settings.json"outputStyle": "Explanatory".

낯선 코드베이스를 익히거나, 자주 안 쓰는 언어를 리뷰하거나, 새 프로젝트에 온보딩할 때 유용합니다. Claude가 작업하면서 프레임워크·코드 패턴을 설명하고 "★ Insight" 블록으로 설계 의도와 이유를 덧붙여 줍니다.

⚠️ 트레이드오프 — 컨텍스트: 설명형은 응답이 길어져 컨텍스트가 더 빨리 차고 컴팩션이 일찍 옵니다(→ 4장). 속도를 원할 땐 기본 스타일로 돌아가세요.

💡 팁
커스텀 스타일은 ~/.claude/output-styles/에 마크다운 파일로 만들 수 있습니다.

이 장에서 배운 것

  • 커스텀 슬래시 명령은 자주 쓰는 프롬프트를 /<name>으로 저장하는 템플릿이다. .claude/commands/(프로젝트)·~/.claude/commands/(유저)에 둔다.
  • 2026년 기준 슬래시 명령은 Skills로 통합됐다. 기존 commands/도 동작하지만 권장은 .claude/skills/이고, 모든 스킬은 /이름 인터페이스를 갖는다.
  • $ARGUMENTS·$1 등 인자 치환으로 동적 명령을 만들고, 명령으로 서브에이전트·스킬을 오케스트레이션할 수 있다.
  • 출력 스타일로 응답 형식을 조절한다. Explanatory는 학습에 좋지만 컨텍스트를 더 쓴다.

✍️ 확인 문제

  1. 단순 프롬프트 템플릿과 Skill 중 무엇을 쓸지 어떻게 판단하나요?
  2. 커스텀 명령에서 $1이나 $ARGUMENTS는 어떤 역할을 하나요?
  3. Explanatory 출력 스타일의 장점과 트레이드오프는 각각 무엇인가요?
🎉 3부 완료! 다음 장부터는 4부 확장입니다.
다음 장: 12. Skills(에이전트 스킬)