Repowise ships two agent plugins. Both bundle the MCP server, lifecycle hooks, and a set of skills into a single install, so you do not wire up each piece by hand.
| Claude Code | Codex | |
|---|---|---|
| MCP server | Yes | Yes |
| Lifecycle hooks | Yes | Yes, opt-in in current Codex releases |
| Skills | 6 | 6 |
| Slash commands | 18 | None, Codex has no equivalent |
| Install source | Public marketplace | Local marketplace from a repo clone |
Both are AGPL-3.0 and live in the
OSS repo under plugins/.
A plugin is the convenience, not the requirement. Everything it wires up
works standalone: repowise init already registers the MCP server and
writes .mcp.json for you. See
Set up with your agent if you just want
the shortest path.
Claude Code plugin
/plugin marketplace add repowise-dev/repowise
/plugin install repowise@repowiseThat is the whole install. It brings the MCP server, 18 slash commands, six skills, and three hooks.
Slash commands
Explicit, you type them. Each maps to a CLI command and formats the result for reading rather than parsing.
| Command | What it does |
|---|---|
/repowise:ask | Ask a codebase question and get a cited, synthesized answer with a confidence rating. Costs an LLM call. |
/repowise:context | Triage card for a file, module, or symbol: layer, hotspot, fix history, freshness. |
/repowise:coverage | Ingest or inspect test-coverage reports, or gate a change on its patch coverage. |
/repowise:dead-code | Unreachable files, unused exports, and zombie packages, tiered by confidence. |
/repowise:decision | Architectural decisions: list, inspect health, add, or confirm auto-proposed ones. |
/repowise:doctor | Diagnose the setup (install, keys, index drift) and optionally repair it. |
/repowise:export | Export the wiki, or an architecture model, to markdown, HTML, JSON, or Structurizr DSL. |
/repowise:health | Code health: KPIs, lowest-scoring files, refactoring targets, trends, per-file markers. |
/repowise:impacted-tests | Tests whose coverage intersects a change's changed lines, for a commit, range, or staged diff. |
/repowise:init | Set up repowise here. Installs the CLI if needed, asks about preferences, runs the indexing. |
/repowise:reindex | Rebuild the vector store by re-embedding wiki pages. No LLM calls, embeddings only. |
/repowise:risk | Rank a commit, a base..head range or uncommitted work for review against this repo's own commits. |
/repowise:search | Search the wiki by natural language, full text, or symbol. |
/repowise:security | Scan for security signals. Use --history to walk full git history for leaked secrets. |
/repowise:status | Index health: sync state, page counts, provider, token usage. |
/repowise:symbol | Read one function, class, or constant's body with live-verified line bounds. |
/repowise:update | Incremental update so the docs match recent commits. |
/repowise:why | Why the code is shaped this way: decisions, rationale, and git archaeology. |
Skills
Implicit, they activate on their own when the work matches. Each checks for
a .repowise/ directory first and stays out of the way if the repo is not
indexed, so installing the plugin globally does no harm in unindexed repos.
| Skill | Activates when |
|---|---|
codebase-exploration | Understanding or explaining a codebase: how does X work, where is Y implemented, what does this module do. |
pre-modification-check | Before editing, refactoring, or deleting files, especially shared utilities and core modules the user did not name. |
change-review | Reviewing a PR, a branch diff, or working-tree changes before they merge. Blast radius, missing co-changes, test gaps. |
architectural-decisions | Questions about why code is built a certain way, or before diverging from an established pattern. |
code-health | Quality, complexity, technical debt, what to refactor next, untested hotspots, coverage gaps. |
dead-code-cleanup | Cleanup, removing unused code, reducing bundle size, repository hygiene. |
Hooks
Three, all calling the repowise-augment entry point:
| Hook | Fires on | Why |
|---|---|---|
SessionStart | startup, resume, clear | The session opens with repo context already loaded, so the first question does not cost a round-trip. |
PostToolUse | Grep, Glob, Read, Edit, Write, and repowise MCP calls | Nudges the agent toward the index after file and search operations, and flags when a git operation has made the wiki stale. |
PostToolUseFailure | Read, Edit, Write, Grep, Glob, NotebookEdit | Checks codebase context after a failed file operation, so a bad path or stale assumption gets caught before the agent retries blind. |
Claude Code also gets search-result enrichment on Grep and Glob, which
the Codex setup does not attempt. Full detail in
Agent hooks.
The claude_cli provider
Separate from the plugin, and pointing the other way. The plugin lets Claude
Code call repowise. This lets repowise call Claude Code: page generation runs
through your local Claude Code CLI, so a Pro, Max, Team or Enterprise
subscription does the work instead of a metered ANTHROPIC_API_KEY.
repowise init --provider claude_cli --yesFor an index that already exists:
REPOWISE_PROVIDER=claude_cli repowise generate --unwrittenTo persist the choice, put it in .repowise/config.yaml:
provider: claude_cli
model: claude_cli/claude-haiku-4-5It needs the Claude Code CLI installed and authenticated once with
claude login. Any plan that can run claude -p works. Repowise never sees
your credentials: the CLI holds them, exactly as with codex_cli and
opencode.
claude_cli/claude-haiku-4-5 is the default model. The claude_cli/ prefix
is optional on input, so --model claude-opus-4-6 and
--model claude_cli/claude-sonnet-4-6 both work and both round-trip through
the config file.
Caveats worth reading before you commit to it:
- It is slower than an API key. Each page is a full CLI process. Budget
roughly 9k output tokens and a few minutes per page, drawn from the same
limits as your interactive Claude Code sessions. On a large repo, scope a
run with
--pathrather than regenerating everything. - Concurrency is bounded at 4. Subscription limits are per account, and
too much concurrency trips the limit and fails the run. The provider runs at
most 4 CLI processes at a time, whatever
--concurrencysays; a lower--concurrencystill lowers it. Raise or lower the cap withREPOWISE_CLAUDE_CLI_CONCURRENCY=2 repowise generate --unwritten. Going above 4 is reasonable on a larger allowance, and it is also the fastest way to trip the account limit mid-run. - Reasoning modes do not map one for one.
low,medium,high,xhighandmaxpass through to the CLI's--effort;autoomits the flag. Repowise'soff,noneandminimalhave no equivalent, so they are warned about and ignored rather than failing the run. - Cost is recorded as $0.00, because billing sits with the subscription.
The CLI's own
total_cost_usdis still kept underusage.reported_cost_usdif you want to audit it.
The subprocess runs in a fresh empty scratch directory, not in your
repository, so Claude Code does not auto-discover your CLAUDE.md and inject
project instructions into every page prompt. Tools are disabled, turns are
capped at one, and --strict-mcp-config stops the subprocess loading MCP
servers from your config.
An agent inside a Claude Code session can run repowise init --provider claude_cli; the nested claude -p calls work, and auth and backend settings
such as CLAUDE_CODE_USE_BEDROCK pass through.
Detected, never picked for you. repowise init reads claude auth status
(and codex login status, opencode auth list) to see how each CLI is
billed, and the plan screen shows that in place of a price, for example
"uses your plan quota, about 14 model calls, 4 at a time, about 4 min". A
--yes run never switches to one: it stays free and prints the command that
would use it. A CLI signed in without a paid plan is listed but never
recommended. Codex signed in through ChatGPT is listed but not offered, since
its status cannot show whether the plan is active; Codex with an API key is
offered, billed per token.
Codex plugin
Repowise supports Codex three separate ways, and they are worth keeping apart:
- Project setup for Codex MCP and lifecycle hooks, via
repowise init --codex. - The
codex_cliprovider, which generates wiki pages through your authenticated Codex CLI subscription instead of an API key. - The plugin, which bundles MCP, hooks, and skills.
Prerequisites
npm install -g @openai/codex
codex login
codex login statusRepowise checks codex --version and codex login status. When both
succeed, interactive repowise init offers Codex project setup.
Non-interactive runs need --codex explicitly; --no-codex skips the
prompt.
Project setup
repowise init --codexThis writes project-local files, not your global
~/.codex/config.toml. It merges into .codex/config.toml:
[mcp_servers.repowise]
command = "repowise"
args = ["mcp"]
cwd = "/absolute/path/to/repo"
startup_timeout_sec = 20
[features]
hooks = trueThe server runs repowise mcp with no path argument. In no-path mode it
walks upward from the current directory to the nearest initialized
.repowise repo. Smoke check with codex mcp list.
Installing the plugin
The Codex plugin installs from a local marketplace rather than a public one, so you need a clone of the repo:
git clone https://github.com/repowise-dev/repowise
cd repowise
codex plugin marketplace add .
codex
/pluginsIt bundles the MCP server, lifecycle hooks, and the same six skills in Codex-neutral form. It adds no slash commands, because Codex has no equivalent surface.
Plugin-bundled hooks are opt-in in current Codex releases. Set
[features] plugin_hooks = true if you want hooks loaded from an installed
plugin. Hooks written by repowise init --codex land in
.codex/hooks.json and are not subject to that flag.
Codex hooks
Written to .codex/hooks.json, not inline [hooks] tables:
| Hook | Fires on | Why |
|---|---|---|
SessionStart | startup, resume, clear | Adds repowise MCP workflow guidance. |
PostToolUse | Bash, shell_command | Detects git operations that make the wiki stale. |
PostToolUse | apply_patch, Edit, Write | Reminds Codex after edits. |
The codex_cli provider
Worth knowing about even if you skip the plugin. It routes page generation through your Codex subscription instead of a metered API key:
repowise init --provider codex_cli --codex --yesRepowise treats codex_cli/* cost as $0.00, because subscription billing
happens outside its API pricing. --reasoning minimal maps to Codex
model_reasoning_effort="low"; low, medium, high and xhigh pass
through when the selected model advertises them. off and none are not
supported by this provider.
AGENTS.md
repowise init --codex generates a managed AGENTS.md by default, the
Codex counterpart to the generated CLAUDE.md. repowise update refreshes
it when editor_files.agents_md is enabled or --agents is passed. The
repowise section sits between managed markers and your own content outside
those markers is preserved.
repowise init --no-agents # skip it
repowise init --agents # force it
repowise update --agents # refresh on updateThe copilot_cli provider
Page generation can also run through a logged-in GitHub Copilot CLI, so a Copilot subscription does the work with no API key:
repowise init --provider copilot_cli --yes
REPOWISE_PROVIDER=copilot_cli repowise generate --unwritten # an existing indexIt needs the copilot CLI on PATH, signed in once. Repowise runs it with
tools, built-in MCP servers and custom instructions turned off, and records
the cost as $0.00 because billing sits with the subscription.
REPOWISE_COPILOT_CLI_CONCURRENCY sets how many processes run at once. Like
the other agent CLIs it has no embedder, so semantic search needs an embedder
key of its own.
Which to install
Install the plugin. The slash commands and skills are the difference between having the tools available and actually having them used at the right moment, and it is a two-line install.
Run repowise init --codex first, since that is the part that wires MCP
and hooks into the project and needs no clone. Add the plugin on top if you
want the skills as well.
There is no plugin, but nothing is lost: point your client at
repowise mcp over stdio and you get the same tools. See
Set up with your agent.