Communityコーディング&開発github.com

okjpg/skill-audit

Claude Code / Agent SDK スキル向け静的解析ツール。SKILL.md を10個のQAチェックで監査し、Claude・GPT・Gemini などのLLM間でのトリガー可能性を検証します。

skill-audit とは?

このスキルは、Claude Code や Agent SDK で利用する `SKILL.md` ファイルの静的監査を実行するツールです。10個のQAチェック(トリガーフレーズ数、説明文の長さ、Workflow の具体性、エッジケースの網羅性、`evals.json` の有無など)を自動で実行し、優先順位付きレポートを生成します。特に Claude 4.5 以前から移行したスキルや、GPT-5・Gemini などの他LLMでも動作させたいスキルを検証するのに有効です。監査結果はマークダウンファイル(`./audit-results.md`)に出力され、端末にはサマリーが表示されます。スコア7/10未満は「外部LLMで信頼性が低い」と判断され、修正優先度の高いスキルをリストアップします。

対応✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add okjpg/skill-audit

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

skill-audit は何をしますか?

SKILL.md の V3 標準(LLMフレンドリー)に対する静的監査ツール。10個のQAチェックを実行し、機械的・意味的な問題を検出、優先順位付きレポートを出力します。特に Claude pre-4.5 から移行したユーザーに有用です — 古いスキルは多くの場合、作者の環境でしか動作せず、外部エージェントでは機能しません。


使用タイミング

以下の場合に起動します:

  • ユーザーのスキルが「起動しない」「正しく動作しない」
  • Claude 3.x / 4.0 から 4.6+ に移行し、動作が壊れた
  • スキルを GPT-5、Gemini、または Claude 以外の LLM で実行したい
  • スキルを大量に作成している(例:学生、チーム、コミュニティ向け)
  • コレクション内のどのスキルを優先的に修正すべきか判断したい

具体的なメッセージ例:

  • "roda skill-audit em skills/my-skill/SKILL.md"
  • "minha skill não dispara no GPT"
  • "audita essa pasta de skills pra mim"
  • "skill-audit ./skills"
  • "por que essa skill funciona no Claude mas não no Gemini?"

使用すべきでないタイミング

以下の場合は起動しません:

  • ユーザーがゼロからスキルを作成したい → criar-skill または skill-creator を使用
  • 監査したスキルを実行したい → 直接スキルを実行
  • セキュリティ監査(OWASP、本番環境のシークレット)が必要 → 別のツールを使用
  • 対象ファイルが SKILL.md でない(例:Pythonスクリプト、README) → 汎用的なリファクタリング

入力

パラメータ型必須説明
pathstring✅SKILL.md のパス、または SKILL.md を含むサブフォルダがあるディレクトリ(再帰的)
formatstring❌markdown(デフォルト)または json — レポートの形式

出力

フィールド型説明
scoreint 0-10スキルが10個のQAチェックのうちいくつ合格したか
issuesarray優先順位付きの問題リスト(例:desc_no_triggers、examples_too_few)
by_categoryobjectスキルカテゴリ別の平均スコアと合格率
reportmarkdownランキングとスキル別詳細を含む完全なレポート

出力形式:./audit-results.md にマークダウンファイルとして保存 + 端末にサマリー表示。


