description이 실력이고, 배포가 신뢰 경계다
로딩 시점, 이름 규칙, 호출 주체 제어, 플러그인 검증
스킬은 만들기 쉬워서 금세 스무 개가 되고, 그때부터 두 가지가 어긋납니다. 하나는 자동 선택입니다. 세션 시작 시 컨텍스트에 들어가는 것은 description과 when_to_use뿐이고, 본문은 호출 시점에야 로딩되어 세션 내내 남습니다. 다른 하나는 정체성입니다. 호출 이름은 frontmatter의 name이 아니라 스킬이 위치한 디렉터리 이름에서 오고, 같은 이름의 스킬은 엔터프라이즈 > 개인 > 프로젝트 순으로 덮어써서 팀원의 개인 스킬이 프로젝트 표준 스킬을 이깁니다.
| 제어 수단 | 막는 대상 | 흔한 오해 |
|---|---|---|
| disable-model-invocation: true | 모델 자동 호출 | 서브에이전트 preload도 함께 막힘 |
| user-invocable: false | 슬래시 메뉴 노출 | Skill tool 호출은 막지 못함 |
| skillOverrides | 가시성 on/name-only/off | 플러그인 스킬에는 적용되지 않음 |
| allowed-tools | 아무것도 막지 않음 | 제한이 아니라 사전 허용 목록 |
| disallowed-tools | 스킬 활성 중 도구 제거 | 다음 메시지를 보내면 해제됨 |
- 디렉터리부터 정하기호출 이름은 디렉터리 이름에서 오므로 이름 설계를 디렉터리에서 시작합니다.
- 설명 앞부분 설계description과 when_to_use 앞쪽에 핵심 use case를 배치해 잘림에 대비합니다.
- 호출 주체 고정되돌리기 어려운 절차는 disable-model-invocation: true로 모델 호출을 막습니다.
- 배포 전 검증CI에서 claude plugin validate로 frontmatter와 hooks.json을 검사합니다.