Repository navigation
fix(marketplace): point the Claude plugin source at plugins/conductor - #593
Merged
Jason Robert (jrob5756) merged 1 commit intoOct 7, 2026
Conversation
Claude Code resolves a relative plugin source from the marketplace root and ignores metadata.pluginRoot for a "./" path. The entry "./conductor" therefore resolved to <repo>/conductor, which does not exist, and /plugin install conductor@conductor failed with "Source path does not exist". Write the source relative to the repository root and drop the unused pluginRoot. Add a test that every source in the shipped catalog is a plugin root under the repository root. Fixes microsoft#587
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #593 +/- ##
=======================================
Coverage ? 92.86%
=======================================
Files ? 201
Lines ? 33002
Branches ? 0
=======================================
Hits ? 30646
Misses ? 2356
Partials ? 0 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Jason Robert (jrob5756)
approved these changes
Oct 7, 2026
Jason Robert (jrob5756)
left a comment
Collaborator
There was a problem hiding this comment.
LGTM, thanks for pointing the Claude plugin source at plugins/conductor!
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fixes #587.
/plugin install conductor@conductorfails in Claude Code withSource path does not exist: <marketplace>/conductor, even thoughclaude plugin marketplace add microsoft/conductorworks andclaude plugin validatepasses..claude-plugin/marketplace.jsonsetmetadata.pluginRootto./pluginsand the entry'ssourceto./conductor. Claude Code resolves a relative source from the marketplace root, andpluginRootonly applies to bare names such as"conductor", not to a source that starts with./. So the entry pointed at<repo>/conductor, but the plugin lives at<repo>/plugins/conductor. ThepluginRootplus./nameform is the convention the.github/plugincatalog uses, whichsrc/conductor/plugins/marketplace.pyalready documents.This changes the source to
./plugins/conductorand removes thepluginRootsetting, which nothing used. A source relative to the repository root works on every Claude Code version, whereas a bare name would need 2.1.239 or later. Conductor's own marketplace reader tries the repository root first, so it still resolves the plugin.I also added
TestShippedMarketplace, which checks that each source in the shipped Claude catalog is a plugin root under the repository root, and achangelog.d/587.fixed.mdfragment.How I checked
On Windows with Claude Code 2.1.229:
claude plugin marketplace add <clone>succeeded andclaude plugin install conductor@conductorfailed withSource path does not exist: <clone>\conductor.claude plugin marketplace update conductorand the same install succeed, andclaude plugin listshowsconductor@conductoras enabled.marketplace.json(conductor: ./conductor) and passes on the new one.uv run pytest tests/test_plugins tests/test_cli/test_plugin_commands.py: 463 passed, 12 skipped.uv run ruff check src testsanduv run ruff format --check src testsare clean.I did not test
/plugin installfrom the GitHub repository itself, because that needs this change to be merged first. I also did not test Copilot CLI, which installs withgh skill installand does not read this file.