Claude skills vs GitHub Copilot skills: directories, surfaces, and the instructions layer

GitHub Copilot reads Agent Skills from .github/skills, .claude/skills, and .agents/skills across the CLI, cloud coding agent, code review, VS Code, JetBrains, and Visual Studio. How that compares with Claude Code, and how skills relate to copilot-instructions.md, prompt files, and custom agents.

Contents

GitHub Copilot adopted the Agent Skills specification and did something none of the other implementations did: it reads Claude Code’s directory natively. A repository with .claude/skills/ committed is already a repository with Copilot skills. That makes “Claude skills vs Copilot skills” less a question of format and more a question of surfaces, always-on instruction layers, and which tool’s optional features you are leaning on.

This article covers where Copilot looks, which of its many surfaces run skills, how skills relate to Copilot’s older customization files, and every place the Copilot implementation differs from Claude Code’s.

Shared format

Both tools read the same SKILL.md:

---
name: my-skill
description: "Description of what the skill does and when to use it."
---
# My Skill
Detailed instructions for the skill...

That example is lifted almost verbatim from GitHub’s own documentation, and it is a valid Claude Code skill as written. Both tools inject the file into the agent’s context when the skill is chosen, both choose based on the description, and both recommend keeping the main file under 500 lines with detailed reference material split into separate files.

Directories

ScopeClaude CodeGitHub Copilot
Project.claude/skills/<name>/SKILL.md.github/skills/, .claude/skills/, or .agents/skills/
Personal~/.claude/skills/<name>/SKILL.md~/.copilot/skills/ or ~/.agents/skills/
Plugin<plugin>/skills/ as /plugin:skillNot a separate concept
EnterpriseManaged settings directoryOrganization-level configuration through GitHub

The overlap on .claude/skills is the headline. A team where some people use Claude Code and some use Copilot can commit skills once to .claude/skills/ and both tools pick them up. If the team also includes Codex or Cursor users, .agents/skills/ is read by Copilot, Codex, and Cursor but not Claude Code, so .claude/skills/ remains the single path with the widest reach, and a CLI install to every detected agent covers the rest:

npm i -g skillmds
skillmd add github/review-and-refactor                    # all detected agents
skillmd add github/review-and-refactor -a github-copilot  # Copilot only

The GitHub Copilot install guide on SkillMD lists the paths and the manual copy steps.

Surfaces: where the skill runs

This is the biggest structural difference. Claude Code is one product with a terminal UI, an IDE extension, a desktop app, a web app, and cloud sessions, all reading the same skill directories. Copilot is a family of products, and skills reach all of them:

Copilot surfaceReads repo skillsNotes
Copilot CLIYesAlso reads personal skills
Copilot cloud coding agentYesRuns in GitHub’s environment; repo skills only
Copilot code reviewYesA review skill in the repo shapes automated PR reviews
Copilot appYes
VS Code agent modeYesPersonal skills too
JetBrains agent modeYes
Visual StudioYes

The code-review row is worth a second look. A skill named, say, review-and-refactor committed to the repository influences how Copilot reviews pull requests, not just how it writes code in the editor. Claude Code’s equivalent is the /code-review bundled skill, which a project skill of the same name replaces, and which runs as a forked subagent locally or through Claude’s GitHub integration.

Skills vs the older Copilot customization files

Copilot had a customization system before skills, and it still exists. Each file type answers a different question.

FileLoadsUse it for
.github/copilot-instructions.mdEvery request in the repoFacts and constraints: stack, conventions, do-nots
*.instructions.md with applyTo globsRequests touching matching filesArea-specific constraints
*.prompt.md prompt filesWhen you run themReusable prompts you trigger by hand
*.agent.md custom agentsWhen you select the agentA persona with its own tools and instructions
SKILL.md skillsWhen the task matches the descriptionProcedures and reference material, loaded on demand

The mapping to Claude Code is close:

CopilotClaude Code
copilot-instructions.mdCLAUDE.md
*.instructions.md with applyToNested CLAUDE.md in subfolders, or a paths-style approach via skill descriptions
Prompt filesManual-only skills (disable-model-invocation: true)
Custom agentsSubagents in .claude/agents/
SkillsSkills

The rule for splitting content is the same in both ecosystems: always-on files hold constraints, skills hold procedures. If your copilot-instructions.md has grown a “how to add a migration” section with eight numbered steps, that section is a skill.

Frontmatter: what each tool honors

Copilot’s documentation describes name and description and defers to the open spec for the rest. Claude Code adds a long list of optional fields. What happens to each in Copilot:

FieldClaude CodeGitHub Copilot
name, descriptionReadRead
license, compatibility, metadataRead, passed throughTolerated (spec fields)
allowed-toolsPre-approves tools for the invoking turnNot documented as honored
disable-model-invocationManual-only via /nameNot documented; Copilot triggers by description
user-invocableHide from the / menuNot applicable
context: fork, agent, model, hooks, argument-hintReadIgnored

