Files
holocron/plugins/kyberforge/skills/marketplace-architect/references/copilot-cli.md
Defame1297 280e98cb71 feat: consolidate marketplace skills into kyberforge plugin
Moves create-plugin, marketplace-architect, write-skill, and write-eval
from canonical .agents/skills/ into plugins/kyberforge/skills/, along
with all bundled sub-files, evals, and the plugin-marketplace-architecture
research doc. Bundles templates/plugin/ into create-plugin/assets/plugin-template/
so the skill is self-contained after install-time caching. Removes
templates/plugin/ and docs/research/plugin-marketplace-architecture.md
from the repo root as they are now exclusively in the plugin.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 18:02:47 +00:00

3.9 KiB

GitHub Copilot CLI Plugin Reference

Verified against docs.github.com as of June 2026.


Directory structure

plugin-root/
├── plugin.json           # at plugin root (NOT in .claude-plugin/)
├── skills/               # skill directories: <name>/SKILL.md (same as Claude Code)
├── agents/               # agent files: <name>.agent.md (differs from Claude Code)
├── hooks.json            # at plugin root (differs from Claude Code: hooks/hooks.json)
└── .mcp.json             # at plugin root (same as Claude Code)

plugin.json schema (Copilot)

{
  "name": "my-plugin",
  "description": "What it does",
  "version": "1.0.0",
  "author": { "name": "Name", "email": "you@example.com" },
  "license": "MIT",
  "keywords": [],
  "agents": "agents/",
  "skills": ["skills/"],
  "hooks": "hooks.json",
  "mcpServers": ".mcp.json"
}

Key difference from Claude Code: Copilot expects component path declarations inside plugin.json ("skills": "skills/", "agents": "agents/", etc.). Claude Code instead defaults to standard dirs and takes path overrides only via the marketplace entry. This means the same plugin.json may need these fields for Copilot but not for Claude.


marketplace.json schema (Copilot)

{
  "name": "my-ai-marketplace",
  "owner": { "name": "Your Name", "email": "you@example.com" },
  "metadata": { "description": "Agents, skills and workflows", "version": "1.0.0" },
  "plugins": [
    {
      "name": "startup-cto",
      "source": "./plugins/startup-cto",
      "description": "...",
      "version": "1.0.0"
    }
  ]
}

Copilot's primary marketplace manifest path is .github/plugin/marketplace.json. It also reads .claude-plugin/marketplace.json as a fallback. Relative source paths: ./x and x are both valid (Claude requires ./).


Agent file format

Copilot agents use .agent.md extension with frontmatter:

---
name: my-agent
description: What this agent does
tools:
  - read_file
  - run_command
---

Agent instructions here.

Claude Code agents use .md extension without the .agent.md suffix. If shipping agents for both tools, create both files:

  • agents/my-agent.md — Claude Code
  • agents/my-agent.agent.md — Copilot CLI

CLI commands

# Install plugin locally (development)
copilot plugin install ./my-plugin

# List installed plugins
copilot plugin list

# In interactive mode
/plugin list
/skills list
/agent

# Reload after changes
/reload-plugins

# Uninstall (uses bare plugin name, not @marketplace form)
copilot plugin uninstall <name>

# Marketplace
copilot plugin marketplace add owner/repo

⚠️ UNVERIFIED: Copilot marketplace install command. The update/uninstall commands take a bare <name>. Whether install from a marketplace uses <name>@<marketplace> (Claude Code's form) or a bare <name> is not confirmed in docs. Run copilot plugin install --help before documenting the install command anywhere.


Validation

Copilot has no documented plugin validate command. For Copilot-side validation, run manual checks:

  • Valid JSON in plugin.json and marketplace.json
  • Required fields: name, description
  • Unique plugin names across marketplace
  • Kebab-case plugin names
  • All source paths resolve to existing directories
  • .agent.md files have valid YAML frontmatter with name, description, tools

Key differences from Claude Code (summary)

What Claude Code Copilot CLI
Plugin manifest location .claude-plugin/plugin.json plugin.json at plugin root
Agent files agents/<name>.md agents/<name>.agent.md
Hooks file hooks/hooks.json hooks.json at plugin root
Component paths Declared in marketplace entry Declared in plugin.json
Validate command claude plugin validate None — manual checks only
Relative source ./ Required Optional (x also valid)