Anything that speaks MCP can read a repowise index. This page is about how deeply each agent is wired, which is a different question, and the one every breadth claim in this space gets wrong.
The tier is derived from the code, never declared. A descriptor reaches Full only by naming both a hook adapter and a transcript adapter, and Good only by wiring instructions or skills beside MCP, so no document can claim a depth the integration does not have.
- Full. MCP tools, a managed instructions file, skills, slash commands, hook-level interception of tool calls, and transcript mining after the fact. Every surface repowise has.
- Good. MCP tools plus a managed instructions file or skills, so the agent is told when to reach for them. No transcript mining, and hooks only where the matrix says so. The agent can ask repowise questions; repowise sees little or nothing of what it does in between.
- Basic. repowise writes the MCP server config and nothing else. The tools are there; no instructions file or skill tells the agent when to use them.
- Paste-config.
repowise agents print-config <id>emits the MCP server snippet and we write nothing. Zero code and zero maintenance per host.
Yes means repowise wires it. Plugin means the host's own plugin ships
it and repowise does not write it. No means the surface does not exist
for that agent. Indexing is Yes when the agent's own CLI can run as the
LLM that writes the index, selected by its provider id (claude_cli, for
example). It is separate from the tier: it says nothing about the session.
init offers a logged-in agent CLI but uses it only when you pick it or pass
--provider. An agent CLI has no embedder, so semantic search needs an
embedder key of its own: see
Embeddings.
Attribution is Yes when repowise can record the agent's edits as they
happen, an opt-in set by attribution.capture and attribution.agents. Every
agent's own git-ai notes, Agent Trace files and commit trailers are read
either way.
| Agent | Tier | MCP | Hooks | Skills | Commands | Instructions | Transcripts | Indexing | Attribution |
|---|---|---|---|---|---|---|---|---|---|
| Claude Code | Full | Yes | Yes | Plugin | Plugin | Yes | Yes | Yes | Yes |
| Codex CLI | Full | Yes | Yes | Plugin | Yes | Yes | Yes | Yes | Yes |
| VS Code | Good | Yes | No | No | No | Yes | No | No | No |
| Cursor | Good | Yes | Yes | No | No | Yes | No | No | Yes |
| OpenCode | Good | Yes | No | No | No | Yes | No | Yes | No |
| Hermes | Good | Yes | No | No | No | Yes | No | No | No |
| GitHub Copilot CLI | Good | Yes | No | No | No | Yes | No | Yes | No |
| Kiro | Good | Yes | No | No | No | Yes | No | No | No |
Target ids for --target=: claude-code, codex, vscode, cursor, opencode, hermes, copilot, kiro.
VS Code, Cursor, OpenCode, Hermes, GitHub Copilot CLI and Kiro sit at Good, and the honest version of that is worth stating plainly. These agents get the MCP tools and the config repowise writes. They do not get hook-level interception: repowise never sees a tool call before it runs, never rewrites a noisy command, and never annotates a result afterwards. Nor is there transcript mining, so nothing learns from the session after it ends.
The one exception is hooks: Cursor runs the distill command-rewrite hook, so noisy commands are rewritten there. Transcript mining is still absent.
That is a real integration and it is most of the value. It is not the same product Full-tier agents get, and breadth that overclaims depth is worse than narrower breadth.
Every other MCP host is served without writing a descriptor for it. Print the server entry and paste it into whatever config that host reads:
repowise agents print-config claude-code # prints, writes nothingAsk for the target id whose host is closest to yours instead of editing a
snippet by hand. The shapes genuinely differ, and not only in their wrapper:
hosts disagree about the top-level key, about whether each entry carries a
type field, about whether the invocation is one array or a command plus a
separate argument list, and about the file format itself, so codex prints
TOML and hermes prints YAML where the others print JSON. claude-code is
the plain mcpServers JSON most hosts read and is the right default when
yours is not listed below.
Hosts people ask about most, none of which repowise writes config for today:
Cline, Windsurf, Zed, Continue, Gemini CLI, JetBrains AI Assistant, Amp.
print-config takes one of the target ids above; there is no descriptor to
name for a host at this tier, which is the point of the tier.
repowise registers eighteen MCP tools. A single-repo server advertises ten
of them by default, and workspace mode adds one more automatically for eleven. A
further seven are off by default, enabled through the mcp.tools config block
or --tools +name. The lean profile trims the default surface to six tools
(seven in workspace mode) for agents on a tight context budget.
Per-tool detail: MCP_TOOLS.md.
The step-by-step recipes, including indexing backends and hook and transcript adapters, are in docs/architecture/agent-platform.md. In short, an integration target is:
- An
AgentIdentityinidentity.py. - A descriptor module in
packages/cli/src/repowise/cli/agent_targets/targets/exporting aTARGETthat satisfies theAgentTargetprotocol intypes.py. - One line in
_TARGET_MODULESinregistry.py. - A README badge under the tier
derive_tiergives it, checked bytests/unit/cli/test_agent_matrix.py. python scripts/gen_agent_matrix.pyto add the row here.
An indexing backend is its own module in
packages/core/src/repowise/core/providers/llm/ subclassing AgentCliProvider,
a ProviderSpec in
specs.py,
and one Backend entry in
tests/unit/test_providers/test_agent_cli_contract.py.
Declare only what the agent genuinely has. derive_tier reads the adapter
names, so a descriptor that names a hook adapter it has not implemented
publishes a Full-tier claim on this page.