claude-plugin-authoringlisted
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