The live run

Ship data,
not design.

Describe your marketplace as a little YAML. cc-marketspec joins it with your native plugin manifests and emits one render-agnostic .cc-marketspec/dist/manifest.json.

~8 lines of YAML in, a full marketplace manifest out.

.cc-marketspec/entries/plugin-<id>.yaml — excerpt · then one real run
# presentation overlay — never restates nativegroup: toolstagline: Headless data standard + generator for a Claude Code marketplace's presentationtips:  - This repo is itself a cc-marketspec marketplace — it dogfoods its own framework.  - text: Ask the hosted MCP for field help without installing anything.    href: https://github.com/XBlueSky/cc-marketspec#hosted-mcp-server$ npx @xbluesky/cc-marketspeccc-marketspec: wrote .cc-marketspec/dist/manifest.json — 1 plugins, 0 warning(s).

cc-marketspec

Headless data standard + generator for a marketplace's presentation

1 skill4 commands1 mcp

/cc-generate Generate .cc-marketspec/dist/manifest.json from your data.

02 The mental model

Native facts, plus a presentation overlay.

cc-marketspec adds only what native can't express — and the rule is strict: presentation never restates native facts.

Native — Claude Code defines · you maintain anyway

  • marketplace.json
  • plugin.json
  • .mcp.json
  • skills/*/SKILL.md
  • commands/*.md
  • agents/*.md
  • hooks/hooks.json

Presentation — this standard · only the gaps

  • .cc-marketspec/catalog.yaml
  • .cc-marketspec/entries/plugin-<id>.yaml
.cc-marketspec/dist/manifest.json

one render-agnostic document

plugin.json & .mcp.json
// plugin.json
 "name": "cc-marketspec", "version": "0.2.1", "license": "MIT",  
// .mcp.json
 "mcpServers":  "cc-marketspec":  "type": "http",    
.cc-marketspec/entries/plugin-<id>.yaml
# .cc-marketspec/entries/plugin-<id>.yaml
group: tools
tagline: Headless data standard + generator …
.cc-marketspec/dist/manifest.json
 "name": "cc-marketspec", "version": "0.2.1",
  "license": "MIT", "group": "tools",
  ,
  "mcp": [ "type": "http", "provides": [  ] ] 
03 The trace

Three steps, no design decisions.

  1. [01/03]

    Describe

    A little YAML — only what native can't express.

    describe
    .cc-marketspec/catalog.yamlschemaVersion: "1.1"groups:  - id: tools    label: Tools
  2. [02/03]

    Generate

    Joins your YAML with native manifests, validates.

    generate
    $ npx @xbluesky/cc-marketspeccc-marketspec: wrote .cc-marketspec/dist/manifest.json — 1 plugins, 0 warning(s).
  3. [03/03]

    .cc-marketspec/dist/manifest.json

    One render-agnostic document. Consume in the build or publish with the site.

    .cc-marketspec/dist/manifest.json
    { "schemaVersion": "1.1",  "marketplace": { "name": "cc-marketspec" },  "plugins": [ … ] }
04 Write little, get much

You author the left. The generator fills the right.

You author — no native source

  • description / tagline / intro
  • agent returns / not
  • mcp provides / install / auth / setup
  • examples
  • hook why
  • configuration (.local.md settings)
  • tips / traps

Derived for you — native already encodes it

  • skill autoload badge · resource counts
  • command argument table · summary
  • agent tools · summary
  • mcp transport · env-var keys
  • hook event / matcher
  • plugin identity (name/version/author/license/keywords/deps)
  • plugin category
05 This section is the product

Rendered from this repo's .cc-marketspec/dist/manifest.json.

The output of the hero's run, rendered live. Generated during build; not committed. The framework dogfoods itself. View source →

cc-marketspec 0.2.1

Headless data standard + generator for a Claude Code marketplace's presentation

Describe your marketplace as data; cc-marketspec joins it with the native plugin manifests, validates, and emits the ignored, render-agnostic .cc-marketspec/dist/manifest.json. Ships data, not design.

claude-codemarketplacemanifestschema

Skills

  • marketplace-flow — When a user wants to turn a repo into a Claude Code plugin marketplace, fill presentation data, generate the manifest, or wire CI — the skill walks the whole flow.1 ref · 3 assets

Commands

  • cc-check — Validate namespaced marketplace authoring data without writing files.
  • cc-generate — Build the ignored marketplace manifest for an explicit consumer.
  • cc-init — Scaffold namespaced marketplace authoring files from existing plugins.
  • cc-migrate — Safely migrate legacy cc-marketspec YAML into .cc-marketspec/.

MCP

  • cc-marketspec — Hosted, read-only MCP tools for schema lookup and coverage checks.get_schemalist_authoring_sectionsget_authoring_guidecheck_coveragescaffold_entry

Tips

  • This repo is itself a cc-marketspec marketplace — it dogfoods its own framework.
  • Ask the hosted MCP for field help without installing anything.Hosted MCP

Traps

  • .cc-marketspec/entries/plugin-<id>.yaml never restates native facts — a skill trigger that just repeats the SKILL.md description adds nothing.
06 Your turn

Run it in your marketplace repo.

Install
npm install -D @xbluesky/cc-marketspec
Scaffold
npx @xbluesky/cc-marketspec init
Generate
npx @xbluesky/cc-marketspec
CI gate (validate only)
npx @xbluesky/cc-marketspec --check