$0/$1/$2 로 여러 인수 다루기
위치 인수($0, $1, $2 …)는 커스텀 커맨드에 넘긴 인수를 스페이스 기준으로 나눠 순서대로 참조하는 구조입니다. @ 파일 참조와 조합하는 법, 인수가 부족할 때의 동작, 스페이스가 든 값을 따옴표로 넘기는 법을 다룹니다.
위치 인수($0, $1, $2 …)는 커스텀 커맨드에 넘긴 인수를 스페이스 기준으로 나눠 순서대로 참조하는 구조입니다. 인수 전체를 한 덩어리로 받는 $ARGUMENTS 와 달리 "무엇을" "어디로"처럼 역할이 다른 값을 따로따로 받을 수 있어, 파라미터가 여러 개인 커맨드를 만들 때 쓰입니다.
인수 전체를 한 번에 받는 방법은 $ARGUMENTS 로 인수 받기에서 다뤘습니다. 이 글에서는 그 인수를 하나씩 나눠 받는 방법을 봅니다.
핵심 요약
$0,$1,$2로 첫 번째·두 번째·세 번째 인수를 개별로 참조합니다.- 인수는 스페이스 기준으로 자동 분할됩니다.
- 인수가 부족하면 해당
$N은 치환되지 않고 플레이스홀더 문자열이 그대로 남습니다. - 스페이스가 든 값은 더블 쿼트로 감싸면 하나의 인수가 됩니다.
위치 인수는 어떻게 전개되나
$0 이 첫 번째, $1 이 두 번째, $2 가 세 번째 인수입니다.
---
description: 파일을 리네임
---
$0 를 $1 로 리네임해 주세요.이 커맨드(.claude/commands/rename.md)를 /rename old-name.ts new-name.ts 로 실행하면 다음처럼 전개됩니다.
| 플레이스홀더 | 값 |
|---|---|
$0 | old-name.ts |
$1 | new-name.ts |
결과적으로 "old-name.ts 를 new-name.ts 로 리네임해 주세요."라는 프롬프트가 Claude에게 전달됩니다.
언제 $ARGUMENTS 대신 위치 인수를 쓰나
위치 인수가 알맞은 것은 인수의 역할이 명확히 나뉘는 경우입니다.
---
description: 파일을 지정 디렉터리로 이동
---
$0 를 $1 디렉터리로 이동해 주세요."무엇을" "어디로"라는 두 정보를 분리해 프롬프트의 서로 다른 자리에 꽂을 수 있는 것이 위치 인수의 특징입니다. 반면 에러 메시지처럼 텍스트 덩어리 하나를 받을 때는 $ARGUMENTS 가 더 간단합니다.
| 상황 | 알맞은 방식 |
|---|---|
| 에러 메시지, 검색 키워드 등 덩어리 하나 | $ARGUMENTS |
| 원본과 대상, 브랜치와 카테고리처럼 역할이 나뉘는 값 | $0, $1, $2 |
실전 예 — @ 파일 참조와 조합하기
@ 파일 참조와 조합하면 인수로 받은 경로의 파일 내용을 컨텍스트에 읽어 들일 수 있습니다.
---
description: 두 파일을 비교
argument-hint: [파일1] [파일2]
---
@$0 와 @$1 를 비교하고, 차분을 설명해 주세요.
특히 중요한 차이가 있으면 강조해 주세요./compare src/old.ts src/new.ts 로 실행하면 @src/old.ts 와 @src/new.ts 로 전개되어 두 파일 내용이 컨텍스트에 들어가고, Claude에게서 상세한 차분 설명을 얻을 수 있습니다. argument-hint 를 함께 설정해 둔 것은 후보 목록에서 인수 두 개가 필요하다는 것을 보여 주기 위해서입니다. 이 항목은 커스텀 커맨드 프론트매터 설정에서 다뤘습니다.
인수가 부족하면 어떻게 되나
지정한 위치에 인수가 없으면 그 $N 은 빈 문자열이 되지 않고 플레이스홀더 문자열이 그대로 남습니다.
$0 님, $1 건에 대해 여쭙겠습니다.이 커맨드(.claude/commands/greet.md)를 /greet 김철수 처럼 인수 하나만으로 실행하면 결과는 이렇게 됩니다.
김철수 님, $1 건에 대해 여쭙겠습니다.$1 이라는 문자열이 그대로 남아 Claude에게 의미를 알 수 없는 토큰이 넘어갑니다. 대비책은 두 가지입니다.
argument-hint로 필요한 인수를 후보 목록에 명시해 빠뜨리지 않게 합니다.- 프롬프트 안에 "인수가 비어 있으면 사용자에게 물어볼 것"처럼 Claude에게 판단을 맡기는 지시를 적어 둡니다.
스페이스가 든 값은 어떻게 넘기나
위치 인수는 셸 스타일의 쿼트 해석을 지원합니다. 스페이스가 든 값을 더블 쿼트로 감싸면 하나의 인수로 넘어갑니다.
/my-skill "hello world" second| 플레이스홀더 | 값 |
|---|---|
$0 | hello world (쿼트는 벗겨짐) |
$1 | second |
쿼트가 그대로 인수의 일부로 남는 것은 $ARGUMENTS 뿐입니다. 같은 입력이라도 $ARGUMENTS 에는 "hello world" second 가 통째로 들어간다는 점을 기억해 두세요.
응용 예 — PR 리뷰 준비 커맨드
서로 다른 파라미터를 여러 개 받는 커맨드에서 위치 인수가 빛을 발합니다.
---
description: PR 리뷰용 정보를 준비
argument-hint: [브랜치명] [변경 카테고리]
---
PR 작성 전 정보를 준비해 주세요.
- 브랜치: $0
- 카테고리: $1 (feat/fix/refactor/docs)
아래를 실행해 주세요:
1. main과의 차분 파일 일람을 표시
2. 차분 내용을 분석
3. 간결한 PR 설명문을 생성/prepare-pr feature/login feat 처럼 실행하면 브랜치명과 카테고리가 각자 자리에 들어갑니다. 이 커맨드에 allowed-tools: Bash(git:*) 를 더하면 git 조작의 확인 프롬프트까지 생략할 수 있습니다.
정리
- 위치 인수
$0,$1,$2는 인수를 스페이스 기준으로 나눠 순서대로 받으며, 역할이 나뉘는 파라미터에 알맞습니다. @$0처럼 파일 참조와 조합하면 인수로 받은 파일을 컨텍스트에 읽어 들일 수 있습니다.- 인수가 부족하면
$N이 그대로 남으니argument-hint와 프롬프트 내 보완 지시로 대비합니다. - 스페이스가 든 값은 더블 쿼트로 감싸 넘기고, 쿼트가 그대로 남는 것은
$ARGUMENTS뿐입니다. - 커스텀 커맨드 코스는 여기까지입니다. 참조 파일과 스크립트까지 묶어 Claude가 알아서 꺼내 쓰게 하려면 SKILL.md 작성법으로, 커맨드와 스킬을 언제 나눠 쓸지는 슬래시 명령어와 Skills로 이어집니다.
자주 묻는 질문
이 주제를 실습으로 다루는 교육
- AI 에이전트 개발 교육 — 수준별 로드맵반나절 만들기 워크숍부터 설계·평가·보안 1일 심화, 멀티에이전트·MCP·업종별 실전까지과정 보기
- P-9 AI 에이전트 개발 지식지도Claude Code 해부 → 도구 정의·Agent SDK → 관측·평가 → 인젝션 공격과 Hook 방어까지 1일과정 보기
우리 팀에 맞는 과정이 무엇인지 모르겠다면 커리큘럼 찾기로 4문항만 답하거나, 무료 상담 신청을 남겨 주세요.