feat(host): emit Claude Code + Codex plugin manifests from shared skill body#1436
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
…ll body Closes #1433. Adds .claude-plugin/plugin.json and .codex-plugin/plugin.json at the repo root, both pointing to skills/openchrome/ as the SSOT skill body. Registers the openchrome MCP server (openchrome serve --auto-launch) in both manifests. Adds skills/openchrome/SKILL.md (shared body) and a connect.md slash command stub. Adds "Host plugins" section to README.md. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ILL.md
The shared SKILL.md is loaded verbatim by both Claude Code and Codex
manifests, so it must use bare MCP tool names rather than Claude Code's
`mcp__openchrome__` prefix. Every other tool in the skill body already
uses the bare name; align screenshot ("computer") with that convention
so the body stays host-neutral per P1 in #1359.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
440fcfc to
1e95d04
Compare
Review summary — scoped down to stated description; awaiting CI ⏳What changed in this revisionThe previous head (`440fcfc5`) carried 9 commits of which 8 were a stale snapshot of the A2 outcome-contract-template stack (PRs #1388/#1394/#1395/#1396/#1397/#1411/#1412). Those PRs were merged into intermediate stack branches but only `#1410` reached `develop` — and `#1410` only delivered `public-web/page-meta.ts`. The branch's older `registry.ts` had also diverged from `develop`'s now-hardened version (which gained a recursive `deepFreeze`), so a straight rebase produced unresolvable add/add conflicts on `src/contracts/templates/{index,registry}.ts` and the corresponding tests. To match the PR description ("Closes #1433 … 5 files added") I reset the branch to `origin/develop` and cherry-picked only the plugin-manifest commit, then added one nit fix:
Final diff: 6 files changed, 185 insertions(+), 2 deletions(-) — matches the PR description. SSOT alignment (#1359)
Orphaned A2 workThe 7 stale commits (default-registry singleton, spa-hydrated / link-graph / authenticated-fields templates, `extract_data` `template_id`, `oc_assert` `contract_id`, `docs/contracts/templates.md`) deserve a fresh PR rebased on develop's hardened registry. Not in scope here. Verification
Pending: CI green across the matrix. |
…covery Claude Code (and Codex) auto-discover slash commands from a top-level commands/ directory, not from skills/<name>/commands/. Relocate connect.md so /openchrome:connect actually registers, and update the README to describe the correct layout. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Review & merge-readiness analysis (#1436)Intent: Emit Claude Code + Codex plugin manifests from a single shared skill body (SSOT, no per-host duplication). Closes #1433. Alignment with the SSOT (#1359)This is integration sugar done host-neutrally, which #1359 explicitly permits ("host-specific setup or UX integrations are allowed, but they must not define core behavior"). The core value — the Issue found & fixed
Non-blocking notes (P2, left as-is)
VerdictSpecialized code review: MERGE-READY — 0 P0 / 0 P1, remaining items are cosmetic P2. Version |
Summary
.claude-plugin/plugin.jsonand.codex-plugin/plugin.jsonat the repo root — both manifests register the sameopenchromeMCP server (openchrome serve --auto-launch) and point toskills/openchrome/as the shared skill body (SSOT, no per-host duplication).skills/openchrome/SKILL.mdas the shared skill body describing the full OpenChrome tool surface.skills/openchrome/commands/connect.mdslash command stub (/openchrome:connect) so the layout satisfies both Claude Code and Codex plugin conventions.README.mdwith load instructions for both hosts.Closes #1433
Files added / changed
.claude-plugin/plugin.json.codex-plugin/plugin.jsonskills/openchrome/SKILL.mdskills/openchrome/commands/connect.md/openchrome:connectslash command stubREADME.mdTest plan
npm run buildpasses (TypeScript compilation clean)npm testpasses (13 pre-existing baseline failures unchanged — ts-jest infrastructure issue indefault-registry.test.ts, unrelated to this PR; no new failures introduced).claude-plugin/plugin.jsonparses as valid JSON (node -e "JSON.parse(require('fs').readFileSync('.claude-plugin/plugin.json'))").codex-plugin/plugin.jsonparses as valid JSON (node -e "JSON.parse(require('fs').readFileSync('.codex-plugin/plugin.json'))")claude --plugin-dir /path/to/openchromeloads the plugin and/openchrome:connectis availablecodex --plugin-dir /path/to/openchromeloads the plugin🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com