marketplace.json is missing owner and plugins, which fails validation and skips all component checks

Open Beginner friendly
#25 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
74/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
json
Domain
cli, tooling

Research direction

Start with .claude-plugin/marketplace.json and compare it with .claude-plugin/plugin.json and the episodic-memory example mentioned in the issue. Run claude plugin validate on the repository and plugin manifest after choosing whether to remove the marketplace file or convert it to a valid marketplace manifest. Done means validation no longer reports marketplace errors and reaches component checks.

Written by the indexing model from the issue text.

Description

bug good first issue

Summary

.claude-plugin/marketplace.json is not a marketplace manifest. It has the shape of a plugin manifest (name, description, version, plus source and strict), and is missing both required marketplace fields, owner and plugins.

Two consequences, and the second one is the reason this is worth fixing:

  1. claude plugin validate <plugin dir> fails on an otherwise healthy plugin.
  2. Because the CLI validates the marketplace manifest whenever one is present, it never validates the plugin's own components. Agents, commands, and skills in this repo are never checked by claude plugin validate at all.

Reproduction

git clone --depth 1 https://github.com/obra/claude-session-driver
claude plugin validate claude-session-driver

Result:

Validating marketplace manifest: .../.claude-plugin/marketplace.json

✘ Found 2 errors:

  ❯ owner: Invalid input: expected object, received undefined
  ❯ plugins: Invalid input: expected array, received undefined

⚠ Found 2 warnings:

  ❯ source: Unknown field 'source'. Claude Code ignores it at load time.
  ❯ strict: Unknown field 'strict'. Claude Code ignores it at load time.

The plugin manifest itself is fine:

claude plugin validate claude-session-driver/.claude-plugin/plugin.json
# ✔ Validation passed

Impact

The plugin installs and runs correctly, so this is not a runtime bug. It costs elsewhere:

  • Anyone validating an installed copy sees a failure and has to work out that the error refers to a manifest the plugin does not need.
  • Component-level validation silently never runs for this repo, so a broken agent or skill frontmatter here would not be reported.

Concretely, I found this while auditing 71 installed plugins. 20 of them ship both manifests, and in those the CLI never reaches the components. In one such plugin that was hiding an agent with invalid YAML frontmatter behind a green ✔ Validation passed.

Suggested fix

Either drop .claude-plugin/marketplace.json (the plugin is distributed through obra/superpowers-marketplace, which already lists it), or make it a real marketplace manifest:

{
  "name": "claude-session-driver-dev",
  "owner": { "name": "Jesse Vincent", "email": "jesse@fsck.com" },
  "plugins": [
    { "name": "claude-session-driver", "source": "./", "description": "..." }
  ]
}

obra/episodic-memory already does exactly this, with an episodic-memory-dev marketplace, and it validates cleanly.

Environment

  • claude-session-driver 4.0.0, installed through obra/superpowers-marketplace
  • Claude Code 2.1.223, darwin-arm64
  • Confirmed against a fresh --depth 1 clone of main
Dominant language
TypeScript
Stars
109
Forks
21
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from obra/claude-session-driver

All issues in obra/claude-session-driver

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.