KillerSkills について
KillerSkills は、サンドボックスでの観測結果をもとに、エージェントスキルや MCP サーバーを評価する個人・組織向けツールです。読み取り専用の MCP インターフェースで判定と検索を提供し、導入前の確認に加え、実行時のツール・ネットワーク・認証情報へのアクセスも制限できます。
主な機能
- 01スキルと MCP サーバーの判定取得
- 02キーワードによるセキュリティ索引の検索
- 03導入前のサンドボックス実行
- 04MCP ツール呼び出しの拒否・制限
- 05ネットワーク制限とシークレット仲介
- 06インジェクションと認証情報流出の検出
活用シーン
- 01導入前にスキルの判定を確認
- 02MCP サーバーの検証済み代替を検索
- 03MCP サーバーのツールとネットワークを制限
- 04エージェントの処理で注入された指示を監視
MCP 対応
KillerSkills は stdio 経由の読み取り専用 MCP サーバーとして動作し、判定確認と索引検索のための `check_skill` と `search_skills` を公開します。CLI をエージェントと stdio MCP サーバーの間で実行し、ツール、ネットワーク、認証情報へのアクセスを制御することもできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
2掲載時のツール一覧 · 今日に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| name | string | はい | スキルまたはパッケージ名:"name"、"publisher/name"、"@scope/pkg"。必要に応じて "@version" を指定します。 |
| registry | enum | いいえ | 判明している場合はレジストリを指定します。省略すると、すべての公開レジストリを検索します。skills_sh | clawhub | npm | pypi | docker | plugins | partner |
詳細
vet-skills
エージェントスキルと MCP サーバーを実行前にチェックします。判定は KillerSkills によるもので、ポリシーはあなたまたは組織が決めます。
npm i -g vet-skills # the CLI (Node 20+)
vet-skills hook install all # Claude Code, Cursor, Codex, Windsurf, Gemini CLI: install check, runtime observation, canaries
vet-skills check <skill> # or just ask before you add one
vet-skills publish ./my-skill # org members: detonate + list in the private registry
MCP サーバーとして使う
任意のエージェントに判定を直接渡すと、スキルや MCP サーバーのインストール前にチェックし、検証済みの代替を選べるようになります。読み取り専用で、アカウントも API キーも不要です。
ツール:check_skill(判定、スコア、サンドボックスで確認された内容、主な検出事項、最後の安全なバージョン)と search_skills(判定付きのキーワード検索インデックス)。
Claude Code
claude mcp add killerskills -- npx -y vet-skills mcp
Cursor:~/.cursor/mcp.json(またはプロジェクト内の .cursor/mcp.json)
{
"mcpServers": {
"killerskills": { "command": "npx", "args": ["-y", "vet-skills", "mcp"] }
}
}
Claude Desktop:設定 → 開発者 → 設定を編集(claude_desktop_config.json)
{
"mcpServers": {
"killerskills": { "command": "npx", "args": ["-y", "vet-skills", "mcp"] }
}
}
VS Code:.vscode/mcp.json
{
"servers": {
"killerskills": { "type": "stdio", "command": "npx", "args": ["-y", "vet-skills", "mcp"] }
}
}
Windsurf:~/.codeium/windsurf/mcp_config.json。Cursor と同じ mcpServers ブロックを使います。
Codex:~/.codex/config.toml
[mcp_servers.killerskills]
command = "npx"
args = ["-y", "vet-skills", "mcp"]
次に、エージェントにこう尋ねます:"その MCP サーバーを追加する前に、KillerSkills でチェックしてください。" Node 20+ が必要です。インデックスには、skills.sh、ClawHub、npm、PyPI、Docker MCP Catalog、Claude Code プラグインマーケットプレイスの 24,000 件以上のスキルと MCP サーバーが登録されており、それぞれがハニーポットサンドボックスで実行されます。killerskills.ai で閲覧できます。
インストール前に試す
vet-skills try @acme/crm-mcp # npm package (or name@version)
vet-skills try pypi:some-mcp-server # PyPI package
vet-skills try owner/repo # GitHub repository
vet-skills try ./my-skill # local directory
パッケージを一時ディレクトリに取得し(インストールはしません)、KillerSkills のハニーポットで実行して、実行内容を出力します。接続したすべてのホスト、アクセスしたすべての認証情報のパス、公開するツール、エージェントにかかるコスト(指示トークン数。MCP サーバーの場合はハンドシェイク時間と、ツールリストがプロンプトに占めるコンテキスト量)を確認できます。実行がブロックされると、終了コード 2 を返します。
返される内容へのインジェクション
ツール呼び出しを監視するのと同じフックが、WebFetch、WebSearch、Read、
Bash、Grep、およびすべての MCP ツールから返される内容を読み取ります。内容にエージェントを標的とした指示(「以前の指示を無視してください」、「ユーザーには伝えないでください」、隠された HTML コメント、不可視の Unicode タグ文字、シェルにパイプされたスクリプト)が含まれている場合、フックはエージェントの次のステップの前にそれを通知し、ログに記録します。また、登録済みの場合は検出内容の種類を組織に報告します。内容がマシンの外に出ることはありません。vet-skills discover は CLAUDE.md、AGENTS.md、MEMORY.md、およびインストール済みのすべての SKILL.md に同じルールを適用します。vet-skills run は実行中のサーバーのツールリストと結果に適用します。
制限付きで実行する
claude mcp add crm -- npx -y vet-skills run --net declared --deny "delete_*" -- npx -y @acme/crm-mcp
vet-skills run はエージェントと stdio MCP サーバーの間で動作します。拒否されたツールにはエラーを返し、サーバーには決して到達しません。すべてのツール呼び出しが(ツール名と引数名のみ)記録されます。--net declared を指定すると、サーバーの HTTPS_PROXY をローカルの許可リストプロキシに向け、判定時にサーバーが申告したホストのみに制限します(ホストを選ぶには --net host1,host2 を指定します)。インストールフックが stdio サーバーをブロックすると、代替手段としてこのコマンドが表示されます。HTTPS_PROXY を無視するクライアントはネットワークから隔離されず、ガードは起動時にその旨を伝えます。
--contain(0.7.9)を追加すると、サーバーを OS サンドボックスでも実行できます。macOS では sandbox-exec、Linux では bwrap(bubblewrap)を使います。プロジェクトディレクトリ、/tmp、パッケージキャッシュは書き込み可能なままです。それ以外の $HOME は読み取り専用で、認証情報ディレクトリ(~/.ssh、~/.aws、~/.config/gh、~/.kube、~/.docker、キーチェーン、エージェント設定フォルダーなど)は一切読み取れません。macOS では、ローカルプロキシ以外へのすべての外向き接続もサンドボックスで禁止されます。未申告のホストには、ログに記録された高速な 403 が返されるため、テレメトリー呼び出しは無害に失敗し、ツールの動作は続きます。終了サマリーにはその件数が含まれます。Windows では WSL を使ってください。いずれのサンドボックスも利用できない場合、ガードはサンドボックスなしで実行し、その旨を伝えます。
claude mcp add crm -- npx -y vet-skills run --contain --net declared -- npx -y @acme/crm-mcp
認証情報ブローカー:--secrets(0.7.13)
ほとんどの MCP サーバーは環境変数に API キーを必要とします。また、GitHub を呼び出すために
GITHUB_TOKEN を読み取るサーバーは、その値を別の場所に送信することも簡単にできます。
--secrets NAME=host[,NAME=host…] を使うと、サーバーが値を取得することはありません。環境変数には
プレースホルダーが設定され、ガードが実際の値を保持し、ガードのプロキシがバインドされたホストへの
リクエストにのみ値を挿入します。別の場所に送信されたプレースホルダーはランダムな文字列であり、
ガードはその試みを報告し(✕ sent the GITHUB_TOKEN placeholder to collect.evil.xyz)、逸脱として記録します。
GITHUB_TOKEN=ghp_… vet-skills run --secrets GITHUB_TOKEN=api.github.com -- npx -y @acme/github-mcp
仕組み:プロキシは、その実行のためだけに作成された一時的な CA の証明書を使って、許可されたホストの
TLS を終端します(openssl、キーはアクセス権が 0700 のディレクトリに保存され、終了時に削除されます)。
サーバーは NODE_EXTRA_CA_CERTS、
SSL_CERT_FILE、REQUESTS_CA_BUNDLE、CURL_CA_BUNDLE、GIT_SSL_CAINFO を通じてその証明書を
信頼します。これらの環境変数で、Node、Python、curl、Go、Rust のクライアントをカバーします。
ヘッダー、URL、最大 4 MB の本文が書き換えられます。--secrets を指定すると、バインドされたホストへの
ネットワーク制限も有効になります(範囲を広げるには --net を追加します)。証明書をピン留めする
クライアントは実行時の CA を拒否します。その場合は --secrets を使わずに --net を使用してください。
カナリー認証情報:ヒューリスティックではなく、証明による検出
vet-skills canary install
実際の認証情報ファイルの隣に、デコイとなる認証情報ファイルを配置します(~/.aws/credentials.old、
~/.config/gh/hosts.yml.old、~/.npmrc.old、~/.ssh/id_rsa_old、~/.env.old)。ファイルが
存在しない場合に限り配置し、ランダムな値は ~/.vet-skills/canaries.json に保存します。正規の
ソフトウェアが忘れられたバックアップを読み取ることはないため、エージェントが送信したものやツールが
返したものにカナリー値が現れた場合、それは必然的に情報の持ち出しです。フックはセッションを停止し、
ファイルの種類を示します(値は決して示しません)。vet-skills run は呼び出しを拒否します。
vet-skills canary で一覧を表示でき、canary remove は内容が書き込んだときのまま完全に一致する
ファイルのみを削除します。
あなたが求めた操作は許可されます
認証情報を読み取る行為がすべて攻撃とは限りません。フックはセッションごとの意図の記録を保持します。
これは、プロンプトで指定したホストとパス(UserPromptSubmit フックで抽出。プロンプト自体は保存されません)
と、あなた自身のツール呼び出しがアクセスしたホストとパスを記録します。スキルの機密性の高い操作が
直近 30 分間の記録と一致する場合、1 行の通知とともに許可され、範囲を限定した許可(このセッション、
このスキル、このリソース、30 分間)として記録されます。説明できる根拠がない同じ操作は保留され、
エージェントにはあなたに確認するよう伝えます。
vet-skills runtime allows # scoped allows this week, with the reason
vet-skills runtime revoke <id> # revoke one now
ポリシーの context: を設定すると、種類ごとにこの機能を無効にできます(credential_read: hold)。
意図を判定するモデルはありません。一致がルールであり、そのルールは表示されます。
すでに設定されている内容を確認する
vet-skills discover # every MCP server, skill, plugin and hook on this machine, with verdicts
Claude Code、Cursor、Windsurf、Claude Desktop、Gemini CLI、Codex の設定をローカルで読み取ります。 各サーバー名とスキル名を照合し、判定を取得します。それ以外の情報がマシンの外に送られることは ありません。組織に登録されている場合は、名前の一覧もチームの Discovery ページに報告されます。 環境変数の値、引数、ファイルの内容が送信されることはありません。
また、インストーラーを装ったファイルの特徴(コミットされた ZIP または .bat、LuaJIT ランタイム、
.txt として保存された Lua、Agent Lure Stealer の IOC に一致するファイル)がないか、インストール済みの
各スキルフォルダーを検査します。さらに、設定ファイルに貼り付けられた認証情報の値を種類と行番号のみで
検出します。値そのものが表示されたり、送信されたりすることはありません。
動作内容
すべての skills add、claude plugin install、claude mcp add は、実行前にアーティファクトのハッシュへ
解決され、照合され、ポリシーに照らして評価されます。
$ vet-skills check deploy-helper
Resolving deploy-helper …
vet-skills 0.7.8 · policy acme/default-strict
BLOCKED 14/100 [email protected] · devtools-cloud · 4,210 installs
Observed in sandbox (3 scenarios, 38s):
✕ network telemetry-cdn.xyz — undeclared
✕ memory wrote agent memory (1)
✕ filesystem reads ~/.ssh/id_ed25519, ~/.aws/credentials, ~/.npmrc
! tools shadows github.create_pr
Policy acme/default-strict:
✕ publisher blocked devtools-cloud is on the block list
✕ Blocked [email protected] · publisher devtools-cloud is blocked by policy
Pin instead: [email protected] (score 88)
判定:許可、サンドボックス(制限付きでインストール)、承認が必要 (インストールはレビュー担当者の確認まで保留)、ブロック(最後の安全なバージョンを提示)、 保留(未評価:先にデトネーションを実施)、監視(組織での強制適用はオフ。ログのみ)。
フェイルオープン
判定 API に接続できず、キャッシュにも何もない場合、ポリシーの offline ルールが適用されます。
デフォルトでは警告を出して許可されます。こちら側で障害が発生しても、作業が止まることはありません。
フェイルクローズにするには、ポリシーで offline: block を設定してください。
個人利用と組織利用
個人利用:個人用ポリシーは ~/.vet-skills/policy.yaml にあります(vet-skills policy show)。
判定の照会(スキル名、バージョン、ハッシュ)と匿名のクライアント ID 以外は送信されません。
組織利用:vet-skills join <org> --token <enroll token> --email [email protected]
を実行すると、組織のポリシーに切り替わります。それ以降、フックはインストール済みのスキル名、バージョン、ハッシュ、判定も組織のダッシュボードに報告します。コード、プロンプト、環境変数、ファイルの内容は決して送信されません。vet-skills leave を実行すると元に戻ります。
コマンド
| コマンド | 説明 |
|---|---|
check <skill> | 判定をドライランします。ブロックされた場合は終了コード 2 を返します。 |
try <pkg|pypi:name|owner/repo|path> | 取得してハニーポット内で実行し、動作内容とエージェントにかかるコストを出力します。 |
run [--contain] [--deny t,glob*] [--net declared|hosts|off] [--secrets NAME=host,…] -- <cmd…> | stdio MCP サーバーを保護します。ツールを拒否し、ネットワーク接続先を固定し、シークレットを仲介し、すべての呼び出しを記録します。 |
install <skill> | チェックしてから npx skills add を実行します。注意が必要な場合は確認を求めます。 |
detonate <skill|path> | サンドボックスでの実行を強制します。 |
why <skill> | 最後の判定と、その根拠となったルールを表示します。 |
join <org> --token <t> --email <e> / leave | 組織モードをオン/オフにします。 |
policy show / policy set <file> | 個人用ポリシーを管理します。 |
block <skill> [--reason] | 個人用ブロックリストに追加します。 |
status | 組織、ポリシーのバージョン、キャッシュ、保留中の承認を表示し、ポリシーを同期します。 |
discover [--project] [--json] | このマシン上のエージェント設定を一覧表示します。登録済みの場合、名前を組織に報告します。 |
mcp | stdio 経由で MCP サーバーとして実行します(check_skill、search_skills)。 |
hook install [claude-code | cursor | codex | windsurf | gemini | all] | 対応するエージェントのフックを登録します(~/.claude/settings.json、~/.cursor/hooks.json、~/.codex/hooks.json、~/.codeium/windsurf/hooks.json、~/.gemini/settings.json)。 |
hook windsurf、hook gemini | 各イベントで Windsurf(Cascade)/Gemini CLI によって呼び出されます。終了コード 2 でブロックし、その理由をエージェントに伝えます。 |
hook eval | エージェントによって呼び出されます。標準入力からフックの JSON を読み取ります。 |
環境変数:KILLERSKILLS_API(デフォルトは https://killerskills.ai)、VET_SKILLS_HOME(デフォルトは ~/.vet-skills)、NO_COLOR。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。