You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Claude Code marketplace entry currently uses plugins/open-code-review as the plugin root:
"source": "./plugins/open-code-review"
That directory is a shared bundle for several agent integrations. Alongside the Claude manifest and command, it contains the Codex manifest, Cursor manifest, shared skills, and Codex documentation:
Claude Code copies the complete marketplace source directory into its versioned plugin cache. As a result, installing the Claude plugin also caches files that belong only to the Codex and Cursor integrations. The command still works, but the installed package boundary is broader than the Claude plugin itself.
Design
Move the unchanged Claude manifest and command into a dedicated plugin root:
The manifest and command are pure renames, and the canonical /open-code-review:review command remains unchanged. Narrowing the root also intentionally stops Claude Code from auto-discovering skills/open-code-review/SKILL.md, which identifies itself as a Codex plugin skill and remains available to the Codex and Cursor integrations. Direct-command links in the READMEs and documentation site are updated to the canonical new path.
Why this layout
Claude Code documents plugins as self-contained directories. The individual plugin root contains .claude-plugin/plugin.json, while functional components such as commands/, skills/, agents/, and hooks/ live alongside .claude-plugin/ at that root. See Plugin structure overview.
Marketplace-installed plugins are copied into a versioned cache as a directory, and files outside that directory are not available after installation. See Plugin caching and file resolution. Therefore, the marketplace source path is also the package boundary: it should identify the Claude-only self-contained directory rather than the surrounding cross-agent integration bundle.
Keeping the manifest and command together under claude-code/ preserves the normal self-contained plugin model while leaving Codex and Cursor assets outside the Claude cache. It also avoids using strict: false, which would move the plugin definition into the marketplace catalog instead of keeping the plugin self-describing.
Scope and non-goals
This PR intentionally changes only the installed Claude plugin boundary:
no OCR runtime or review-command behavior changes;
no Codex or Cursor integration changes;
no plugin or marketplace version changes;
no change to how the marketplace repository itself is acquired;
no switch to git-subdir, because the existing relative source already resolves from the local marketplace checkout and the problem here is the copied plugin root, not marketplace transport.
Installed cache contents
Before this change, the Claude cache includes the entire shared integration directory. After this change, an isolated installation contains exactly:
.claude-plugin/plugin.json
commands/review.md
Type of Change
Bug fix (non-breaking change that fixes an issue)
New feature (non-breaking change that adds functionality)
Breaking change (fix or feature that would cause existing functionality to change)
Refactoring (no functional changes)
Documentation update
CI / Build / Tooling
How Has This Been Tested?
make test passes locally
Manual testing (describe below)
Tested with Claude Code 2.1.198:
claude plugin validate plugins/open-code-review/claude-code — validation passed, with only the existing missing-author metadata warning;
claude plugin validate .claude-plugin/marketplace.json — validation passed with the same warning;
added the local marketplace and installed open-code-review@open-code-review using an isolated HOME;
verified the installed versioned cache contains only .claude-plugin/plugin.json and commands/review.md;
verified no documentation references remain for the previous command path.
make test was not run because this change does not modify Go or runtime code.
Checklist
My code follows the project's coding style (go fmt, go vet)
I have performed a self-review of my code
I have added tests that prove my fix is effective or my feature works
New and existing unit tests pass locally with my changes
I have updated the documentation accordingly (if applicable)
Thanks for the contribution! The PR is clean and well-scoped — great job on the detailed description and thorough testing.
One minor suggestion: in the integration docs (pages/src/content/docs/{en,ja,zh}/integrations/claude-code.md), the descriptive text still references the old directory. For example, in the English version (lines 14–15):
The repo ships a Claude Code plugin under plugins/open-code-review/
Now that the Claude Code plugin lives at plugins/open-code-review/claude-code/, it would be worth updating these lines (and the corresponding ja/zh versions) to point to the new path, so readers are directed to the precise plugin root rather than the broader integration bundle.
Oh ... I forget them . I have updated the en/ja/zh integration guides to link the precise plugins/open-code-review/claude-code/ plugin root in 9baf572. The command links were already on the new path; the surrounding descriptive links now match it as well.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Problem
The Claude Code marketplace entry currently uses
plugins/open-code-reviewas the plugin root:That directory is a shared bundle for several agent integrations. Alongside the Claude manifest and command, it contains the Codex manifest, Cursor manifest, shared skills, and Codex documentation:
Claude Code copies the complete marketplace
sourcedirectory into its versioned plugin cache. As a result, installing the Claude plugin also caches files that belong only to the Codex and Cursor integrations. The command still works, but the installed package boundary is broader than the Claude plugin itself.Design
Move the unchanged Claude manifest and command into a dedicated plugin root:
Then point the marketplace entry at that narrower directory:
The manifest and command are pure renames, and the canonical
/open-code-review:reviewcommand remains unchanged. Narrowing the root also intentionally stops Claude Code from auto-discoveringskills/open-code-review/SKILL.md, which identifies itself as a Codex plugin skill and remains available to the Codex and Cursor integrations. Direct-command links in the READMEs and documentation site are updated to the canonical new path.Why this layout
Claude Code documents plugins as self-contained directories. The individual plugin root contains
.claude-plugin/plugin.json, while functional components such ascommands/,skills/,agents/, andhooks/live alongside.claude-plugin/at that root. See Plugin structure overview.Marketplace-installed plugins are copied into a versioned cache as a directory, and files outside that directory are not available after installation. See Plugin caching and file resolution. Therefore, the marketplace
sourcepath is also the package boundary: it should identify the Claude-only self-contained directory rather than the surrounding cross-agent integration bundle.Keeping the manifest and command together under
claude-code/preserves the normal self-contained plugin model while leaving Codex and Cursor assets outside the Claude cache. It also avoids usingstrict: false, which would move the plugin definition into the marketplace catalog instead of keeping the plugin self-describing.Scope and non-goals
This PR intentionally changes only the installed Claude plugin boundary:
git-subdir, because the existing relative source already resolves from the local marketplace checkout and the problem here is the copied plugin root, not marketplace transport.Installed cache contents
Before this change, the Claude cache includes the entire shared integration directory. After this change, an isolated installation contains exactly:
Type of Change
How Has This Been Tested?
make testpasses locallyTested with Claude Code
2.1.198:claude plugin validate plugins/open-code-review/claude-code— validation passed, with only the existing missing-author metadata warning;claude plugin validate .claude-plugin/marketplace.json— validation passed with the same warning;open-code-review@open-code-reviewusing an isolatedHOME;.claude-plugin/plugin.jsonandcommands/review.md;make testwas not run because this change does not modify Go or runtime code.Checklist
go fmt,go vet)Related Issues
None.