agentleFS
bwkwbwkw/dotagents/skills/da-skills-audit/SKILL.md

da-skills-audit

Skill0 starsChanged 21 days agoMITView on GitHub

インストール済みスキル全体を、肥大化と壊れがないか監査する。スキルを追加する前、スキルが自動で発火しなくなった時、定期的な掃除の時に使う。セキュリティスキャンではない。

  • Reads credentials

The file

Files
SKILL.md

/da-skills-audit — ツールキットを腐らせない

スキルは溜まることで劣化する。インストール済みの全 description は常にコンテキストに載り、モデルはそれと依頼を突き合わせて選ぶ。刈り込まずに増やすと、誰にも気づかれずに選択が外れ始める。

このスキルは何も変更しない。報告と提案だけで、削除の承認はユーザーが行う。

このスキルはファイルを読む。利用状況は測らず、評価(eval)でもない。道具は 4 つあり、1 つでは足りない。

道具読むもの答えること
/skill-doctor読み込まれた全体と利用状況使われずにコンテキストを食っているスキル。利用できる環境なら最初に実行する
/doctor設定と一覧一覧の実際のコンテキストコストと大口、遅いフック、重複した指示
このスキルディスク上のファイル過剰な制約、トリガーの重複、Cursor 非互換、大きすぎる本文、AGENTS.md の不変条件
anthropic-skills:skill-creatorスキルあり / なしの実行比較スキルが実際に役立つか。合格率・時間・トークンを benchmark.json に集計し、発火すべき / すべきでないプロンプトでトリガー精度を測る

レポートの冒頭で、4 つのうちどれを実行したかを書く。補助ツールがそのハーネスで利用できなければ、未実行と限界を明示してファイル監査を続ける。導入や別ハーネスへの移動を必須にしない。ファイル監査が綺麗でも、スキルが役立つかは何も分からない。それには最後の行のような比較評価が要る。

結果を信じる前に知っておくこと。

  • 一覧はこのリポジトリよりずっと大きい。約 40 本が Claude Code 本体に組み込まれてディスクに現れず、Anthropic 管理のプラグインがさらに約 11 本足す。ファイル監査はモデルが見る一部しか見ない。全体を見るのは /skill-doctor と /doctor で、ディスク上の本数を総数として出さない。
  • 書いたセッションでベンチマークしたスキルは実際より良く見える。残ったコンテキストが指示の穴を埋めるので、新しいセッションで測る。

実行条件

条件満たさない場合
~/.agents/skills が存在するか、パスが渡された止まって報告する
dotagents のチェックアウトが特定できる(~/.claude/.dotagents-managed.json → repo)続けるが、verify-skills.sh が要るチェックは飛ばし、そう書く

ワークフロー上の位置

上流このスキル下流
スキルを追加する前、または四半期ごとの掃除/da-skills-audit統合、description の書き直し、アンインストール

読むファイル

常に読む

ファイル理由
監査パス配下のすべての SKILL.md の frontmatter名前、description、サイズ、frontmatter のキー

条件つきで読む

ファイル条件
スキルの本文静的チェックが指摘し、重複を判断する必要がある時だけ

すべてのスキル本文を読まない。それはこのスキルが見つけるべき失敗そのもので、監査で節約する以上のコンテキストを使う。


レポートはユーザーが書いている言語で書く(不明なら日本語)。パス・識別子・コマンド・コード片・ログは原文のまま残す。

Step 0. 自作と外部を分ける

