mcpField
A
agent-skill-discovery

agent-skill-discovery

github.com/ericgandradeエージェントワークフロー8557 回インストール24 週間前に更新
リポジトリ

agent-skill-discovery について

agent-skill-discoveryは、システムにインストールされたAI CLIリソースとリポジトリ内のリソースを一覧化する読み取り専用スキルです。プラグイン、エージェント、スキル、MCPサーバー設定を調べ、分析や推奨は行いません。

主な機能

  1. 01実行中のCLIプラットフォーム検出
  2. 02インストール済みプラグインとスキルの検索
  3. 03設定済みMCPサーバーとツールの一覧化
  4. 04現在のリポジトリ内のリソース検索
  5. 05絞り込みと並べ替え済みカタログの作成

活用シーン

  1. 01インストール済みAI CLIリソースの確認
  2. 02MCP設定と利用可能なツールの監査
  3. 03セットアップ後のスキルやプラグインの確認
  4. 04リポジトリ内のローカルリソースの検索

MCP 対応

MCP設定ファイルを読み込み、ToolSearchで設定済みサーバーのツールを一覧表示します。リソースは実行せず、サーバー情報を記録します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/ericgandrade/claude-superskills --skill agent-skill-discovery

インストール後、Claude Code で/agent-skill-discoveryを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
evals/
evals.json
trigger-eval.json

詳細

agent-skill-discovery

目的

2 つのスコープ、つまりシステムにインストールされているリソースと、現在のリポジトリに存在するリソースを対象に、AI CLI リソースを自動で一覧化します。このスキルは、現在の環境で利用可能なプラグイン、エージェント、スキル、MCP サーバーを網羅的に、プラットフォームに依存しない形でカタログ化します。

このスキルは検出専用モードで動作します。分析、推奨、オーケストレーションは行わず、リソースをスキャンして一覧表示し、提示します。サポート対象のすべての AI CLI プラットフォームにおいて、リソースを把握するための基盤となります。

使用するタイミング

次の場合にこのスキルを呼び出します。

  • ユーザーがインストール済みのリソースを知りたい場合
  • 複雑なタスクを計画する前(オーケストレーションの基盤として)
  • 不足しているリソースや機能をデバッグする場合
  • 利用可能なツールや統合を監査する場合
  • 新しくインストールされたプラグインや MCP サーバーを見つける場合
  • セットアップ後にスキルのインストールを確認する場合
  • プラットフォームの機能を把握する場合
  • 現在のリポジトリにローカルエージェント、スキル、MCP 設定が含まれているか確認する場合

進捗の追跡

各ステップの前に進捗ゲージを表示し、ユーザーに状況を知らせます。

[████░░░░░░░░░░░░░░░░] 15% — Step 1/6: Scanning Plugins
[████████░░░░░░░░░░░░] 30% — Step 2/6: Scanning Skills
[████████████░░░░░░░░] 45% — Step 3/6: Scanning MCP Servers
[████████████████░░░░] 60% — Step 4/6: Scanning Repository
[██████████████████░░] 75% — Step 5/6: Applying Filters
[████████████████████] 100% — Step 6/6: Generating Catalog

並列スキャン戦略

プラットフォームの検出(ステップ 0)の後、ステップ 1~4 を 1 つのブロックで 4 つのエージェントとして同時に起動します。

エージェント役割
PluginScannerplugin.json ファイルを Glob で検索し、名前、バージョン、エージェントのメタデータを抽出します
SkillScannerSKILL.md ファイルを Glob で検索し、YAML フロントマターを解析して、名前、説明、トリガーを抽出します
McpScanner.mcp.json を読み取り、各サーバーに対して ToolSearch を実行し、ツールの一覧を作成します
RepoScanner現在の作業ディレクトリをスキャンして、ローカルエージェント、スキル、MCP 設定を検出します

各エージェントのプロンプトヘッダー:# {AgentName} — Resource Discovery Agent

4 つすべての処理が完了するまで待ち、その後フィルターを適用し(ステップ 5)、カタログを生成します(ステップ 6)。

