Cross-platform agent plugin sync pipeline. Pulls plugins from Codex, Claude Code, Cursor, and the Community ASC skills upstream, converts them to VS Code / GitHub Copilot compatible format, and publishes a Git-hosted marketplace manifest.
bun install
bun run sync # clone upstreams → convert → generate marketplace.jsonOutputs:
| Path | Purpose |
|---|---|
plugins/ |
Generated VS Code plugin directories |
marketplace.json |
Marketplace manifest listing all plugins |
data/sync-state.json |
Incremental sync bookkeeping |
.cache/sync/ |
Local upstream repo clones (gitignored) |
This repository publishes standard marketplace.json, .github/plugin/marketplace.json, and .claude-plugin/marketplace.json copies so both GitHub-style consumers and marketplace loaders can resolve the same catalog.
# Add this marketplace to Copilot CLI
copilot plugin marketplace add <owner>/agent-plugin-marketplace
# Or add from a local clone
copilot plugin marketplace add /path/to/agent-plugin-marketplace
# Browse available plugins in this marketplace
copilot plugin marketplace browse agent-plugin-marketplace
# Install a specific plugin from this marketplace
copilot plugin install <plugin-name>@agent-plugin-marketplace
# List installed plugins
copilot plugin list
# Update an installed plugin
copilot plugin update <name>
# Uninstall a plugin
copilot plugin uninstall <name>Fork this repository, then run the sync pipeline yourself to maintain your own marketplace with customizations.
# 1. Fork and clone
git clone https://github.com/<you>/agent-plugin-marketplace.git
cd agent-plugin-marketplace
# 2. Install and sync
bun install
bun run sync
# 3. Review generated plugins, customize as needed
# 4. Push — your fork is now a live marketplace
git add -A && git commit -m "chore: sync upstream plugins" && git pushTo override upstream repo URLs (e.g. private forks):
CODEX_REPO_URL=https://github.com/your-org/codex-plugins.git \
CLAUDE_CODE_REPO_URL=https://github.com/your-org/claude-plugins.git \
CURSOR_REPO_URL=https://github.com/your-org/cursor-plugins.git \
ASC_SKILLS_REPO_URL=https://github.com/your-org/app-store-connect-cli-skills.git \
bun run syncCopy any plugin directory straight into your project:
# Copy a single plugin into your workspace
cp -r plugins/claude--code-review/ .github/copilot/plugins/code-review/
# Or symlink for easy updates
ln -s "$(pwd)/plugins/claude--code-review" .github/copilot/plugins/code-reviewSkills (.md files), agents, and instructions are immediately available to Copilot after reload.
Add this repository as a VS Code Agent Plugins marketplace source via chat.plugins.marketplaces:
{
"chat.plugins.marketplaces": [
"https://github.com/ilderaj/agent-plugin-marketplace.git"
]
}This repository already includes the same value in workspace defaults at .vscode/settings.json.
flowchart TD
codex[Codex repo] --> codexAdapter[CodexAdapter]
claude[Claude Code repo] --> claudeAdapter[ClaudeAdapter]
cursor[Cursor repo] --> cursorAdapter[CursorAdapter]
community[ASC skills repo] --> ascAdapter[AscSkillsAdapter]
codexAdapter --> ir[Plugin IR<br/>unified intermediate representation]
claudeAdapter --> ir
cursorAdapter --> ir
ascAdapter --> ir
ir --> vscodeGen[VsCodePluginGenerator]
ir --> marketplaceGen[MarketplaceGenerator]
vscodeGen --> plugins[plugins/<name>/]
marketplaceGen --> marketplace[marketplace.json]
plugins --> state[SyncStateManager]
marketplace --> state
state --> syncState[data/sync-state.json]
- Clone / pull each upstream repo into
.cache/sync/<platform>/ - Discover plugins via platform-specific marker directories (
.codex-plugin/,.claude-plugin/,.cursor-plugin/) or repo-rootskills/packs for supported community upstreams - Check per-plugin commit SHA against
sync-state.json— skip if unchanged - Parse each plugin into a unified
PluginIRvia its platform adapter - Generate VS Code plugin directory with converted files under
plugins/ - Build
marketplace.json,.github/plugin/marketplace.json, and.claude-plugin/marketplace.jsonfrom allplugins/*/plugin.json+_meta.jsonpairs - Persist sync state for next incremental run
The pipeline tracks each plugin's latest commit SHA. On re-run, only plugins whose source files actually changed are re-generated. This keeps sync fast and diff-friendly for PR reviews.
| Source Platform | Feature | VS Code Output | Compatibility | Notes |
|---|---|---|---|---|
| Any | Skills (.md) |
Copied as-is | Full | No format conversion needed |
| Any | MCP servers | Copied as-is | Full | Transport and server metadata are preserved |
| Claude Code | Hooks | Copied as Claude-compatible config | Full | VS Code natively reads Claude hook format |
| Claude Code | Agents (.md) |
Copied as-is | Full | VS Code natively reads .claude/agents/*.md |
| Claude Code / Cursor | Commands (.sh / .js / .ts) |
Copied as scripts | Partial | No direct VS Code command equivalent |
| Codex | Agents (.yaml / .yml) |
Converted to Markdown agent files | Partial | name, description, and developer_instructions are preserved; unsupported fields are dropped |
| Codex | Hooks (hooks.json) |
Copied with compatibility warning | Partial | Requires format conversion; limited to 5 events with Bash-only interception |
| Cursor | Rules (.mdc) |
Converted to .instructions.md |
Partial | Rules with alwaysApply: false and no globs are mapped broadly to applyTo: "**" |
| Codex | App connectors (.app.json) |
Dropped | Unsupported | No VS Code equivalent |
Each generated _meta.json includes _compatibility metadata with per-component details and warnings, including platform-specific notes for converted or downgraded components.
| Platform | Upstream Repo | Adapter |
|---|---|---|
| Codex (OpenAI) | https://github.com/openai/plugins.git |
CodexAdapter |
| Claude Code (Anthropic) | https://github.com/anthropics/claude-code.git |
ClaudeAdapter |
| Cursor | https://github.com/cursor/plugins.git |
CursorAdapter |
| Community | https://github.com/rorkai/app-store-connect-cli-skills.git |
AscSkillsAdapter |
The marketplace now includes community--asc-cli-skills, generated from the rorkai/app-store-connect-cli-skills repository.
Runtime prerequisite: install the asc CLI separately. The plugin ships the skill pack and documentation, not the CLI binary itself.
Two GitHub Actions workflows automate the full lifecycle:
Runs weekly (Friday 03:00 UTC) and on manual dispatch:
- Checks out the repo, installs Bun, runs
bun run sync - If
plugins/,marketplace.json,.github/plugin/marketplace.json,.claude-plugin/marketplace.json, ordata/sync-state.jsonchanged, creates a PR with a rich diff summary (added/removed/changed plugins) - Optionally sends Slack and/or Discord notifications
Schedule configuration: Edit the cron lines in sync.yml to switch between weekly and daily. The workflow_dispatch input is informational only.
Webhook notifications: Add SLACK_WEBHOOK_URL and/or DISCORD_WEBHOOK_URL as repository secrets. Both are optional — the workflow silently skips notifications when secrets are not configured.
Runs on every pull request to main:
- Type-checks with
bun run build - Runs the full test suite with
bun test
Set the validate job as a required status check in branch protection to gate PR merges.
Push this repo to GitHub and ensure Actions are enabled. The sync workflow uses GITHUB_TOKEN — no extra secrets required for the core sync. Webhook secrets are optional.
src/
├── index.ts # CLI entrypoint (sync command)
├── adapters/
│ ├── asc-skills.ts # ASC community skill-pack discovery + parsing
│ ├── codex.ts # Codex plugin discovery + parsing
│ ├── claude.ts # Claude Code plugin discovery + parsing
│ └── cursor.ts # Cursor plugin discovery + parsing
├── generator/
│ ├── vscode-plugin.ts # IR → VS Code plugin directory + plugin.json
│ └── marketplace.ts # All plugins → marketplace.json
├── sync/
│ ├── pipeline.ts # Orchestrates clone → parse → generate → state
│ └── sync-state.ts # Tracks per-plugin commit SHA for incremental sync
└── utils/
└── git.ts # Git clone/pull/SHA helpers
| Variable | Default | Purpose |
|---|---|---|
CODEX_REPO_URL |
https://github.com/openai/plugins.git |
Override Codex upstream |
CLAUDE_CODE_REPO_URL |
https://github.com/anthropics/claude-code.git |
Override Claude Code upstream |
CURSOR_REPO_URL |
https://github.com/cursor/plugins.git |
Override Cursor upstream |
ASC_SKILLS_REPO_URL |
https://github.com/rorkai/app-store-connect-cli-skills.git |
Override the ASC skills upstream |
MARKETPLACE_OWNER_NAME |
agent-plugin-marketplace |
Marketplace owner name |
MARKETPLACE_OWNER_EMAIL |
— | Marketplace owner email |
MARKETPLACE_OWNER_URL |
— | Marketplace owner URL |
MARKETPLACE_DESCRIPTION |
Cross-platform agent plugins converted for VS Code |
Marketplace description |
SYNC_REPORT_PATH |
— | Write Markdown sync report to this path (used by CI) |
bun install # install dependencies
bun test # run tests
bun run build # compile TypeScript → dist/
bun run sync # full sync pipelineFor compatibility-sensitive validation guidance, see docs/testing/plugin-test-strategy.md.
- Create
src/adapters/<platform>.tsimplementing theSourceAdapterinterface - Register in
createPipeline()insrc/index.ts - Add tests covering discovery, parsing, compatibility, and sync
Delivered milestones are kept here for historical context. 1.0.0 shipped the v0.2 and v0.3 work below.
- Rich PR descriptions with diff summary (added/removed/changed plugin counts)
- Configurable sync frequency (daily / weekly / on-demand) via workflow inputs
- Slack / Discord webhook notification on sync PR creation
- CI validation: type-check + test gate before PR merge
- Standard
.github/plugin/marketplace.jsonand.claude-plugin/marketplace.jsonwritten on every sync (complete) plugin.jsonnow contains only official Copilot CLI manifest fields withstrict: false- Per-plugin
_meta.jsonsidecar preserves source platform, compatibility, and display metadata - Support Copilot custom instructions (
.instructions.md) as a first-class conversion target
Bring plugins from more AI-native editors into the VS Code / Copilot ecosystem.
- Add Windsurf (Codeium) adapter: sync Windsurf rules, workflows, and AI presets so Copilot users gain access to Codeium's curated community prompts
- Add Zed adapter: convert Zed assistant panels, slash commands, and context providers into Copilot-compatible skills and instructions
- Add JetBrains AI Assistant adapter: extract AI prompts and custom actions from JetBrains plugin format and convert to
.instructions.mdand agent skills - Unified adapter scaffolding: streamline
SourceAdapterinterface to make adding new IDEs a one-day task instead of a week
Maximize the usable surface area of every synced plugin, not just metadata.
- MCP server auto-wiring: generate ready-to-use
.vscode/mcp.jsonworkspace configs so MCP-based plugins work out of the box after install - Command → VS Code Task mapping: convert platform-specific commands (
.sh/.jsscripts) into VS Codetasks.jsonentries with keybinding suggestions - Hook normalization: unify hook event models across all source platforms into a single VS Code-native lifecycle (file save, terminal run, commit, etc.)
- Composite plugin bundling: detect plugins that work together (e.g. a skill + its MCP server + its agent) and generate a single combined plugin with all components wired up
- Compatibility self-test: each generated plugin includes a
verify.tsscript that validates structure, resolves file references, and checks MCP server reachability
Enable every IDE ecosystem to benefit from every other, with community contribution as the growth engine.
- Multi-target generation:
bun run generate --target=copilot|cursor|claudeoutputs plugins in any target IDE's native format, turning this repo into a universal plugin interchange - Reverse adapters: IR → Cursor
.mdcrules, IR → Claude Code plugin format, IR → Zed extensions — so a Codex plugin can run in Cursor, and vice versa - Community plugin submissions: accept third-party plugin PRs via a
plugins/community--<name>/convention with automated validation CI, letting users contribute plugins from any IDE - Browsable catalog: generate a GitHub Pages static site from
marketplace.jsonwith search, filtering by platform/category/compatibility, and one-click install instructions
See upstream plugin repositories for individual plugin licenses. This pipeline code is provided as-is.