skill-metrics — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited skill-metrics (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Claude Code가 남긴 세션 JSONL(~/.claude/projects/**/*.jsonl)을 집계해 스킬/워크플로우 사용을 정량 지표로 환산한다. 목적은 두 가지다:
측정은 전부 번들된 scripts/measure.py가 수행한다. Claude가 JSONL을 직접 읽어 토큰을 태우지 않는다 — 스크립트를 호출하고 결과 마크다운만 해석한다.이 스킬의 지표는 Claude Code 세션 로그가 스킬 호출을 `Skill` 도구 사용으로 기록한다는 사실에 의존한다. 현재 하네스가 이 관측량을 제공하는지 먼저 확인한다.
~/.claude/projects/**/*.jsonl처럼 Skill 도구 호출이 구조화되어 있으면 아래 절차를 계속한다.이 경우 다른 세션 로그를 억지로 비슷하게 파싱하지 말고, "현재 하네스는 스킬 호출을 독립 이벤트로 기록하지 않아 skill-metrics를 지원할 수 없습니다"라고 알린 뒤 종료한다.
파일 위치 차이가 아니라 지표 정의에 필요한 사건이 없다는 문제이므로, 추정값을 만들지 않는다.
현재 SKILL.md가 들어 있는 디렉터리의 scripts/measure.py를 실행한다. 호출과 함께 전달된 자연어 인자로 기간을 받는다.
# 기본: 최근 14일, stdout 출력
python3 "<스킬 디렉터리>/scripts/measure.py" --days 14
# 특정 시작일부터
python3 "<스킬 디렉터리>/scripts/measure.py" --since 2026-06-05 --until 2026-06-19
# 프로젝트 필터 + 파일 저장
python3 "<스킬 디렉터리>/scripts/measure.py" --days 14 --project myproject --out /tmp/skill-metrics.md주요 옵션:
| 옵션 | 의미 | 기본 |
|---|---|---|
--days N | 오늘 기준 최근 N일 | 14 |
--since YYYY-MM-DD | 시작일 (지정 시 --days 무시) | — |
--until YYYY-MM-DD | 종료일 | 오늘 |
--project <부분문자열> | 프로젝트 경로 필터 (예: myproject) | 전체 |
--top N | 랭킹 표 상위 N개 | 15 |
--out <경로> | 마크다운 저장 (미지정 시 stdout) | — |
전달된 인자가 숫자면 --days로, YYYY-MM-DD 형식이면 --since로 넘긴다.
스크립트 출력을 그대로 사용자에게 보여주되, 상위 3개 자동화 후보와 묶음 후보(transition) 를 짚어 "다음에 무엇을 자동화하면 좋은지" 한두 줄로 요약한다.
주간 회고(retrospective) 맥락이면, 이 지표를 자동화 우선순위의 정량 근거로 인용한다. 결과를 보존하려면 프로젝트 문서 폴더의 보고서·회고 하위 폴더에 저장을 제안한다 (사용자 확인 후).
AutoScore = 주간호출수 × (평균후속체인길이 + 1) × (1 + 마찰율)따라오는 다른 스킬의 평균 개수. 높으면 다른 스킬과 엮여 돌아 — 단일 체인으로 묶을 가치가 큼. (체인이 0이어도 빈도가 반영되도록 +1)
("다시 해", "그게 아니", "안 돼", "재시도" 등)이 있던 세션의 비율. 마찰이 잦은 워크플로우일수록 자동화로 덜어낼 여지가 큼.
①-b 묶음 후보 (transition): A → B는 A 호출 직후 윈도우 안에 처음 등장한 다른 스킬 B의 쌍별 빈도. 같은 쌍이 반복되면 단일 체인 커맨드로 묶을 1순위 신호다. (예: 프로젝트 커밋 스킬 → PR 스킬 연결이 잦으면 둘을 한 워크플로로 묶는다.)
나머지(미사용 세션)가 거시적 "미활용" 신호 — 스킬 없이 손으로 돌린 세션 비중이다. (작업별 미활용을 정밀 추적하려면 스킬↔수동 매핑이 필요한데, 그건 수동 유지보수 부담이 커서 1차 범위에서 제외했다. 거시 신호로 Reach를 본다.)
순위 근거로 쓰지 않는다(주 변별은 빈도·체인).
잡으며, 놓치거나 오탐할 수 있다. (scripts/measure.py의 FRICTION_PATTERNS에서 조정)
create-pr vs development:create-pr)은 별개로 집계된다 —합산 해석이 필요하면 사람이 묶어 읽는다.
판정하기 전에 그 스킬 scripts/ 경로를 부른 Bash 실행 수를 같이 센다.
--out으로 저장한 리포트를 일일 업무 기록이나 스케줄(/schedule)에 붙이면 주간 자동 집계.선언 파일로 빼는 방식을 검토한다(수동 유지보수 최소화).
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.