ワークフロー

ステップ 0:プラットフォームの検出

目的: このスキルを実行している AI CLI プラットフォームを特定します。

検出方法:

プラットフォーム固有のベースディレクトリを、次の順序で確認します。

# Platform detection by directory existence
if [ -d "$HOME/.claude/skills" ] && [ -f "$HOME/.claude/skills/agent-skill-discovery/SKILL.md" ]; then
    PLATFORM="claude"
    BASE_DIR="$HOME/.claude"
elif [ -d "$HOME/.copilot/skills" ] && [ -f "$HOME/.copilot/skills/agent-skill-discovery/SKILL.md" ]; then
    PLATFORM="copilot"
    BASE_DIR="$HOME/.copilot"
elif [ -d "$HOME/.gemini/skills" ] && [ -f "$HOME/.gemini/skills/agent-skill-discovery/SKILL.md" ]; then
    PLATFORM="gemini"
    BASE_DIR="$HOME/.gemini"
elif [ -d "$HOME/.opencode/skills" ] && [ -f "$HOME/.opencode/skills/agent-skill-discovery/SKILL.md" ]; then
    PLATFORM="opencode"
    BASE_DIR="$HOME/.opencode"
elif [ -d "$HOME/.codex/skills" ] && [ -f "$HOME/.codex/skills/agent-skill-discovery/SKILL.md" ]; then
    PLATFORM="codex"
    BASE_DIR="$HOME/.codex"
else
    PLATFORM="unknown"
    BASE_DIR="$HOME"
fi

プラットフォーム設定:

5 つのプラットフォームすべてで、プラットフォーム設定は共通です。pluginsDir、skillsDir、mcpConfig のパスは、BASE_DIR からの相対パスとして同じ構造に従います。以降のすべてのパス構築には、上記の検出で解決した BASE_DIR を使用します。

ステップ 1:プラグインのスキャン

目的: インストールされているすべてのプラグインと、そのエージェントを検出します。

操作:

Glob を使用して、プラグインのマニフェストを検索します。

# Search for plugin.json files
Glob pattern: "{config.pluginsDir}/*/plugin.json"

見つかった各プラグインについて、次の操作を行います。

  1. プラグインのマニフェストを読み取る:

    Read: {plugin_path}/plugin.json
    
  2. メタデータを抽出する:

    • プラグイン名
    • プラグインのバージョン
    • プラグインの説明
    • エージェントの配列
  3. エージェントの詳細を解析する: エージェントの配列にある各エージェントについて、次の情報を取得します。

    • エージェント名
    • エージェントの説明
    • 利用可能なツール(Glob、Grep、Read、Write、Bash など)
    • エージェントの色/カテゴリ(指定されている場合)

データ構造:

{
  "name": "feature-dev",
  "version": "1.0.0",
  "description": "Feature development workflow automation",
  "agents": [
    {
      "name": "code-explorer",
      "description": "Deeply analyzes existing codebase features",
      "tools": ["Glob", "Grep", "Read", "Bash"]
    },
    {
      "name": "code-architect",
      "description": "Designs feature architectures",
      "tools": ["Glob", "Grep", "Read", "Write"]
    }
  ]
}

エラーの適切な処理:

  • プラグインディレクトリが存在しない場合:空のプラグイン配列を返します
  • plugin.json の形式が正しくない場合:警告を記録し、そのプラグインをスキップして続行します
  • agents 配列がない場合:エージェント数 0 のプラグインを含めます
ステップ 2:スキルのスキャン

目的: インストールされているすべてのスキルと、そのメタデータを検出します。

操作:

Glob を使用して、スキル定義を検索します。

# Search for SKILL.md files
Glob pattern: "{config.skillsDir}/*/SKILL.md"

