skill-stocktake은(는) 무엇을 하나요?
슬래시 명령어(/skill-stocktake)로 모든 Claude 스킬과 명령어를 품질 체크리스트 + AI 종합 판단을 통해 감사합니다. 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 mtime을 수집합니다.
프로젝트 디렉터리는 $PWD/.claude/skills에서 자동 감지; 필요한 경우에만 명시적으로 전달.
스크립트 출력에서 스캔 요약 및 인벤토리 테이블을 제시합니다:
스캔 중:
✓ ~/.claude/skills/ (17개 파일)
✗ {cwd}/.claude/skills/ (찾을 수 없음 — 전역 스킬만)
| 스킬 | 7일 사용 | 30일 사용 | 설명 |
|---|
2단계 — 품질 평가
전체 인벤토리와 체크리스트와 함께 일반 목적 에이전트 도구 서브에이전트를 실행합니다:
Agent(
subagent_type="general-purpose",
prompt="
다음 스킬 인벤토리를 체크리스트에 따라 평가하세요.
[INVENTORY]
[CHECKLIST]
각 스킬에 대해 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단계가 이미 동일한 워크플로를 다룸. 'article angle' 팁을 해당 스킬의 참고 사항으로 통합."
- 나쁨:
- Improve: 필요한 구체적인 변경 사항 설명 (어떤 섹션, 어떤 조치, 대상 크기 등)
- 나쁨:
"너무 김" - 좋음:
"276줄; 'Framework Comparison' 섹션(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, 자체 작성, 자동 추출 여부와 관계없이)에 적용됩니다
- 보관/삭제 작업은 항상 명시적인 사용자 확인이 필요합니다
- 스킬 출처에 따른 평결 분기는 없습니다