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
#!/usr/bin/env bash
# convert-agents.sh — scaffold conversion dispatcher
# Usage:
# ./convert-agents.sh claude-to-copilot <agent-file> [command-file]
# ./convert-agents.sh copilot-to-claude <agent-file>
#
# Reference: skills/convert-to-copilot/SKILL.md
set -euo pipefail
DIR="${1:-}"; AGENT_FILE="${2:-}"; CMD_FILE="${3:-}"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "${SCRIPT_DIR}/lib-extract.sh"
usage() {
cat <<'EOF'
Usage:
convert-agents.sh claude-to-copilot <claude-agent-file> [command-file]
convert-agents.sh copilot-to-claude <copilot-agent-file>
Examples:
./convert-agents.sh claude-to-copilot ~/.claude/agents/pr-reviewer.md ~/.claude/commands/review-pr.md
./convert-agents.sh copilot-to-claude .github/agents/pr-reviewer.agent.md
After scaffolding, run /convert-to-copilot or /convert-from-copilot
in Claude Code for full content transformation.
EOF
exit 1
}
[[ -z "$DIR" || -z "$AGENT_FILE" ]] && usage
[[ ! -f "$AGENT_FILE" ]] && echo -e "${R}Error: $AGENT_FILE not found${NC}" && exit 1
case "$DIR" in
claude-to-copilot)
source "${SCRIPT_DIR}/claude-to-copilot.sh"
claude_to_copilot
;;
copilot-to-claude)
source "${SCRIPT_DIR}/copilot-to-claude.sh"
copilot_to_claude
;;
*)
usage
;;
esac