見つかった各スキルについて、次の操作を行います。

  1. スキルファイルを読み取る:

    Read: {skill_path}/SKILL.md
    
  2. YAML フロントマターを解析する: --- 区切り文字の間にある YAML ブロックを抽出します。

    ---
    name: skill-creator
    description: "This skill should be used when..."
    triggers:
      - "create a skill"
      - "new skill"
    version: 1.0.0
    category: development
    ---
    
  3. メタデータを抽出する:

    • スキル名
    • 説明
    • トリガー(フレーズの配列)
    • バージョン
    • カテゴリ
    • タグ(存在する場合)

データ構造:

{
  "name": "skill-creator",
  "version": "1.0.0",
  "description": "This skill should be used when the user wants to create a new skill",
  "category": "development",
  "triggers": ["create a skill", "new skill", "build a skill"],
  "tags": ["automation", "scaffolding"]
}

エラーの適切な処理:

  • スキルディレクトリが存在しない場合:空のスキル配列を返します
  • SKILL.md に YAML フロントマターがない場合:そのスキルをスキップして続行します
  • 必須フィールド(名前、説明)が不足している場合:警告を記録してスキップします
  • triggers が空の場合:空のトリガー配列を持つスキルを含めます
ステップ 3:MCP サーバーをスキャンする

目的: 設定済みの MCP サーバーと、利用可能なツールを検出します。

アクション:

3.1 MCP 設定を読み込む:

# Check if MCP config exists
Read: {config.mcpConfig}

ファイルが存在する場合は、JSON を解析します:

{
  "mcpServers": {
    "claude_ai_Notion": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@anthropic-ai/mcp-server-notion"]
    },
    "plugin_playwright": {
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/playwright-mcp/index.js"]
    }
  }
}

3.2 利用可能なツールを検出する:

ToolSearch でパターン mcp__{server_name}__* を使用し、設定済みの各 MCP サーバーで利用可能なツールを一覧表示します。結果からツール一覧を作成します。ToolSearch に失敗した場合は、そのサーバーのツールを「利用不可」として記録し、続行します。

3.3 MCP サーバー一覧を作成する:

{
  "name": "claude_ai_Notion",
  "type": "stdio",
  "command": "npx -y @anthropic-ai/mcp-server-notion",
  "tools": [
    {
      "name": "notion-search",
      "fullName": "mcp__claude_ai_Notion__notion-search",
      "description": "Search Notion pages and databases"
    },
    {
      "name": "notion-create-pages",
      "fullName": "mcp__claude_ai_Notion__notion-create-pages",
      "description": "Create new Notion pages"
    }
  ],
  "toolCount": 5
}

エラーへの対処:

  • .mcp.json が存在しない場合:空の MCP 配列を返します
  • .mcp.json の形式が正しくない場合:警告を記録し、空の配列を返します
  • ToolSearch に失敗した場合:サーバー情報を使って続行し、ツールを「利用不可」として記録します
  • サーバーでツールが見つからない場合:toolCount = 0 としてサーバーを含めます
ステップ 4:現在のリポジトリをスキャンする

目的: ユーザーが現在作業しているリポジトリ内のローカルリソースを検出します。

範囲:

現在の作業ディレクトリからスキャンします(利用可能な場合はリポジトリのルート)。ハードコードされた絶対パスは使用しないでください。

4.1 ローカルエージェントを検出する:

一般的な規約に従って、エージェントのマニフェストを検索します:

  • agents 配列を含む **/plugin.json ファイル
  • **/agents/*.md および **/agents/*.json
  • **/.claude/agents/* および同様のプラットフォーム固有のエージェントフォルダー

候補ごとに:

  • 安全に解析します(JSON/YAML/Markdown メタデータ)
  • エージェント名、説明、ソースパスを抽出します
  • リソースのスコープを local に設定します

4.2 ローカルスキルを検出する:

一般的な規約に従って、スキル定義を検索します:

  • **/skills/*/SKILL.md
  • **/.*/skills/*/SKILL.md(リポジトリ内の非表示プラットフォームフォルダー)

インストール済みスキルと同じ検証ルールを使用して、YAML フロントマターを解析します。

4.3 ローカル MCP 設定を検出する:

一般的な規約に従って、MCP 設定ファイルを検索します:

  • ./.mcp.json
  • ./mcp.json
  • ./.config/mcp.json
  • **/.mcp.json(ネストされたワークスペースフォルダー)

複数のファイルが存在する場合:

  • 有効な設定をすべて解析します
  • サーバー名で統合します
  • サーバー名とコマンドで照合して、インストール済みスコープと重複する項目を排除します

4.4 重複排除ルール:

  • インストール済みとローカルの一覧は、それぞれ別のセクションに保持します
  • 各セクション内では、正規化した名前で重複を排除します
  • 同じリソースが両方のスコープに存在する場合は、両方のエントリを保持し、スコープを明示します

エラーへの対処:

  • リポジトリにローカルリソースがない場合:空のローカル配列を返します
  • ローカルファイルの形式が正しくない場合:そのファイルをスキップしてスキャンを続行します
  • リポジトリのルートを特定できない場合:現在の作業ディレクトリを代わりに使用します
ステップ 5:フィルターを適用する(任意)

目的: ユーザーが指定した条件に基づいて結果を絞り込みます。

フィルターの種類:

5.1 リソースの種類別:

# User request: "list only plugins"
# Filter: Show only plugins, hide skills and MCPs

# User request: "show MCP servers"
# Filter: Show only MCP servers, hide plugins and skills

5.2 カテゴリー別:

# User request: "show development skills"
# Filter: skills.filter(s => s.category === 'development')

# User request: "list content tools"
# Filter: skills.filter(s => s.category === 'content')

5.3 キーワード検索:

キーワードで絞り込みます。検索語を、プラグイン名、スキル名と説明、トリガーフレーズ、MCP サーバー名、ツール名に対して大文字と小文字を区別しない部分一致で照合します。一致したエントリのみを返します。

フィルターの判定:

ユーザーのリクエストからフィルターの意図を判定します:

  • 「only」「just」「show me」→ 種類によるフィルター
  • 「related to」「about」「for」→ キーワード検索
  • カテゴリー名(development、content、analysis)→ カテゴリーによるフィルター
ステップ 6:カタログを生成する

目的: 検出したリソースを、整然とした構造の Markdown で提示します。

出力形式:

# 📦 Resource Discovery Report

**Platform:** {platform_name}
**Scan Date:** {YYYY-MM-DD HH:MM:SS}

---

# 📦 Installed Resources

## 🔌 Plugins ({count})

### {plugin_name} v{version}
**Description:** {description}

**Agents ({count}):**
- `{agent_name}` - {description}
  - **Tools:** {tool1}, {tool2}, {tool3}

---

## 🛠️ Skills ({count})

### {skill_name} v{version}
**Description:** {description}
**Category:** {category}
**Triggers:** `{trigger1}`, `{trigger2}`, `{trigger3}`

---

## 🌐 MCP Servers ({count})

### {server_name} ({type})
**Status:** {✅ Connected | ⚠️ Disconnected}
**Command:** `{command} {args}`

**Tools ({count}):**
- `{tool_name}` - {description}

---

# 📁 Current Repository Resources

**Repository Path:** {cwd}

## 🔌 Local Agents ({count})

### {agent_name}
**Description:** {description}
**Source:** `{relative_path}`

## 🛠️ Local Skills ({count})

### {skill_name} v{version}
**Description:** {description}
**Source:** `{relative_path}`

## 🌐 Local MCP Servers ({count})

### {server_name} ({type|unknown})
**Source Config:** `{relative_path}`
**Command:** `{command_or_unknown}`

---

## 📊 Summary

- **Installed Plugins:** {count}
- **Installed Agents:** {count}
- **Installed Skills:** {count}
- **Installed MCP Servers:** {count}
- **Installed MCP Tools:** {count}
- **Local Agents:** {count}
- **Local Skills:** {count}
- **Local MCP Servers:** {count}

