Fix broken marketplace.json and the false install instructions - #15
Merged
Merged
Conversation
Three problems, all on the path a new user takes first. marketplace.json does not parse. The tiktok-ads-client-report entry is missing its trailing comma before the facebook-ads block, so `/plugin marketplace add coupler-io/skills` — step one of the README — fails. This came from the #12/#13 merge resolution, where both PRs appended to the same array. The install table lost the Meta pack. The row read "the 8 Google Ads and 11 TikTok Ads deep dives"; TikTok's version of the line won the same merge and Meta's mention went with it. The repo-wide install snippet was not real. It told users to put { "plugins": ["https://github.com/coupler-io/skills"] } in .claude/settings.json. There is no top-level `plugins` key. The actual key is `extraKnownMarketplaces`, and it takes a named source object rather than a URL list. Replaced with the documented form, plus the caveat that registering a marketplace does not install its plugins — each person still runs /plugin install — and a pointer to `enabledPlugins` for pre-enabling. Verified against code.claude.com/docs/en/discover-plugins. The first block of the section was already correct: the marketplace name is `coupler-io-skills` from marketplace.json, which is what /plugin install expects after the @. Also notes that plugin skills are namespaced as /plugin-name:skill-name and that manually copied skills are not, since that difference is invisible otherwise. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Two things an end-to-end install test surfaced. `claude plugin validate` warned "Unknown field 'id'. Claude Code ignores it at load time." The manifest carried both name and id set to the same string; only name is in the schema. Removing it takes validation from "passed with warnings" to "passed". `claude plugin details coupler-marketing-ads@coupler-io-skills` reports ~5,567 tokens always-on, added to every session, because each of its 32 skills keeps its description in context. That is a real cost for someone who installed the plugin to run one review, and nothing in the README mentioned it. The Installation section now says to install only what you need, gives the measured figure, and shows the command to check any plugin first. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
paladiy
approved these changes
Sep 7, 2026
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.
What
Three problems on the path a new user takes first. The
marketplace.jsonone means installation is broken onmainright now.1.
marketplace.jsondoes not parsepython -c "import json; json.load(open('.claude-plugin/marketplace.json'))"fails withExpecting ',' delimiter: line 70. Since the manifest is what/plugin marketplace addreads, step one of the README does not work today.It came from the #12 / #13 merge: both PRs appended to the same
coupler-marketing-adsskills array, and the keep-both resolution missed the comma.2. The install table lost the Meta pack
The row read "the 8 Google Ads and 11 TikTok Ads deep dives". TikTok's version of that line won the same merge and Meta's mention went with it, even though the Meta section sits above it in the same file.
3. The repo-wide install snippet was not real
The README told users to add this to
.claude/settings.json:{ "plugins": ["https://github.com/coupler-io/skills"] }There is no top-level
pluginskey. The documented key isextraKnownMarketplaces, and it takes a named source object, not a list of URLs:{ "extraKnownMarketplaces": { "coupler-io-skills": { "source": { "source": "github", "repo": "coupler-io/skills" } } } }Also added the caveat the docs are explicit about: registering a marketplace does not install its plugins. Each person still runs
/plugin install <plugin>@coupler-io-skills.enabledPluginsis linked for pre-enabling.Verified against code.claude.com/docs/en/discover-plugins. I also checked the local machine — no
pluginskey exists in~/.claude/settings.jsonor~/.claude.json.What was already right
/plugin marketplace add coupler-io/skillsthen/plugin install <plugin>@coupler-io-skillsis correct; the marketplace name after the@is thenamefield inmarketplace.json, which iscoupler-io-skills..claude/skills/is the documented standalone approach.source: "./", theskillsarray andstrictare all valid plugin-entry fields per the marketplace reference, so nothing beyond the comma needed changing.Added
A line noting plugin skills are namespaced (
/coupler-finance:finance-analytics) while manually copied ones are not — an invisible difference otherwise — and that/reload-pluginsmay be needed.Tested end to end
Not just JSON-parsed — run against the real CLI.
mainclaude plugin validateInvalid JSON syntax: Expected ']'claude plugin marketplace add ./JSON Parse errorSuccessfully added marketplace: coupler-io-skillsclaude plugin install coupler-marketing-ads@coupler-io-skillsSuccessfully installed (scope: user)The break is confirmed at the real entry point: anyone following the README against
mainhits a parse error on step one. The corrected path works, including the@coupler-io-skillsmarketplace name. Tested against a local path marketplace, so the git clone step is not covered; the plugin and marketplace were uninstalled afterwards.Two more fixes from that test
idfield.claude plugin validatewarnedUnknown field 'id'. Claude Code ignores it at load time.The manifest had bothnameandidset to the same string; onlynameis in the schema. Validation now passes clean rather than with warnings.claude plugin detailsreports ~5,567 tokens always-on, added to every session forcoupler-marketing-ads, since each of its 32 skills keeps its description in context. Nothing in the README mentioned it. The Installation section now says to install only what you need, gives the figure, and shows the command to check any plugin first.Note on #14
#14 also fixes the comma and the Meta row, since it hit the same conflict. This PR is split out so the correctness fixes can merge without waiting on #14's review. Once this lands I will rebase #14 to drop the duplicates.
🤖 Generated with Claude Code