# Codex Plugin

Install `devboy` as a [Codex plugin](https://developers.openai.com/codex/plugins). Same architecture as the [Claude Code plugin](./claude-code-plugin) — agent-driven bootstrap, no bundled binary, MCP server registration, namespaced skills.

## Install

Codex CLI reads the same `Claude-style marketplace.json` that the Claude Code plugin uses (one of the four marketplace sources documented in [Codex plugin docs](https://developers.openai.com/codex/plugins/build)), so add this repo as a marketplace and install:

```bash
codex plugin marketplace add meteora-pro/devboy-tools
codex plugin install devboy@meteora-devboy
```

OpenAI's official Plugin Directory does not yet accept self-serve community submissions ("coming soon" per the official docs at the time of writing); the per-repo marketplace path above is the supported way to ship today.

## What happens next

The bundled `setup` skill triggers on first use and:

1. Detects plugin context — `$CODEX_PLUGIN_DATA` is set, picks `--agent codex`.
2. Installs `devboy` (npm → fallback to GitHub Release tarball in `${CODEX_PLUGIN_DATA}/bin/`, verified via the per-asset `.sha256` sibling; releases are not code-signed, the SHA file is the integrity check).
3. Runs `devboy onboard --agent codex --yes`.
4. Runs `devboy doctor`.
5. On failure, hands off to `repair`.

After install, restart the Codex session so the MCP server entry binds against the new binary.

## What the plugin ships

| Component | Path inside the plugin |
|---|---|
| Manifest | `plugins/codex/.codex-plugin/plugin.json` |
| Skills (24) | `plugins/codex/skills` symlink → `../claude/skills` |
| MCP server | `plugins/codex/.mcp.json` |
| Binary locator | `plugins/codex/bin/devboy-shim.sh` symlink → `../../claude/bin/devboy-shim.sh` |

Skill names match the source one-to-one (no rename). Namespaced as `/devboy:setup`, `/devboy:review-mr`, …, `/devboy:analyze-usage`.

## Compared to the Claude Code plugin

The two plugins share `/crates/devboy-skills/skills/` as their source of truth and produce identical user-visible skill surface. Differences are mechanical:

| | Claude Code | Codex |
|---|---|---|
| Manifest dir | `.claude-plugin/` | `.codex-plugin/` |
| Plugin data env | `CLAUDE_PLUGIN_DATA` | `CODEX_PLUGIN_DATA` |
| Plugin root env | `CLAUDE_PLUGIN_ROOT` | `CODEX_PLUGIN_ROOT` |
| Subagent format | Markdown | TOML (none today) |
| Marketplace | `meteora-pro/devboy-tools` (this repo, via `.claude-plugin/marketplace.json`) | same `.claude-plugin/marketplace.json` — Codex CLI also reads it (see [Codex plugin sources](https://developers.openai.com/codex/plugins/build)) |

`devboy onboard` dedups against `~/.codex/settings.json#enabledPlugins` the same way it does for Claude.

## Troubleshooting

Same playbook as Claude Code:

- After `setup` finishes, restart the Codex session for the MCP server to bind.
- If `npm install -g` fails, the GitHub Release fallback in `${CODEX_PLUGIN_DATA}/bin/` activates automatically.
- For everything else, run `/devboy:repair`.

## See also

- [ADR-018 — Distribution as Claude Code and Codex plugins](https://github.com/meteora-pro/devboy-tools/blob/main/docs/architecture/adr/ADR-018-plugin-distribution.md)
- [Claude Code plugin install](./claude-code-plugin) — sibling plugin, same architecture
- [Codex Plugin Build Guide](https://developers.openai.com/codex/plugins/build) — upstream plugin spec
