https://github.com/saadmsft/ghcp-plugins-unofficial
Unofficial GitHub Copilot (VS Code) port of anthropics/claude-plugins-official β 21 plugins as prompts, agents, and skills
https://github.com/saadmsft/ghcp-plugins-unofficial
ai-agents anthropic claude-code copilot-chat github-copilot plugins vscode
Last synced: 19 days ago
JSON representation
Unofficial GitHub Copilot (VS Code) port of anthropics/claude-plugins-official β 21 plugins as prompts, agents, and skills
- Host: GitHub
- URL: https://github.com/saadmsft/ghcp-plugins-unofficial
- Owner: saadmsft
- License: other
- Created: 2026-05-21T13:45:51.000Z (25 days ago)
- Default Branch: main
- Last Pushed: 2026-05-21T14:21:28.000Z (25 days ago)
- Last Synced: 2026-05-21T22:58:29.255Z (25 days ago)
- Topics: ai-agents, anthropic, claude-code, copilot-chat, github-copilot, plugins, vscode
- Language: Python
- Size: 556 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README

### _A constellation of Claude Code plugins, reborn for GitHub Copilot Chat in VS Code._
[](LICENSE)
[](https://www.apache.org/licenses/LICENSE-2.0)
[](#-the-pantheon)
[](#-the-pantheon)
[](https://code.visualstudio.com/)
[](https://github.com/anthropics/claude-plugins-official)
One repo. One ./install.sh. Twenty-one specialist agents in your sidebar.
Not affiliated with Anthropic or GitHub. Upstream content Β© Anthropic & contributors (Apache 2.0).
---
## π Why this exists
[Claude Code plugins](https://code.claude.com/docs/en/plugins) bundle **slash commands Β· sub-agents Β· skills Β· MCP servers Β· hooks** into a single installable package. GitHub Copilot Chat in VS Code has the same building blocks β **prompts, agents, skills, MCP** β but speaks a *different on-disk dialect* and YAML frontmatter. So a Claude plugin can't drop in verbatim.
This repo is the **Rosetta stone** between the two ecosystems:
```mermaid
flowchart LR
A[π¦ anthropics/
claude-plugins-official] -->|git clone --depth 1| B[π°οΈ repo/
gitignored mirror]
B -->|build-fork.py
deterministic port| C[β¨ ghcp-plugins-unofficial/
plugins/]
C -->|./install.sh| D[π» VS Code
~/Library/.../prompts/]
C -->|./install.sh| E[π§ ~/.copilot/skills/]
D --> F[(GitHub Copilot Chat
prompts Β· agents Β· skills)]
E --> F
style A fill:#1e293b,stroke:#f59e0b,color:#f1f5f9
style C fill:#1e293b,stroke:#a855f7,color:#f1f5f9
style F fill:#1e293b,stroke:#22c55e,color:#f1f5f9
```
> [!TIP]
> Install once, reload VS Code, and 21 specialist personas live in your `/` slash menu and `@` agent picker. Each is renamed `claude--β¦` so they never collide with your own customizations.
---
## β‘ Quick start
```bash
git clone https://github.com/saadmsft/ghcp-plugins-unofficial.git
cd ghcp-plugins-unofficial
./install.sh --list # π see the roster
./install.sh --dry-run code-review # π preview a single install
./install.sh code-review feature-dev # π― install two
./install.sh # π install ALL 21
```
Then in VS Code:
| | |
|---|---|
| β¨οΈ | β+β§+P β **Developer: Reload Window** |
| `/` | Type a slash in Copilot Chat β `/claude-β¦` prompts appear |
| `@` | Mention an agent β `@Claude: feature-dev β code-architect` |
| π§ | Ask anything β skills auto-trigger by description |
> [!NOTE]
> Need a step-by-step? β **[docs/INSTALL.md](docs/INSTALL.md)** has macOS / Linux / Windows recipes, verification commands, and an MCP-merge walkthrough.
---
## πΊοΈ What lands where
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β plugins/
/prompts/*.prompt.md β ~/Library/.../Code/User/prompts/ β β /claude-
-
β plugins/
/agents/*.agent.md β ~/Library/.../Code/User/prompts/ β β @Claude:
β
β plugins/
/skills//... β ~/.copilot/skills// β β auto-trigger by description
β plugins/
/mcp.json β β manual merge (your call) β β MCP tools in Copilot
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
π macOS path shown. Linux/WSL substitutes `${XDG_CONFIG_HOME:-$HOME/.config}/Code/User/`. Windows is documented in **[docs/INSTALL.md](docs/INSTALL.md#windows)**.
---
## π The Pantheon
> **21 plugins Β· 26 prompts Β· 21 agents Β· 22 skills Β· 1 MCP placeholder**
Each row is one plugin β its emoji is its calling card, its **codename** is your shortcut to remembering what it does, and the counts show what landed in your VS Code profile after `./install.sh`.
| | Plugin | Codename | π¬ | π€ | π§ | π | Purpose |
|---|---|---|---:|---:|---:|:---:|---|
| π οΈ | [`agent-sdk-dev`](plugins/agent-sdk-dev/) | **Hephaestus** | 1 | 2 | β | β | Verifies Anthropic Agent SDK apps (TS + Python) |
| π | [`claude-code-setup`](plugins/claude-code-setup/) | **Genesis** | β | β | 1 | β | Onboarding skill β Claude Code first principles |
| π | [`claude-md-management`](plugins/claude-md-management/) | **Scribe** | 1 | β | 1 | β | Manage `CLAUDE.md` / `AGENTS.md` / `copilot-instructions.md` |
| ποΈ | [`code-modernization`](plugins/code-modernization/) | **Argonauts** | 7 | 5 | β | β | Legacy β modern pipeline: analyst Β· test-engineer Β· architecture-critic Β· security-auditor Β· business-rules-extractor |
| π | [`code-review`](plugins/code-review/) | **The Tribunal** | 1 | β | β | β | Multi-agent PR review with confidence scoring |
| βοΈ | [`code-simplifier`](plugins/code-simplifier/) | **Occam** | β | 1 | β | β | Refactor for clarity β preserves behavior |
| πΏ | [`commit-commands`](plugins/commit-commands/) | **Hermes** | 3 | β | β | β | Conventional commits, autocommit, PR helpers |
| π οΈ | [`cwc-makers`](plugins/cwc-makers/) | **The Makers** | 1 | β | 2 | β | "Code with Claude" maker workflows |
| π | [`example-plugin`](plugins/example-plugin/) | **Hello-World** | 1 | β | 2 | β | Reference plugin (MCP is placeholder) |
| π± | [`feature-dev`](plugins/feature-dev/) | **The Trinity** | 1 | 3 | β | β | spec β code-explorer β code-architect β code-reviewer loop |
| π¨ | [`frontend-design`](plugins/frontend-design/) | **Aesthete** | β | β | 1 | β | Design-system / UI conventions skill |
| πͺ | [`hookify`](plugins/hookify/) | **The Watcher** | 4 | 1 | 1 | β | Conversation-analyzer + helpers _(hooks themselves not ported)_ |
| β | [`math-olympiad`](plugins/math-olympiad/) | **Euclid** | β | β | 1 | β | Competition-math problem-solving |
| π | [`mcp-server-dev`](plugins/mcp-server-dev/) | **The Forge** | β | β | 3 | β | Build Β· test Β· host MCP servers |
| π | [`mcp-tunnels`](plugins/mcp-tunnels/) | **Iris** | 1 | β | β | β | Expose local MCP servers via tunnels |
| πͺ | [`playground`](plugins/playground/) | **Sandbox** | β | β | 1 | β | Scratch / experimentation skill |
| π§© | [`plugin-dev`](plugins/plugin-dev/) | **Daedalus** | 1 | 3 | 7 | β | Author plugins: skill-reviewer Β· plugin-validator Β· agent-creator |
| π¦
| [`pr-review-toolkit`](plugins/pr-review-toolkit/) | **The Six** | 1 | 6 | β | β | Six specialist reviewers: silent-failure-hunter Β· type-design-analyzer Β· comment-analyzer Β· pr-test-analyzer Β· code-reviewer Β· code-simplifier |
| π | [`ralph-loop`](plugins/ralph-loop/) | **Sisyphus** | 3 | β | β | β | "Run until done" iteration pattern |
| π | [`session-report`](plugins/session-report/) | **Chronicle** | β | β | 1 | β | Generate session / standup reports |
| π§ͺ | [`skill-creator`](plugins/skill-creator/) | **Athena** | β | β | 1 | β | Iteratively author + evaluate skills (485-line meta-skill) |
π» Plugins intentionally NOT ported (and why) β click to expand
| Category | Count | Plugins | Why skipped |
|---|---:|---|---|
| **LSP wrappers** | 12 | `clangd-lsp`, `csharp-lsp`, `gopls-lsp`, `jdtls-lsp`, `kotlin-lsp`, `lua-lsp`, `php-lsp`, `pyright-lsp`, `ruby-lsp`, `rust-analyzer-lsp`, `swift-lsp`, `typescript-lsp` | VS Code already has first-class LSP integrations. The Claude-side plugin only exists to wire LSPs into Claude Code's edit-event loop. |
| **Hook / output-style only** | 3 | `explanatory-output-style`, `learning-output-style`, `security-guidance` | GHCP has no analog for Claude Code `hooks/` (shell scripts on `PostToolUse`, `UserPromptSubmit`) or output-style customization. |
| **Placeholders** | 1 | `example-plugin`'s `.mcp.json` β `https://mcp.example.com/api` | Staged but not auto-merged into your MCP config. |
Full reasoning: **[docs/MAPPING.md βΊ what-cannot-be-ported](docs/MAPPING.md#what-cannot-be-ported)**
---
## π§ Repo layout
```
ghcp-plugins-unofficial/
β
βββ π install.sh # the one button you came for
βββ π§Ή uninstall.sh # reverse it surgically
βββ π sync-from-upstream.sh # re-port from a fresh upstream clone
βββ ποΈ marketplace.json # machine-readable index of all 21
β
βββ π¦ plugins/ # 21 ported plugins, one folder each
β βββ /
β βββ plugin.json # metadata + inventory
β βββ prompts/ # *.prompt.md ββ slash commands
β βββ agents/ # *.agent.md ββ chat participants
β βββ skills// # SKILL.md + bundled resources
β βββ mcp.json # MCP server defs (if applicable)
β βββ README.md # per-plugin docs + install snippet
β βββ LICENSE # Apache 2.0, preserved from upstream
β
βββ π docs/
β βββ GHCP-PRIMER.md # π New to Copilot customization? Start here.
β βββ MAPPING.md # π Claude β GHCP feature translation
β βββ INSTALL.md # πΏ Detailed install / verify / per-OS
β βββ TROUBLESHOOTING.md # π©Ί Symptom β cause β fix
β βββ ARCHITECTURE.md # ποΈ How build-fork.py works
β βββ PORTING.md # π οΈ Add a plugin Β· customize porter
β
βββ README.md # β you are here
βββ LICENSE # MIT for tooling
βββ CHANGELOG.md
βββ CONTRIBUTING.md
```
> [!IMPORTANT]
> The porter (`build-fork.py`) lives **one directory up** at `../build-fork.py` β the fork's working tree stays clean of build tooling. Architectural rationale: **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)**.
---
## ποΈ Install / uninstall reference
```bash
./install.sh # π install ALL plugins
./install.sh code-review # π― install one
./install.sh code-review feature-dev # π― install several
./install.sh --list # π print plugin names, one per line
./install.sh --dry-run # π show what would be copied (no writes)
./install.sh --dry-run code-modernization # π combine with selection
./install.sh -h # β built-in help
./uninstall.sh # π§Ή remove ALL claude-* from your profile
./uninstall.sh hookify # π§Ή remove just one
```
> [!CAUTION]
> **Skills are removed-then-copied, not merged.** Any local edits inside `~/.copilot/skills/claude-β¦/` will be lost on re-install. Make changes in `plugins/
/skills/β¦` and re-run `./install.sh` instead.
> [!WARNING]
> **MCP servers are never auto-merged** into your user `mcp.json`. The porter stages them per-plugin so you can review and merge intentionally β see **[docs/INSTALL.md βΊ MCP servers](docs/INSTALL.md#mcp-servers)**.
---
## π Staying in sync with upstream
```bash
./sync-from-upstream.sh # 1οΈβ£ pulls latest anthropics/claude-plugins-official
# 2οΈβ£ regenerates plugins/ deterministically
# 3οΈβ£ leaves your tree dirty for review
git diff # 4οΈβ£ inspect what changed
git commit -am "sync: $(date -u +%Y-%m-%d)"
```
The porter is **byte-deterministic** β running it twice on the same upstream commit produces identical output. `git diff` is a clean signal of what changed upstream this cycle. Details: **[docs/PORTING.md βΊ Syncing](docs/PORTING.md#syncing)**.
---
## ποΈ Architecture
```mermaid
flowchart TB
subgraph upstream["π¦ anthropics/claude-plugins-official"]
U1[plugin.json]
U2[commands/*.md]
U3[agents/*.md]
U4[skills/<n>/SKILL.md]
U5[.mcp.json]
end
subgraph porter["βοΈ build-fork.py Β· deterministic"]
P1[parse_fm
regex YAML]
P2[emit_prompt]
P3[emit_agent]
P4[emit_skill]
P5[prefix all
claude-<plugin>-]
end
subgraph fork["β¨ ghcp-plugins-unofficial/plugins/<P>/"]
F1[plugin.json]
F2[prompts/*.prompt.md]
F3[agents/*.agent.md]
F4[skills/<n>/SKILL.md]
F5[mcp.json Β· staged]
end
U1 --> P1
U2 --> P2 --> F2
U3 --> P3 --> F3
U4 --> P4 --> F4
U5 -.staged.-> F5
P1 --> F1
P5 -.applied to all.-> fork
style upstream fill:#0c4a6e,stroke:#38bdf8,color:#f0f9ff
style porter fill:#3b0764,stroke:#a855f7,color:#faf5ff
style fork fill:#14532d,stroke:#22c55e,color:#f0fdf4
```
**Seven invariants** the porter must preserve (full list in **[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)**):
1. π **Idempotent** β running twice on same input = identical output
2. πͺΆ **Lossless naming** β every artifact prefixed `claude--`, never collides
3. π **Apache-preserving** β per-plugin `LICENSE` always copied verbatim
4. βͺ **No-PyYAML** β regex-only frontmatter parser, zero runtime dependencies
5. π‘οΈ **No mutation of installed files** β `install.sh` only copies, never edits
6. π« **No silent MCP merge** β user opts in manually for every server
7. π― **Skippable explicitly** β LSP/hook-only plugins are filtered with reasons logged
---
## β οΈ Caveats
> [!WARNING]
> 1. **π§ Tool references don't translate.** Claude's `allowed-tools: Bash(gh pr view:*), Read, Grep` is stripped β GHCP's tool surface uses different names. Prompts that say "use a Haiku agent" or "spawn a sub-agent with the Task tool" become *guidance*, not literal sub-spawns. Prose-style prompts still work well.
> 2. **πͺ Hooks are dropped.** No GHCP analog for `hooks/` shell scripts.
> 3. **π¨ Output styles are dropped.** Same reason.
> 4. **π MCP servers are staged, not auto-installed.** Manual merge gives you a chance to review.
> 5. **π§ Skill triggers depend on description quality.** GHCP loads skills lazily by description match. A ported skill that never triggers usually needs description tuning β see **[TROUBLESHOOTING](docs/TROUBLESHOOTING.md#skill-never-auto-triggers)**.
> 6. **π·οΈ The `claude-` prefix is hygiene, not branding.** It guarantees no collision and reliable uninstall β at the cost of mouthful slash-commands like `/claude-pr-review-toolkit-review-pr`. VS Code's incremental filter helps.
---
## π More docs
| π Doc | π― When to read it |
|---|---|
| [`docs/GHCP-PRIMER.md`](docs/GHCP-PRIMER.md) | New to GHCP customization? Start here. |
| [`docs/MAPPING.md`](docs/MAPPING.md) | "What exactly does the porter do to a command vs an agent vs a skill?" |
| [`docs/INSTALL.md`](docs/INSTALL.md) | Detailed install + verification + per-OS notes + MCP-merge guide |
| [`docs/TROUBLESHOOTING.md`](docs/TROUBLESHOOTING.md) | "I installed it but Copilot doesn't see it" |
| [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) | How `build-fork.py` is structured + invariants |
| [`docs/PORTING.md`](docs/PORTING.md) | Add a new plugin Β· customize porter Β· contribute back |
| [`CONTRIBUTING.md`](CONTRIBUTING.md) | Workflow for PRs |
| [`CHANGELOG.md`](CHANGELOG.md) | What changed when |
---
## π License & attribution
### π¦ Plugin content (`plugins/`)
**Β© Anthropic & contributors**
[Apache License 2.0](https://github.com/anthropics/claude-plugins-official/blob/main/LICENSE)
_Per-plugin `LICENSE` files preserved verbatim._
### π οΈ Porting scripts Β· tooling Β· docs
**Β© 2026 Saad Mahmood**
[MIT License](LICENSE)
_The fork itself + `build-fork.py` + `install.sh`._
> [!NOTE]
> Issues with plugin **content** belong upstream at [anthropics/claude-plugins-official](https://github.com/anthropics/claude-plugins-official/issues).
> Issues with **porting** (plugin doesn't load, malformed YAML, install fails) belong [here](https://github.com/saadmsft/ghcp-plugins-unofficial/issues).
---

If this saved you an afternoon, β the repo. If it broke your morning, [open an issue](https://github.com/saadmsft/ghcp-plugins-unofficial/issues/new).