Skip to content

fix: add required owner to marketplace.json so the plugin installs - #1

Merged
aoc81 merged 1 commit into
mainfrom
fix/marketplace-owner
Sep 12, 2026
Merged

aoc81 merged 1 commit into
mainfrom
fix/marketplace-owner

Conversation

@aoc81

@aoc81 aoc81 commented Sep 12, 2026 •

Copy link
Copy Markdown
Owner

The bug

/plugin marketplace add aoc81/lore has failed since the very first commit:

✘ Failed to add marketplace: Invalid schema:
  .claude-plugin/marketplace.json  owner: Invalid input

owner is required by the marketplace schema and was never present in any
version (checked back to v0.1.0). The plugin has only ever been loaded in-repo
as lore@inline, which skips that validation — which is why this went
unnoticed through five releases.

The fix

  • Add owner to .claude-plugin/marketplace.json.
  • Drop the root-level displayName, which Claude Code ignores at load time
    (claude plugin validate warns about it). The per-entry one stays.

Verification

claude plugin validate . passes with no warnings, and end-to-end in an
unrelated repo:

✔ Successfully added marketplace: lore
✔ Successfully installed plugin: lore@lore (scope: user)

All 9 skills and 5 hooks load; ~246 tokens always-on.

Regression guard

New tests/test_manifests.py (stdlib, picked up by the existing CI
unittest discover): asserts owner is present and named, no unknown
root-level fields, each entry's source resolves to a directory containing a
plugin.json, the three declared versions agree, and every hooks.json
command points at a script that actually ships. Confirmed it fails if owner
is removed again. Full suite: 159 tests, OK.

No version bump — since the marketplace was never addable, nobody has 0.5.0
installed through it.

`/plugin marketplace add aoc81/lore` has failed since the first commit:

    Invalid schema: .claude-plugin/marketplace.json  owner: Invalid input

`owner` is required by the marketplace schema and was never present, so the
plugin has never been installable from the marketplace — only loaded in-repo
as `lore@inline`, which skips that validation and hid the bug.

Add `owner`, and drop the root-level `displayName` that Claude Code ignores
at load time. `claude plugin validate .` now passes with no warnings, and
`marketplace add` + `install lore@lore` both succeed.

Guard it with tests/test_manifests.py: `owner`, no unknown root fields, each
entry's `source` resolves to a dir with a plugin.json, the three versions
agree, and every hooks.json command points at a script that ships.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@aoc81
aoc81 merged commit 996dc0d into main Sep 12, 2026
6 checks passed
@aoc81 aoc81 mentioned this pull request Sep 12, 2026
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