Skip to content

refactor(plugins): Simplify marketplace.json and add metadata fields to plugin.json#922

Merged
yamadashy merged 1 commit intomainfrom
feat/plugin-metadata-enhancement
Oct 25, 2025
Merged

refactor(plugins): Simplify marketplace.json and add metadata fields to plugin.json#922
yamadashy merged 1 commit intomainfrom
feat/plugin-metadata-enhancement

Conversation

@yamadashy
Copy link
Copy Markdown
Owner

Summary

This PR optimizes the Claude Code plugin marketplace structure by following recommended patterns from the official documentation.

Changes Made

  1. Simplified marketplace.json:

    • Removed redundant metadata fields (description, version, author, keywords, license, strict)
    • Kept only required fields (name, source) and marketplace-specific field (category)
    • Delegates to individual plugin.json files as authoritative source (following strict: true default)
  2. Enhanced all plugin.json files:

    • Added homepage: "https://repomix.com/docs/guide/claude-code-plugins" for better documentation access
    • Added repository: "https://github.com/yamadashy/repomix" for source code discoverability
    • Applied to: repomix-mcp, repomix-commands, repomix-explorer

Benefits

  • DRY Principle: Single source of truth - metadata lives in plugin.json only
  • Better Discoverability: Homepage and repository links improve user experience
  • Reduced Maintenance: No need to sync metadata between marketplace and plugin files
  • Follows Best Practices: Aligns with Claude Code plugin reference documentation

Related

Based on Claude Code plugin documentation review and marketplace optimization discussion.

Checklist

  • Run npm run test
  • Run npm run lint

…to plugin.json

This commit optimizes the plugin marketplace structure by following Claude Code's recommended pattern:
- Simplified marketplace.json to only contain required fields (name, source) and marketplace-specific fields (category)
- Added homepage and repository fields to all plugin.json files for better discoverability
- Removed redundant metadata from marketplace.json as it's already defined in each plugin's plugin.json

By setting strict: true (default), the marketplace delegates to plugin.json as the authoritative source,
following the DRY principle and reducing maintenance overhead.

Updated files:
- .claude-plugin/marketplace.json: Removed description, version, author, keywords, license, strict fields
- .claude/plugins/repomix-mcp/.claude-plugin/plugin.json: Added homepage and repository
- .claude/plugins/repomix-commands/.claude-plugin/plugin.json: Added homepage and repository
- .claude/plugins/repomix-explorer/.claude-plugin/plugin.json: Added homepage and repository
Copilot AI review requested due to automatic review settings October 25, 2025 06:27
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Oct 25, 2025

Walkthrough

The PR modifies Claude plugin manifest files by removing metadata fields from the marketplace configuration file and adding homepage and repository links to individual plugin manifests.

Changes

Cohort / File(s) Summary
Marketplace metadata cleanup
claude-plugin/marketplace.json
Removes descriptive metadata fields (description, version, author, keywords, license, strict) from all three plugin entries, retaining only name, source, and category fields.
Plugin manifest enrichment
.claude/plugins/repomix-*/\.claude-plugin/plugin.json
Adds two new fields to each of the three plugin manifests: homepage URL and repository link pointing to the repomix project documentation and GitHub repository.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

  • Simple metadata field removals and additions across JSON configuration files
  • Repetitive changes with consistent patterns (same removal pattern applied to marketplace, same field additions applied to three plugin manifests)
  • No functional logic, behavioral changes, or control-flow modifications

Possibly related PRs

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Title Check ✅ Passed The pull request title accurately and specifically describes the main changes in the changeset. The title states "Simplify marketplace.json and add metadata fields to plugin.json," which directly corresponds to the two primary modifications: removing redundant metadata fields from marketplace.json and adding homepage and repository fields to the plugin.json files for all three plugins. The title is concise, clear, and specific enough for a teammate scanning the history to immediately understand the primary objective without ambiguity.
Description Check ✅ Passed The pull request description exceeds the template requirements by providing a comprehensive summary of changes, clearly itemizing what was modified in marketplace.json and each plugin.json file, explaining the benefits of these changes, and noting related context. The required checklist section is present with both "npm run test" and "npm run lint" marked as completed, demonstrating that the author followed the prescribed workflow. While the template is minimal, the description provides substantial detail that goes well beyond the bare minimum while maintaining clear structure and organization.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/plugin-metadata-enhancement

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3b1bf60 and 31a954d.

