466 lines
9.7 KiB
Markdown
466 lines
9.7 KiB
Markdown
---
|
|
name: plugin-creator
|
|
version: 1.0.0
|
|
description: |
|
|
Create complete Claude Code plugins with proper structure including skills, commands, agents, and hooks.
|
|
Generates plugin manifests and directory structures for distribution.
|
|
Use when: building plugins, creating plugin packages, distributing skills to marketplace.
|
|
Activates for: "create plugin", "generate plugin", "new plugin", "plugin package", "make plugin"
|
|
---
|
|
|
|
# Plugin Creator
|
|
|
|
Generate complete Claude Code plugins with proper structure and configuration.
|
|
|
|
## When to Use
|
|
|
|
- Creating shareable plugin packages
|
|
- Building complete tool collections
|
|
- Organizing related skills/commands/agents
|
|
- Distributing functionality to teams
|
|
- Contributing to plugin marketplaces
|
|
|
|
## Plugin Structure
|
|
|
|
A complete plugin includes:
|
|
|
|
```sh
|
|
plugin-name/
|
|
├── .claude-plugin/
|
|
│ └── plugin.json # Plugin manifest
|
|
├── skills/ # Optional: Skill definitions
|
|
│ ├── skill-1.md
|
|
│ └── skill-2.md
|
|
├── commands/ # Optional: Slash commands
|
|
│ ├── command-1.md
|
|
│ └── command-2.md
|
|
├── agents/ # Optional: Agent definitions
|
|
│ ├── agent-1.md
|
|
│ └── agent-2.md
|
|
├── hooks/ # Optional: Event hooks
|
|
│ └── hooks.json
|
|
├── README.md # Documentation
|
|
└── LICENSE # Optional: License file
|
|
```
|
|
|
|
## Core Workflow
|
|
|
|
### 1. Gather Requirements
|
|
|
|
Ask the user:
|
|
|
|
- **Plugin name**: Kebab-case identifier
|
|
- **Purpose**: What problem does this plugin solve?
|
|
- **Components**: What will it include (skills/commands/agents/hooks)?
|
|
- **Target audience**: Who will use this?
|
|
- **Distribution**: Public marketplace or private?
|
|
- **Dependencies**: Required tools or other plugins?
|
|
|
|
### 2. Generate Plugin Structure
|
|
|
|
#### Create Directory Structure
|
|
|
|
```bash
|
|
mkdir -p plugin-name/.claude-plugin
|
|
mkdir -p plugin-name/skills
|
|
mkdir -p plugin-name/commands
|
|
mkdir -p plugin-name/agents
|
|
mkdir -p plugin-name/hooks
|
|
```
|
|
|
|
#### Generate plugin.json
|
|
|
|
```json
|
|
{
|
|
"name": "plugin-name",
|
|
"version": "1.0.0",
|
|
"description": "Clear description of what this plugin does",
|
|
"author": {
|
|
"name": "Author Name",
|
|
"email": "email@example.com",
|
|
"github": "github-username"
|
|
},
|
|
"license": "MIT",
|
|
"category": "appropriate-category",
|
|
"keywords": ["keyword1", "keyword2", "keyword3"],
|
|
"skills": ["skill-1", "skill-2"],
|
|
"commands": ["command-1", "command-2"],
|
|
"agents": ["agent-1", "agent-2"],
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/username/plugin-name"
|
|
},
|
|
"homepage": "https://github.com/username/plugin-name",
|
|
"requires": {
|
|
"tools": ["git", "npm"],
|
|
"plugins": []
|
|
}
|
|
}
|
|
```
|
|
|
|
#### Generate README.md
|
|
|
|
```markdown
|
|
# Plugin Name
|
|
|
|
> Brief description
|
|
|
|
## Features
|
|
|
|
- Feature 1
|
|
- Feature 2
|
|
- Feature 3
|
|
|
|
## Installation
|
|
|
|
\`\`\`bash
|
|
/plugin marketplace add username/plugin-name
|
|
/plugin install plugin-name
|
|
\`\`\`
|
|
|
|
## Usage
|
|
|
|
### Skills
|
|
|
|
- **skill-1**: Description
|
|
- **skill-2**: Description
|
|
|
|
### Commands
|
|
|
|
- `/command-1`: Description
|
|
- `/command-2`: Description
|
|
|
|
### Agents
|
|
|
|
- **agent-1**: Description
|
|
|
|
## Examples
|
|
|
|
[Usage examples]
|
|
|
|
## Requirements
|
|
|
|
- Tool 1
|
|
- Tool 2
|
|
|
|
## License
|
|
|
|
MIT
|
|
```
|
|
|
|
### 3. Add Components
|
|
|
|
Use the creator skills to add components:
|
|
|
|
- **skill-creator**: Add skills
|
|
- **command-creator**: Add commands
|
|
- **agent-creator**: Add agents
|
|
- **hook-creator**: Add hooks
|
|
|
|
### 4. Validate Plugin
|
|
|
|
Ensure:
|
|
|
|
- ✅ plugin.json is valid JSON
|
|
- ✅ All referenced components exist
|
|
- ✅ Directory structure is correct
|
|
- ✅ README is comprehensive
|
|
- ✅ License is appropriate
|
|
- ✅ Keywords are relevant
|
|
|
|
## Example Plugins
|
|
|
|
### TanStack Tools Plugin
|
|
|
|
```sh
|
|
tanstack-tools/
|
|
├── .claude-plugin/
|
|
│ └── plugin.json
|
|
├── skills/
|
|
│ ├── tanstack-router-setup.md
|
|
│ ├── tanstack-query-hook.md
|
|
│ ├── tanstack-form-schema.md
|
|
│ ├── tanstack-table-config.md
|
|
│ └── tanstack-start-project.md
|
|
├── commands/
|
|
│ ├── setup-tanstack-start.md
|
|
│ └── generate-query-hook.md
|
|
├── README.md
|
|
└── LICENSE
|
|
```
|
|
|
|
**plugin.json:**
|
|
|
|
```json
|
|
{
|
|
"name": "tanstack-tools",
|
|
"version": "1.0.0",
|
|
"description": "Comprehensive TanStack ecosystem tools for Router, Query, Forms, Table, and Start",
|
|
"author": {
|
|
"name": "Jace Babin",
|
|
"email": "jbabin91@gmail.com",
|
|
"github": "jbabin91"
|
|
},
|
|
"license": "MIT",
|
|
"category": "framework",
|
|
"keywords": [
|
|
"tanstack",
|
|
"router",
|
|
"query",
|
|
"forms",
|
|
"table",
|
|
"start",
|
|
"react"
|
|
],
|
|
"skills": [
|
|
"tanstack-router-setup",
|
|
"tanstack-query-hook",
|
|
"tanstack-form-schema",
|
|
"tanstack-table-config",
|
|
"tanstack-start-project"
|
|
],
|
|
"commands": ["setup-tanstack-start", "generate-query-hook"],
|
|
"requires": {
|
|
"tools": ["npm", "git"],
|
|
"packages": ["@tanstack/router", "@tanstack/react-query"]
|
|
}
|
|
}
|
|
```
|
|
|
|
### API Tools Plugin
|
|
|
|
```sh
|
|
api-tools/
|
|
├── .claude-plugin/
|
|
│ └── plugin.json
|
|
├── skills/
|
|
│ ├── drizzle-setup.md
|
|
│ ├── drizzle-schema-generator.md
|
|
│ ├── better-auth-setup.md
|
|
│ ├── hono-rpc-endpoint.md
|
|
│ └── elysia-setup.md
|
|
├── commands/
|
|
│ ├── init-drizzle.md
|
|
│ ├── generate-api-client.md
|
|
│ └── setup-auth.md
|
|
├── agents/
|
|
│ └── api-designer.md
|
|
├── README.md
|
|
└── LICENSE
|
|
```
|
|
|
|
**plugin.json:**
|
|
|
|
```json
|
|
{
|
|
"name": "api-tools",
|
|
"version": "1.0.0",
|
|
"description": "Backend API development tools for Hono, Elysia, Drizzle, and better-auth",
|
|
"author": {
|
|
"name": "Jace Babin",
|
|
"email": "jbabin91@gmail.com",
|
|
"github": "jbabin91"
|
|
},
|
|
"license": "MIT",
|
|
"category": "backend",
|
|
"keywords": [
|
|
"api",
|
|
"backend",
|
|
"hono",
|
|
"elysia",
|
|
"drizzle",
|
|
"better-auth",
|
|
"openapi"
|
|
],
|
|
"skills": [
|
|
"drizzle-setup",
|
|
"drizzle-schema-generator",
|
|
"better-auth-setup",
|
|
"hono-rpc-endpoint",
|
|
"elysia-setup"
|
|
],
|
|
"commands": ["init-drizzle", "generate-api-client", "setup-auth"],
|
|
"agents": ["api-designer"],
|
|
"requires": {
|
|
"tools": ["npm", "node"],
|
|
"packages": ["drizzle-orm", "better-auth"]
|
|
}
|
|
}
|
|
```
|
|
|
|
### Component Library Plugin
|
|
|
|
```sh
|
|
design-system-tools/
|
|
├── .claude-plugin/
|
|
│ └── plugin.json
|
|
├── skills/
|
|
│ ├── component-generator.md
|
|
│ ├── component-a11y-validator.md
|
|
│ ├── storybook-story.md
|
|
│ └── design-tokens-validator.md
|
|
├── commands/
|
|
│ ├── create-component.md
|
|
│ ├── validate-a11y.md
|
|
│ └── generate-stories.md
|
|
├── agents/
|
|
│ ├── component-reviewer.md
|
|
│ └── a11y-auditor.md
|
|
├── hooks/
|
|
│ └── hooks.json
|
|
├── README.md
|
|
└── LICENSE
|
|
```
|
|
|
|
## Plugin Categories
|
|
|
|
### Framework-Specific
|
|
|
|
- tanstack-tools
|
|
- react-tools
|
|
- next-tools
|
|
- vue-tools
|
|
|
|
### Backend
|
|
|
|
- api-tools
|
|
- database-tools
|
|
- auth-tools
|
|
|
|
### DevOps
|
|
|
|
- deployment-tools
|
|
- ci-cd-tools
|
|
- monitoring-tools
|
|
|
|
### Code Quality
|
|
|
|
- testing
|
|
- linting-tools
|
|
- security-tools
|
|
|
|
### Meta
|
|
|
|
- skill-tools (this plugin!)
|
|
- marketplace-tools
|
|
- template-tools
|
|
|
|
## Plugin Manifest Fields
|
|
|
|
### Required Fields
|
|
|
|
```json
|
|
{
|
|
"name": "plugin-identifier", // Required: kebab-case
|
|
"version": "1.0.0", // Required: semantic versioning
|
|
"description": "Clear description" // Required: what it does
|
|
}
|
|
```
|
|
|
|
### Recommended Fields
|
|
|
|
```json
|
|
{
|
|
"author": {
|
|
"name": "Author Name",
|
|
"email": "email@example.com",
|
|
"github": "username"
|
|
},
|
|
"license": "MIT",
|
|
"category": "framework",
|
|
"keywords": ["keyword1", "keyword2"],
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/username/plugin"
|
|
},
|
|
"homepage": "https://github.com/username/plugin"
|
|
}
|
|
```
|
|
|
|
### Optional Fields
|
|
|
|
```json
|
|
{
|
|
"skills": ["skill-1", "skill-2"], // List of included skills
|
|
"commands": ["cmd-1", "cmd-2"], // List of commands
|
|
"agents": ["agent-1"], // List of agents
|
|
"requires": {
|
|
"tools": ["git", "npm"], // Required CLI tools
|
|
"plugins": ["other-plugin"], // Plugin dependencies
|
|
"packages": ["package-name"] // npm package dependencies
|
|
}
|
|
}
|
|
```
|
|
|
|
## Distribution
|
|
|
|
### Public Marketplace
|
|
|
|
1. Create GitHub repository
|
|
2. Add marketplace.json (if creating marketplace)
|
|
3. Tag releases with versions
|
|
4. Share repository URL
|
|
|
|
Users install via:
|
|
|
|
```bash
|
|
/plugin marketplace add username/plugin-name
|
|
/plugin install plugin-name
|
|
```
|
|
|
|
### Private/Work Distribution
|
|
|
|
1. Host on private Git server
|
|
2. Share repository URL with team
|
|
3. Add to team marketplace
|
|
|
|
Users install via:
|
|
|
|
```bash
|
|
/plugin marketplace add git@internal:plugins/plugin-name
|
|
/plugin install plugin-name
|
|
```
|
|
|
|
## Best Practices
|
|
|
|
1. **Clear Purpose**: Plugin should solve one specific problem domain
|
|
2. **Good Documentation**: Comprehensive README with examples
|
|
3. **Semantic Versioning**: Follow semver for releases
|
|
4. **Minimal Dependencies**: Only require what's necessary
|
|
5. **Test Before Release**: Validate all components work
|
|
6. **Helpful Keywords**: Make plugin discoverable
|
|
|
|
## Anti-Patterns
|
|
|
|
- ❌ Kitchen-sink plugins (too many unrelated features)
|
|
- ❌ Missing documentation
|
|
- ❌ No examples
|
|
- ❌ Unclear versioning
|
|
- ❌ Missing license
|
|
- ❌ Poor component organization
|
|
|
|
## Troubleshooting
|
|
|
|
### Plugin Not Loading
|
|
|
|
**Solution**:
|
|
|
|
- Validate plugin.json syntax
|
|
- Check directory structure
|
|
- Verify all referenced files exist
|
|
- Restart Claude Code
|
|
|
|
### Components Not Found
|
|
|
|
**Solution**:
|
|
|
|
- Check component names match manifest
|
|
- Verify files are in correct directories
|
|
- Check file extensions (.md for skills/commands/agents)
|
|
|
|
## References
|
|
|
|
- [Claude Code Plugins Documentation](https://docs.claude.com/en/docs/claude-code/plugins)
|
|
- [super-claude Plugin Examples](../../plugins/)
|
|
- [Plugin Manifest Spec](https://docs.claude.com/en/docs/claude-code/plugins#manifest)
|