파라미터와 변수
$ARGUMENTS와 셸 확장으로 스킬을 동적으로 만들고, 실행 제어 옵션을 설정해요.
프리미엄 강좌 콘텐츠
이 레슨은 프리미엄 강좌의 일부예요. Pro로 업그레이드하면 모든 프리미엄 강좌와 콘텐츠를 이용할 수 있어요.
- 모든 프리미엄 강좌 이용
- 1000개 이상의 AI 스킬 템플릿 포함
- 매주 새로운 콘텐츠 추가
정적에서 동적으로
🔄 Quick Recall: 이전 레슨에서 고정된 지시문으로 첫 스킬을 만들었어요. 하지만 매번 같은 방식으로만 동작하면 활용도가 제한적이에요.
이 레슨에서 스킬에 “입력"을 받아 동적으로 동작하는 능력을 추가해요.
이 레슨을 마치면 파라미터, 셸 확장, 실행 제어를 활용하는 스킬을 만들 수 있어요.
배울 내용
- $ARGUMENTS로 사용자 입력 받기
- !command 셸 확장으로 실시간 데이터 주입
- 실행 제어: disable-model-invocation, user-invocable
- assets/ 디렉토리에 템플릿 파일 활용
- 기법들을 조합하는 실전 예시
$ARGUMENTS: 사용자 입력 받기
사용자가 스킬을 실행할 때 전달하는 텍스트를 $ARGUMENTS로 받을 수 있어요:
---
name: code-reviewer
description: "코드를 리뷰하고 개선 사항을 제안합니다."
---
## 지시문
$ARGUMENTS에서 지정된 파일이나 코드를 리뷰하세요.
사용자가 /code-reviewer src/main.py를 실행하면 $ARGUMENTS가 src/main.py로 대체돼요.
!command: 셸 확장
!command 구문은 AI에게 전달되기 전에 로컬에서 실행돼요:
## 현재 프로젝트 컨텍스트
현재 브랜치: !git branch --show-current
최근 커밋: !git log --oneline -5
오늘 날짜: !date +%Y-%m-%d
이렇게 하면 AI가 “현재 브랜치가 뭐야?“라고 묻는 대신, 이미 실제 데이터를 가진 채로 작업을 시작해요.
유용한 셸 확장 예시:
| 구문 | 결과 |
|---|---|
!git branch --show-current | 현재 브랜치 이름 |
!git log --oneline -10 | 최근 10개 커밋 |
!date +%Y-%m-%d | 오늘 날짜 |
!cat README.md | 파일 내용 |
!ls src/ | 디렉토리 목록 |
보안 주의: 셸 확장에 사용자 입력($ARGUMENTS)을 직접 넣으면 명령 주입 위험이 있어요. !cat $ARGUMENTS는 위험할 수 있어요 — 사용자가 ; rm -rf /를 입력할 수 있으니까요.
실행 제어
disable-model-invocation
---
name: deploy-production
description: "프로덕션 환경에 배포합니다."
disable-model-invocation: true
---
true면 에이전트가 자동으로 이 스킬을 실행하지 못해요. 사용자가 직접 /deploy-production을 입력해야만 실행돼요. 배포, 삭제 등 부작용이 있는 스킬에 필수적이에요.
user-invocable
---
name: internal-helper
description: "다른 스킬이 내부적으로 참조하는 헬퍼입니다."
user-invocable: false
---
false면 슬래시 명령으로 직접 실행할 수 없어요. 다른 스킬이 참조하는 내부 스킬에 사용해요.
템플릿 파일 활용
assets/ 디렉토리에 템플릿을 두고 셸 확장으로 읽어올 수 있어요:
meeting-notes-formatter/
├── SKILL.md
└── assets/
└── template.md
SKILL.md에서:
다음 템플릿 형식을 따르세요:
!cat assets/template.md
✅ Quick Check: disable-model-invocation: true를 사용해야 하는 스킬은 어떤 종류인가요? 왜 자동 실행이 위험할 수 있나요?
실전 예시: PR 리뷰어
모든 기법을 조합한 예시:
---
name: pr-reviewer
description: "현재 브랜치의 변경 사항을 리뷰하고 피드백을 제공합니다."
disable-model-invocation: true
---
## 컨텍스트
현재 브랜치: !git branch --show-current
대상 브랜치: main
변경 파일: !git diff --name-only main...HEAD
최근 커밋:
!git log --oneline main...HEAD
## 지시문
위 변경 사항을 리뷰하세요:
1. 코드 품질 이슈
2. 잠재적 버그
3. 성능 문제
4. 보안 취약점
$ARGUMENTS가 제공되면 해당 영역에 집중해서 리뷰하세요.
사용자가 /pr-reviewer 보안에 집중을 실행하면:
- 셸 확장이 먼저 실행돼서 실제 git 데이터를 주입
- $ARGUMENTS가 “보안에 집중"으로 대체
- 에이전트가 보안 관점에서 PR을 리뷰
핵심 정리
- $ARGUMENTS로 사용자 입력을 받아 스킬을 동적으로 만들기
- !command 셸 확장으로 실시간 데이터(git, 파일, 날짜)를 AI에 주입
- disable-model-invocation: true로 위험한 스킬의 자동 실행 방지
- user-invocable: false로 내부 전용 스킬 설정
- 셸 확장에 사용자 입력을 직접 넣으면 보안 위험 — 주의 필요
Up Next: 다음 레슨에서 외부 API를 안전하게 연결하는 방법을 배워요.
이해도 체크
먼저 위의 퀴즈를 완료하세요
레슨 완료!