Copilot & Claude Code Equivalents
|
This content was generated with the assistance of AI and should be verified against the official documentation of each tool and framework before being relied on in production. This section’s bibliography lists the reference material consulted while preparing these pages. |
This page is written against the Claude Code CLI 2.1.283, VS Code 1.139 with the GitHub Copilot Chat
extension, and the GitHub Copilot CLI 1.0.88, all re-verified as current as of 2026-09-28; every cell below
was checked against the linked official page on that date, and this is a fast-moving area, so re-check before
relying on an exact field or file name. ai-catalog examples are pinned to commit
58fb709
(main).
Both products increasingly read each other’s files directly rather than requiring a separate copy per tool:
VS Code’s Local harness can read Claude Code hooks (behind chat.useClaudeHooks) and .claude/agents/*.md
custom agents, and Copilot’s own Agent Skills implementation reads the same .claude/skills/ folder Claude
Code does. That convergence is what makes the migration path in the second half of this page realistic rather
than a full duplication of every file.
Mapping table
Each row names the surface, its Claude Code mechanism, its GitHub Copilot mechanism (VS Code, the cloud coding
agent, and the CLI, noted where they diverge), and, where one exists, the closest AGENTS.md-only equivalent — the subset any AGENTS.md-reading tool understands with no vendor-specific file at all. A companion page in this
sub-section covers each surface in depth; this table only maps names.
| Surface | Claude Code | GitHub Copilot (VS Code / cloud agent / CLI) | AGENTS.md-only |
|---|---|---|---|
Instructions |
|
|
|
Path instructions |
Nested |
|
No direct equivalent — AGENTS.md’s own nesting (a subdirectory’s |
Prompt files / commands |
|
|
No direct equivalent — a short, invoke-by-name procedure has no AGENTS.md-only form; write it as a skill instead (next row) |
Skills |
|
Same Agent Skills open standard (agentskills.io): |
The Agent Skills standard itself is tool-agnostic at the |
Agents |
|
|
No shared frontmatter format; an AGENTS.md-only project names delegation conventions in prose rather than as a discrete agent file |
Hooks |
|
Two independent hook layers, both real: (1) Copilot’s own |
No equivalent — a lifecycle hook is inherently tool-specific, since it runs inside one product’s agentic loop |
Permissions |
Permission modes ( |
VS Code’s own approval settings: |
No shared syntax — an allow/deny rule pattern is specific to the product enforcing it |
MCP config |
|
|
|
Plugins / distribution |
A |
Copilot plugins and marketplaces: a |
No equivalent — packaging is inherently a distribution mechanism, not a file convention a bare-Markdown tool reads |
Output styles |
A Markdown file with |
No direct equivalent. Neither GitHub’s Copilot docs nor VS Code’s agent-customization overview (VS Code — Agent customization overview) document a session-wide, swappable response-format switch. The closest substitute is folding tone/format guidance into a custom agent’s own instructions (Subagents & Custom Agents), which fixes the tone to that one agent rather than letting it apply, and be switched, across the whole session |
No equivalent |
Status line |
A shell script configured as |
No direct equivalent documented for VS Code’s Copilot Chat surfaces or the CLI as of 2026-09-28; VS Code’s own status bar is an editor-wide feature with no Copilot-specific customization hook comparable to Claude Code’s stdin-driven script |
No equivalent |
Migrating a Claude-first catalog to also serve Copilot
ai-catalog (this account’s own skill/agent catalog,
albertoirurueta/ai-catalog, pinned at
58fb709) is
Claude-first: 102 skills under .claude/skills/<name>/SKILL.md, three agents under .claude/agents/, and
no AGENTS.md, no .github/copilot-instructions.md, no .github/agents/.agent.md, and no
.github/prompts/.prompt.md on main. Its own comparison page,
Claude Code vs. GitHub Copilot vs. OpenAI Codex, maps the same surfaces from the catalog’s point of view;
read the two side by side, since a fast-moving surface like this one can drift between the two pages' write
dates.
Given the "shared file, no duplication" pattern the mapping table above keeps surfacing, extending a Claude-first repository like this one to also serve Copilot needs four additions, roughly in order of effort:
-
AGENTS.mdat the repository root. The cheapest addition. Per the Instructions row above, Copilot Chat in VS Code, the Copilot CLI, the cloud agent and code review all read it, and so does Claude Code (v2.1.277+) when noCLAUDE.mdis present. ai-catalog already has aCLAUDE.md, so Claude Code would ignore a bareAGENTS.md. Move the tool-neutral content intoAGENTS.mdand keepCLAUDE.mdas an@AGENTS.mdimport plus any Claude-only addenda; Instruction & Memory Files covers that import and the symlink alternative. -
.github/copilot-instructions.md. Needed in addition toAGENTS.md, not instead of it: Copilot Chat on GitHub.com reads repository-wide instructions only from.github/copilot-instructions.md, not fromAGENTS.md. Keep it short and pointed at the same conventionsAGENTS.mdstates, rather than restating the whole file. -
.github/agents/.agent.mdfor the catalog’s three agents. VS Code already reads.claude/agents/.mdin the Claude format, but the Copilot CLI and the cloud agent look in.github/agents/. Portingiru-gate-runner.md,iru-isolated-skill-executor.mdoriru-change-summarizer.md(Agents) is mostly a frontmatter translation. Copilot’stoolslist takes its own aliases:Bashmaps toexecuteandReadtoread.Skillhas no alias, and Copilot ignores tool names it doesn’t recognize, so it is dropped. That matters foriru-gate-runner, whose body tells it to prefer invoking the named gate skill through theSkilltool: the port must either run the gate commands directly (the body’s own fallback, promoted to the default) or rely on Copilot loading the matching skill itself from itsdescription, and its body has to say which. -
Prompt files, only where a Copilot-specific invocation is actually needed. VS Code’s docs mark prompt files deprecated for Agent Host sessions in favor of Agent Skills (see the Prompt files / commands row above), and Copilot already reads the catalog’s
.claude/skills/folder, where each skill is also a/nameslash command in VS Code. Most of the catalog therefore needs no.github/prompts/*.prompt.mdfiles at all. Write one only for a workflow that genuinely wants a Copilot-native invocation distinct from the shared skill.
Example files for the migration
The three files below are minimal, illustrative additions for ai-catalog; none of them exists in the repository at the pinned commit. Each is written against the official page linked after it.
AGENTS.md# AGENTS.md
ai-catalog is a collection of agent skills. There is no application code to compile or unit-test here; the
deliverables are the skills and the Antora docs that describe them.
## Layout
- Skills: `.claude/skills/<name>/SKILL.md`, one directory per skill.
- Agents: `.claude/agents/<name>.md`.
- Docs: `docs/`, an Antora site.
## Build
- Install the docs toolchain: `cd docs && npm ci`
- Build the docs site: `cd docs && npx antora antora-playbook.yml`
## Conventions
- Every skill and agent name starts with `iru-`, in its directory name, its frontmatter `name`, and every
cross-reference to it.
- A skill's `description` states its exact invocation form, for example `/iru-check-license <path-or-glob>`.
- Skills must not assume they run inside ai-catalog; they detect language and tooling at runtime.
AGENTS.md has no required fields or headings; it is plain Markdown, and the file nearest to the edited file takes precedence. See agents.md — the open AGENTS.md format.
CLAUDE.md, reduced to an import plus Claude-only addenda@AGENTS.md
## Claude Code
- Agents under `.claude/agents/` are delegated to with the Agent tool, never invoked as slash commands.
.github/copilot-instructions.mdThis repository is a catalog of agent skills under `.claude/skills/` and agents under `.claude/agents/`.
There is no application code to build or test; only the Antora docs under `docs/` build, with
`cd docs && npx antora antora-playbook.yml`.
Every skill and agent name starts with `iru-`. A skill's `description` must state its exact invocation form.
The full conventions are in `AGENTS.md` at the repository root.
The file is natural-language Markdown in the .github directory; whitespace between instructions is ignored.
See
GitHub — Adding repository custom instructions for GitHub Copilot.
.github/agents/iru-gate-runner.agent.md---
name: iru-gate-runner
description: Runs a single verification or quality-gate check (tests, coverage, lint, license headers, secret scan, or a full build) in an isolated context and reports back only a compact, structured summary, never the raw report.
tools: ["execute", "read"]
---
You are a narrow-purpose runner and reporter for verification/quality-gate work. Run exactly the one check the
prompt names, then report only the summary it asks for.
1. Run the check's underlying command directly (for example `mvn test -Dtest=X` or `dotnet test --filter ...`),
scoped exactly as the prompt says. If a skill in `.claude/skills/` covers the check, read its `SKILL.md`
first for the exact command and report location.
(steps 2 to 4 and "What you report back" as in .claude/agents/iru-gate-runner.md)
Step 1 replaces the Claude body’s "prefer the Skill tool" instruction, since the ported agent has no Skill
tool. description is the only required property; name defaults to the file name, and omitting tools grants
every tool. execute and read are Copilot’s primary aliases for the Claude tools Bash and Read. The body
can be up to 30,000 characters. See
GitHub Copilot — Custom agents
configuration and
GitHub
Copilot — Create custom agents for the CLI.
The shared .claude/skills/ support is the load-bearing fact behind all four steps: because both products read
the same folder, none of ai-catalog’s 102 skills needs to be copied or renamed to reach Copilot. Some frontmatter
still needs fixing, though. The Agent Skills specification and VS Code both cap description at 1,024
characters, and at the pinned commit 84 of the 102 descriptions are longer than that. Separately, 52 of the 102
frontmatter blocks fail a strict YAML parse ("mapping values are not allowed here"), and Claude Code’s own docs
say a skill whose frontmatter doesn’t parse still loads, but with no fields set. So the migration
has a fifth step, done in the shared SKILL.md files themselves: shorten every description to 1,024
characters or fewer, and make every frontmatter block parse as YAML, for example by quoting a plain-scalar
description that contains : followed by a space. See Agent Skills — Specification
(description field),
VS Code — Agent Skills and
Claude Code — Frontmatter reference. With that done, the
additions above are the thin, Copilot-specific layer on top of a catalog that otherwise already works for
both tools. Hooks, plugin packaging and MCP configuration are only partly shared. VS Code can read Claude Code
hooks behind chat.useClaudeHooks, the Claude plugin format and a root .mcp.json, but the Copilot CLI and the
cloud agent use their own hook files, plugin manifests and MCP configuration (see the Hooks, Plugins and MCP
config rows above). Anything the catalog adds on those surfaces needs a real, tool-specific file rather than a
thin translation layer.