agent-plugin-eval について
ポータブル仕様に照らして Agent Plugins を評価するスキルです。パッケージ検査、決定論的なチェック、ルーブリックによる採点を組み合わせ、根拠付きの適合性評価を必要とする作者やレビュアー向けです。
主な機能
- 01パスまたは Git URL からプラグインルートを特定
- 02パッケージのファイルとコンポーネントを検査
- 03マニフェストの決定論的チェックを実行
- 04適合性を分類し基準に沿って採点
- 05根拠付きの評価結果を作成
活用シーン
- 01リリース前にプラグインを審査する
- 022つのプラグインパッケージを比較する
- 03移植性やマニフェストの違反を探す
- 04評価表を使ってプラグイン品質を確認する
MCP 対応
Agent Plugins に含まれる MCP サーバーの設定とパッケージ適合性を検査します。MCP サーバーの実行やクライアントへの機能提供については記載されていません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ fabricioctelles/ skills --skill agent-plugin-evalインストール後、Claude Code で/agent-plugin-evalを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/default.yamlreferences/jev-integration.mdoutput-template.mdrubric.mdspec-checklist.mdscripts/inspect_plugin.pyjev_questions.jsonscore.py詳細
エージェントプラグインの評価
ポータブルな Agent Plugins 仕様を正とします。クライアント固有の
マニフェスト(例:.codex-plugin/plugin.json、.claude/settings.json、
.cursor/mcp.json)は、ルートの必須ファイルである plugin.json の代わりにはなりません。
パラメーター
| パラメーター | 説明 | デフォルト |
|---|---|---|
target | ローカルリポジトリ/プラグインのパス、または Git URL | 未指定の場合は確認 |
compare | 任意の比較対象パスまたは Git URL | なし |
output | スコアカードの保存先 | 返信のみ。要求された場合にのみ書き込み |
spec_version | 評価対象の Agent Plugins バージョン | plugin.json に記載されたバージョン、または 1.0.0 |
安全性の境界
信頼できないリポジトリは静的に監査してください。ユーザーが実行を明示的に許可しない限り、同梱の実行ファイル、フック、インストールスクリプト、パッケージマネージャー、MCP サーバー、ネットワークを使用するテストを実行しないでください。秘密情報と疑われる値は伏せ字にし、場所と種類のみを報告してください。秘密情報らしいキーや値は疑いの対象にすぎず、認識可能な有効な認証情報の形式、信頼できる秘密情報スキャナー、リポジトリの履歴/出所、またはユーザーによる確認などの裏付けとなる証拠がない限り、FAIL ゲートを割り当てないでください。認証情報を確認するだけの目的で、サービスに対して試さないでください。
ワークフロー
- プラグインのルートを特定します。 ローカルの対象はそのまま使用します。Git URL の場合は、
mktemp -dディレクトリに浅くクローンします。プラグインのルートにはルートのplugin.jsonが含まれます。リポジトリ内に候補がゼロまたは複数ある場合は、推測せず曖昧であることを報告します。すべての対象が明示的なプラグインのルートに一つずつ対応付けられたら完了です。 - 適用されるルールを読み込みます。
references/spec-checklist.mdとreferences/rubric.mdを読みます。Agent Plugins1.0.0には、同梱されたスナップショットを使用します。宣言されたバージョンが異なる場合、またはユーザーが最新仕様を求めている場合は、agent-plugins.orgの正式な仕様とスキーマを参照し、評価したバージョンと取得日を記録します。JSON Schema と矛盾する場合は、規範となる本文を優先します。 - すべてのパッケージパスを調査します。 ドットファイル、シンボリックリンク、スキルの直下の子要素、拡張機能の名前空間、実行可能ファイル、Git の無視対象ファイルを含めます。すべてのシンボリックリンクとパッケージ相対パスをプラグインのルートを基準に解決します。見つかったすべてのパスを、移植可能なコア、クライアント拡張機能、補助ファイル、または包含違反のいずれかとして分類したら完了です。
- 決定論的スキャンを実行します。
python3 scripts/inspect_plugin.py <plugin-root> --jsonを実行します。出力は調査の手がかりとして扱い、最終判断とはしません。報告された各問題をソースで確認し、file:lineまたは JSON ポインターの根拠を追加します。たまたまクライアントが受け入れるという理由で、規範上の指摘を決して緩和しないでください。 - コンポーネントをすべて確認します。 すべての
skills/*/SKILL.mdとすべてのmcpServersエントリーを調査します。Agent Skills は独自の仕様に照らして検証します。指示、リソース、スクリプト、MCP 設定、拡張機能の分離、まとまり、実用性を評価します。skill-evaluationが利用可能であれば、個々のスキルの品質分析を深めるために使用できますが、このプラグインレベルのルーブリックに代わるものではありません。 - 採点する前に適合性を分類します。
references/spec-checklist.mdに定められた正確な失敗境界を使用し、PASS、PARTIAL、FAILのいずれかに分類します。クライアント互換性と移植可能な適合性は分けて扱います。クライアント固有の機能は、そのクライアントにとって優れたものであっても、移植可能な適合性への加点はゼロとなる場合があります。 - 根拠がなければ採点しません。
references/rubric.mdの該当するすべての基準を採点します。各スコアには具体的な根拠が必要です。N/Aにはすべて理由が必要です。加重結果と上限を求めるためにscripts/score.pyを実行し、手計算はしないでください。すべての基準と指摘が適合性ステータスと整合したら完了です。 - 指定された言語で回答します。
references/output-template.mdを読み、その構成に従って出力します。判定を最初に示し、ブロッカーと推奨事項を区別して、具体的な修正方法を提示します。compareが設定されている場合は、差分を計算する前にそれぞれを独立して評価します。両方のプラグインに同じN/Aの項目を無理に適用しないでください。
ゲートと採点
PASS:規範違反が見つかっていません。スコアの上限はありません。PARTIAL:致命的ではないマニフェストの逸脱、または無効化/スキップされたコンポーネントがあります。最終スコアの上限は59です。FAIL:致命的なマニフェスト/パッケージルートの不備、ルートマニフェストからの逸脱、または埋め込み認証情報が確認されています。最終スコアの上限は39です。- 上限適用前のスコアも表示し、設計品質とリリースを妨げる適合性の問題を作者が区別できるようにします。
各基準につき criterion:score:weight の組を一つ指定して、計算ツールを呼び出します。
python3 scripts/score.py --gate partial 1:90:3 2:80:3 3:NA:2
Jev による評価(任意)
TypeSafe Jev を利用できる場合は、主観的な品質基準の評価に使用します。Jev は、決定論的チェックを補完する、調整済みの確率判断を提供します。
Jev を使用するタイミング
| 評価の種類 | Jev を使用しますか? | 方法 |
|---|---|---|
| 軸 1~3 の適合性 | いいえ | 決定論的に判定(inspect_plugin.py) |
| 軸 4 の製品品質 | はい | スコア評価(UX、ドキュメント、エラー) |
| 軸 2 の品質基準 | はい | スコア評価(スキーマ設計、命名) |
| ゲートの分類 | はい | Noul(合格/不合格の分類) |
| シークレットの検出 | はい | Noul(疑いあり/疑いなし) |
| 品質チェックリスト | はい | Noul(存在/欠落) |
検出プロトコル
from typesafe import jev_available
if jev_available():
from typesafe import Score, Noul
# Use Jev for subjective criteria
else:
# Fall back to heuristic scoring
質問と統合
質問は scripts/jev_questions.json で定義されています。
- 7 つの Score 質問:軸 4(UX の一貫性、ドキュメントの明確さ、エラー処理)と軸 2(検証、スキーマ設計、命名、API の洗練度)
- 20 の Noul 質問:ゲート(G1~G4)、シークレット(4)、品質チェックリスト(7)、コンポーネントの有効性(4)
Score の結果(0.0~1.0)は軸ごとに平均され、ルーブリック(0~25)に合わせてスケーリングされます。 Noul の結果は、ゲートとチェックリストの分類を示します。
統合パターンとコード例の詳細は、references/jev-integration.md を参照してください。
出力形式
Jev を使用した場合、スコアカードには jev セクションが含まれます。
{
"jev": {
"available": true,
"quality_scores": { "ux_coherence": 0.72, ... },
"gate_classifications": { "G1": {"label": "conformant", "passed": true} },
"secret_findings": { "requires_review": false }
}
}
注意点
- v1 のポータブルコアに含まれるのは、Agent Skills と MCP サーバーのみです。Hooks、commands、agents、apps、marketplaces、および配布ポリシーは、有効な拡張名前空間に配置されていない限り、クライアント固有です。
- オプションの
skills/またはmcp.jsonがなくてもエラーではありません。存在するパスのファイルシステム上の種類が正しくない場合は、無効なコンポーネントタイプです。 - 不明なルートマニフェストフィールドはスキーマ違反ですが、仕様上、限定的な非致命的扱いとなります。その他のマニフェストスキーマ違反の大半は、プラグイン全体を不合格にします。
- 無効なスキルまたは MCP サーバーが 1 つあっても、独立したすべてのコンポーネントが無効であるかのように報告してはいけません。
${PLUGIN_ROOT}と${PLUGIN_DATA}は、MCP のargs、envの値、cwdでのみ展開されます。command、URL、ヘッダーでは展開されません。- クライアントネイティブのプラグインが高品質であっても、ルートに
plugin.jsonがない場合、ポータブル標準に準拠しないことがあります。両方の事実を、平均化して曖昧にせず報告してください。 - 資格情報の可能性があるものは「疑いあり」と表示し、伏せ字にしてください。ヒューリスティックによる検出だけでもセキュリティスコアは下がり、修正の確認が必要になりますが、資格情報が確認された場合の
FAILゲートにはなりません。
最終品質ゲート
- すべての対象が、ちょうど 1 つのルートに解決されている
- すべてのファイル、シンボリックリンク、スキル、MCP サーバー、拡張機能を検査している
- すべての規範的な違反を、適切な失敗境界に対応付けている
- すべてのスコアの根拠を示し、N/A の理由を説明している
- 疑いのあるシークレットを伏せ字にしている
-
scripts/score.pyでスコアを算出している - 比較差分に、独立して算出したスコアを使用している