# Skill Audit

> skill-audit

- Skill: `kura-by2/skill-audit` (Agent Skill, multi-file: 11 files)
- Install (CLI): `npx skillmds@latest add kura-by2/skill-audit`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kura-by2/skill-audit/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Security
- Author: kura-by2 (https://skillmd.com/u/kura-by2)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/kura-by2/skill-audit

---


# skill-audit

`targets.md` の日付別ログと既存資産を観点別に監査し、再利用価値のある候補だけを通知する。

## 呼び出し

- `/skill-audit` または `/skill-audit all`: `logs`、`retire`、`bloat`、`dedup` の全観点を実行する。
- `/skill-audit logs`: ログの反復パターンから skill / CLI / context / eval / cron / rules 候補を検出する。
- `/skill-audit retire`: 利用実績から未使用・長期未利用スキルの退避候補を検出する。
- `/skill-audit bloat`: SKILL.md の行数と内容から圧縮・script化候補を検出する。
- `/skill-audit dedup`: ルール二重定義・スキル間重複を意図で検出し、canonical を提案する。

個別実行では指定外の観点を一切実行しない。各個別実行は独立してcron設定・並列実行できる。未知の引数は使用法を表示して終了する。

## 共通契約・安全

最初に同じディレクトリの `targets.md` を読む。なければ「targets.md が見つかりません。targets.md.template をコピーして設定してください。」と表示して終了する。キーは `target`（複数可）、`lookback_days`、`min_score`（既定4）、`existing_assets`（`skills` / `cli` / `rules`）、任意の `exclude`。

全観点で検出と報告だけを行い、作成・修正・削除はしない。本番資産は自動作成せず、明示許可があっても draft までとする。選択した観点の対象が0件、または既存資産と照合不能なら理由を表示して停止する。ログが膨大で要約なしに読むと高コストな場合、`logs` では生データを読まずscriptによる絞り込みを求める。API key、token、password、private key、cookie、個人・顧客・未公開事業情報を検出したら全処理を止め、パス・行番号・短い要約だけを通知する。本番変更が必要になった場合も停止する。

## 判断軸

```text
反復操作・明確な入出力             → CLI
反復判断・運用固有の評価軸         → skill
反復ミス・機械検査可能な要件       → eval/check
周期的確認・通知だけで価値がある   → cron
repo固有の権限・禁止・停止条件     → AGENTS.md/CLAUDE.md
安定した再注入用情報               → context
```

ユーザーの説明量、ミス、判断の揺れを減らす候補を優先する。取得・整形・集計は script、判断と報告は skill、可変 state は Git 外に置く。似た資産があれば新設より更新・統合を優先する。

## 観点別手順

### logs

1. `bash {BASE_DIR}/scripts/scan-commands.sh` を実行する。期間内の `<date>.log` を横断し、引数を概略正規化した反復コマンドと連続手順（2回以上）を出す補助シグナルなので、同名basenameの誤集約や意味的な取りこぼしを前提にする。
2. 期間内ログから同じ作業・判断・失敗・探索・出力形式・周期確認と「毎回」「また」「手で」「面倒」「忘れがち」等を意味的に抽出する。目的・入出力・判断基準でまとめ、原則1回限りは除く（形式化の明示があれば例外）。
3. 各クラスタを `name`, `type`, `evidence`（file/excerpt/date）, `count`, `confidence`, `reason`, `risk` で整理し、`existing_assets` と照合する。未形式化=新規、一部済み=更新、済み=非通知、重複気味=統合/prune とし、下記で採点して `min_score` 以上だけを通知する。秘密や長文は evidence に載せない。

### retire

`bash {BASE_DIR}/scripts/scan-skills.sh` だけを実行し、出力のうち「未使用・30日超」セクションだけを使う（行数セクションは読まない）。`skill-usage.log` がなければ「使用ログなし: 退避判定不能」と報告して停止する。未使用・長期未利用の各スキルについて、cron 定義・hook・他スキルからの参照有無を確認し、参照が生きていないものだけを退避候補として挙げる。使用ログの記録開始日より古い期間は「未計測」であり「未使用」と断定しない。

### bloat

`bash {BASE_DIR}/scripts/scan-skills.sh` だけを実行し、出力のうち行数セクション（全行数・100行超）だけを使う。100行超は内容を読み、決定的記述が大半、または1回の呼び出しで使う箇所が一部だけなら圧縮・script化候補とする。判断軸・停止条件は残して機械処理をscript化し、別 `.md` への分割は長い手順の一部しか一度に使わない場合の最終手段とする。利用実績の判定は `retire` の観点で行い、ここでは行わない。`scan-commands.sh` と日付別ログは読まない。

### dedup

`existing_assets` 全体のルールを文字列一致でなく意図で突き合わせ、`exclude` 対象は検査しない。同義の二重定義、言い換え重複、矛盾を検出し、各箇所と「どちらをcanonicalにし、他方を相互参照へ落とすか」を提案する。なければ「二重定義なし」とする。両scan scriptと日付別ログは使わない。

## 候補判定と採点

skill は判断基準・起動条件・停止条件・固有運用が重要なもの。CLI は機械的なファイル/API/整形処理で、明確な入出力と `list/check/dry-run` を持てるもの。eval は構造要件を品質ゲート化できるもの。cron は頻度が明確で副作用が小さいもの。rules は repo 固有の権限境界や毎回守る規約。

```text
共通: +2 30日で2回以上 / +2 固有運用・判断 / +1 説明削減 / +1 停止条件
      +1 既存資産へ接続 / +1 副作用小 / -1 一回限り / -1 証拠曖昧
      -2 既存資産で十分 / -2 高リスク / -2 静的docs由来
CLI:  +2 入出力明確 / +1 dry-run等 / +1 機械処理中心 / -2 判断中心
skill:+2 判断・手順・pitfallを記述可 / +1 既存skillでは不足 / -2 単なるコマンド列
```

## 出力

実行した観点のセクションだけを次の骨子で出し、未実行観点を「なし」で埋めない。

```markdown
## skill-audit レポート (YYYY-MM-DD)
### 上位候補
#### 1. {候補名}
- 種別: skill / cli / context / eval / cron / rules
- スコア: {score}
- 根拠: {file} で {N} 回
- 理由: {理由}
- 推奨対応: draft / 既存更新 / defer / prune
- 最小実装: {最小単位}
- リスク: {懸念}
### 対応不要・見送り
- {候補}: {理由}
### スキル候補
- {候補またはなし}
### CLI候補
- {候補またはなし}
### eval / check候補
- {候補またはなし}
### cron候補
- {候補またはなし}
### AGENTS.md / CLAUDE.md候補
- {候補またはなし}
### スキル退避候補
- {skill}: 最終利用 {date または 未使用} — {参照確認の結果と退避提案}
### SKILL.md 圧縮・script化候補
- {file}: {lines}行 — {判断理由と対処}
### ルール二重定義・スキル間重複
- 重複: {要約}
  - 箇所A: {file} — {該当}
  - 箇所B: {file} — {該当}
  - 提案: {canonical と相互参照方針}
```

結果なしの場合も、実行した各セクション内にだけ `候補なし`、`退避候補なし`、`圧縮・script化候補なし`、または `二重定義なし` と出す。