📒 Files selected for processing (4)
  • .claude-plugin/marketplace.json (1 hunks)
  • .claude/plugins/repomix-commands/.claude-plugin/plugin.json (1 hunks)
  • .claude/plugins/repomix-explorer/.claude-plugin/plugin.json (1 hunks)
  • .claude/plugins/repomix-mcp/.claude-plugin/plugin.json (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: Build and run (windows-latest, 22.x)
  • GitHub Check: Build and run (windows-latest, 20.x)
  • GitHub Check: Build and run (windows-latest, 24.x)
  • GitHub Check: Test coverage
  • GitHub Check: Test (windows-latest, 20.x)
  • GitHub Check: Test (windows-latest, 22.x)
  • GitHub Check: Test with Bun (windows-latest, latest)
  • GitHub Check: claude-review
🔇 Additional comments (4)
.claude/plugins/repomix-explorer/.claude-plugin/plugin.json (1)

8-9: Metadata enrichment approved.

Adding homepage and repository fields improves plugin discoverability and provides clear links to documentation and source. The URLs are consistent with other plugins.

.claude/plugins/repomix-mcp/.claude-plugin/plugin.json (1)

8-9: Metadata enrichment approved.

The addition of homepage and repository fields is consistent with the other plugins in this PR, providing centralized discovery links.

.claude/plugins/repomix-commands/.claude-plugin/plugin.json (1)

8-9: Metadata enrichment approved.

Consistent with other plugins. Adding homepage and repository metadata centralizes discovery links across the plugin suite.

.claude-plugin/marketplace.json (1)

10-26: The review concerns are unfounded—marketplace.json is not consumed locally and changes have no impact on codebase.

The investigation reveals that marketplace.json is not parsed or referenced anywhere in the codebase; it's consumed externally by the Claude Code environment. The removed fields (description, version, author, keywords, license, strict) have zero dependencies in this repository.

Key findings:

  • All three plugin.json files retain full metadata (name, version, author, description, keywords, license, etc.)
  • No strict field exists in any plugin.json—it's a system-level default in Claude Code, not a config field as the PR description implies
  • marketplace.json is a lightweight registry (name, source, category) for external consumption only
  • The simplification correctly follows DRY by centralizing metadata in individual plugin.json files
  • No validation schemas or parsing logic in the codebase depend on removed fields

This is an internal structural change with no downstream codebase impact. The PR description's claim about "strict" field delegation is inaccurate (the field doesn't appear in plugin.json), but this doesn't affect the validity of the marketplace.json simplification.

Likely an incorrect or invalid review comment.


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
Contributor

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 refactors the Claude Code plugin marketplace structure by consolidating metadata into individual plugin.json files and simplifying the central marketplace.json to contain only essential marketplace-specific information.

Key Changes:

  • Removed redundant metadata fields from marketplace.json (description, version, author, keywords, license, strict)
  • Added homepage and repository fields to all three plugin.json files for better discoverability
  • Established plugin.json as the single source of truth for plugin metadata

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

File Description
.claude/plugins/repomix-mcp/.claude-plugin/plugin.json Added homepage and repository metadata fields
.claude/plugins/repomix-explorer/.claude-plugin/plugin.json Added homepage and repository metadata fields
.claude/plugins/repomix-commands/.claude-plugin/plugin.json Added homepage and repository metadata fields
.claude-plugin/marketplace.json Simplified to contain only name, source, and category for each plugin

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @yamadashy, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request refactors the Claude Code plugin marketplace configuration to align with recommended best practices. It centralizes plugin metadata within individual plugin.json files, removing duplicate information from marketplace.json. This change streamlines the configuration, improves maintainability by adhering to the DRY principle, and enhances plugin discoverability by adding direct links to documentation and source repositories.

Highlights

  • Marketplace.json Simplification: Redundant metadata fields (description, version, author, keywords, license, strict) were removed from marketplace.json entries for repomix-mcp, repomix-commands, and repomix-explorer, retaining only name, source, and category.
  • Plugin.json Enhancement: homepage and repository fields were added to all individual plugin.json files (repomix-mcp, repomix-commands, repomix-explorer) to improve documentation access and source code discoverability.
  • Adherence to DRY Principle: This refactoring establishes plugin.json as the single source of truth for plugin metadata, reducing redundancy and simplifying maintenance by following recommended patterns.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@cloudflare-workers-and-pages
Copy link
Copy Markdown

Deploying repomix with  Cloudflare Pages  Cloudflare Pages

Latest commit: 31a954d
Status: ✅  Deploy successful!
Preview URL: https://42e0df1b.repomix.pages.dev
Branch Preview URL: https://feat-plugin-metadata-enhance.repomix.pages.dev

View logs

@claude
Copy link
Copy Markdown
Contributor

claude bot commented Oct 25, 2025

Code Review: PR #922

Overview

This PR successfully implements a refactoring of the Claude Code plugin marketplace structure by applying the DRY principle - removing redundant metadata from marketplace.json and enhancing individual plugin.json files with homepage and repository links.

✅ Strengths

  1. Excellent Architecture: Following the single source of truth principle by delegating metadata to individual plugin.json files is the correct approach
  2. Improved Discoverability: Adding homepage and repository fields to all plugin manifests provides better user experience
  3. Clean Commit: Well-formatted commit message following Conventional Commits with appropriate scope
  4. Good Documentation: PR description clearly explains the rationale and benefits

📋 Detailed Analysis

Code Quality & Best Practices

Positive:

  • Consistent application of changes across all three plugins (repomix-mcp, repomix-commands, repomix-explorer)
  • Follows DRY principle effectively
  • Reduces maintenance burden by eliminating duplicate metadata
  • All changes are non-breaking since the plugin loader will read from plugin.json as authoritative source

Observations:

  • The removal of "strict": false is appropriate since the Claude Code documentation indicates strict: true is the default behavior
  • The marketplace.json retains only essential fields (name, source, category) which is optimal
Potential Issues & Edge Cases

Low Risk Items:

  1. Version Inconsistency (Minor):

    • repomix-mcp: v1.0.1
    • repomix-commands: v1.0.2
    • repomix-explorer: v1.1.0
    • These versions are now only in plugin.json files, which is correct, but consider whether version synchronization is important for your plugin ecosystem
  2. Marketplace Metadata:

    • The marketplace.json metadata shows "version": "1.0.2" which seems to be the marketplace bundle version
    • Consider whether this version should be bumped given the structural changes (though this is arguably not user-facing)
  3. Missing Validation:

    • No schema validation or tests for these JSON files
    • Consider adding JSON schema validation to catch structural issues early
Security & Performance

Security:

  • ✅ No security concerns - these are configuration files
  • ✅ URLs point to legitimate repomix.com domain and GitHub repository
  • ✅ No sensitive data or credentials

Performance:

  • ✅ Smaller marketplace.json file (27 lines removed, 9 added = net -18 lines)
  • ✅ Reduced file size improves load times marginally
  • ✅ No runtime performance impact
Test Coverage

Current State:

  • npm run test passed (per checklist)
  • npm run lint passed (per checklist)

Recommendations:

  • Consider adding JSON schema validation tests for plugin configuration files
  • Consider integration tests that verify:
    • Plugin manifests have required fields (name, description, version, etc.)
    • Homepage and repository URLs are valid and reachable
    • Category values in marketplace.json are valid

Example test structure:

describe('Plugin Configuration', () => {
  it('should have valid plugin.json files', () => {
    // Validate schema for each plugin.json
  });
  
  it('should have consistent metadata between marketplace and plugins', () => {
    // Verify marketplace.json references match plugin names
  });
});
Premortem Analysis: Failure Scenarios

Potential Failure Scenarios & Mitigations:

  1. Scenario: Claude Code Plugin Loader Regression

    • Risk: Future Claude Code updates might change how plugins are loaded
    • Likelihood: Low
    • Mitigation: Monitor Claude Code release notes; version pin if needed
  2. Scenario: Missing Fields in plugin.json

    • Risk: If a plugin.json is missing required fields, the plugin may fail to load
    • Likelihood: Low (current files appear complete)
    • Mitigation: Add JSON schema validation in CI/CD
  3. Scenario: Broken Homepage/Repository Links

    • Risk: If URLs change or break, users can't access documentation
    • Likelihood: Low (under your control)
    • Mitigation: Add URL reachability tests in CI; consider using relative paths if applicable
  4. Scenario: Marketplace Bundle Version Confusion

    • Risk: Users might be confused about which version they're using
    • Likelihood: Medium
    • Mitigation: Document versioning strategy clearly in plugin documentation
  5. Scenario: Plugin Discovery Issues

    • Risk: If marketplace.json format is incorrect, plugins may not be discovered
    • Likelihood: Very Low (format looks correct per Claude Code spec)
    • Mitigation: Manual testing with actual Claude Code installation before release

🎯 Recommendations

High Priority:

  1. Approve and merge - The changes are solid and follow best practices
  2. Consider adding a brief migration note in CHANGELOG if you maintain one

Medium Priority:
3. Add JSON schema validation for plugin configuration files
4. Document the versioning strategy for individual plugins vs. marketplace bundle

Low Priority:
5. Consider automated tests for plugin configuration validity
6. Add URL reachability checks in CI for homepage/repository links

📊 Final Assessment

Overall Rating: ✅ LGTM (Looks Good To Me)

This is a well-executed refactoring that:

  • Improves maintainability by eliminating duplication
  • Enhances user experience with better documentation links
  • Follows documented best practices for Claude Code plugins
  • Makes no breaking changes

The changes are low-risk and high-value. The commit message follows project conventions perfectly. I recommend approval and merging.

Edge cases and risks are minimal - the main suggestion is to add validation tests for future safety, but the current implementation is production-ready.


Great work on this refactoring! 🚀

Copy link
Copy Markdown
Contributor

@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 is a great step towards simplifying the plugin marketplace configuration and centralizing metadata, following the DRY principle. The changes in marketplace.json correctly delegate metadata authority to the individual plugin.json files. While reviewing the plugin.json files, I found a critical syntax issue that would prevent them from being parsed, and I've also included a suggestion to further improve the structure of the repository metadata to be more explicit for a monorepo setup. Overall, a solid refactoring.

@codecov
Copy link
Copy Markdown

codecov bot commented Oct 25, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 74.60%. Comparing base (3b1bf60) to head (31a954d).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #922      +/-   ##
==========================================
+ Coverage   73.55%   74.60%   +1.05%     
==========================================
  Files         111      111              
  Lines        7782     7782              
  Branches     1472     1450      -22     
==========================================
+ Hits         5724     5806      +82     
+ Misses       2058     1976      -82     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@yamadashy yamadashy merged commit 210348c into main Oct 25, 2025
53 checks passed
@yamadashy yamadashy deleted the feat/plugin-metadata-enhancement branch October 25, 2025 06:31
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