← ClaudeAtlas

claude-plugin-authoringlisted

Basics of authoring a Claude Code plugin — the plugin.json manifest, the .claude-plugin/ directory layout, the component types (skills, agents, commands, hooks, MCP), and the validate/install workflow. Use when creating a new Claude Code plugin or wiring one into a marketplace.
glitchwerks/claude-plugins · ★ 0 · AI & Automation · score 72
Install: claude install-skill glitchwerks/claude-plugins
# Claude Plugin Authoring (Basics) A minimal guide to standing up a Claude Code plugin. For the full schema and edge cases, see the official docs at <https://code.claude.com/docs/en/plugins>. ## 1. Manifest — `.claude-plugin/plugin.json` Only `name` is required. A minimal manifest: ```json { "name": "my-plugin", "version": "0.1.0", "description": "..." } ``` The manifest lives at `.claude-plugin/plugin.json`. Component-path fields (`skills`, `agents`, `commands`, `hooks`, `mcpServers`) are **overrides** — omit them when you use the default directory layout below and let Claude Code auto-discover. ## 2. Directory layout ``` my-plugin/ ├── .claude-plugin/ │ ├── plugin.json ← manifest (only this + marketplace.json go here) │ └── marketplace.json ← only if self-publishing as a marketplace ├── skills/<name>/SKILL.md ← skills, auto-discovered ├── agents/*.md ← sub-agent definitions ├── commands/*.md ← legacy flat commands (prefer skills/ for new work) ├── hooks/hooks.json ← hooks (event-keyed object, not a flat array) └── README.md ``` **Footgun:** only `plugin.json` (and `marketplace.json`) belong inside `.claude-plugin/`. Putting `skills/`, `agents/`, `hooks/`, etc. inside it is a silent loader failure. ## 3. Components at a glance | Component | Location | | ----------- | ------------------------ | | Skills | `skills/<name>/SKILL.md` | | Agents | `agents/*.md` | | Commands | `co