Skip to content

Support external plugins in marketplace.json generation#876

Merged
aaronpowell merged 1 commit intogithub:stagedfrom
tmeschter:260304-ExternalPlugins
Mar 4, 2026
Merged

Support external plugins in marketplace.json generation#876
aaronpowell merged 1 commit intogithub:stagedfrom
tmeschter:260304-ExternalPlugins

Conversation

@tmeschter
Copy link
Contributor

Summary

The marketplace currently only includes plugins that live as local directories in plugins/. This makes it impossible to list plugins hosted in external GitHub repos, npm packages, or other git URLs.

This PR adds support for external plugins via a plugins/external.json file, which is merged into the generated marketplace.json during build.

Changes

  • plugins/external.json (new) -- Empty array, ready for hand-curated external plugin entries following the Claude Code plugin marketplace spec.
  • eng/generate-marketplace.mjs -- Added readExternalPlugins() to load and merge plugins/external.json entries as-is into the marketplace output. The combined list is sorted by name (case-insensitive), with duplicate-name warnings and local/external count logging.
  • CONTRIBUTING.md -- Added "Adding External Plugins" section with JSON format examples and supported source types (github, url, npm, pip).
  • AGENTS.md -- Added "For External Plugins" steps to the development workflow section.

How it works

  1. Contributors add entries to plugins/external.json with name, source (object), and description
  2. npm run build reads both local plugin directories and external.json
  3. External entries are merged as-is (no transformation) and the combined list is sorted by name
  4. The script warns if an external plugin name collides with a local plugin

Copilot AI review requested due to automatic review settings March 4, 2026 17:26
@tmeschter tmeschter requested a review from aaronpowell as a code owner March 4, 2026 17:26
Copy link
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

Adds support for listing external plugins (hosted outside plugins/) by merging a curated plugins/external.json file into the generated plugin marketplace during build.

Changes:

  • Introduces plugins/external.json as the source of hand-curated external plugin entries.
  • Extends eng/generate-marketplace.mjs to load, merge, warn on name collisions, and sort plugins by name.
  • Updates contributor/developer docs to explain how to add external plugins.

Reviewed changes

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

File Description
plugins/external.json Adds a new curated list for external plugin marketplace entries.
eng/generate-marketplace.mjs Loads/merges external plugins into marketplace generation, adds sorting + logging.
CONTRIBUTING.md Documents the external plugin entry format and how to add them.
AGENTS.md Adds workflow steps for contributing external plugins.

You can also share your feedback on Copilot code review. Take the survey.

@tmeschter tmeschter force-pushed the 260304-ExternalPlugins branch from 9045204 to f94084b Compare March 4, 2026 17:46
The marketplace currently only includes plugins that live as local
directories in plugins/. This makes it impossible to list plugins
hosted in external GitHub repos, npm packages, or other git URLs.

Add plugins/external.json as a hand-curated list of external plugin
entries following the Claude Code plugin marketplace spec. The
generate-marketplace script now reads this file and merges external
entries as-is into the generated marketplace.json, sorted by name.

Changes:
- Add plugins/external.json (empty array, ready for entries)
- Update eng/generate-marketplace.mjs to load, merge, and sort
  external plugins; warn on duplicate names; log counts
- Document the external plugin workflow in CONTRIBUTING.md and
  AGENTS.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@tmeschter tmeschter force-pushed the 260304-ExternalPlugins branch from f94084b to 8354332 Compare March 4, 2026 18:43
@aaronpowell aaronpowell merged commit d4dcc67 into github:staged Mar 4, 2026
4 checks passed
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.

3 participants