Plugin Architecture
Quick Start
A well-structured plugin follows this minimal layout:
my-plugin/ ├── .claude-plugin/ │ └── plugin.json # Required manifest ├── agents/ │ └── agent.md # Agent definition ├── skills/ │ └── skill-name/SKILL.md # Skill definition ├── commands/ │ └── command.md # Command definition ├── hooks/ │ └── hooks.json # Automation hooks └── README.md
Plugin Manifest (plugin.json)
The manifest defines what your plugin does and what it contains.
{
"name": "my-plugin",
"version": "1.0.0",
"description": "What my plugin does",
"author": "Your Name",
"license": "MIT",
"repository": "https://github.com/user/repo",
"agents": [
{
"name": "agent-id",
"description": "What it does",
"file": "agents/agent.md"
}
],
"commands": [
{
"name": "command",
"file": "commands/command.md",
"description": "What it does"
}
],
"skills": [
{
"name": "skill-id",
"file": "skills/skill-id/SKILL.md"
}
],
"hooks": {
"file": "hooks/hooks.json"
}
}
Manifest Rules
- •name: lowercase-hyphens, 10-50 chars
- •version: semantic (MAJOR.MINOR.PATCH)
- •description: 50-256 characters
- •agents: array of agent definitions
- •commands: array of command definitions
- •skills: array of skill definitions
- •hooks: optional, points to hooks.json
Agent Structure
Each agent is a markdown file with YAML frontmatter:
--- description: What this agent does (max 1024 chars) capabilities: - "Capability 1" - "Capability 2" - "Capability 3" --- # Agent Name [Detailed content about what agent does] ## When to Use Use this agent when: - Need 1 - Need 2 - Need 3
Naming Convention
01-primary-agent.md 02-secondary-agent.md 03-tertiary-agent.md
Skill Structure
Skills provide reusable knowledge and examples.
skills/
├── skill-one/
│ ├── SKILL.md # Always named SKILL.md
│ └── resources/ # Optional: additional files
│ ├── example.py
│ └── reference.md
└── skill-two/
└── SKILL.md
SKILL.md Format
--- name: skill-unique-id description: "What skill teaches (max 1024 chars)" --- # Skill Name ## Quick Start [Working code - copy-paste ready] ## Core Concepts ### Concept 1 [Explanation with code] ### Concept 2 [More examples] ## Advanced Topics [Expert-level content] ## Real-World Projects [Practical applications]
Command Structure
Commands are entry points for users:
commands/ ├── create.md ├── design.md ├── test.md └── deploy.md
Command Format
# /command-name - Brief Description ## What This Does [Clear explanation] ## Usage
/command-name [options]
## Options | Option | Description | |--------|-------------| | `--flag` | What it does | ## Example [Sample output] ## Next Steps [What to do next]
Hook Configuration
Hooks automate plugin behavior:
{
"hooks": [
{
"id": "hook-id",
"name": "Hook Name",
"event": "event-type",
"condition": "condition",
"action": "action-name",
"enabled": true
}
]
}
Architectural Patterns
Single Responsibility
Agent 1: Domain A only Agent 2: Domain B only Agent 3: Domain C only
Layered Architecture
Commands (User interface)
↓
Agents (Logic & guidance)
↓
Skills (Knowledge & examples)
↓
Hooks (Automation)
Agent Collaboration
Agent A → asks → Agent B ↓ Links to shared skills ↓ Agent C for final review
File Organization Best Practices
✅ Logical grouping ├─ All agents together ├─ All skills organized ├─ All commands grouped └─ Config centralized ✅ Clear naming ├─ agents/01-primary.md ├─ agents/02-secondary.md ├─ skills/skill-one/SKILL.md └─ commands/action.md ✅ Scalable structure ├─ Easy to add agents ├─ Simple to extend skills ├─ Clear command naming └─ Organized hooks
Scaling Your Plugin
From Simple to Complex
Stage 1: 1 agent, 2 skills, 1 command
Minimal viable plugin
Stage 2: 3 agents, 5 skills, 3 commands
Feature-rich plugin
Stage 3: 5-7 agents, 10+ skills, 5+ commands
Enterprise plugin
Common Mistakes
❌ Unclear structure → Use recommended layout ❌ Mixed concerns → One agent = one domain ❌ Missing manifest → Always include plugin.json ❌ Bad naming → Use lowercase-hyphens ❌ No documentation → Document everything
Use this skill when:
- •Designing plugin structure
- •Creating plugin.json
- •Organizing agents and skills
- •Planning plugin growth
Status: ✅ Production Ready | SASMP: v1.3.0 | Bonded Agent: 01-plugin-architect