[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69BDY5CZ3TY0DN529614ZDV":3,"skill-same:01M69BDY5CZ3TY0DN529614ZDV":60},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":25,"linkOnly":26,"markdownContent":27,"markdownBody":28,"frontMatter":29,"refName":31,"commitSha":32,"skillDirectory":33,"forksCount":34,"repositoryHtmlUrl":35,"repositoryHomepageUrl":6,"ownerHtmlUrl":36,"ownerBlogUrl":37,"ownerDescription":38,"updatedAt":39,"install":40,"resources":53},"01M69BDY5CZ3TY0DN529614ZDV","discovery-catalog",null,"Inventory the contents of this Discovery catalog repo. Lists publishers, agents, starter-kits, and the tools shipped under each agent. Use this skill whenever the user asks what's in the catalog, who publishes what, what agents\u002Ftools\u002Fstarter-kits exist, lists or counts of any of those, \"show me the catalog\", \"do we have an agent for X\", \"what starter kits do we have\", \"list the publishers\", \"list tools per agent\", or any inventory\u002Fdiscovery question about repo-resident assets — even if the user doesn't explicitly say the word \"list\".","microsoft\u002Fdiscovery","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69BDVENS7NFPQQV19R5KA3B",289,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdiscovery\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fdiscovery-catalog\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24],"discovery catalog","2026-11-10 10:12:30",false,"---\nname: discovery-catalog\ndescription: Inventory the contents of this Discovery catalog repo. Lists publishers, agents, starter-kits, and the tools shipped under each agent. Use this skill whenever the user asks what's in the catalog, who publishes what, what agents\u002Ftools\u002Fstarter-kits exist, lists or counts of any of those, \"show me the catalog\", \"do we have an agent for X\", \"what starter kits do we have\", \"list the publishers\", \"list tools per agent\", or any inventory\u002Fdiscovery question about repo-resident assets — even if the user doesn't explicitly say the word \"list\".\nallowed-tools: shell\n---\n\n# Discovery Catalog\n\n## Compatibility\n\nThis skill is read-only and runs on Windows, macOS, and Linux through PowerShell. PowerShell 7+ (`pwsh`) is recommended for consistent table rendering, though the dispatcher also works in Windows PowerShell 5.1 with less polished wrapping.\n\n## Overview\n\nRead-only inventory of the Discovery catalog repo. One dispatcher script (`scripts\u002Fdiscovery-catalog.ps1`) supports list and item-inspection invocations:\n\n| Invocation | What it lists |\n|---|---|\n| `discovery-catalog publishers` | Every publisher across `agents\u002F` and `starter-kits\u002F`, with per-publisher agent and starter-kit counts |\n| `discovery-catalog agents` | Every agent in the catalog (one row per agent folder name) |\n| `discovery-catalog agents list-tools` | Every agent **plus** the tools shipped under each agent's `tools\u002F` folder |\n| `discovery-catalog starter-kits` | Every starter kit (one row per kit folder name) |\n| `discovery-catalog \u003Cagent-name> describe` | One agent with `Name, Publisher, Version, HasTool, Description` |\n| `discovery-catalog \u003Cstarterkit-name> describe` | One starter kit with `Name, Publisher, Version, Category, AgentCount, Description` |\n| `discovery-catalog \u003Cagent-name> list-tools` | One agent with `Agent, Publisher, Version, ToolCount, Tools, Description` |\n\n## Repo layout the script handles\n\nThe catalog uses a **flat** layout — one folder per agent or starter kit directly under the parent directory:\n\n| Asset | Path pattern | Display |\n|---|---|---|\n| Agent | `agents\u002F\u003Cagent-name>\u002F` | `\u003Cagent-name>` |\n| Starter kit | `starter-kits\u002F\u003Ckit-name>\u002F` | `\u003Ckit-name>` |\n| Tool under an agent | `agents\u002F\u003Cagent>\u002Ftools\u002F\u003Ctool-name>\u002F` | `\u003Ctool-name>` |\n\nInclusion rules:\n\n- An \"agent\" is any folder containing an `agent.yaml`.\n- A \"starter kit\" is any folder containing a `kit.json`.\n- Folders without those files (shared helpers, README-only directories) are silently skipped.\n- The `agents\u002Ftmp\u002F` scratch directory used by the deployer skills is always skipped.\n\nPublisher and party come from the asset's metadata, **not** from the folder location:\n\n- For an agent: `metadata.yaml` → `publisher.name` (publisher) and `publisher.party` (`1p` \u002F `3p`).\n- For a starter kit: `kit.json` → `author.name` (publisher) and the top-level `party` field.\n\nIf `publisher.name` \u002F `author.name` is missing, the publisher is reported as `(unspecified)`.\n\n## When to Use\n\nUse this skill whenever the user wants to know what is in the catalog. Trigger phrases include but are not limited to:\n\n- *\"What agents are in this repo?\"* \u002F *\"List the agents\"* \u002F *\"Show me the catalog\"*\n- *\"Who are the publishers?\"* \u002F *\"Which partners have agents?\"*\n- *\"What starter kits do we have?\"* \u002F *\"List the starter-kits\"*\n- *\"Show me agents with their tools\"* \u002F *\"List tools per agent\"*\n- *\"Do we have an agent for retrosynthesis?\"* (use `-Tag retrosynthesis`)\n- *\"Which agents are missing a tool?\"* (use `-WithoutToolsOnly`)\n- Before invoking `discovery-services-agent-deployer`, when the user isn't sure of the exact agent folder name\n\n## Inputs\n\nThe skill is fully read-only and needs no Azure config. All inputs are positional or named parameters on `scripts\u002Fdiscovery-catalog.ps1`.\n\n| Parameter | Position | Description | Default |\n|---|---|---|---|\n| `Command` | `0` (mandatory) | `publishers`, `agents`, `starter-kits`, or an agent\u002Fstarter-kit name | — |\n| `SubCommand` | `1` (optional) | `list-tools` (with `agents` or `\u003Cagent-name>`) or `describe` (with `\u003Cagent-name>` \u002F `\u003Cstarterkit-name>`) | empty |\n| `-Format` | named | `Table`, `Markdown`, `Json`, or `Plain` | `Table` |\n| `-Publisher` | named | Filter by publisher name (case-insensitive). Applies to `agents` and `starter-kits` | all |\n| `-Tag` | named | Filter agents whose `metadata.yaml` includes this tag (`agents` only) | all |\n| `-WithToolsOnly` | named | Only show agents that ship a `tools\u002F` folder (`agents` only) | off |\n| `-WithoutToolsOnly` | named | Only show agents missing a `tools\u002F` folder (`agents` only) | off |\n\nInvalid combinations exit with a non-zero code and a friendly message (e.g. `agents foo`, `publishers list-tools`).\n\n## Process\n\n### Mapping `\u002Fdiscovery-catalog ...` requests to invocations\n\nWhen the user types a slash-style invocation like `\u002Fdiscovery-catalog publishers`, run the dispatcher with the matching arguments:\n\n| User says | Run |\n|---|---|\n| `\u002Fdiscovery-catalog publishers` | `pwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 publishers` |\n| `\u002Fdiscovery-catalog agents` | `... discovery-catalog.ps1 agents` |\n| `\u002Fdiscovery-catalog agents list-tools` | `... discovery-catalog.ps1 agents list-tools` |\n| `\u002Fdiscovery-catalog starter-kits` | `... discovery-catalog.ps1 starter-kits` |\n| `\u002Fdiscovery-catalog \u003Cagent-name> describe` | `... discovery-catalog.ps1 \u003Cagent-name> describe` |\n| `\u002Fdiscovery-catalog \u003Cstarterkit-name> describe` | `... discovery-catalog.ps1 \u003Cstarterkit-name> describe` |\n| `\u002Fdiscovery-catalog \u003Cagent-name> list-tools` | `... discovery-catalog.ps1 \u003Cagent-name> list-tools` |\n\nUse `-Format Table` for all catalog responses. Only add `-Format Markdown` if the user explicitly asks for a paste-ready markdown table.\nWhen the dispatcher output is long, gather the full result before replying; never mention internal transport details, truncation, temp files, or resource files to the user.\nAlways return the complete table for the requested command; do not shorten it to a partial list or a narrative summary.\nIn chat responses, present tabular results as Markdown tables for readability, while keeping the count anchor line (`*_COUNT=`) above the table.\n\n### How the dispatcher works (internal — for skill maintainers)\n\n1. Resolve repo root via `git rev-parse --show-toplevel`.\n2. Walk `agents\u002F` and\u002For `starter-kits\u002F` one level deep, skipping `tmp\u002F`.\n3. Inclusion: agent folders need `agent.yaml`; starter-kit folders need `kit.json`.\n4. For each entry, parse the appropriate metadata file:\n   - Agent: `metadata.yaml` for `name`, `version`, `description`, `tags`, plus the nested `publisher.name` and `publisher.party`.\n   - Starter kit: `kit.json` for `name`, `version`, `description`, `category`, `party`, `author.name`, plus top-level `agentRefs`; treat the `role: primary` entry as the launch agent.\n   - Tool (when `agents list-tools`): `tool.yaml` for `name`; folder name as fallback.\n5. Apply filters: `-Publisher`, `-Tag`, `-WithToolsOnly`, `-WithoutToolsOnly`.\n6. Sort by name (and publisher where applicable).\n7. Render in the requested format.\n\nThe first line of `Table` and `Markdown` output is a deterministic count anchor (`AGENT_COUNT=`, `PUBLISHER_COUNT=`, `STARTER_KIT_COUNT=`) so callers can grep for it.\n\n## Output Format\n\n### `discovery-catalog publishers`\n\n```\nPUBLISHER_COUNT=2\n\nPublisher              Party AgentCount StarterKits\n---------              ----- ---------- -----------\nContoso Legal Tech     3p             1           0\nMicrosoft              1p            41           2\n```\n\n### `discovery-catalog agents`\n\n```\nAGENT_COUNT=41\n\nAgent                 Publisher  Party\n----                 ---------  -----\naizynthfinder        Microsoft  1p\nonline-researcher    Microsoft  1p\n...\n```\n\n### `discovery-catalog agents list-tools`\n\n```\nAGENT_COUNT=41\n\nAgent                  Publisher  Tools\n----                  ---------  -----\naizynthfinder         Microsoft  tools\u002Faizynthfinder\nbookshelf-researcher  Microsoft  (no tools)\n...\n```\n\n### `discovery-catalog starter-kits`\n\n```\nSTARTER_KIT_COUNT=2\n\nStarter-Kit                  Publisher  Category\n----                         ---------  --------\ndrug-discovery               Microsoft  Chemistry\nprotein-structure-analysis   Microsoft  Biology\n```\n\n### `discovery-catalog \u003Cagent-name> describe`\n\n```\nName           Publisher  Version HasTool Description\n----           ---------  ------- ------- -----------\naizynthfinder  Microsoft  1.0.0      True Expert agent for retrosynthetic route planning using AiZynthFinder...\n```\n\n### `discovery-catalog \u003Cstarterkit-name> describe`\n\n```\nName            Publisher  Version Category  AgentCount Description\n----            ---------  ------- --------  ---------- -----------\ndrug-discovery  Microsoft  1.0.0   Chemistry          5 Accelerate small-molecule drug discovery...\n```\n\n### `discovery-catalog \u003Cagent-name> list-tools`\n\n```\nAgent          Publisher  Version ToolCount Tools         Description\n-----          ---------  ------- --------- -----         -----------\naizynthfinder  Microsoft  1.0.0           1 aizynthFinder Expert agent for retrosynthetic route planning using AiZynthFinder...\n```\n\n## Examples\n\n### Example 1: List publishers\n\n**User**: *\"Who publishes agents in this repo?\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 publishers\n```\n\n### Example 2: List all agents\n\n**User**: *\"What agents do we have?\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 agents\n```\n\n### Example 3: List agents with their tools\n\n**User**: *\"Show me each agent and the tools it ships.\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 agents list-tools\n```\n\n### Example 4: List starter kits\n\n**User**: *\"What starter kits are available?\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 starter-kits\n```\n\n### Example 5: Describe a specific item\n\n**User**: *\"Describe the `drug-discovery` starter kit\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 drug-discovery describe\n```\n\n**User**: *\"Describe `aizynthfinder`\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 aizynthfinder describe\n```\n\n### Example 6: Show tools for one agent\n\n**User**: *\"List tools for `aizynthfinder`\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 aizynthfinder list-tools\n```\n\n### Example 7: Filtered queries\n\n**User**: *\"Which agents have a `retrosynthesis` tag?\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 agents -Tag retrosynthesis\n```\n\n**User**: *\"Which agents don't have a tool yet?\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 agents -WithoutToolsOnly\n```\n\n**User**: *\"Which agents are published by Microsoft?\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 agents -Publisher Microsoft\n```\n\n### Example 8: Markdown for a doc\n\n**User**: *\"Give me a markdown table of all starter kits I can paste into a README.\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 starter-kits -Format Markdown\n```\n\n## Guidelines\n\n- **Read-only**: never writes to the repo or to Azure. Safe to run repeatedly.\n- **Display name is the folder name** — agents and starter kits are shown by their flat-layout folder name; publisher is rendered as a separate column populated from `metadata.yaml`\u002F`kit.json`.\n- **Folder names are globally unique** in the flat layout, so `\u003Cagent-name>` alone is enough to disambiguate.\n- **Command examples use PowerShell 7+ (`pwsh`)** and work on Windows, macOS, and Linux when PowerShell is installed.\n- **Always include the count anchor** (`PUBLISHER_COUNT=`, `AGENT_COUNT=`, `STARTER_KIT_COUNT=`) in `Table`\u002F`Markdown` output so downstream automation has a deterministic anchor.\n- **Prefer tabular output** for every catalog query; do not use `Json` or `Plain` for normal discovery responses.\n- **Return the full table** for the requested command; never replace rows with a summary, excerpt, or placeholder text.\n- **Render user-facing tables in Markdown** so columns remain aligned in chat.\n- **Never narrate internal handling** such as reading from a resource file or hitting a terminal output limit.\n- **Don't crash on missing metadata** — entries with missing `metadata.yaml` or unparseable `kit.json` are silently skipped (kits) or shown with empty fields (agents). Missing `publisher.name` is rendered as `(unspecified)`.\n- **Don't list `agents\u002Ftmp\u002F`** — it's the scratch tree used by other skills (`discovery-services-agent-deployer`) and is gitignored.\n- **PS 7+ recommended** so `Format-Table -AutoSize -Wrap` renders long descriptions cleanly. The script works in Windows PowerShell 5.1 too but wrapping is uglier.\n- **Invalid subcommands exit with non-zero code** and a friendly message — the dispatcher rejects e.g. `agents foo` or `publishers list-tools`.\n","# Discovery Catalog\n\n## Compatibility\n\nThis skill is read-only and runs on Windows, macOS, and Linux through PowerShell. PowerShell 7+ (`pwsh`) is recommended for consistent table rendering, though the dispatcher also works in Windows PowerShell 5.1 with less polished wrapping.\n\n## Overview\n\nRead-only inventory of the Discovery catalog repo. One dispatcher script (`scripts\u002Fdiscovery-catalog.ps1`) supports list and item-inspection invocations:\n\n| Invocation | What it lists |\n|---|---|\n| `discovery-catalog publishers` | Every publisher across `agents\u002F` and `starter-kits\u002F`, with per-publisher agent and starter-kit counts |\n| `discovery-catalog agents` | Every agent in the catalog (one row per agent folder name) |\n| `discovery-catalog agents list-tools` | Every agent **plus** the tools shipped under each agent's `tools\u002F` folder |\n| `discovery-catalog starter-kits` | Every starter kit (one row per kit folder name) |\n| `discovery-catalog \u003Cagent-name> describe` | One agent with `Name, Publisher, Version, HasTool, Description` |\n| `discovery-catalog \u003Cstarterkit-name> describe` | One starter kit with `Name, Publisher, Version, Category, AgentCount, Description` |\n| `discovery-catalog \u003Cagent-name> list-tools` | One agent with `Agent, Publisher, Version, ToolCount, Tools, Description` |\n\n## Repo layout the script handles\n\nThe catalog uses a **flat** layout — one folder per agent or starter kit directly under the parent directory:\n\n| Asset | Path pattern | Display |\n|---|---|---|\n| Agent | `agents\u002F\u003Cagent-name>\u002F` | `\u003Cagent-name>` |\n| Starter kit | `starter-kits\u002F\u003Ckit-name>\u002F` | `\u003Ckit-name>` |\n| Tool under an agent | `agents\u002F\u003Cagent>\u002Ftools\u002F\u003Ctool-name>\u002F` | `\u003Ctool-name>` |\n\nInclusion rules:\n\n- An \"agent\" is any folder containing an `agent.yaml`.\n- A \"starter kit\" is any folder containing a `kit.json`.\n- Folders without those files (shared helpers, README-only directories) are silently skipped.\n- The `agents\u002Ftmp\u002F` scratch directory used by the deployer skills is always skipped.\n\nPublisher and party come from the asset's metadata, **not** from the folder location:\n\n- For an agent: `metadata.yaml` → `publisher.name` (publisher) and `publisher.party` (`1p` \u002F `3p`).\n- For a starter kit: `kit.json` → `author.name` (publisher) and the top-level `party` field.\n\nIf `publisher.name` \u002F `author.name` is missing, the publisher is reported as `(unspecified)`.\n\n## When to Use\n\nUse this skill whenever the user wants to know what is in the catalog. Trigger phrases include but are not limited to:\n\n- *\"What agents are in this repo?\"* \u002F *\"List the agents\"* \u002F *\"Show me the catalog\"*\n- *\"Who are the publishers?\"* \u002F *\"Which partners have agents?\"*\n- *\"What starter kits do we have?\"* \u002F *\"List the starter-kits\"*\n- *\"Show me agents with their tools\"* \u002F *\"List tools per agent\"*\n- *\"Do we have an agent for retrosynthesis?\"* (use `-Tag retrosynthesis`)\n- *\"Which agents are missing a tool?\"* (use `-WithoutToolsOnly`)\n- Before invoking `discovery-services-agent-deployer`, when the user isn't sure of the exact agent folder name\n\n## Inputs\n\nThe skill is fully read-only and needs no Azure config. All inputs are positional or named parameters on `scripts\u002Fdiscovery-catalog.ps1`.\n\n| Parameter | Position | Description | Default |\n|---|---|---|---|\n| `Command` | `0` (mandatory) | `publishers`, `agents`, `starter-kits`, or an agent\u002Fstarter-kit name | — |\n| `SubCommand` | `1` (optional) | `list-tools` (with `agents` or `\u003Cagent-name>`) or `describe` (with `\u003Cagent-name>` \u002F `\u003Cstarterkit-name>`) | empty |\n| `-Format` | named | `Table`, `Markdown`, `Json`, or `Plain` | `Table` |\n| `-Publisher` | named | Filter by publisher name (case-insensitive). Applies to `agents` and `starter-kits` | all |\n| `-Tag` | named | Filter agents whose `metadata.yaml` includes this tag (`agents` only) | all |\n| `-WithToolsOnly` | named | Only show agents that ship a `tools\u002F` folder (`agents` only) | off |\n| `-WithoutToolsOnly` | named | Only show agents missing a `tools\u002F` folder (`agents` only) | off |\n\nInvalid combinations exit with a non-zero code and a friendly message (e.g. `agents foo`, `publishers list-tools`).\n\n## Process\n\n### Mapping `\u002Fdiscovery-catalog ...` requests to invocations\n\nWhen the user types a slash-style invocation like `\u002Fdiscovery-catalog publishers`, run the dispatcher with the matching arguments:\n\n| User says | Run |\n|---|---|\n| `\u002Fdiscovery-catalog publishers` | `pwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 publishers` |\n| `\u002Fdiscovery-catalog agents` | `... discovery-catalog.ps1 agents` |\n| `\u002Fdiscovery-catalog agents list-tools` | `... discovery-catalog.ps1 agents list-tools` |\n| `\u002Fdiscovery-catalog starter-kits` | `... discovery-catalog.ps1 starter-kits` |\n| `\u002Fdiscovery-catalog \u003Cagent-name> describe` | `... discovery-catalog.ps1 \u003Cagent-name> describe` |\n| `\u002Fdiscovery-catalog \u003Cstarterkit-name> describe` | `... discovery-catalog.ps1 \u003Cstarterkit-name> describe` |\n| `\u002Fdiscovery-catalog \u003Cagent-name> list-tools` | `... discovery-catalog.ps1 \u003Cagent-name> list-tools` |\n\nUse `-Format Table` for all catalog responses. Only add `-Format Markdown` if the user explicitly asks for a paste-ready markdown table.\nWhen the dispatcher output is long, gather the full result before replying; never mention internal transport details, truncation, temp files, or resource files to the user.\nAlways return the complete table for the requested command; do not shorten it to a partial list or a narrative summary.\nIn chat responses, present tabular results as Markdown tables for readability, while keeping the count anchor line (`*_COUNT=`) above the table.\n\n### How the dispatcher works (internal — for skill maintainers)\n\n1. Resolve repo root via `git rev-parse --show-toplevel`.\n2. Walk `agents\u002F` and\u002For `starter-kits\u002F` one level deep, skipping `tmp\u002F`.\n3. Inclusion: agent folders need `agent.yaml`; starter-kit folders need `kit.json`.\n4. For each entry, parse the appropriate metadata file:\n   - Agent: `metadata.yaml` for `name`, `version`, `description`, `tags`, plus the nested `publisher.name` and `publisher.party`.\n   - Starter kit: `kit.json` for `name`, `version`, `description`, `category`, `party`, `author.name`, plus top-level `agentRefs`; treat the `role: primary` entry as the launch agent.\n   - Tool (when `agents list-tools`): `tool.yaml` for `name`; folder name as fallback.\n5. Apply filters: `-Publisher`, `-Tag`, `-WithToolsOnly`, `-WithoutToolsOnly`.\n6. Sort by name (and publisher where applicable).\n7. Render in the requested format.\n\nThe first line of `Table` and `Markdown` output is a deterministic count anchor (`AGENT_COUNT=`, `PUBLISHER_COUNT=`, `STARTER_KIT_COUNT=`) so callers can grep for it.\n\n## Output Format\n\n### `discovery-catalog publishers`\n\n```\nPUBLISHER_COUNT=2\n\nPublisher              Party AgentCount StarterKits\n---------              ----- ---------- -----------\nContoso Legal Tech     3p             1           0\nMicrosoft              1p            41           2\n```\n\n### `discovery-catalog agents`\n\n```\nAGENT_COUNT=41\n\nAgent                 Publisher  Party\n----                 ---------  -----\naizynthfinder        Microsoft  1p\nonline-researcher    Microsoft  1p\n...\n```\n\n### `discovery-catalog agents list-tools`\n\n```\nAGENT_COUNT=41\n\nAgent                  Publisher  Tools\n----                  ---------  -----\naizynthfinder         Microsoft  tools\u002Faizynthfinder\nbookshelf-researcher  Microsoft  (no tools)\n...\n```\n\n### `discovery-catalog starter-kits`\n\n```\nSTARTER_KIT_COUNT=2\n\nStarter-Kit                  Publisher  Category\n----                         ---------  --------\ndrug-discovery               Microsoft  Chemistry\nprotein-structure-analysis   Microsoft  Biology\n```\n\n### `discovery-catalog \u003Cagent-name> describe`\n\n```\nName           Publisher  Version HasTool Description\n----           ---------  ------- ------- -----------\naizynthfinder  Microsoft  1.0.0      True Expert agent for retrosynthetic route planning using AiZynthFinder...\n```\n\n### `discovery-catalog \u003Cstarterkit-name> describe`\n\n```\nName            Publisher  Version Category  AgentCount Description\n----            ---------  ------- --------  ---------- -----------\ndrug-discovery  Microsoft  1.0.0   Chemistry          5 Accelerate small-molecule drug discovery...\n```\n\n### `discovery-catalog \u003Cagent-name> list-tools`\n\n```\nAgent          Publisher  Version ToolCount Tools         Description\n-----          ---------  ------- --------- -----         -----------\naizynthfinder  Microsoft  1.0.0           1 aizynthFinder Expert agent for retrosynthetic route planning using AiZynthFinder...\n```\n\n## Examples\n\n### Example 1: List publishers\n\n**User**: *\"Who publishes agents in this repo?\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 publishers\n```\n\n### Example 2: List all agents\n\n**User**: *\"What agents do we have?\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 agents\n```\n\n### Example 3: List agents with their tools\n\n**User**: *\"Show me each agent and the tools it ships.\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 agents list-tools\n```\n\n### Example 4: List starter kits\n\n**User**: *\"What starter kits are available?\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 starter-kits\n```\n\n### Example 5: Describe a specific item\n\n**User**: *\"Describe the `drug-discovery` starter kit\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 drug-discovery describe\n```\n\n**User**: *\"Describe `aizynthfinder`\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 aizynthfinder describe\n```\n\n### Example 6: Show tools for one agent\n\n**User**: *\"List tools for `aizynthfinder`\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 aizynthfinder list-tools\n```\n\n### Example 7: Filtered queries\n\n**User**: *\"Which agents have a `retrosynthesis` tag?\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 agents -Tag retrosynthesis\n```\n\n**User**: *\"Which agents don't have a tool yet?\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 agents -WithoutToolsOnly\n```\n\n**User**: *\"Which agents are published by Microsoft?\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 agents -Publisher Microsoft\n```\n\n### Example 8: Markdown for a doc\n\n**User**: *\"Give me a markdown table of all starter kits I can paste into a README.\"*\n\n```powershell\npwsh -NoProfile -ExecutionPolicy Bypass -File .github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1 starter-kits -Format Markdown\n```\n\n## Guidelines\n\n- **Read-only**: never writes to the repo or to Azure. Safe to run repeatedly.\n- **Display name is the folder name** — agents and starter kits are shown by their flat-layout folder name; publisher is rendered as a separate column populated from `metadata.yaml`\u002F`kit.json`.\n- **Folder names are globally unique** in the flat layout, so `\u003Cagent-name>` alone is enough to disambiguate.\n- **Command examples use PowerShell 7+ (`pwsh`)** and work on Windows, macOS, and Linux when PowerShell is installed.\n- **Always include the count anchor** (`PUBLISHER_COUNT=`, `AGENT_COUNT=`, `STARTER_KIT_COUNT=`) in `Table`\u002F`Markdown` output so downstream automation has a deterministic anchor.\n- **Prefer tabular output** for every catalog query; do not use `Json` or `Plain` for normal discovery responses.\n- **Return the full table** for the requested command; never replace rows with a summary, excerpt, or placeholder text.\n- **Render user-facing tables in Markdown** so columns remain aligned in chat.\n- **Never narrate internal handling** such as reading from a resource file or hitting a terminal output limit.\n- **Don't crash on missing metadata** — entries with missing `metadata.yaml` or unparseable `kit.json` are silently skipped (kits) or shown with empty fields (agents). Missing `publisher.name` is rendered as `(unspecified)`.\n- **Don't list `agents\u002Ftmp\u002F`** — it's the scratch tree used by other skills (`discovery-services-agent-deployer`) and is gitignored.\n- **PS 7+ recommended** so `Format-Table -AutoSize -Wrap` renders long descriptions cleanly. The script works in Windows PowerShell 5.1 too but wrapping is uglier.\n- **Invalid subcommands exit with non-zero code** and a friendly message — the dispatcher rejects e.g. `agents foo` or `publishers list-tools`.\n",{"name":5,"description":7,"allowed-tools":30},"shell","main","a7d5fef00a8d15e0705c88f2c53a61c02e738526",".github\u002Fskills\u002Fdiscovery-catalog",101,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdiscovery","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-14 07:24:09",{"source":8,"skillName":5,"commands":41,"prompt":51,"zipAvailable":52},[42,45,48],{"tool":43,"command":44},"npx","npx skills add microsoft\u002Fdiscovery --skill discovery-catalog",{"tool":46,"command":47},"bunx","bunx skills add microsoft\u002Fdiscovery --skill discovery-catalog",{"tool":49,"command":50},"pnpm","pnpm dlx skills add microsoft\u002Fdiscovery --skill discovery-catalog","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdiscovery\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fdiscovery-catalog\u002FSKILL.md",true,[54],{"path":55,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":58,"sourceHtmlUrl":59},"scripts\u002Fdiscovery-catalog.ps1","SCRIPT","脚本",19118,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdiscovery\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fdiscovery-catalog\u002Fscripts\u002Fdiscovery-catalog.ps1",[61,80,120,156,166,179],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":25},"01M6PJFHF9C2GSFK8DFW6D5RF7","token-estimator-mvp","Estimate AI planning ranges from a work description or explicitly authorized safe project context. Provides coarse class ranges or conditional planning bases without requiring token guesses.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdiscovery\u002Fblob\u002Fmain\u002Fskills\u002Ftoken-estimator-mvp\u002FSKILL.md",[],[68,69,70,71,72,73,74,75,76,77,78,79],"token estimator mvp","token","mvp","conditional","estimate","project context","safe","planning","project","work","context","bases",{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":100,"publishedAt":25},"01M6M0MTE9BST8PT7ECHCC5KJK","build-research-paper","Cross-domain \u002F Scientific writing and publication — Build\nbeautifully-formatted, arxiv-ready research paper PDFs from a mix of\nhand-authored LaTeX and\u002For markdown + PNG figures, using `tectonic`\n(default) or `pandoc` (escape hatch). Captures the reusable pattern that\nresearch projects keep re-discovering: `report\u002Fmain.tex` + `references.bib`\n+ `generate_figures.py` + iterative feedback\u002Fresponse scaffolding, all\nbuildable with a single command. WHEN: write a research paper, arxiv\nsubmission, prepub, generate PDF from markdown, LaTeX paper, build main.tex,\njournal manuscript, referee revision, response to referee, resubmission\npackage, publication-quality figures, matplotlib publication style, tectonic\nbuild, pandoc build, generate arxiv-ready PDF, bibliography from BibTeX.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdiscovery\u002Fblob\u002Fmain\u002Fskills\u002Fbuild-research-paper\u002FSKILL.md",[86,89,92,95],{"categoryNo":87,"categoryName":88,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理",{"categoryNo":90,"categoryName":91,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":93,"categoryName":94,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":96,"categoryName":97,"taxonomyType":98,"taxonomyTypeDesc":99},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[101,102,103,104,105,106,107,108,109,110,111,112,31,113,114,115,116,117,118,119],"research","build","paper","build research paper","scientific","PDF","writing","projects","command","ready","default","references","scaffolding","journal","generate pdf","re","mix","tectonic","hand",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":136,"publishedAt":25},"01M69BE9GW375EBM6ETNWD84E3","add-example-agents","Add agents from the public microsoft\u002Fdiscovery GitHub repository to this workspace, either (a) locally for the Copilot app by emitting a `.agent.md` companion per agent (so each is invocable via `runSubagent`), (b) into a Microsoft Discovery project via `UpsertAgent` sourced fresh from upstream (binding pre-existing tool ARM resources when present, or building + pushing + registering them in Azure first when missing), or (c) promoting an agent already added to the local Copilot app (sourced from its `.github\u002Fagents\u002F\u003Cname>.agent.md` companion; tool-bearing agents also carry a `discovery_catalog\u002F\u003Cname>\u002F` folder plus a locally-built tool container, while toolless agents have only the companion) up to a specific Microsoft Discovery project + Azure without re-fetching or refreshing from upstream. The user picks exactly one of the three targets per run. USE FOR: 'add the discovery agents', 'download discovery agents', 'install all Microsoft discovery agents', 'add agents from microsoft\u002Fdiscovery', 'create copilot agents from microsoft\u002Fdiscovery', 'deploy discovery agents to Foundry', 'deploy discovery agents to Azure', 'promote a local agent to Microsoft Discovery', 'push my local agent and container to a Discovery project', 'copy a local app agent to Azure'. Always refreshes every selected subfolder under `agents\u002F\u003Cname>\u002F` of the upstream repo into `discovery_catalog\u002F\u003Cname>\u002F` so the local catalog stays current (new agents appear, removed agents are surfaced, updated content is applied). The presence check for what is 'already locally added' uses `.github\u002Fagents\u002F\u003Cname>.agent.md` (the Copilot companion), not the `discovery_catalog\u002F` folder. For local deployment, each generated `.agent.md` carries a lazy Docker-bootstrap preamble so the agent builds its tool image on first use only if absent. For Discovery + Azure deployment, pre-flights every declared tool via `GetDiscoveryTool` against the workspace's RG and **skips Docker build \u002F ACR push \u002F AcrPull RBAC entirely when the tool already exists** (common for shared catalog images on registries like `mdqacr`); only builds + registers tools that are actually missing. Always creates the agent in the chosen Discovery project via `UpsertAgent` and polls **`GetAgent` for `provisioningState=Succeeded`** (the MCP `GetAgentOperation` tool returns an opaque error in practice; never rely on it). All MCP calls flow through PowerShell scripts embedded in this SKILL.md and materialized into `.vscode\u002F` during Step 4d — the skill does not depend on sibling helper files or on the VS Code MCP runtime surfacing `mcp_microsoft-dis_*` tools mid-session. Local Discovery runtime registration via `agents action=create` is optional and skipped by default. DO NOT USE FOR: running an already-deployed agent (use runSubagent), or editing a single agent's prompt (edit `agent.yaml` directly).","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdiscovery\u002Fblob\u002Fmain\u002Fskills\u002Fadd-example-agents\u002FSKILL.md",[126,129,132,133],{"categoryNo":127,"categoryName":128,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":130,"categoryName":131,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":134,"categoryName":135,"taxonomyType":98,"taxonomyTypeDesc":99},"01JBSEEDCAT000000000000030","开发工程师",[137,138,139,140,141,142,143,144,145,146,147,148,149,150,9,151,152,153,154,155],"add example agents","create","MCP","image","windows","run","deployment","bootstrap","podman","azure","distributed","copilot","code","vscode","editor","valid","docker","github","python",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":162,"publishedAt":25},"01M69BE703VQGX4F9Z5J4MTJV2","migrate-podman-containerfile","Migrate a Podman Containerfile to the canonical Dockerfile required by the Discovery catalog. Use when a PR fails POL-022, a tool contains Containerfile or Dockerfile.in, or a contributor asks to convert Podman build files for Docker. Creates the Dockerfile directly only when the migration is mechanically safe and refuses ambiguous preprocessing or multi-file builds.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdiscovery\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fmigrate-podman-containerfile\u002FSKILL.md",[],[163,145,24,164,165,153,74],"migrate podman containerfile","pr","dockerfile",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":173,"publishedAt":25},"01M69BE4KN4J5R2RY3927C8PM6","discovery-services-starter-kit-deployer","Deploy Discovery catalog starter-kits end-to-end: validate kit.json agentRefs, build and deploy every referenced agent tool, deploy each referenced agent individually, and summarize deployed agents\u002Ftools plus customer-ready sample prompts. Use this skill whenever the user asks to deploy a Discovery starter-kit or deploy all agents listed in starter-kits\u002F*\u002Fkit.json.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdiscovery\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fdiscovery-services-starter-kit-deployer\u002FSKILL.md",[172],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[174,175,24,176,177,178],"discovery services starter kit deployer","validate","deploy","customer","summarize",{"skillNo":180,"name":181,"nameZh":6,"description":182,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":183,"categories":184,"keywords":190,"publishedAt":25},"01M69BE20F244MGDJC74AFXGZ2","discovery-services-agent-deployer","Deploy Discovery catalog agents end-to-end with one command: discover the agent, build and bind its tool when present, skip tool stages for agents without tools, deploy the agent, and optionally run validation. Use this skill whenever the user asks to deploy a Discovery agent, publish or rebuild an agent tool image, register a Discovery tool from a repo Dockerfile\u002Ftool.yaml, resume a failed deployment, or produce a dry-run deployment plan for an agent in this catalog.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdiscovery\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fdiscovery-services-agent-deployer\u002FSKILL.md",[185,186,187],{"categoryNo":127,"categoryName":128,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":188,"categoryName":189,"taxonomyType":98,"taxonomyTypeDesc":99},"01JBSEEDCAT000000000000038","人力资源",[191,24,142,143,165,176,140],"discovery services agent deployer"]