Skills Anywhere:各 AI ツールの SKILL.md を 1 つのカタログにまとめ、dsh や MCP から必要に応じて読み込む

各 AI ツールやプラグイン、Git にある Agent Skills を 1 つのカタログにまとめ、dsh やローカル MCP から読み込めます。ファイル検査とハッシュ検証付き。

dsh-skills-anywhere(Skills Anywhere)は、各 AI コーディングツールのディレクトリに散らばった Agent Skills(SKILL.md)を 1 つのカタログにまとめ、2 つの方法で提供します。DeepSeek Harness(dsh)のスキル provider として使う方法と、ローカルの stdio MCP サーバーとして使う方法です。あわせて、スキルファイルが完全かどうかのチェック、読み込み時のコンテンツハッシュの検証、ある指示が実際にエージェントに届いたかどうかの記録といった確認手段も備えています。

解決したい問題

Claude Code、Codex、Cursor、Gemini CLI、Windsurf、Kiro、Goose などのクライアントは、それぞれ別のプロジェクト単位・ユーザー単位のディレクトリからスキルを読み込むため、同じスキルを何か所にもコピーすることになりがちです。Skills Anywhere はこれらのディレクトリをコピーせず、その場で読み込みます。集約するソースは次のとおりです。

  • 各エージェントの既定ディレクトリ:プロジェクト単位とユーザー単位のパスです。完全な一覧は src/agents.ts にあり、手元のマシンに実際にどのディレクトリがあるかは npx dsh-skills-anywhere agents で確認できます。
  • Claude Code のプラグインマーケットプレイス:~/.claude/plugins/marketplaces/*/plugins/*/skills/*。
  • Git ソース:リポジトリ、サブディレクトリ、ブランチ、タグ、コミットを指定できます。ローカルに checkout を 1 つ保持し、解決したコミットを lock.json に記録します。デフォルトでは 6 時間ごとにバックグラウンドで同期します。

名前の重複は決定的に処理されます。まずソースの優先度で並べ替えます(プロジェクト単位 250、ユーザー単位 550、Claude プラグイン 580、Git ソース 700。値が小さいほうが優先)。同じファイルを指すシンボリックリンクと、内容がバイト単位で同一のエントリは統合します。名前が同じで内容が異なるエントリは、discord-access と telegram-access のように接頭辞を付けて改名します。doctor コマンドは、すべての修復・スキップ・改名を理由とともに一覧表示します。

dsh で使う場合と MCP で使う場合

dsh では、組み込みの ctx.skills レジストリに provider を 1 つ追加します。これで、モデルが元から持つ skill ツールと /name 呼び出しから、より多くのスキルが見えるようになります。スキルが増えると、毎回のリクエストに全スキルの概要を付けるだけでコンテキストを大きく消費するため、「カタログ予算」を設けています。デフォルトでは、順位が上位 50 件のスキルだけをモデルに見えるカタログに載せます。残りのスキルはカタログに載りませんが、/name で呼び出すことも、find_skills(キーワード検索)や open_skill(名前を指定して読み込み)で見つけることもできます。作者が frontmatter で disable-model-invocation: true を設定したスキルは、open_skill でも読み込みを拒否します。これは組み込みの skill ツールと同じ挙動です。

dsh 以外では、dsh-skills-anywhere mcp がローカルの stdio MCP サーバーを起動し、list_skills、find_skills、open_skill の 3 つのツールを提供します。各スキルは skill://<name> リソースとしても公開されます。旧来の初期化フローと、プロトコルバージョン 2026-07-28 のハンドシェイクの両方に対応しており、リポジトリでは実際のサブプロセス接続上で 4 種類の SDK 構成と、インストール済みの npm パッケージをテストしています。

読み込む前に確認する

  • ファイルチェック:check は provider と同じパーサーで SKILL.md を検査し、自動修復した項目と隠し文字(不可視文字や文字の表示方向を変える文字)を報告して、ファイルハッシュ付きの JSON を出力します。--resources を付けると、ローカルの Markdown リンクが指すファイルが存在するかどうかも確認します。リポジトリには、チェック結果を PR コメントとして付けられる GitHub Action も用意されています。
  • ハッシュ指定の読み込み:MCP の open_skill は元ファイルの SHA-256 を返します。呼び出し時にレビュー済みの expected_sha256 を渡すと、レビュー後にファイルが変更されていた場合、サーバーは指示を返しません。bundle コマンドはスキルディレクトリ全体のファイル一覧を生成し、対応する expected_bundle_sha256 を使えば「SKILL.md は変わっていないが、スクリプトが変わった」というケースも検出できます。
  • 読み込みレシート:open_skill が成功するたびにレシートが返されます。実際に渡した指示本文、元ファイル、任意でディレクトリバンドルを示すもので、tool span に添付してタスクの結果と一緒に検証できます。
  • スキル選択の検証(0.16.0 で追加):route prepare は、1 つのタスクについて開くことのできる候補スキルを最大 8 件生成し、各候補にソース、パス、コンテンツハッシュを付けます。分類器、LLM、または人が選択を書いたあと、route apply はその選択を信頼できない入力として検証し、selected、no_match、abstain、stale、invalid_input のいずれか 1 つの結果だけを出力します。この過程では、スキルの読み込みも実行もネットワーク接続も行いません。

試し方

Node.js 22.19 以降または 24 以降が必要で、Git ソースを使う場合は別途 git が必要です。まず、手元のマシンで見つかるスキルを確認します。

npx dsh-skills-anywhere list
npx dsh-skills-anywhere add anthropics/skills        # Git ソースを追加する
npx dsh-skills-anywhere@0.16.0 check path/to/SKILL.md --resources --json

DeepSeek Harness に組み込む場合(0.1.5-rc.1 以降が必要):

dsh plugin --profile web add dsh-skills-anywhere

MCP サーバーとして Claude Code に接続する場合は次のとおりです。Cursor と Codex での設定方法は README にあります。

claude mcp add skills-anywhere -- npx -y dsh-skills-anywhere mcp

インストールせずに試したい場合は、Hugging Face 上のインタラクティブなデモで、サンプルのワークスペースを使って名前の重複処理を確認したり、カタログ予算を調整したり、カタログの一覧を比較したりできます。アップロードしたファイルはブラウザ内だけで処理されます。

制約と注意点

  • レシートが証明するのは指示が「届いた」ことだけで、エージェントがそのとおりに動いたことは証明しません。権限管理にも関与しません。compatibility や allowed-tools は作者による宣言にすぎず、実際の動作要件とツール権限はクライアントが決めます。
  • check が確認するのはローカルの Markdown リンクだけで、本文に書かれた依存関係は分析せず、スキルも実行しません。ディレクトリバンドルのダイジェストはそのディレクトリ内のファイルしか対象にしないため、外部の依存関係は別途レビューが必要です。また、ファイルが読み込み後に変更される可能性もあります。
  • route apply のデフォルトの信頼度しきい値 0.7 はキャリブレーションされていません。自分の決定器の held-out 結果をもとに決める必要があります。
  • 一度も同期に成功していない Git ソースからは、スキルが 1 つも提供されません。同期に失敗した場合は、既存の checkout が保持されます。
  • 作者が公開している小規模な実験は、「スキルを読み込めば性能が上がる」という主張を支持していません。作者は Qwen3-8B で 27 回の試行を行い、3 つのエンジニアリング構成のもとで、スキルを読み込まない条件、直接渡す条件、MCP 経由で渡す条件を比較しました。直接渡す条件と MCP 経由の条件では、タスクを完全に解決できた試行は 1 回もありませんでした。最後の構成では、むしろスキルを読み込まない条件が 3 回の試行のうち 2 回でタスクを完全に解決しました。
  • 現在のバージョンは 0.16.0(2026-09-28)で、MIT ライセンス、npm パッケージ名は dsh-skills-anywhere です。GitHub Releases にも同じ tarball が添付されています。

リンク