Unknown fields do not break loading in Copilot, so a Claude skill with context: fork still works there; it runs inline. The practical gap is manual-only: Copilot does not offer a frontmatter switch to stop a skill from auto-triggering. If a skill has side effects and you need to guarantee a human triggers it, in Copilot that is a prompt file rather than a skill.

Invocation

ActionClaude CodeGitHub Copilot
AutomaticBy descriptionBy description
Explicit/skill-name [args], body reads $ARGUMENTSDescribe the task; Copilot selects the skill. Prompt files for explicit triggers
Manage installed skills/skills menu, live reloadgh skill commands in the GitHub CLI
Discover community skillsRegistries, plugins, claude.ai syncgh skill, github/awesome-copilot, anthropics/skills, registries

Cloud behavior

Both tools have the same rule for cloud execution: personal skills stay on your machine.

  • Copilot’s cloud coding agent and code review run in GitHub’s environment and see only skills committed to the repository.
  • Claude Code’s cloud sessions and Cowork sessions do not read ~/.claude/skills/; they load skills enabled on your claude.ai account plus skills committed to .claude/skills/ in the cloned repo.

If it has to work in CI, in a cloud agent, or in automated review, it has to be in the repo.

Distribution and safety

Copilot points users at gh skill, the github/awesome-copilot collection, and Anthropic’s anthropics/skills repository. Claude Code points at plugins and claude.ai. Both accept anything spec-compliant from anywhere, which puts the safety question on you.

A skill is instructions the agent will follow, and Copilot’s code-review surface means a malicious skill committed to a repository could shape what automated review says about a pull request. Read skills before committing them, check bundled scripts, and prefer sources that review submissions. Every public skill on SkillMD passes a safety review before listing and shows a capabilities summary on its page; the registry lists 25,000+ skills and tags which agents each author tested with.

Writing one skill for both

  1. Frontmatter: name, description, license. Nothing else unless you accept it will only take effect in Claude Code.
  2. Folder name equals name, lowercase with hyphens, under 64 characters.
  3. Body under 500 lines; long reference material in references/.
  4. Do not rely on allowed-tools for correctness. In Copilot the skill must work with normal permission prompts.
  5. If the skill must never auto-trigger, use disable-model-invocation: true for Claude Code and ship a prompt file for Copilot, or accept description-based triggering in Copilot.
  6. Commit to .claude/skills/. Both tools read it. Add .github/skills/ only if your organization standardizes on it.
  7. skillmd lint before you commit.

Summary table

DimensionClaude CodeGitHub Copilot
SpecAgent Skills SKILL.mdAgent Skills SKILL.md
Project dirs.claude/skills.github/skills, .claude/skills, .agents/skills
Personal dirs~/.claude/skills~/.copilot/skills, ~/.agents/skills
SurfacesCLI, IDE extension, desktop, web, cloud sessionsCLI, cloud coding agent, code review, app, VS Code, JetBrains, Visual Studio
Always-on layerCLAUDE.mdcopilot-instructions.md, *.instructions.md
Explicit trigger/namePrompt files; description-based selection
Manual-only switchdisable-model-invocationNot in frontmatter
Tool pre-approvalallowed-toolsNot documented
Subagent executioncontext: forkCustom agents (*.agent.md)
Skill management/skills, live reloadgh skill
Body length guidanceUnder 500 linesUnder 500 lines

Further reading

Frequently asked questions

Does GitHub Copilot support Claude skills?

Yes. Copilot implements the same Agent Skills specification and reads project skills from .claude/skills as well as .github/skills and .agents/skills. A skill written for Claude Code loads in Copilot unchanged, as long as it uses spec fields. Claude-only frontmatter is ignored.

Where do GitHub Copilot skills go?

Project skills go in .github/skills, .claude/skills, or .agents/skills in the repository. Personal skills go in ~/.copilot/skills or ~/.agents/skills. Copilot loads them across the CLI, the cloud coding agent, code review, VS Code and JetBrains agent mode, and Visual Studio.

What is the difference between Copilot skills and copilot-instructions.md?

copilot-instructions.md and .instructions.md files are always-on context, injected on every request (optionally scoped by applyTo globs). Skills load only when Copilot matches your task to the skill's description. Constraints go in instructions; procedures go in skills.

Which Copilot surfaces use skills?

The Copilot cloud coding agent, Copilot code review, the GitHub Copilot CLI, the Copilot app, agent mode in Visual Studio Code, agent mode in JetBrains IDEs, and Visual Studio. Skills committed to the repo are available to all of them.

Can I install skills into Copilot from the command line?

Yes. GitHub ships gh skill commands in the GitHub CLI, and the SkillMD CLI installs any registry skill into Copilot's directory with skillmd add owner/name -a github-copilot.