Repository navigation
fix: install errors for code-formatter, git-workflow, sliplane - #6
Merged
Merged
Conversation
The same two issues that affected claude-tools (commit f5a246e) also affect the three remaining local plugins. Verified empirically with `claude plugin install` in an isolated $HOME — without these fixes, all three fail to install on Claude Code 2.1.x. Issue 1 — marketplace.json source paths Claude Code 2.1.123 does not prepend `metadata.pluginRoot` to source paths that already start with `./`. With `pluginRoot: "./plugins"` and `"source": "./code-formatter"`, the installer looks for `<marketplace>/code-formatter` instead of `<marketplace>/plugins/code-formatter` and aborts with "Source path does not exist". Switching to the explicit full path `./plugins/<name>` works regardless of pluginRoot and matches the convention used by claude-code-plugins, openai-codex, and axisrow-plugins. `pluginRoot` itself is left in place — it is harmless and not the root cause. Issue 2 — plugin.json schema `claude plugin validate` rejects `commands`/`skills` arrays whose entries lack a `./` prefix with "commands: Invalid input" / "skills: Invalid input". The reference docs use the `./` form: https://code.claude.com/docs/en/plugins-reference Also drop `category` from `plugins/sliplane/.claude-plugin/plugin.json` — validate warns that this field belongs in marketplace.json and is ignored in plugin.json. Verification For each of code-formatter, git-workflow, sliplane: - `claude plugin validate <plugin>` → Validation passed - `claude plugin install <plugin>@etopro-plugins` in clean $HOME → Successfully installed Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
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.
Summary
Three local plugins in this marketplace fail to install with Claude Code 2.1.x. This PR applies the same two-part fix that landed for
claude-toolsin #5 / commit f5a246e to the remaining three.Without these changes,
/plugin install <name>@etopro-pluginsfails forcode-formatter,git-workflow, andsliplane. Verified by reproducing the failure and confirming the fix in an isolated\$HOME.Issue 1 —
marketplace.jsonsource paths don't resolveClaude Code 2.1.123 does not prepend
metadata.pluginRootto source paths that already start with./. WithpluginRoot: "./plugins"and"source": "./code-formatter", the installer looks for<marketplace>/code-formatterinstead of<marketplace>/plugins/code-formatterand aborts:Switching to the explicit full path
./plugins/<name>works regardless ofpluginRootand matches the convention used by every other observable marketplace (claude-code-plugins,openai-codex,axisrow-plugins).pluginRootitself is left in place — it is harmless and not the root cause.Issue 2 —
plugin.jsonschema rejects relative paths without./claude plugin validaterejectscommands/skillsarrays whose entries lack a./prefix:The plugins reference uses the
./form. Adding the prefix lets the manifest pass validation.While editing
plugins/sliplane/.claude-plugin/plugin.json, I also dropped itscategoryfield —claude plugin validatewarns that the field belongs inmarketplace.jsonand is ignored inplugin.json.Files changed
.claude-plugin/marketplace.json— threesourcepaths (one per plugin).plugins/code-formatter/.claude-plugin/plugin.json—./prefix oncommandsentries.plugins/git-workflow/.claude-plugin/plugin.json—./prefix onskillsentry.plugins/sliplane/.claude-plugin/plugin.json—./prefix onskillsentry, dropcategory.URL-source plugins (
dokku-manage,skill-email-otp,yandex-direct,cycle-review) are not affected by either issue and are not touched.Test plan
claude plugin validate plugins/<name>passes for all three plugins.claude plugin validate .(marketplace) passes.\$HOME,claude plugin marketplace add <repo>thenclaude plugin install <name>@etopro-pluginssucceeds for all three; entries appear ininstalled_plugins.json.validate.ymlgreen on this PR.🤖 Generated with Claude Code