表示ルール:

  1. リソース数:

    • セクション見出しに常に件数を表示します
    • 最後に概要を含めます
  2. 並べ替え:

    • プラグイン/エージェント/スキル/MCP:名前のアルファベット順
  3. 空のセクション:

    • インストール済みリソースがない場合:「インストール済みのものはありません」と表示します
    • 現在のリポジトリにローカルリソースがない場合:「現在のリポジトリに見つかりませんでした」と表示します
    • 例:## 🔌 Plugins (0)\n\nNone installed.
  4. ツール一覧:

    • エージェント:ツール名をカンマ区切りで表示します
    • MCP サーバー:説明付きの箇条書きで表示します
  5. ステータス表示:

    • MCP 接続済み:✅
    • MCP 切断:⚠️
    • ステータス不明:❓

重要なルール

決して行わないこと:
  • ❌ プラットフォーム名やパスをハードコードしないでください(常に動的に検出してください)
  • ❌ ディレクトリ構造が存在すると決めつけないでください(まず確認し、適切に処理してください)
  • ❌ リソースを実行しないでください(読み取りと一覧表示のみ行ってください)
  • ❌ リソースを分析したり、推奨したりしないでください(それはオーケストレーターの役割です)
  • ❌ プラットフォームの検出手順を省略しないでください
  • ❌ 検出の前提がないまま、プラットフォーム固有のツール名を使用しないでください
  • ❌ 1つのリソースに不備があっても失敗しないでください(スキップして続行してください)
  • ❌ メタデータの欠落について決めつけないでください(デフォルト値を使うか、スキップしてください)
  • ❌ ユーザーが全件の検出を求めている場合に、リポジトリのスコープを省略しないでください
必ず行うこと:
  • ✅ 実行時にプラットフォームを自動検出してください
  • ✅ リソースを動的にスキャンしてください(毎回新たに検出してください)
  • ✅ ファイルの検出には Glob を使用してください(ハードコードした ls や find は使用しないでください)
  • ✅ JSON/YAML の解析には Read を使用してください(cat や grep は使用しないでください)
  • ✅ ディレクトリやファイルが見つからない場合も適切に処理してください(エラーではなく空の配列を返してください)
  • ✅ 整然と構造化された Markdown 出力を提示してください
  • ✅ すべてのセクションにリソース数を含めてください
  • ✅ ヘッダーにプラットフォーム名とタイムスタンプを表示してください
  • ✅ インストール済みスコープに加えて、現在のリポジトリもスキャンしてください
  • ✅ インストール済みリソースとリポジトリ内のリソースは、別々のセクションに表示してください
  • ✅ 各セクション内でリソースをアルファベット順に並べてください
  • ✅ 解析前に JSON/YAML を検証してください(try-catch)
検出の原則:
  • ゼロ設定: 実行時にパスを検出し、ハードコードしないでください
  • 安全な失敗処理: リソースが見つからない場合はエラーではなく空の配列を返してください
  • プラットフォーム非依存: 5つすべてのプラットフォームで同じ出力形式を使用してください
  • 二重スコープ: インストール済みスコープと現在のリポジトリスコープを必ず調査してください
  • 読み取り専用: リソースを変更、実行、推奨しないでください
  • 最新のスキャン: キャッシュせず、呼び出しのたびに新たにスキャンしてください

使用例

例1:全件一覧

ユーザーのリクエスト:

"What do I have installed?"

出力:

# 📦 Installed Resources

**Platform:** Claude Code
**Scan Date:** 2026-02-07 14:32:15

---

## 🔌 Plugins (3)

### commit-commands v1.0.0
**Description:** Git commit workflow automation

**Agents (3):**
- `commit` - Create git commits with best practices
  - **Tools:** Bash, Read, Grep
- `commit-push-pr` - Commit, push, and open pull request
  - **Tools:** Bash, Read, Grep
- `clean_gone` - Clean up deleted remote branches
  - **Tools:** Bash

### feature-dev v1.2.0
**Description:** Feature development workflow automation

**Agents (3):**
- `code-explorer` - Deeply analyzes existing codebase
  - **Tools:** Glob, Grep, Read, Bash
- `code-architect` - Designs feature architectures
  - **Tools:** Glob, Grep, Read, Write, Bash