ワークフロー

  1. 入力検証 — path は存在するか?.md ファイルかディレクトリか?
  2. SKILL.md ファイルを収集
    • path が .md ファイルを指している場合 → 単一リスト
    • それ以外の場合 → ディレクトリ内で **/SKILL.md を再帰的に glob
  3. 各 SKILL.md に対して:
    • YAML フロントマターをパース(--- ... ---)
    • 本体を H2 セクションに分割(コードフェンス ``` または ~~~ 内の H2 は無視)
    • 10個のQAチェックを実行
    • スコア + issues + カウントを記録
  4. 結果を集約 — 平均スコア、分布、最も多い issue
  5. マークダウンレポートを生成 ./audit-results.md に:
    • 全体サマリー
    • スコア分布
    • 頻度順の issues
    • 修正が必要な上位30スキル
    • スキル別詳細
  6. 端末にサマリーを表示 — 合計数、平均スコア、合格(≥7)数

10個のQAチェック

  1. 名前が kebab-case で、フォルダ名と一致するか
  2. Description: 50語以上、三人称、5つ以上のトリガーフレーズ、否定境界
  3. Workflow の各ステップが単一・命令形・曖昧でないアクションであること
  4. 具体的な例が2つ以上(実際の入力 → 実際の出力)
  5. エッジケースが3つ以上カバーされている
  6. 出力形式が明確に定義されている
  7. 曖昧な表現がゼロ(禁止語リストは references/qa-checklist.md 参照)
  8. ## When NOT to Use セクションに否定境界がある
  9. ハードコードされた認証情報がゼロ(シークレット、APIキー、トークン)
  10. evals/evals.json フォルダが存在し、2つ以上のケースがある

エッジケース

  • path が存在しない場合 → exit 1、「Path não encontrado: {path}」というメッセージを表示
  • ディレクトリが空(SKILL.md が0個)の場合 → exit 0、「Nenhum SKILL.md encontrado em {path}」というメッセージを表示
  • SKILL.md に YAML フロントマターがない場合 → スコア 0、issue missing_frontmatter
  • YAML が無効な場合 → スコア 0、issue yaml_parse_error
  • evals/ フォルダは存在するが evals.json がない場合 → issue no_evals_folder
  • SKILL.md が非常に大きい(350行超)場合 → warning long、内容を references/ に移動することを推奨
  • マークダウンリンク内のプレースホルダ参照(link、url、path) → 無視(壊れた参照としてカウントしない)

例

例1 — 単一スキルの監査

実際の入力: skill-audit ./my-skill/SKILL.md

実行されたワークフロー:

  1. ./my-skill/SKILL.md が存在することを確認
  2. YAML をパース — name: my-skill、description が32語であることを確認
  3. 本体分割: ## When to Use はあり、## When NOT to Use が欠落
  4. 10個のチェックを実行: description が短い(32w<50)、否定なし、evals フォルダなし、例が1つだけ
  5. レポート生成

実際の出力:

skill-audit: 1 skill analisada
  my-skill — 6/10 (232L, 32w desc, 4 triggers, 1 ex, 4 edge, evals ✗)
  Issues: desc_too_short(32w), desc_no_negatives, examples_too_few(1), no_evals_folder

Report: ./audit-results.md

例2 — フォルダ全体の監査(エッジケース:複数スキル)

実際の入力: skill-audit ~/my-claude-skills/

実行されたワークフロー:

  1. ~/my-claude-skills/ がディレクトリであることを確認
  2. Glob で 12 個の SKILL.md を検出
  3. それぞれに対して: パース + チェック + スコア付け
  4. 集約: 平均スコア 7.1、スコア ≥7 の合格 4/12
  5. 優先順位付きレポート: 悪いものから先に

実際の出力:

skill-audit: 12 skills analisadas
  Score médio: 7.1/10
  Passing (≥7): 4/12 (33%)

Top 3 issues mais comuns:
  desc_no_negatives (12, 100%)
  no_evals_folder (9, 75%)
  desc_too_short (7, 58%)

Worst offenders:
  1. legacy-skill-x — 3/10
  2. migrated-from-gpt — 4/10
  3. old-claude35-skill — 5/10

Report: ./audit-results.md

依存関係

  • ランタイム: Python 3.8+
  • ライブラリ: 標準ライブラリのみ(re, json, pathlib, argparse, collections)
  • API: なし — 100% 静的/オフライン
  • ファイル: templates/SKILL-TEMPLATE.md + references/qa-checklist.md(読み取り専用)
  • 他のスキル: なし — スタンドアロンツール

エラーと復旧

エラー原因修正方法
Path não encontradoパスが無効か、入力ミス絶対パスを確認; ls {path} で存在を確認
yaml.YAMLErrorフロントマターが不正SKILL.md を開き、インデントと --- の閉じを確認
UnicodeDecodeErrorSKILL.md が UTF-8 以外のエンコーディングエディタで UTF-8 として保存
ModuleNotFoundError: yamlPyYAML が不足pip3 install pyyaml を実行
レポートが生成されない./audit-results.md への書き込み権限がない書き込み権限のあるディレクトリで実行

備考

スコアについて: 7/10 が、スキルを外部LLMで「トリガー信頼性あり」と見なす最低基準です。10/10 が理想的です。7未満は通常、スキルが散文で書かれ、実行可能な契約(コントラクト)になっていないことを示します — pre-V3のスキルに多い形式です。

evals.json について: チェック10は evals の内容を検証しません。ファイルの存在と、prompt と expected_output を持つ2つ以上のケースという最小限の構造のみをチェックします。evals の品質はスキル作者の責務であり、監査の対象外です。

既知の制限:

  • Workflow の意味的な品質(ステップがドメインにとって妥当か)は監査しません
  • スキルを実行しません(静的解析のみ)
  • トリガーフレーズのヒューリスティックは、技術的に密度の高い説明文で偽陽性を出す可能性があります — スコアが境界線(6-7)の場合は手動で issue を確認してください

変更履歴

  • v1.0(2026-04-19): 初回バージョン。V3標準に基づく10個のQAチェック。 Amora ワークスペースの119スキルの監査(平均スコア5.9 → 10.0)から派生。

関連スキル