Skip to content

Fix broken marketplace.json and the false install instructions - #15

Merged
paladiy merged 2 commits into
mainfrom
fix-readme-install
Sep 7, 2026
Merged

paladiy merged 2 commits into
mainfrom
fix-readme-install

Conversation

@peterlaczkorailsware

@peterlaczkorailsware peterlaczkorailsware commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

What

Three problems on the path a new user takes first. The marketplace.json one means installation is broken on main right now.

1. marketplace.json does not parse

"./marketing-and-ads/tiktok-ads/tiktok-ads-client-report"      ← missing comma
"./marketing-and-ads/facebook-ads/facebook-ads-performance-review",

python -c "import json; json.load(open('.claude-plugin/marketplace.json'))" fails with Expecting ',' delimiter: line 70. Since the manifest is what /plugin marketplace add reads, step one of the README does not work today.

It came from the #12 / #13 merge: both PRs appended to the same coupler-marketing-ads skills 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 plugins key. The documented key is extraKnownMarketplaces, 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. enabledPlugins is linked for pre-enabling.

Verified against code.claude.com/docs/en/discover-plugins. I also checked the local machine — no plugins key exists in ~/.claude/settings.json or ~/.claude.json.

What was already right

  • The first block. /plugin marketplace add coupler-io/skills then /plugin install <plugin>@coupler-io-skills is correct; the marketplace name after the @ is the name field in marketplace.json, which is coupler-io-skills.
  • The manual option. Copying a skill folder into .claude/skills/ is the documented standalone approach.
  • The manifest's own structure. source: "./", the skills array and strict are 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-plugins may be needed.

Tested end to end

Not just JSON-parsed — run against the real CLI.

Test main This branch
claude plugin validate ✘ Validation failed — Invalid JSON syntax: Expected ']' ✔ Validation passed
claude plugin marketplace add ./ ✘ Failed to add marketplace — JSON Parse error Successfully added marketplace: coupler-io-skills
claude plugin install coupler-marketing-ads@coupler-io-skills Successfully installed (scope: user)
Components loaded 32 skills, 0 agents/hooks/MCP/LSP

The break is confirmed at the real entry point: anyone following the README against main hits a parse error on step one. The corrected path works, including the @coupler-io-skills marketplace 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

  • Removed the unknown id field. claude plugin validate warned Unknown field 'id'. Claude Code ignores it at load time. The manifest had both name and id set to the same string; only name is in the schema. Validation now passes clean rather than with warnings.
  • Documented context cost. claude plugin details reports ~5,567 tokens always-on, added to every session for coupler-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

peterlaczkorailsware and others added 2 commits September 7, 2026 15:58
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
paladiy merged commit f2f9789 into main Sep 7, 2026
1 check 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.

2 participants