Claude Code plugin.json generator

Free, runs in your browser. Updated .

Every Claude Code plugin starts with a manifest at .claude-plugin/plugin.json. Fill in the name, version, author and license, pick the parts your plugin ships, and the generator writes the manifest, a marketplace.json that lets the repository install as its own marketplace, the folder layout and the commands users type to install it. The name is checked against the same Claude directory rules HOL Plugin pre-flight uses, and nothing you type leaves your browser.

The plugin

Lowercase words joined by hyphens. Users install by this name.

  • Fix: Add a plugin name. It is the only field Claude Code requires.
  • Check: Add a description. The Claude directory expects one, and users see it before they install.

An SPDX identifier, such as MIT or Apache-2.0.

Separate with commas.

Author and links
  • Check: Add an author name. The directory expects one, and marketplace.json needs it as the owner.

Optional. Users type it after the @ when they install.

What the plugin ships

Add a plugin name to see the files.

Commit both files, then check the repository with Plugin pre-flight and claude plugin validate . before you share it.

plugin.json fields

Claude Code needs only a name. The Claude plugin directory checks more before it lists a plugin, so the generator fills in each field it looks for.

FieldRequiredWhat it is for
nameYesThe install name. Lowercase kebab-case, up to 64 characters.
versionDirectory expects itSemantic version. Bump it on every release so installed copies update.
descriptionDirectory expects itOne sentence shown in /plugin before someone installs.
authorDirectory expects itAn object with name, and optionally email and url.
licenseHere or as a LICENSE fileAn SPDX identifier such as MIT. The directory blocks a plugin with no license.
homepageNoDocumentation or product page.
repositoryNoSource code address, so people can read what they install.
keywordsNoSearch terms for marketplaces and catalogs.

Example plugin.json

The manifest the generator writes for the example plugin. Components are not listed because Claude Code finds them in their default folders.

{
  "name": "release-notes",
  "version": "1.0.0",
  "description": "Drafts release notes from merged pull requests and checks them against the changelog.",
  "author": {
    "name": "Example Labs",
    "email": "[email protected]",
    "url": "https://example.com"
  },
  "homepage": "https://example.com/release-notes",
  "repository": "https://github.com/example-labs/release-notes",
  "license": "MIT",
  "keywords": [
    "release notes",
    "changelog",
    "github"
  ]
}

Mistakes that stop a plugin loading or listing

Folders inside .claude-plugin
Only plugin.json and marketplace.json belong in .claude-plugin/. Put skills/, commands/, agents/ and hooks/ at the plugin root, or Claude Code will not find them.
A marketplace entry with a different name
Keep the entry name in marketplace.json equal to the plugin name. Users install by name@marketplace, so a rename breaks existing installs.
The same version on every release
Claude Code compares versions to decide whether an installed copy is current. Ship a change without a new version and existing users may not get it.
A reserved or generic name
The Claude directory refuses names such as claude, plugin or mcp, and holds names made only of generic words, such as my-tools, for review.

Questions

Which fields does a Claude Code plugin.json need?
Only name is required. The Claude plugin directory also expects a description, an author and a version, and a license either in plugin.json or as a LICENSE file. Homepage, repository and keywords help people find and trust the plugin.
Where do plugin.json and the plugin folders go?
plugin.json goes in a .claude-plugin folder at the root of the plugin. The skills, commands, agents and hooks folders and the .mcp.json file sit at the plugin root next to .claude-plugin, not inside it. Claude Code finds them in those default places, so the manifest does not need to list them.
Do I need a marketplace.json?
Users install plugins from a marketplace. Adding .claude-plugin/marketplace.json with one entry whose source is ./ makes the repository its own marketplace, so users can run /plugin marketplace add owner/repo and then /plugin install name@marketplace.
What makes a plugin name valid?
Lowercase letters, digits and hyphens, up to 64 characters, starting and ending with a letter or digit. The Claude directory refuses reserved words such as claude, anthropic, official, plugin, mcp and test, and holds names made only of generic words such as my-tools for review.
Which version should a new plugin start at?
Any semantic version works; 0.1.0 or 1.0.0 are common. Bump it on every release, because Claude Code compares versions to decide whether an installed copy needs updating.
Is what I type uploaded anywhere?
No. The files are built in this browser tab and nothing is kept after you leave the page.

Related