skill-finder
概要
結果は意味的類似度でランク付けされ、インストールコマンドも表示されます。
使い方
/skill-finder
次に、タスクを平易な言葉で記述してください。例:
- 「Kubernetesクラスターをロールバック付きでデプロイする」
- 「JavaScriptレンダリング対応のWebページをスクレイピングする」
- 「SQLマイグレーションを作成して実行する」
仕組み
- 記述内容をQwen3-Embedding-0.6B(Ollama経由)を使用してローカルで埋め込みベクトル化します。
- その埋め込みベクトルを、33,000以上のスキルの事前構築済みFAISSインデックスと比較します。
- 上位のマッチ結果をスキル名、説明、インストールコマンドとともに返します。
インデックスは完全にデバイス上で動作するため、検索中にネットワークリクエストは発生しません。
エージェント向け指示
このスキルがトリガーされたら、以下のワークフローを厳密に実行してください。
黙って作業すること。 内部ステップ(クエリのリフレーミング、検索、パース、再ランク付け)はすべてユーザーに説明せずに実行し、最終結果とフォローアップの提案のみを出力してください。「クエリをリフレーミングしています…」や「Tier 1検索を実行中…」といった発言は絶対に行わないでください。
注意: スキルはサードパーティコードです。未知の作者からインストールする前に、必ずスキルリンクを確認してください。
プラットフォームフィルタ: デフォルトでは
--platformを適用しないでください。インデックスは全プラットフォームのスキルをカバーしており、多くのスキルは複数のエージェントで動作します。ユーザーが明示的にプラットフォーム固有の検索を要求した場合のみ(例:「Claude Codeのスキルを探して」)、--platform <値>を渡してください。値の例:claude_code、openclaw、codex。
ステップ0 — 利用可能性の確認
クエリをリフレーミングする前に、インデックスとOllamaが利用可能かを確認するため以下を実行します:
python scripts/search.py "test" --json
これが OllamaNotAvailableError または FileNotFoundError で失敗した場合、ユーザーに以下を提案します:
「ローカル検索は利用できません。GitHubコード検索(ランクなし、品質シグナルなし)にフォールバックできます。最良の結果を得るにはGITHUB_TOKENを設定してください。続行しますか?」
ユーザーが同意した場合、ステップ2~3のすべての検索コマンドに --remote を追加します。
ステップ1 — クエリのリフレーミング
検索前に、ユーザーのリクエストを簡潔でキーワード豊富な検索クエリに書き換え、意味的再現性を向上させます。ルール:
- 略語を展開する(例:「k8s」→「kubernetes」、「CI」→「continuous integration」)。
- 会話上のフィラーを削除する(「~したい」、「~して」、「~するスキル」など)。
- インデックスに含まれそうな関連技術用語を追加する(例:「deploy kubernetes」→「kubernetes deployment orchestration kubectl cluster」)。
- 簡潔に保つ — 10~15語程度が目標。
具体的なクエリ(例:「helmロールバックでk8sをデプロイ」)の場合は、1回のリフレーミングで十分です。
曖昧または広範なクエリ(複数の技術ドメインにまたがる、または「生産性」「AI」「自動化」のような汎用語を含む)の場合、異なる角度から2~3の代替リフレーミングを生成することはオプションですが有用です。複数生成した場合は、すべてのリフレーミングを並行してTierロジックに通し、id で重複を排除した後、マージされたプールを再ランク付けします。
リフレーミングしたクエリは、ユーザーが入力した内容と大きく異なる場合を除き、ユーザーに表示する必要はありません。
ステップ2 — 検索の実行(段階的フォールバック)
以下の順序で検索を実行し、3件以上の良いマッチが得られた時点で停止します:
Tier 1 — デフォルト(品質優先、全プラットフォーム):
python scripts/search.py "<リフレーミングされたクエリ>" --json --propose 5 --min_stars 10
Tier 2 — スター閾値を緩和(Tier 1で3件未満の良いマッチの場合):
python scripts/search.py "<リフレーミングされたクエリ>" --json --propose 5
ルール:
--propose 5がデフォルトです。広範なクエリの場合やユーザーがより多くのオプションを求めた場合は--propose 10に増やしてください。ユーザーが結果数を指定した場合(例:「10個見せて」)はその数値を直接使用します。--platform <値>は、ユーザーが明示的にプラットフォーム固有の検索を要求した場合のみ追加します(例:「OpenClawのスキルを探して」)。その場合、両方のTierに適用します。- ClawHub由来のスキルはOpenClaw専用です —
claude_codeのインストールコマンドはありません。表示する際は常に (openclaw only — Claude Codeではインストール不可) とラベル付けします。 - ユーザーが明示的にスター閾値を指定した場合(例:「よく知られたスキルのみ」や「最低50スター」)は、
--min_stars 10の代わりにその値を使用します。 - ユーザーが少数の結果を求めた場合(例:「上位3つだけでいい」)は、表示数を調整します。
- Tier 2の結果については、応答にフィルタを緩和した旨を記載します(ステップ5参照)。
ステップ3 — パースと閾値チェック
JSON出力をパースします。各結果には sim_score フィールド(0.0~1.0)が含まれますが、これは内部使用のみであり、ユーザーに表示してはいけません。
すべてのTierの結果すべてにおいて sim_score < 0.4 の場合、「強いマッチが見つかりませんでした」とユーザーに警告します:
そのクエリに対して強いマッチは見つかりませんでした。より具体的なキーワードで言い換えてみてください。
ステップ4 — 再ランク付け
各結果の description をユーザーの意図と照らし合わせて読み、以下を優先します:
- ユーザーの実際のタスクとの意味的関連性(主要シグナル)
- スター数(
quality.stars)— 多いほどコミュニティでの検証度が高い - ソース — 弱いタイブレーカーのみ:関連性とスター数が同程度の場合、公式検証済みスキルを優先します。ソースレジストリのみを理由にスキルをペナルティしたり降格したりしないでください。
プラットフォーム-ソースの整合性ルール: clawhub はOpenClawのレジストリです。ユーザーが claude_code(または openclaw 以外のプラットフォーム)を要求した場合、clawhub のみをソースとするスキルは最終手段として扱い、スター数に関係なく他のすべてのソースより下にランク付けし、より良いソースの代替が存在しない場合にのみ含めてください。スキルのソースに clawhub と別のレジストリ(例:marketplace)の両方が含まれる場合は、ランク付けに clawhub 以外のソースを使用します。
デフォルトで3~5件の結果を表示します。5件を超える表示はオプションであり、ユーザーが明示的により多くのオプションや高い数を指定した場合にのみ行ってください。
ステップ5 — 結果の表示
以下の正確なフォーマットを使用します:
「<ユーザーの元のクエリ>」のスキルをN件見つけました:
1. **pptx** ⭐ 2,810 スター [official]
任意の.pptxファイルを変換 — スライドの読み取り、テキスト抽出、プレゼンテーション生成…
インストール: `/skill install pptx` _(失敗した場合は、以下のスキルリンクを参照)_
スキル: https://github.com/anthropics/skills/blob/main/skills/pptx/SKILL.md
2. **pptx-skill** ⭐ 126 スター
HTMLスライドをPowerPoint(PPTX)ファイルに変換…
インストール: `/plugin install pptx-skill` _(失敗した場合は、以下のスキルリンクを参照)_
スキル: https://github.com/vkehfdl1/slides-grab/blob/main/SKILL.md
> スキルインデックスは定期的なWebクロールにより更新されており、最新の公開スキルが含まれていない場合があります。
Skill: リンクには結果の skill_md_url を使用します。skill_md_url が空の場合のみ repo_url にフォールバックします。
バッジとラベル:
[official]はis_official: true(anthropics/* マーケットプレイススキル)の場合のみ追加します。platformsにclaude_codeが含まれない場合は (openclaw only — Claude Codeではインストール不可) を追加します。- 出力に生のソースレジストリ名(
skillsmp、clawhub、topic、skillhub、marketplace)を表示しないでください。
インストールコマンド(常に install_cmd フィールドのそのままの値を使用し、推測したり自分で構築したりしないでください):
| 条件 | インストール行 |
|---|---|
is_official: true(anthropics/*) | インストール: /skill install <名前> _(失敗した場合は、以下のスキルリンクを参照)_ |
install_cmd があるコミュニティスキル | インストール: /plugin install <名前> _(失敗した場合は、以下のスキルリンクを参照)_ |
install_cmd が空 | 直接インストールできません — スキルリンクを参照してください。 |
sim_score をユーザーに表示しないでください。
デフォルトでは install_cmd の claude_code エントリのみを表示します。ユーザーが尋ねた場合のみ、他のプラットフォームが存在することを言及します。
結果がTier 2のフォールバックからのものである場合、鮮度に関する免責事項の後に以下のメモを追加します:
「このクエリではトップ評価のマッチが限られていたため、これらの結果にはスター数の少ないスキルが含まれています。」
ステップ6 — 次のステップの提案
すべての応答を次のように締めくくります:
「インストールする前に、いずれかのスキルの完全なSKILL.mdを取得しますか?」