feat(plugins): make the Claude Code plugin installable from a marketplace#45
Conversation
…lace The marketplace manifest lived at plugins/.claude-plugin/marketplace.json, a subdirectory Claude Code never inspects. `claude plugin marketplace add omerakben/code-oz` only reads .claude-plugin/marketplace.json at the cloned repo root, so the plugin was un-discoverable despite being built and merged. Move the manifest to the repo root and repoint the two plugin sources to ./plugins/code-oz and ./plugins/code-oz-discipline (sources resolve relative to the marketplace root). Flip the two manifest tests to the root contract RED-first, and add an installability guard asserting every source resolves to a real plugin dir whose plugin.json name matches the entry. Document the install path in the README, including the --sparse checkout for the monorepo. Verified: claude plugin validate passes on the root marketplace and both plugins; an isolated-config `marketplace add` + `plugin install` smoke succeeds end-to-end; 3812 offline tests pass; typecheck clean.
The plugin resolver and the agentskills.io skill told users to run `brew install omerakben/tap/code-oz`, which Homebrew expands to the nonexistent github.com/omerakben/homebrew-tap repo. The real tap is omerakben/homebrew-code-oz, so the correct form is `brew install omerakben/code-oz/code-oz` (the form the README already uses). A marketplace user without the engine binary or npx hits the resolver's hard-stop and npx-failure branches, so this wrong command was directly on the new plugin-install path. Fix every user-facing occurrence (resolve-code-oz.sh hard-stop + npx-failure hints, agent-skills README + SKILL.md); historical design docs are left as point-in-time records. Strengthen the two resolver tests to pin the correct tap form and reject the wrong one (RED-first). Codex review (thread 019e7958) flagged this as a real mismatch.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (8)
📝 WalkthroughWalkthroughMarketplace plugin sources are relocated to ChangesPlugin Restructure and Homebrew Tap Migration
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
ESLint skipped: no ESLint configuration detected in root package.json. To enable, add Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
This PR makes the Claude Code plugins installable from the repository-root marketplace manifest and corrects user-facing Homebrew install guidance.
Changes:
- Repoints marketplace discovery/tests to
.claude-plugin/marketplace.jsonat the repo root with plugin sources under./plugins/.... - Adds an installability guard ensuring marketplace sources resolve to matching plugin directories.
- Updates README/plugin skill docs and resolver output to use the correct Homebrew tap formula path.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
.claude-plugin/marketplace.json |
Points marketplace entries to the actual plugin directories under plugins/. |
README.md |
Documents Claude Code marketplace install commands and sparse checkout usage. |
plugins/code-oz/scripts/resolve-code-oz.sh |
Corrects Homebrew install fallback guidance. |
agent-skills/code-oz/SKILL.md |
Corrects skill prerequisite Homebrew guidance. |
agent-skills/code-oz/README.md |
Corrects agent skill install instructions. |
tests/plugins/manifest-shape.test.ts |
Updates root marketplace path and expected code-oz source. |
tests/plugins/discipline-manifest.test.ts |
Updates expected marketplace sources and adds source/plugin-name resolution coverage. |
tests/plugins/bootstrap-resolver.test.ts |
Pins resolver tests against the corrected Homebrew tap string. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Code Review
This pull request updates the repository structure and configuration for Claude Code plugins. Specifically, it moves the marketplace manifest (marketplace.json) to the repository root, updates the plugin source paths to point to ./plugins/code-oz and ./plugins/code-oz-discipline, and corrects the Homebrew installation command to use omerakben/code-oz/code-oz instead of the legacy tap. It also adds a new section to the README explaining how to install and use the plugins, and updates the test suite to reflect these path changes and enforce manifest integrity. There are no review comments to address.
Why
The D1 plugins (
code-oz,code-oz-discipline) shipped and merged, but the marketplace manifest sat atplugins/.claude-plugin/marketplace.json— a subdirectory Claude Code never inspects.claude plugin marketplace add omerakben/code-ozonly reads.claude-plugin/marketplace.jsonat the cloned repo root, so the plugins were un-installable despite existing inmain.What
.claude-plugin/marketplace.jsonand repoint the twosourcepaths to./plugins/code-ozand./plugins/code-oz-discipline(sources resolve relative to the marketplace root).sourceresolves to a real plugin dir whoseplugin.jsonname matches the entry.## Use it inside Claude Code (plugin)with the realmarketplace add/plugin installcommands and the--sparse .claude-plugin pluginsmonorepo tip.brew install omerakben/tap/code-oz(nonexistenthomebrew-taprepo); corrected toomerakben/code-oz/code-ozacross user-facing surfaces, pinned by RED-first resolver tests. Historical design docs left as point-in-time records.Verification
claude plugin validatepasses on the root marketplace and both plugins.marketplace add+plugin install code-oz@code-oz-marketplacesucceeds end-to-end in an isolated config dir.gpt-5.5, thread 019e7958): verdict push, no critical/high/medium findings.Follow-ups (not in this PR)
release.ymldoes not assert the git tag version equals package.json/plugin/marketplace versions (Codex low finding; now more user-visible since the marketplace version is installable).Summary by CodeRabbit
New Features
Documentation
Tests