skill-stocktake은(는) 무엇을 하나요?
슬래시 명령어 (/skill-stocktake) — 품질 체크리스트와 AI 종합 판단을 사용하여 모든 Claude 스킬과 명령어를 감사합니다. Quick Scan(최근 변경된 스킬만)과 Full Stocktake(전체 검토) 두 가지 모드를 지원합니다.
범위
이 명령어는 호출된 디렉터리를 기준으로 다음 경로를 대상으로 합니다:
| 경로 | 설명 |
|---|---|
~/.claude/skills/ | 전역 스킬 (모든 프로젝트) |
{cwd}/.claude/skills/ | 프로젝트 레벨 스킬 (디렉터리가 존재하는 경우) |
1단계 시작 시, 명령어는 발견되어 스캔된 경로를 명시적으로 나열합니다.
특정 프로젝트 대상
프로젝트 레벨 스킬을 포함하려면 해당 프로젝트의 루트 디렉터리에서 실행하세요:
cd ~/path/to/my-project
/skill-stocktake
프로젝트에 .claude/skills/ 디렉터리가 없으면 전역 스킬과 명령어만 평가됩니다.
모드
| 모드 | 트리거 | 소요 시간 |
|---|---|---|
| Quick Scan | results.json이 존재함 (기본값) | 5–10분 |
| Full Stocktake | results.json이 없거나, /skill-stocktake full 입력 시 | 20–30분 |
결과 캐시: ~/.claude/skills/skill-stocktake/results.json
Quick Scan 흐름
마지막 실행 이후 변경된 스킬만 재평가합니다 (5–10분).
~/.claude/skills/skill-stocktake/results.json읽기- 실행:
bash ~/.claude/skills/skill-stocktake/scripts/quick-diff.sh \~/.claude/skills/skill-stocktake/results.json(프로젝트 디렉터리는$PWD/.claude/skills에서 자동 감지; 필요한 경우에만 명시적으로 전달) - 출력이
[]이면: "마지막 실행 이후 변경 사항 없음."을 보고하고 중단 - 변경된 파일만 동일한 2단계 기준으로 재평가
- 변경되지 않은 스킬은 이전 결과에서 그대로 유지
- 변경 사항(diff)만 출력
- 실행:
bash ~/.claude/skills/skill-stocktake/scripts/save-results.sh \~/.claude/skills/skill-stocktake/results.json <<< "$EVAL_RESULTS"
Full Stocktake 흐름
1단계 — 인벤토리
실행: bash ~/.claude/skills/skill-stocktake/scripts/scan.sh
스크립트는 스킬 파일을 열거하고, 프론트매터를 추출하며, UTC 수정 시간을 수집합니다.
프로젝트 디렉터리는 $PWD/.claude/skills에서 자동 감지; 필요한 경우에만 명시적으로 전달.
스크립트 출력에서 스캔 요약과 인벤토리 테이블을 제시합니다:
스캔 중:
✓ ~/.claude/skills/ (17개 파일)
✗ {cwd}/.claude/skills/ (찾을 수 없음 — 전역 스킬만)
| 스킬 | 7일 사용 | 30일 사용 | 설명 |
|---|
2단계 — 품질 평가
전체 인벤토리와 체크리스트를 사용하여 Agent 도구 서브에이전트(범용 에이전트)를 시작합니다:
Agent(
subagent_type="general-purpose",
prompt="
다음 스킬 인벤토리를 체크리스트에 대해 평가하세요.
[인벤토리]
[체크리스트]
각 스킬에 대해 JSON을 반환하세요:
{ "verdict": "Keep"|"Improve"|"Update"|"Retire"|"Merge into [X]", "reason": "..." }
"
)
서브에이전트는 각 스킬을 읽고 체크리스트를 적용한 후 스킬별 JSON을 반환합니다:
{ "verdict": "Keep"|"Improve"|"Update"|"Retire"|"Merge into [X]", "reason": "..." }
청크 가이드: 서브에이전트 호출당 약 20개의 스킬을 처리하여 컨텍스트를 관리 가능하게 유지하세요. 각 청크 후 중간 결과를 results.json(status: "in_progress")에 저장하세요.
모든 스킬이 평가된 후: status: "completed"로 설정하고 3단계로 진행합니다.
재개 감지: 시작 시 status: "in_progress"가 발견되면, 첫 번째 미평가 스킬부터 재개합니다.
각 스킬은 다음 체크리스트에 대해 평가됩니다:
- [ ] 다른 스킬과의 내용 중복 확인
- [ ] MEMORY.md / CLAUDE.md와의 중복 확인
- [ ] 기술 참조의 최신성 확인 (도구 이름/CLI 플래그/API가 있는 경우 WebSearch 사용)
- [ ] 사용 빈도 고려
평결 기준:
| 평결 | 의미 |
|---|---|
| Keep | 유용하고 최신 상태 |
| Improve | 유지할 가치가 있지만 특정 개선 필요 |
| Update | 참조된 기술이 오래됨 (WebSearch로 확인) |
| Retire | 품질 낮음, 오래됨, 또는 비용 대비 효과가 낮음 |
| Merge into [X] | 다른 스킬과 상당한 중복; 병합 대상을 지정 |
평가는 AI 종합 판단입니다 — 수치적 루브릭이 아닙니다. 안내 차원:
- 실행 가능성: 즉시 실행할 수 있는 코드 예제, 명령어 또는 단계
- 범위 적합성: 이름, 트리거 및 내용이 일치하고 너무 광범위하거나 좁지 않음
- 고유성: MEMORY.md / CLAUDE.md / 다른 스킬로 대체할 수 없는 가치
- 최신성: 기술 참조가 현재 환경에서 작동함
이유 품질 요구사항 — reason 필드는 자체적으로 완결되고 결정을 내릴 수 있어야 합니다:
- "변경 없음"만 작성하지 말고 항상 핵심 증거를 다시 설명
- Retire의 경우: (1) 발견된 특정 결함, (2) 동일한 요구를 대체하는 것이 무엇인지 명시
- 나쁨:
"대체됨" - 좋음:
"disable-model-invocation: true가 이미 설정됨; 신뢰도 점수까지 포함하는 모든 패턴을 다루는 continuous-learning-v2로 대체됨. 고유한 내용이 남아 있지 않음."
- 나쁨:
- Merge의 경우: 대상을 명명하고 통합할 내용을 설명
- 나쁨:
"X와 중복됨" - 좋음:
"42줄의 얇은 내용; chatlog-to-article의 4단계가 이미 동일한 워크플로를 다룸. '기사 각도' 팁을 해당 스킬에 메모로 통합."
- 나쁨:
- Improve의 경우: 필요한 특정 변경 사항 설명 (어떤 섹션, 어떤 조치, 목표 크기 등)
- 나쁨:
"너무 김" - 좋음:
"276줄; '프레임워크 비교' 섹션(L80–140)이 ai-era-architecture-principles을 복제함; 이를 삭제하여 약 150줄로 줄임."
- 나쁨:
- Keep의 경우 (Quick Scan에서 mtime 변경만 있는 경우): 원래 평결 근거를 다시 설명, "변경 없음"이라고 작성하지 말 것
- 나쁨:
"변경 없음" - 좋음:
"mtime이 업데이트되었지만 내용 변경 없음. rules/python/에 의해 명시적으로 임포트된 고유한 Python 참조; 중복 없음."
- 나쁨:
3단계 — 요약 테이블
| 스킬 | 7일 사용 | 평결 | 이유 |
|---|
4단계 — 통합
- Retire / Merge: 파일별로 상세한 근거를 제시한 후 사용자 확인 필요:
- 발견된 특정 문제 (중복, 노후화, 깨진 참조 등)
- 동일한 기능을 대체하는 대안 (Retire의 경우: 어떤 기존 스킬/규칙; Merge의 경우: 대상 파일과 통합할 내용)
- 제거 영향 (종속된 스킬, MEMORY.md 참조 또는 영향받는 워크플로)
- Improve: 근거와 함께 특정 개선 제안 제시:
- 무엇을 왜 변경할지 (예: "X/Y 섹션이 python-patterns를 복제하므로 430→200줄로 트리밍")
- 사용자가 실행 여부 결정
- Update: 확인된 출처와 함께 업데이트된 내용 제시
- MEMORY.md 줄 수 확인; 100줄을 초과하면 압축 제안
결과 파일 스키마
~/.claude/skills/skill-stocktake/results.json:
evaluated_at: 평가 완료의 실제 UTC 시간으로 설정되어야 합니다.
Bash를 통해 획득: date -u +%Y-%m-%dT%H:%M:%SZ. T00:00:00Z와 같은 날짜만 있는 근사값은 절대 사용하지 마세요.
{
"evaluated_at": "2026-02-21T10:00:00Z",
"mode": "full",
"batch_progress": {
"total": 80,
"evaluated": 80,
"status": "completed"
},
"skills": {
"skill-name": {
"path": "~/.claude/skills/skill-name/SKILL.md",
"verdict": "Keep",
"reason": "X 워크플로를 위한 구체적이고 실행 가능하며 고유한 가치",
"mtime": "2026-01-15T08:30:00Z"
}
}
}
참고 사항
- 평가는 블라인드 방식입니다: 동일한 체크리스트가 모든 스킬에 적용되며, 출처(ECC, 자체 작성, 자동 추출)에 관계없이 동일합니다
- 보관/삭제 작업은 항상 명시적인 사용자 확인이 필요합니다
- 스킬 출처에 따른 평결 분기는 없습니다