- `code-reviewer` - Reviews code for quality issues
  - **Tools:** Glob, Grep, Read, Bash

### plugin-dev v1.0.0
**Description:** Claude Code plugin development tools

**Agents (5):**
- `create-plugin` - Guided plugin creation workflow
  - **Tools:** Read, Write, Bash
- `skill-development` - Skill creation and optimization
  - **Tools:** Read, Write, Grep
- `command-development` - Slash command development
  - **Tools:** Read, Write
- `hook-development` - Plugin hook development
  - **Tools:** Read, Write, Grep
- `agent-development` - Agent creation and configuration
  - **Tools:** Read, Write

---

## 🛠️ Skills (8)

### agent-skill-discovery v1.0.0
**Description:** This skill should be used when the user wants to see all installed resources
**Category:** discovery
**Triggers:** `what do I have installed`, `list available resources`, `show my agents`

### audio-transcriber v1.0.0
**Description:** Transform audio recordings into professional Markdown documentation
**Category:** content
**Triggers:** `transcribe audio`, `convert audio to text`

### prompt-engineer v1.0.0
**Description:** Transforms user prompts into optimized prompts using frameworks
**Category:** optimization
**Triggers:** `improve this prompt`, `optimize prompt`, `enhance prompt`

### skill-creator v1.0.0
**Description:** This skill should be used when the user asks to create a new skill
**Category:** development
**Triggers:** `create a skill`, `new skill`, `build a skill`

### youtube-summarizer v1.0.0
**Description:** Extract transcripts from YouTube videos and generate summaries
**Category:** content
**Triggers:** `summarize youtube`, `youtube summary`, `analyze video`

(... 3 more skills)

---

## 🌐 MCP Servers (2)

### claude_ai_Notion (stdio)
**Status:** ✅ Connected
**Command:** `npx -y @anthropic-ai/mcp-server-notion`

**Tools (5):**
- `notion-search` - Search Notion pages and databases
- `notion-create-pages` - Create new Notion pages
- `notion-fetch` - Fetch Notion page content
- `notion-update-page` - Update existing Notion pages
- `notion-get-users` - Get Notion workspace users

### plugin_playwright (stdio)
**Status:** ✅ Connected
**Command:** `node /Users/user/.claude/plugins/playwright/index.js`

**Tools (15):**
- `browser_navigate` - Navigate to URL
- `browser_click` - Click element
- `browser_type` - Type text into element
- `browser_screenshot` - Take screenshot
- `browser_evaluate` - Run JavaScript in browser
(... 10 more tools)

---

## 📊 Summary

- **Total Plugins:** 3
- **Total Agents:** 11
- **Total Skills:** 8
- **Total MCP Servers:** 2
- **Total MCP Tools:** 20
例2:種類で絞り込み

ユーザーのリクエスト:

"List only MCP servers"

出力:

# 📦 MCP Servers (2)

**Platform:** GitHub Copilot CLI
**Scan Date:** 2026-02-07 14:35:42

---

### claude_ai_Notion (stdio)
**Status:** ✅ Connected
**Tools (5):**

(以降の出力も同じカタログ形式で、該当する種類のリソースのみを表示します。)

例3:キーワード検索

ユーザーのリクエスト:

"Show skills related to content"

出力:

# 📦 Skills - Search Results for "content" (2)

**Platform:** Gemini CLI
**Scan Date:** 2026-02-07 14:38:10

---

### audio-transcriber v1.0.0
**Description:** Transform audio recordings into professional Markdown documentation
**Category:** content

(以降の出力も同じカタログ形式で、該当する種類のリソースのみを表示します。)

例4:該当なし

ユーザーのリクエスト:

"What do I have installed?"

出力(新規インストール時):

# 📦 Installed Resources

**Platform:** OpenCode
**Scan Date:** 2026-02-07 14:40:33

---

## 🔌 Plugins (0)

None installed.

(以降の出力も同じカタログ形式で、該当する種類のリソースのみを表示します。)

コメント