Skip to content

feat(plugin): add marketplace manifest so the plugin is installable#106

Merged
dadachi merged 3 commits into
mainfrom
feat/plugin-marketplace
May 24, 2026
Merged

feat(plugin): add marketplace manifest so the plugin is installable#106
dadachi merged 3 commits into
mainfrom
feat/plugin-marketplace

Conversation

@dadachi
Copy link
Copy Markdown
Contributor

@dadachi dadachi commented May 24, 2026

Why

After #105 the plugin was on main but only loadable via claude --plugin-dir ./plugin (local). The plugin/README claimed /plugin install github.com/... works — it doesn't: Claude Code installs plugins from a marketplace, and the repo defined none. (Same "claimed without verifying" pattern as the npx/mobile-mcp bugs — caught it this time before relying on it.)

What

  • .claude-plugin/marketplace.json at the repo root, registering the plugin with source: ./plugin.
  • Fixed plugin/README.md install section (removed the bogus /plugin install github.com/...) → real marketplace flow.
  • Added the marketplace install to the root README.md plugin paragraph.

Install flow (now real)

/plugin marketplace add nativeapptemplate/nativeapptemplate-agent
/plugin install nativeapptemplate-agent@nativeapptemplate

…or local dev: claude --plugin-dir ./plugin. Marketplace name nativeapptemplate; plugin name nativeapptemplate-agent (matches plugin.json, so skills stay /nativeapptemplate-agent:generate-app / :walk-app).

Verified against the CLI (not just docs)

  • claude plugin validate . ✔ (marketplace; cross-checks the ./plugin source + its plugin.json version parity) and claude plugin validate ./plugin ✔.
  • claude plugin marketplace add ./ → resolved ./plugin and listed the plugin; then removed the test marketplace to leave the config clean.

Note

Two .claude-plugin/ dirs now coexist by design: ./.claude-plugin/marketplace.json (catalog) and ./plugin/.claude-plugin/plugin.json (the plugin). Different concepts; plugin.json stays the source of truth for version/metadata.

🤖 Generated with Claude Code

dadachi and others added 3 commits May 24, 2026 18:35
The plugin was only loadable via `--plugin-dir` (local) — `/plugin install
github.com/...` (as the README claimed) doesn't work without a marketplace.
Add `.claude-plugin/marketplace.json` at the repo root registering the plugin
(source: ./plugin), so it's installable by anyone.

Install flow (verified against the CLI — validate ✔, local `marketplace add ./`
resolved the ./plugin source and listed it):
  /plugin marketplace add nativeapptemplate/nativeapptemplate-agent
  /plugin install nativeapptemplate-agent@nativeapptemplate

Fix the now-correct install instructions in plugin/README.md (was the bogus
`/plugin install github.com/...`) and add the marketplace flow to the root README.
Marketplace name `nativeapptemplate`; plugin name `nativeapptemplate-agent`
(matches plugin.json, so skills stay `/nativeapptemplate-agent:*`).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ENSE)

The marketplace owner and plugin.json author read bare "Daisuke"; the canonical
attribution everywhere else (package.json author, LICENSE copyright) is the full
name "Daisuke Adachi". Align both, since marketplace owner is public catalog
metadata shown when users add the marketplace.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
owner identifies the catalog/distribution, so use the org/brand (with its GitHub
URL) rather than a personal name — reads as the official marketplace and scales
to more plugins/maintainers. plugin.json author stays "Daisuke Adachi" (the
person who wrote it; matches package.json + LICENSE).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@dadachi dadachi merged commit c2f22fe into main May 24, 2026
1 check passed
@dadachi dadachi deleted the feat/plugin-marketplace branch May 24, 2026 09:49
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.

1 participant