Convert to Copilot
convert-to-copilot/
Port a Claude Code agent, with its command and skills, to one GitHub Copilot agent. Maps tools, models and sub-agent calls, validates the result and ships scripts for both directions.

Port a Claude Code agent, with its command and skills, to one GitHub Copilot agent that works the same way.
Why use it
- Your team uses both Claude Code and GitHub Copilot, and every agent has to be written twice.
- Copilot has no skills or commands: a straight copy loses the knowledge and the triggers the agent depends on.
- Hand-ported agents drift, wrong tool aliases (
fetchinstead ofweb), dead file paths, task tracking that fails silently.
What it does
- Merges the agent + its launch command into one
.github/agents/{name}.agent.md, with the command's trigger phrases in thedescription. - Splits every skill into
.copilot_utils/{name}/context/(what to use) andtrees/(how to decide), and rewrites each skill reference to a file path. - Maps tools, models and frontmatter:
WebFetch→web,TaskCreate→manage_todo_list,opus→Claude Opus 4.5, dropscolor/memory/isolation/skills/allowed-tools. - Converts sub-agent calls to
handoffs(VS Code) orrunSubagent()(GitHub Copilot). - Validates the result, every referenced path exists, aliases are correct, body under 30,000 characters, and prints a conversion report.
- Ships scaffold scripts for both directions (
claude-to-copilot,copilot-to-claude) and a full worked example.
Benefits
- Write the agent once. Claude Code stays the source; Copilot gets a faithful port.
- No lost knowledge. Skills become referenced context files, not a pasted wall of text.
- Correct on the first run. The tool and model tables catch the aliases that break Copilot agents.
- Reviewable. Each phase writes its output to
.copilot-convert-results/, so you can see every decision.
Install
Download this skill and copy the convert-to-copilot folder to .claude/skills/convert-to-copilot/ in your project, or to ~/.claude/skills/convert-to-copilot/ to use it in every project. Claude Code finds it on its own; you can also call it with /convert-to-copilot.
Part of the Agent Engineering bundle. To get the whole set as a Claude Code plugin: /plugin marketplace add endorphin-ai/hasbrains-agent-kit, then /plugin install agent-engineering@hasbrains-agent-kit.
Source: endorphin-ai/hasbrains-agent-kit. License: MIT.
Files (17)
Files
---
name: '{agent_name}'
description: '{merged description: agent desc + command trigger phrases. 50-150 chars, single-quoted}'
tools: ['{see tool-mapping.md — "web" not "fetch", "todo" not "task"}']
model: '{Claude Opus 4.5 | Claude Sonnet 4.5 | Claude Haiku 4.5 — omit if inherit}'
target: 'vscode'
argument-hint: '{from command argument-hint}'
---
## PROGRESS TRACKING
**CRITICAL:** Use `manage_todo_list` tool to track progress.
**Initial Setup (before starting work):**
```json
{
"operation": "write",
"todoList": [
{ "id": 1, "title": "PHASE 1: ...", "status": "not-started" },
{ "id": 2, "title": "PHASE 2: ...", "status": "not-started" }
]
}
```
**During Execution:**
```json
{ "operation": "update", "updates": [{ "id": 1, "status": "in-progress" }] }
{ "operation": "update", "updates": [{ "id": 1, "status": "completed" }] }
```
---
## Role
{Agent role description — copy and adapt from Claude agent body}
---
## Context Files
| Context file | What it knows | When you use it |
| ------------------------------------------------ | ---------------- | --------------- |
| `.copilot_utils/{agent_name}/trees/{skill}.md` | {decision logic} | PHASE {N} |
| `.copilot_utils/{agent_name}/context/{skill}.md` | {knowledge} | PHASE {N} |
---
## PHASE 1: {Phase name}
**Apply tree:** `.copilot_utils/{agent_name}/trees/{skill}.md`
{Phase steps...}
**Output Variables:**
- `varName` = {what it contains}
---
## ALWAYS_DO
{Copy ALWAYS_DO rules from Claude agent}
## NEVER_DO
{Copy NEVER_DO rules from Claude agent}