grep -l 'source: bwkw/dotagents' ~/.agents/skills/*/SKILL.md

それ以外は第三者からのインストール。どちらかで提案してよいことが変わる。

  • 自作 — 何でも提案してよい。description の書き直し、本文の分割、削除。
  • 外部 — 手段はインストールかアンインストールだけ。upstream のスキルの編集は提案しない。次の npx skills update で黙って消える。upstream のスキルが問題なら、そう書いて削除か upstream への報告を提案する。

先に進む前に本数を書く。どちらが自作か分からない予算報告は動きようがない。

Step 1. 静的チェック

監査パスにリンターを掛ける。機械的なチェックはすでに実装されている。

"$(node -e 'console.log(require(process.env.HOME+"/.claude/.dotagents-managed.json").repo)')/scripts/verify-skills.sh" ~/.agents/skills

報告されるもの: name / description の欠落、name とディレクトリの不一致、大きすぎる SKILL.md、disable-model-invocation、本文が裏付けない allowed-tools / context:、相対の reference パス、description の合計予算。

結果の読み方:

兆候しきい値意味
description の合計文字数> 8,000選択精度が落ちている。統合か削除
1 本の description> 500 字他を押し出している。短く書き直す
1 本の SKILL.md> 12 KB呼ぶとセッション終了までその分がコンテキストに居座る
スキル数> 40description が圧縮され始める
disable-model-invocation: trueどれでも自動発火せず、他のスキルからも呼べない。対話専用なら意図どおり、連鎖させるものには致命的

Step 2. 守備範囲の重複

トリガーの語彙を共有する description をまとめる。同じ依頼を 2 本が取り合うと、どちらも確実には勝たない。

特に出どころをまたぐ組を探す。upstream の集合同士も、ローカルで書いたものとも重なる。まとまりごとに、スキル・共通のトリガー・その領域を持つべき 1 本を報告する。

Step 3. 利用状況 — 知っている道具に聞く

使われていないものは静的解析では分からない。分かる情報源は 3 つあり、手間の少ない順に並べる。

1. /skill-doctor。使われずにコンテキストを食うスキルを出す専用の道具。利用でき、利用状況の確認が必要な時に実行結果を使う。ファイル監査に見えない組み込み・プラグインのスキルも含む。利用できない時は未実行として先に進み、ファイルの存在やサイズから利用頻度を推測しない。

2. ~/.claude.json → skillUsage。スキル名から {usageCount, lastUsedAt} への対応で、直接読める。

node -e 'const u=require(process.env.HOME+"/.claude.json").skillUsage||{};
  Object.entries(u).sort((a,b)=>b[1].usageCount-a[1].usageCount)
    .forEach(([k,v])=>console.log(String(v.usageCount).padStart(5), new Date(v.lastUsedAt).toISOString().slice(0,10), k))'

注意が 3 つある。どれも実際に誤った結論を生んだ。

  • キーが無いのは「名前で呼ばれたことが無い」という意味で、役に立たないという意味ではない。自動発火したスキルは載らないことがある。
  • キーに出どころが無い。素の review は組み込みスキルかもしれず、同名のプロジェクトコマンドかもしれない。他リポジトリのプロジェクト用コマンドも区別なく混ざる。
  • インストール日と比べる。昨日入れて利用 0 のスキルからは何も分からない。結論の前に ~/.agents/.skill-lock.json かディレクトリの mtime を見る。

3. OpenTelemetry。合計ではなくトリガー別の内訳が欲しい時。OTEL_LOG_TOOL_DETAILS=1 が要る(dotagents が設定する)。イベントは skill_activated で、skill.name と invocation_trigger を持つ。クエリはユーザーが実行するものとして出し、自分でバックエンドに問い合わせない。

問い見るもの読み方
一度も使われていないかskill.name ごとの skill_activated の件数、90 日0 → 削除候補
明示呼び出しだけかinvocation_trigger の内訳自動発火しない → description が仕事をしていない。削除の前に書き直す
望まない時に発火するか発火の直後に方向転換が起きたものトリガーが広すぎる

Cursor はこれを何も出さない。標本は Claude Code だけなので、主に Cursor で使うスキルはここでは未使用に見える。テレメトリだけで削除しない。これは候補を絞るもので、決めるのはユーザー。

Step 4. 報告する

## スキル監査 — N 本、description 合計 M 文字

### 自作 / 外部
自作 N 本、upstream からのインストール M 本、計 T 本。

### ブロッカー
(Step 1 のエラー: 壊れた frontmatter、大きすぎる本文、Cursor で動かない宣言。
upstream のスキルのエラーは報告するが、その場で直すものではない)

### 予算
合計 M 文字(目標 8,000)。超過の大きいもの:
| スキル | 文字数 | 削る案 |

### 守備範囲の重複
| まとまり | スキル | 共通のトリガー | 持ち主にする案 |

### 利用状況のクエリ
(ユーザーが実行するクエリ)

### 提案するアクション
| スキル | 自作? | アクション | 理由 |
| … | 自作 / upstream | 残す / description を書き直す / X に統合 / 削除 | … |

完了条件

  • Step 1 のエラーがすべて、ブロッカーとして挙がっているか、許容できる理由が書かれている
  • description の予算が目標に対する数値で書かれている
  • 提案した削除のすべてに、「テレメトリが 0」だけではない理由がある

次に

合意したアクションを適用する。upstream のスキルの削除は npx skills remove <name> -g。自作の削除は dotagents/skills/ から消して setup.sh install を実行する(配らなくなったものは install が刈る)。

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.