capa
infragate · infragate/capa
A package manager and MCP gateway that consolidates agent skills, tools, rules, and sub-agents into a single `capabilities.yaml` for various AI coding agents.
One capabilities.yaml wires skills, tools, rules, sub-agents, MCP servers, and plugins into Cursor, Claude Code, Codex, Windsurf, GitHub Copilot, and 30+ other AI coding agents
Preview
What you can do with it
- Manage all agent skills and configurations for multiple AI coding agents from a single, version-controlled file.
- Ensure consistent agent setups across team members by using pinned SHAs for capabilities.
- Proxy upstream MCP servers and lazy-load tools on demand to optimize performance and control access.
Safety check
Usable, but read the notes first.
- ●Installer downloads a remote script and pipes it to the shell.
install.sh
Automated scan of the repo files. Always review code you run.
From the README
The package manager and MCP gateway for AI coding agents
Why · Features · Install · Quick start · Wrap · Web UI · Docs
Declare skills, tools, rules, sub-agents, MCP servers, hooks, and plugins once in capabilities.yaml. Run capa install. CAPA writes them into Cursor, Claude Code, Codex, Windsurf, GitHub Copilot, and 35+ other agents — native formats, pinned SHAs, zero manual sync. At runtime it is also the MCP gateway: every agent talks to one local endpoint; CAPA proxies upstream servers, lazy-loads tools, and scopes what each sub-agent can call.
https://github.com/user-attachments/assets/98442d19-44c9-43e6-b2c2-88156b189d5e
Why CAPA?
Agent config today is scattered across CLAUDE.md, .cursor/rules/, AGENTS.md, MCP JSON, hooks, and skill folders. No two teammates match. Nothing is pinned. Cloning the repo does not clone the agent setup.
CAPA collapses that into one version-controlled file next to your code — and a local MCP gateway in front of every tool:
capabilities.yaml— source of truth for every capabilitycapabilities.lock— SHA pins so tomorrow's clone gets the same bytes- Marker blocks — surgical writes that leave hand-edited content alone
- MCP gateway — one endpoint per project; CAPA proxies stdio / HTTP / SSE servers, applies formatters, and records activity
The teammate who clones tomorrow gets the exact setup you have today.
Features
- One file → 35+ agents — write once; CAPA fans out to each provider's native layout (
.cursor/rules/,.claude/agents/,AGENTS.md, …) - MCP gateway — one local endpoint per agent; CAPA proxies upstream MCP servers, lazy-loads tools on demand, and filters tools per sub-agent
- Cheaper inference, same quality — on-demand tool loading instead of front-loading the whole catalog (19–40% fewer tokens across 150 trials on claude-opus-4-8)
capa wrap— run Cursor, Claude, Codex, and more from a shadow workspace so provider dirs never touch your real repo- Local Web UI — interactive capabilities editor with live YAML sync, registry browse, OAuth setup, and drag-to-reorder
- Activity traces — live feed of every MCP call, shell tool, and agent span on the project page
- Plugins that unpack — Claude and Cursor plugins decompose into skills, MCP, rules, sub-agents, and hooks
- Registries — browse skills.sh, Cursor Marketplace, Claude plugins, and Claude marketplace catalogs
capa add --passthrough— write provider-native files directly when you want unmanaged one-offs- Sub-agent isolation — each sub-agent gets a filtered MCP endpoint, so research agents never inherit a
git pushtool
Installation
macOS and Linux:
curl -LsSf https://capa.sh/install.sh | sh
Windows:
powershell -ExecutionPolicy ByPass -c "irm https://capa.sh/install.ps1 | iex"
Quick start
1. Initialize
cd your-project
capa init
Creates capabilities.yaml and registers the project with the local CAPA server (default http://localhost:5912).
2. Add capabilities
capa add vercel-labs/agent-skills@web-researcher
capa add --server --id brave --cmd npx --arg @brave/brave-search-mcp
capa registry search skills-sh "research"
3. Install
capa install # interactive: confirms executable surface, then installs
capa install --yes # CI / scripts: skip confirmation
capa install --dry-run # preview MCP servers, hooks, and commands without changes
Resolves SHAs, fills the cache, writes per-provider files, and registers one MCP endpoint with each configured agent. Resolved SHAs land in capabilities.lock.
[!NOTE] Non-interactive shells (CI, scripts) must pass
--yes. The first install prints the executable surface (MCP stdio servers, hooks, command tools, plugins) and asks for confirmation; unchanged surfaces skip the prompt on re-run.
[!TIP] Already have skills, MCP configs, and rules in the repo? After
capa init, use the bundled/bootstrapskill — the agent scans the project and drafts the CAPA config for you.
4. Run tools from the terminal
capa sh # list every configured tool
capa sh brave # list brave subcommands
capa sh brave search --query "…" # run a tool directly
capa sh --raw brave search --query "…" # skip per-tool formatters
Every tool you define is also a CLI command under capa sh.
5. Open the Web UI
capa status # prints the local URL when the server is up
Edit skills, tools, rules, hooks, plugins, and agents in the browser. Changes sync live back to capabilities.yaml.
capa wrap
Run an agent without polluting your repo with .cursor/, .claude/, and friends. CAPA builds a shadow workspace under ~/.capa/workspaces/, symlinks your project (minus provider-owned paths), installs capabilities into the shadow, and launches the agent.
capa wrap cursor # Cursor GUI — stops when the window closes
capa wrap claude # Claude Code (aliases: claude-code)
capa wrap agent # Cursor CLI
capa wrap codex
capa wrap gemini-cli
capa wrap opencode
capa wrap cursor --print-dir # print shadow path, then launch
capa wrap --prune # clean stale workspaces
capa stop # stop server + active wrap sessions
Wrappable today: Claude Code, Codex, Cursor, Gemini CLI, OpenCode, iFlow CLI, Kiro CLI, Qwen Code, Kimi CLI.
[!NOTE] On Windows, creating the shadow workspace may require Developer Mode (or an elevated shell) for symlinks. GitHub Copilot is not wrappable yet — it owns shared
.github//.vscode/trees that need subpath exclusions.
Web UI & observability
The embedded React UI (served by the local server) covers the full project lifecycle: