{"id":49094004,"url":"https://github.com/abhi-singhs/copilot-cli-claude-code-compat","last_synced_at":"2026-04-20T19:35:22.286Z","repository":{"id":348719874,"uuid":"1199549798","full_name":"abhi-singhs/copilot-cli-claude-code-compat","owner":"abhi-singhs","description":"Claude Code compatibility layer for GitHub Copilot CLI — use familiar Claude Code syntax with Copilot CLI. Includes a flag-translation wrapper (cpc), a /claude-help reference skill, and config-sync setup scripts for macOS, Linux, and Windows.","archived":false,"fork":false,"pushed_at":"2026-04-20T06:10:07.000Z","size":126,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-20T08:11:15.352Z","etag":null,"topics":["claude-code","cli-compatibility","command-line","copilot-cli","copilot-plugin","developer-tools","github-copilot","migration","powershell","python"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abhi-singhs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-02T13:12:32.000Z","updated_at":"2026-04-20T06:10:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/abhi-singhs/copilot-cli-claude-code-compat","commit_stats":null,"previous_names":["abhi-singhs/copilot-cli-claude-code-compat"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/abhi-singhs/copilot-cli-claude-code-compat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhi-singhs%2Fcopilot-cli-claude-code-compat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhi-singhs%2Fcopilot-cli-claude-code-compat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhi-singhs%2Fcopilot-cli-claude-code-compat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhi-singhs%2Fcopilot-cli-claude-code-compat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abhi-singhs","download_url":"https://codeload.github.com/abhi-singhs/copilot-cli-claude-code-compat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhi-singhs%2Fcopilot-cli-claude-code-compat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32062779,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","cli-compatibility","command-line","copilot-cli","copilot-plugin","developer-tools","github-copilot","migration","powershell","python"],"created_at":"2026-04-20T19:35:16.360Z","updated_at":"2026-04-20T19:35:22.280Z","avatar_url":"https://github.com/abhi-singhs.png","language":"Python","readme":"# claude-compat — Claude Code Compatibility for Copilot CLI\n\nA **Copilot CLI plugin** + companion wrapper script that lets you use Claude Code CLI syntax with GitHub Copilot CLI, without shadowing your real `claude` binary.\n\n## What's Included\n\n| Component | Type | Purpose |\n|---|---|---|\n| `plugin.json` | Plugin manifest | Registers this as a Copilot CLI plugin |\n| `skills/claude-compat/SKILL.md` | Plugin skill | `/claude-help` — full mapping reference inside Copilot sessions |\n| `hooks.json` | Plugin hook | Shows a reminder on session start |\n| `cpc` | Companion script | Translates Claude Code CLI flags → Copilot CLI flags |\n| `setup-claude-copilot-compat.sh` | Setup script (bash) | Symlinks config dirs + installs the plugin |\n| `setup-claude-copilot-compat.ps1` | Setup script (PowerShell) | Same as above, for Windows/PowerShell |\n| `cpc.ps1` | PowerShell wrapper | Invokes the `cpc` Python script from PowerShell |\n| `cpc.cmd` | CMD wrapper | Invokes the `cpc` Python script from cmd.exe |\n\n## Prerequisites\n\n- [GitHub Copilot CLI](https://docs.github.com/en/copilot/how-tos/set-up/install-copilot-cli) installed (`copilot --version`)\n- Python 3.6+ (ships with macOS; install from python.org on Windows)\n\n## Installation\n\n### Option A: Plugin only (no `cpc` wrapper)\n\nIf you just want the `/claude-help` reference skill inside Copilot CLI:\n\n```bash\ncopilot plugin install ./\n```\n\n### Option B: Full setup (plugin + wrapper + config sync)\n\n**macOS / Linux (bash):**\n```bash\n# 1. Make scripts executable\nchmod +x cpc setup-claude-copilot-compat.sh\n\n# 2. Put cpc on your PATH (pick one)\ncp cpc /usr/local/bin/\n# or: ln -s \"$(pwd)/cpc\" ~/bin/cpc\n# or: add this directory to PATH\n\n# 3. Run setup (installs plugin + symlinks config dirs)\n./setup-claude-copilot-compat.sh\n```\n\n**Windows (PowerShell):**\n```powershell\n# 1. Put cpc on your PATH (pick one)\nCopy-Item cpc, cpc.ps1, cpc.cmd -Destination \"$env:USERPROFILE\\bin\\\"\n# or: add this directory to your PATH\n\n# 2. Run setup (installs plugin + symlinks config dirs)\n#    Note: Run as Administrator if symlink creation requires elevated privileges.\n.\\setup-claude-copilot-compat.ps1\n```\n\n### Option C: Install from a GitHub repo\n\n```bash\ncopilot plugin install abhi-singhs/copilot-cli-claude-code-compat\n```\n\n## Usage Examples\n\n```bash\n# Start interactive session\ncpc                                    # → copilot\n\n# Start with a prompt\ncpc \"explain this project\"             # → copilot -i \"explain this project\"\n\n# Non-interactive mode\ncpc -p \"summarize README.md\"           # → copilot -p \"summarize README.md\"\n\n# Continue last conversation\ncpc -c                                 # → copilot --continue\n\n# Resume a session\ncpc -r my-session \"keep going\"         # → copilot --resume=my-session -i \"keep going\"\n\n# Auth\ncpc auth login                         # → copilot login\ncpc auth logout                        # → copilot logout\n\n# Update\ncpc update                             # → copilot update\n\n# MCP server management\ncpc mcp                                # → copilot mcp\n\n# Skip permissions\ncpc --dangerously-skip-permissions     # → copilot --allow-all\n\n# Tool permissions (syntax is auto-converted)\ncpc --allowedTools \"Bash(git log *)\" \"Bash(npm test)\" -p \"check history\"\n# → copilot --allow-tool=shell(git log *) --allow-tool=shell(npm test) -p \"check history\"\n\n# Limit turns\ncpc --max-turns 5 -p \"fix all lint errors\"\n# → copilot --max-autopilot-continues=5 -p \"fix all lint errors\"\n\n# MCP config\ncpc --mcp-config ./my-servers.json     # → copilot --additional-mcp-config=@./my-servers.json\n\n# Tool availability\ncpc --tools \"Bash,Edit,Read\" -p \"q\"    # → copilot --available-tools=bash,edit,view -p \"q\"\n\n# Enable remote access (like Claude Code --remote)\ncpc --remote\n# → copilot --remote\n\n# Delegate to cloud (like Claude Code --remote \"task\")\ncpc --remote \"Fix the login bug\"\n# → copilot -i \"/delegate Fix the login bug\"\n\n# Resume a cloud session locally (like Claude Code --teleport)\ncpc --teleport\n# → copilot --resume\n\n# Select model\ncpc --model sonnet \"fix the bug\"       # → copilot --model sonnet -i \"fix the bug\"\n\n# Plan mode\ncpc --permission-mode plan             # → copilot --plan\n```\n\n## Debugging\n\nUse `--dry-run` to see what `copilot` command would be executed:\n\n```bash\ncpc --dry-run --dangerously-skip-permissions --max-turns 3 -p \"fix tests\"\n# Output: copilot --allow-all --max-autopilot-continues=3 -p fix tests\n```\n\n## Interactive Slash Commands\n\nSlash commands are in-session only and can't be aliased externally. Type `/claude-help` inside a Copilot CLI session to see the full mapping table.\n\nQuick reference for the most common ones:\n\n| Claude Code | Copilot CLI | Same? |\n|---|---|---|\n| `/clear` | `/clear` | ✅ |\n| `/compact` | `/compact` | ✅ |\n| `/context` | `/context` | ✅ |\n| `/diff` | `/diff` | ✅ |\n| `/model` | `/model` | ✅ |\n| `/plan` | `/plan` | ✅ |\n| `/resume` | `/resume` | ✅ |\n| `/review` | `/review` | ✅ |\n| `/tasks` | `/tasks` | ✅ |\n| `/agents` | `/agent` | ⚠️ Renamed |\n| `/cost` | `/usage` | ⚠️ Renamed |\n| `/export` | `/share` | ⚠️ Renamed |\n| `/remote-control` | `/remote` | ⚠️ Renamed |\n| `/memory` | — | ❌ Not available |\n| `/autofix-pr` | — | ❌ Not available |\n| `/web-setup` | — | ❌ Not available |\n| `/team-onboarding` | — | ❌ Not available |\n| `/loop` (`/proactive`) | — | ❌ Not available |\n| — | `/research TOPIC` | 🆕 Copilot CLI only |\n| — | `/update` | 🆕 Copilot CLI only |\n| — | `/version` | 🆕 Copilot CLI only |\n\n## Config Sharing\n\nThe setup script symlinks these directories so both tools share the same files:\n\n| Directory | Shared? |\n|---|---|\n| `agents/` | ✅ Symlinked between `~/.claude/` and `~/.copilot/` |\n| `skills/` | ✅ Symlinked (Copilot also reads `~/.claude/skills/` natively) |\n| `commands/` | ✅ Copilot reads `.claude/commands/` natively |\n| `AGENTS.md` | ✅ Copilot reads natively |\n| Settings (`settings.json` / `config.json`) | ❌ Different schemas |\n| MCP config | ❌ Different formats |\n\n## Limitations\n\n- **Slash commands** can't be aliased — use `/claude-help` for the reference\n- **System prompts** (`--system-prompt`, `--append-system-prompt`) don't exist in Copilot CLI — use `.github/copilot-instructions.md` or `.instructions.md` files\n- **MCP configs** have different JSON schemas — migrate manually\n- **Settings** (`~/.claude/settings.json` vs `~/.copilot/config.json`) have different formats\n- **Worktree mode** (`-w`) isn't available — use `git worktree` directly\n- **Windows symlinks** may require running PowerShell as Administrator or enabling Developer Mode\n- **Budget limits** (`--max-budget-usd`) aren't available in Copilot CLI\n- **`/team-onboarding`** is a Claude Code–only command (generates team onboarding guides from session history) — no Copilot CLI equivalent\n- **`/loop`** (`/proactive`) is a Claude Code–only command (runs a prompt repeatedly while the session stays open) — no Copilot CLI equivalent\n- **`/tui`**, **`/focus`**, **`/heapdump`**, **`/recap`** are Claude Code–only UI/debugging commands — no Copilot CLI equivalents\n- **`/ultrareview [PR]`** is a Claude Code–only command (deep cloud-based code review) — use `/review` in Copilot CLI for local reviews\n- **`/keep-alive`** is a Copilot CLI-only slash command (prevent machine sleep) — no Claude Code equivalent\n- **`/research`**, **`/update`**, **`/version`** are Copilot CLI-only slash commands — no Claude Code equivalents\n- **`--mode=MODE`** and **`--plan`** are Copilot CLI-only flags — `cpc` maps `--permission-mode plan` → `--plan`\n- **`COPILOT_SUBAGENT_MAX_DEPTH`** and **`COPILOT_SUBAGENT_MAX_CONCURRENT`** are Copilot CLI-only environment variables for tuning subagent behavior\n\n## Architecture\n\nThis project has two parts:\n\n### Copilot CLI Plugin (`plugin.json`)\nInstalled via `copilot plugin install`. Provides:\n- **`/claude-help` skill** — type it in any Copilot session for the full mapping reference\n- **sessionStart hook** — shows a reminder that the plugin is active\n\n### `cpc` Companion Wrapper\nA standalone Python script (not part of the plugin — plugins can't intercept CLI invocation). It:\n1. Checks for subcommands (`update`, `auth login`, `plugin`, etc.)\n2. Translates flags that differ between the two CLIs\n3. Warns on flags with no Copilot equivalent\n4. Passes through all unknown/matching flags unchanged\n5. On Unix, calls `os.execvp(\"copilot\", ...)` to replace the process — TTY, stdin, and signals are inherited transparently. On Windows, uses `subprocess.run()` and forwards the exit code\n\n**Why can't `cpc` be a plugin?** Copilot CLI plugins can provide skills, agents, hooks, and MCP servers — but they cannot intercept or modify how `copilot` itself is invoked from the shell. Flag translation must happen *before* copilot starts, which only an external wrapper can do.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabhi-singhs%2Fcopilot-cli-claude-code-compat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabhi-singhs%2Fcopilot-cli-claude-code-compat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabhi-singhs%2Fcopilot-cli-claude-code-compat/lists"}