Skip to content

Register as a Claude Code plugin marketplace (Day 1, #49) - #57

Merged
codeswithroh merged 1 commit into
mainfrom
feat/plugin-marketplace
Jul 25, 2026
Merged

Register as a Claude Code plugin marketplace (Day 1, #49)#57
codeswithroh merged 1 commit into
mainfrom
feat/plugin-marketplace

Conversation

@codeswithroh

Copy link
Copy Markdown
Owner

Closes #49.

What this does

Adds `.claude-plugin/marketplace.json` + `plugin.json` so tastemaker installs natively via:

```
/plugin marketplace add codeswithroh/tastemaker
/plugin install tastemaker@codeswithroh
```

No terminal, no git clone, no finding the right skills directory — matching taste-skill's lowest-friction install path, which this issue exists to close.

Why this required a real restructure, not just two JSON files

Read Claude Code's actual plugin-marketplace docs rather than guessing: a plugin's skills load by default from a skills/<name>/SKILL.md layout under the plugin's source. Confirmed against Anthropic's own first-party netlify-skills plugin (already installed on this machine) — its real on-disk cache uses exactly that structure. A bare root-level SKILL.md (our old layout) is not what gets scanned.

So: moved SKILL.md, references/, scripts/, assets/, and the vendored ideagram/ sub-skill into skills/tastemaker/ as a single git mv unit — all renames tracked at 100% similarity, zero content changes. Confirmed beforehand nothing inside that cluster references paths outside it, so the move was safe.

Caught a real bug via actual end-to-end testing

An initial strict: false + explicit skills: array config (mirroring netlify's marketplace.json literally) produced "conflicting manifests" and failed to load — a real, caught failure, not a hypothetical. Simplifying to source: "./" with no strict/skills override (relying on the default skills/ scan, which already matches our structure) fixed it. Verified via claude plugin list flipping from the caught failure to ✔ enabled, cache inspection confirming SKILL.md at the exact scanned path, and the install manifest structurally matching two other known-working installed plugins.

Deliberately omitted version from plugin.json (confirmed optional, falls back to git commit SHA) rather than adding a placeholder — real semantic versioning is #53's (Day 5) job.

Fixed in the same pass (caused by the restructure, not scope creep)

  • README.md — Quick Start leads with the plugin install command; manual git-clone install corrected (the old `git clone -> ~/.claude/skills/tastemaker` would now put `SKILL.md` one directory too deep). Project layout diagram updated.
  • CONTRIBUTING.md — local setup now `cd`s into `skills/tastemaker/` before any script commands, since every path in the file is relative to that folder now. Fixed the one script reaching outside the skill folder.
  • `.github/PULL_REQUEST_TEMPLATE.md` + `preset_submission.yml` — the two checkbox items that read as literal commands corrected to the new path.

`marketplace.json` names the marketplace "codeswithroh" (a publisher namespace), not "tastemaker" (the product name) — deliberately leaving room for more plugins if #51's free/paid variant decision produces them.

Test plan

  • `claude plugin validate .` passes (one cosmetic warning confirmed to also fire on Anthropic's own live plugin — not a real issue)
  • Real end-to-end install: `claude plugin marketplace add` + `claude plugin install` against this actual repo, confirmed `✔ enabled`
  • Cache inspection confirms `SKILL.md` lands exactly where the default scan looks
  • All 53 file renames at 100% similarity (git-tracked moves, no content drift)
  • No em-dashes or "preset" mentions introduced in README/CONTRIBUTING
  • Test plugin/marketplace cleaned up from local Claude Code config after verification

🤖 Generated with Claude Code

Adds .claude-plugin/marketplace.json + plugin.json so tastemaker
installs natively via:

  /plugin marketplace add codeswithroh/tastemaker
  /plugin install tastemaker@codeswithroh

No terminal, no git clone, no finding the right skills directory -
matching taste-skill's lowest-friction install path, which this whole
week's roadmap (issue #49) exists to close.

This required a real repo restructure, not just two new JSON files.
Verified empirically (not assumed) via Claude Code's own plugin
schema docs plus real installs against this exact machine's CLI
(v2.1.70):

- A plugin's skills load by default from a skills/<name>/SKILL.md
  layout under the plugin's source - confirmed against Anthropic's
  own first-party netlify-skills plugin (already installed here),
  whose real on-disk cache uses exactly that structure. A bare
  root-level SKILL.md (our old layout) is not what gets scanned.
- Moved SKILL.md, references/, scripts/, assets/, and the vendored
  ideagram/ sub-skill into skills/tastemaker/ as a single git-mv unit
  (all renames tracked, zero content edits) - confirmed beforehand
  that nothing inside that cluster references paths outside it, so
  the move is safe with no internal links to fix.
- Real end-to-end install testing caught and fixed an actual bug:  an
  initial strict:false + explicit skills: array config (mirroring
  netlify's marketplace.json literally) produced "conflicting
  manifests" and failed to load. Simplifying to source: "./" with no
  strict/skills override (relying on the default skills/ scan, which
  already matches our structure) fixed it - verified via
  `claude plugin list` flipping from a real caught failure to
  "✔ enabled", cache inspection confirming SKILL.md at the exact
  scanned path, and the install manifest structurally matching two
  other known-working installed plugins.
- Deliberately omitted `version` from plugin.json (confirmed optional,
  falls back to git commit SHA) rather than adding a placeholder -
  real semantic versioning is issue #53's (Day 5) job, not this one's.

Consequences of the restructure, fixed in the same pass since they're
directly caused by it, not scope creep:
- README.md: Quick Start now leads with the plugin install command;
  manual git-clone install corrected to copy skills/tastemaker
  specifically (the old `git clone -> ~/.claude/skills/tastemaker`
  would now put SKILL.md one directory too deep). Project layout
  diagram updated to the real nested structure.
- CONTRIBUTING.md: local setup now cds into skills/tastemaker/ before
  running any script commands, since every path in the file
  (scripts/check_contrast.py, references/style-tokens.md, etc.) is
  relative to that folder now, not the repo root. The one script
  reaching outside the skill folder (validate_assets.py against
  .github/assets/) updated to the correct relative path.
- .github/PULL_REQUEST_TEMPLATE.md and preset_submission.yml: the two
  checkbox items that read as literal copy-pasteable commands
  corrected to the new path. bug_report.yml's dropdown labels left as
  short-form category names (scripts/, references/) since those were
  never literal paths to begin with.

marketplace.json names the marketplace "codeswithroh" (a publisher
namespace) rather than "tastemaker" (the product name), deliberately
leaving room to list additional plugins under the same marketplace if
issue #51's free/paid variant decision produces more of them.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@codeswithroh
codeswithroh merged commit 7a70fbc into main Jul 25, 2026
@codeswithroh
codeswithroh deleted the feat/plugin-marketplace branch July 25, 2026 13:18
codeswithroh added a commit that referenced this pull request Jul 26, 2026
…elog current (#71)

Resolves #53. Added version: 1.0.0 to SKILL.md's frontmatter — a real, considered call: the generative core (palette gen, structure/diversification, gates, verbs) has been exercised across many real builds, not just written and left untested, which is past a 0.x designation honestly.

The site changelog (site/changelog.html) was 12 merged PRs behind (#47, #48, #57, #58, #59, #64-67, #69-70 were missing) — backfilled those before generating the root file from it, so the two don't start out already drifted. CHANGELOG.md is a condensed summary pointing to the site as the canonical, PR-linked detailed record, per the issue's second option.

Also fixes a real, already-merged bug: the marketing site's actual live domain is tastemaker-ai-skill.netlify.app, not tastemaker-skill.online — the wrong domain had been used in #70's sponsor-pitch.md draft; corrected here before it's used for real outreach.
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.

Day 1 — Register as a Claude Code plugin marketplace entry

1 participant