Creating Plugins

A plugin is a directory that bundles agents and skills into a distributable unit within a marketplace. Each plugin has its own metadata, version, and category.

Plugin structure

my-plugin/
├── .claude-plugin/
│   └── plugin.json
├── agents/
│   ├── reviewer.md
│   └── planner.md
└── skills/
    └── code-review/
        └── SKILL.md

The .claude-plugin/plugin.json file identifies the directory as a plugin:

{
  "name": "my-plugin",
  "version": "0.1.0",
  "description": "A collection of code review tools",
  "author": {
    "name": "Your Name",
    "email": "you@example.com"
  },
  "license": "MIT",
  "keywords": ["review", "quality"]
}

Plugin scaffolding, validation, marketplace generation, and manifest projection are outside cmf. cmf materializes structured intents and installs the resulting artifact directly through cmx-core; use the repository's chosen publishing workflow when a distributable plugin is actually required.

Plugin categories

Plugins can be organized into categories via the category field in marketplace.json:

CategoryPurpose
ecosystemLanguage and framework tooling (e.g., rust-craft, python-craft)
functionalCross-cutting capabilities (e.g., code-review, documentation)
personalIndividual workflow preferences and style guides

Categories are optional. Plugins without a category appear as "uncategorized" in status output.