Note: this post is part of a series. Part one covered packaging a skill in a plugin for Claude Code. Same idea, different tool, this time focussing on GitHub Copilot.
After writing that first post I got the obvious follow-up question: does this also work for GitHub Copilot?
Short version: yes, SKILL.md itself is portable, but the plugin wrapper isn't. Copilot CLI has its own plugin format, laid out slightly differently from Claude Code's.
What's the same?
A skill is still just a folder with a SKILL.md inside: YAML frontmatter (name, description, optionally license), then a Markdown body with instructions. Copy that file as-is between tools — nothing about the skill content needs to change.
What's different?
Where Claude Code wants the manifest tucked inside .claude-plugin/plugin.json, Copilot CLI puts plugin.json straight at the plugin root:
api-testing-plugin/
├── plugin.json # Required manifest, at the root
├── agents/ # optional
│ └── helper.agent.md
├── skills/ # optional
│ └── api-testing/
│ └── SKILL.md
├── hooks.json # optional
└── .mcp.json # optional
Remark: f you’re porting a Claude Code plugin folder over, notice that you have to move the plugin.json up one level, out of .claude-plugin/.
Step 1: write the manifest
{
"name": "api-testing-plugin",
"description": "Skills for API testing and contract validation",
"version": "1.0.0",
"author": {
"name": "Bart Wullems"
},
"license": "MIT",
"skills": ["skills/"]
}
The skills field is an array, so you can point at more than one directory if your skills live in different places — ["skills/", "extra-skills/"], for example.
Step 2: drop the skill in
api-testing-plugin/
└── skills/
└── api-testing/
└── SKILL.md
Same shape as a standalone Copilot skill. The only difference is it now ships inside a plugin instead of sitting loose in .github/skills/.
Step 3: install and verify locally
copilot plugin install ./api-testing-plugin
copilot plugin list
Or from inside an interactive session:
/plugin list
/skills list
Tip: plugin components get cached on install. If you edit the skill and don't see the change, that's why — run copilot plugin install ./my-plugin again to pick it up.
Publishing to a marketplace
Same story as the Claude Code post: a bare SKILL.md or a locally installed plugin covers you and your immediate team but as you've maybe seen in the screenshot above, the local install option is deprecated.
To make it something anyone can grab with one command, you need a marketplace.
A Copilot CLI marketplace is a repository with one required file: marketplace.json.
Step 1: create the marketplace file
my-marketplace/
├── .github/
│ └── plugin/
│ └── marketplace.json
└── plugins/
└── api-testing-plugin/
├── plugin.json
└── skills/
└── api-testing/
└── SKILL.md
{
"name": "my-plugins",
"owner": {
"name": "Bart Wullems"
},
"metadata": {
"description": "Curated plugins for API and dev tooling",
"version": "1.0.0"
},
"plugins": [
{
"name": "api-testing-plugin",
"description": "Skills for API testing and contract validation",
"version": "1.0.0",
"source": "./plugins/api-testing-plugin"
}
]
}
Remark: source is relative to the repository root, and the leading ./ is optional — "plugins/api-testing-plugin" resolves the same as "./plugins/api-testing-plugin". Copilot CLI also accepts marketplace.json under .claude-plugin/, so a repo doing double duty as both a Claude Code and Copilot marketplace can often share one file.
Step 2: put the plugin where it points
The source path has to actually resolve. Add the full plugin directory (manifest, skills, everything from the previous post) at plugins/api-testing-plugin/ in the same repo.
Step 3: push and share
copilot plugin marketplace add wullemsb/my-plugins
That's the whole install instruction you hand to anyone who wants your plugins. From there, installing one specific plugin uses the same form as before:
copilot plugin install api-testing-plugin@my-plugins
Tip: a marketplace repo doesn't have to live on GitHub. Any other git URL works too.
That's it! Same SKILL.md, two different containers depending on which agent picks it up.
More information
- GitHub Copilot CLI: creating a plugin: https://docs.github.com/en/copilot/how-tos/copilot-cli/customize-copilot/plugins-creating
- GitHub Copilot CLI: adding agent skills: https://docs.github.com/en/copilot/how-tos/copilot-cli/customize-copilot/add-skills
- GitHub Copilot CLI plugin reference: https://docs.github.com/en/copilot/reference/copilot-cli-reference/cli-plugin-reference