Skip to content

feat(plugins): make the Claude Code plugin installable from a marketplace#45

Merged
omerakben merged 2 commits into
mainfrom
feat/marketplace-publish
May 30, 2026
Merged

feat(plugins): make the Claude Code plugin installable from a marketplace#45
omerakben merged 2 commits into
mainfrom
feat/marketplace-publish

Conversation

@omerakben
Copy link
Copy Markdown
Owner

@omerakben omerakben commented May 30, 2026

Why

The D1 plugins (code-oz, code-oz-discipline) shipped and merged, but the marketplace manifest sat 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 plugins were un-installable despite existing in main.

What

  • Move the manifest to the repo root .claude-plugin/marketplace.json and repoint the two source paths 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.
  • README: add ## Use it inside Claude Code (plugin) with the real marketplace add / plugin install commands and the --sparse .claude-plugin plugins monorepo tip.
  • Fix a Codex-caught bug: the resolver and agentskills skill printed brew install omerakben/tap/code-oz (nonexistent homebrew-tap repo); corrected to omerakben/code-oz/code-oz across user-facing surfaces, pinned by RED-first resolver tests. Historical design docs left as point-in-time records.

Verification

  • claude plugin validate passes on the root marketplace and both plugins.
  • A real marketplace add + plugin install code-oz@code-oz-marketplace succeeds end-to-end in an isolated config dir.
  • 3812 offline tests pass, 0 fail; typecheck clean.
  • Cross-family review (Codex gpt-5.5, thread 019e7958): verdict push, no critical/high/medium findings.

Follow-ups (not in this PR)

  • release.yml does 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).
  • Codex-host (D2) for the "Codex tool" half remains deferred.

Summary by CodeRabbit

  • New Features

    • Added support for using plugins within Claude Code, including the core plugin and optional discipline plugin.
  • Documentation

    • Updated installation instructions across guides to reflect current Homebrew package paths.
    • Added new plugin usage guide with installation and setup details.
  • Tests

    • Updated test validation to confirm new plugin configuration structure and installation paths.

Review Change Stack

omerakben added 2 commits May 30, 2026 10:43
…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.
Copilot AI review requested due to automatic review settings May 30, 2026 14:55
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 30, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 63fd2d86-9850-4cc2-88dd-4091b96c7565

📥 Commits

Reviewing files that changed from the base of the PR and between 29a1516 and 0ada9b3.

📒 Files selected for processing (8)
  • .claude-plugin/marketplace.json
  • README.md
  • agent-skills/code-oz/README.md
  • agent-skills/code-oz/SKILL.md
  • plugins/code-oz/scripts/resolve-code-oz.sh
  • tests/plugins/bootstrap-resolver.test.ts
  • tests/plugins/discipline-manifest.test.ts
  • tests/plugins/manifest-shape.test.ts

📝 Walkthrough

Walkthrough

Marketplace plugin sources are relocated to ./plugins/ subdirectories; Homebrew tap path is updated from omerakben/tap/code-oz to omerakben/code-oz/code-oz in all user-facing docs and shell scripts; tests validate the new marketplace layout and Homebrew formula references.

Changes

Plugin Restructure and Homebrew Tap Migration

Layer / File(s) Summary
Marketplace configuration with new plugin paths
.claude-plugin/marketplace.json
Plugin entries for code-oz and code-oz-discipline updated to use ./plugins/code-oz and ./plugins/code-oz-discipline source paths.
Installation documentation and shell script updates
README.md, agent-skills/code-oz/README.md, agent-skills/code-oz/SKILL.md, plugins/code-oz/scripts/resolve-code-oz.sh
Installation instructions across all user-facing docs and helper scripts now reference the new Homebrew tap path omerakben/code-oz/code-oz; README includes new Claude Code plugin usage section.
Marketplace path and installability validation tests
tests/plugins/discipline-manifest.test.ts, tests/plugins/manifest-shape.test.ts
Marketplace manifest tests updated to read from repo-root .claude-plugin/marketplace.json, validate source paths point to ./plugins/..., and enforce installability by verifying plugin.json entries match marketplace entries.
Homebrew tap path assertions in resolver tests
tests/plugins/bootstrap-resolver.test.ts
Test assertions expanded to require new Homebrew tap path omerakben/code-oz/code-oz in install failure messages and exclude deprecated omerakben/tap/code-oz references.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 Through pluggy paths and brew so bright,
The marketplace finds its rightful site,
New taps replace the old with care,
Tests dance to validate what's there! 🎉

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately captures the main objective: making Claude Code plugins installable from a marketplace by relocating the manifest to the repo root.
Description check ✅ Passed The description comprehensively covers Why, What, and Verification sections with detailed context, concrete commands, test results, and cross-model review outcomes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/marketplace-publish

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

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint skipped: no ESLint configuration detected in root package.json. To enable, add eslint to devDependencies.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.json at 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.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@omerakben omerakben merged commit 7cf6c79 into main May 30, 2026
4 checks passed
@omerakben omerakben deleted the feat/marketplace-publish branch May 30, 2026 14:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants