feat: add claude and codex plugins
Merged
KR
13d ago+3318+3318+0123456789012345678901234567890123456789-34-34-01234567890123456789
The e2e skills install only through npx skills add or e2e init, so Codex and Claude Code have no plugin to install them from, and nothing to submit to either app's plugin directory.
- One plugin package,
plugins/e2e/, holds both skills (e2e,create-verification-skill). It ships no MCP server; the server still comes from the project'se2edependency. - Both apps install it from this repo:
.agents/plugins/marketplace.json(Codex) and.claude-plugin/marketplace.json(Claude) point at./plugins/e2e. Install it ase2e@e2e. skills/is still where the skills are written.scripts/sync-plugin.tscopies them into the plugin, prunes copies whose source is gone, writesLICENSEand the Claude manifest from the Codex one, and sets both manifests'versionto the runner's.pnpm plugins:checkis part ofpnpm checkandspec.yml, so a skill edit that wasn't synced fails CI.version-packagesruns the sync. Claude caches installs by version, so the plugin needs a new version with every release or installs never update.- Written by hand in the plugin: the Codex manifest apart from
version,assets/, and each skill'sagents/openai.yaml(Codex UI metadata). - The example skill under
create-verification-skillnow hasSKILL.example.mdas its entry point, so neither app picks it up as a third skill.
flowchart LR
S[skills/] -->|pnpm plugins:sync| P[plugins/e2e/skills/]
C[.codex-plugin/plugin.json] -->|sync| CL[.claude-plugin/plugin.json]
R[packages/e2e version] -->|sync| C
P --> M1[.agents/plugins/marketplace.json]
P --> M2[.claude-plugin/marketplace.json]
Skill and docs changes that come with it:
- The Claude Code MCP command is now
claude mcp add --scope project e2e -- npx e2e mcpeverywhere: docs, skill,e2e mcp --help, andinit's hint. A user-scope server runsnpx e2e mcpin whatever directory Claude starts in. - Codex MCP setup is documented as a project
.codex/config.tomlentry (docs/reference/mcp.mdx,docs/coding-agents.mdx,skills/e2e/references/mcp.md).initdoes not register Codex. - The skill points to
npx e2e guide <topic>when the plugin's copy and the installed package differ, and runse2e feedback --dry-run, then sends only once the user agrees.
Verified
Ran it locally: yes
claude plugin validate ./plugins/e2eandclaude plugin validate ./pass.- Claude Code with an empty config directory:
claude plugin marketplace add ./andclaude plugin install e2e@e2esucceed, and the installed skills matchplugins/e2e/skills/. Aclaude -p --plugin-dir ./plugins/e2esession lists/e2e:e2eand/e2e:create-verification-skill, loadse2e:e2e, readsreferences/mcp.mdfrom the plugin, and quotes the project-scope command. - Codex 0.162.1 with an empty
CODEX_HOME:codex plugin marketplace add ./andcodex plugin add e2e@e2esucceed.codex plugin listshowse2e@e2e installed, enabled 0.20.0. The app-server'sskills/listreturns exactlye2e:e2eande2e:create-verification-skillwith their display names and icons. A model session was not run: the OpenAI account was out of quota. npx skills add . --list, with and without--full-depth, still offers onlyskills/*; the plugin copies do not show up as duplicates.scripts/sync-plugin.tson a scratch copy: deleting a skill and a reference makes--checkexit 1 and list the stale files; sync removes them with no empty directories left; a new skill withoutagents/openai.yamlfails the check.- The built
e2e mcp --helpprintsclaude mcp add --scope project e2e -- npx e2e mcp. - Docs pages render in
mint dev: the plugin install accordion on/coding-agentsand the Codex block on/reference/mcp.
Written by Claude Opus 5.5 in Claude Code (T3 Code), reviewed by Claude Fable.