Initial commit
This commit is contained in:
155
commands/create-plugin.md
Normal file
155
commands/create-plugin.md
Normal file
@@ -0,0 +1,155 @@
|
||||
---
|
||||
description: Convert a project into a Claude Code plugin
|
||||
argument-hint: [project-path]
|
||||
---
|
||||
|
||||
# /create-plugin
|
||||
|
||||
## Purpose
|
||||
Guide users through converting an existing project into a properly structured Claude Code plugin, following official documentation standards.
|
||||
|
||||
## Contract
|
||||
**Inputs:** `[project-path]` — Optional path to project directory (defaults to current directory)
|
||||
**Outputs:** `STATUS=<OK|FAIL> PLUGIN_PATH=<path>`
|
||||
|
||||
## Instructions
|
||||
|
||||
1. **Analyze the project structure:**
|
||||
- Identify existing components that could become plugin features
|
||||
- Check for slash commands, agents, skills, hooks, or MCP integrations
|
||||
- Review documentation files
|
||||
|
||||
2. **Create plugin and marketplace structure:**
|
||||
- Create `.claude-plugin/` directory at project root
|
||||
- Generate `plugin.json` manifest with proper metadata:
|
||||
- name (lowercase, kebab-case)
|
||||
- description
|
||||
- version (semantic versioning)
|
||||
- author information (object with name and optional url)
|
||||
- repository (string URL, not object)
|
||||
- license (optional)
|
||||
- Generate `marketplace.json` in the same directory with:
|
||||
- marketplace name
|
||||
- owner information
|
||||
- plugins array with source reference `"./"` (self-reference)
|
||||
|
||||
3. **Organize plugin components:**
|
||||
- `commands/` - Slash command markdown files
|
||||
- `agents/` - Agent definition markdown files
|
||||
- `skills/` - Agent Skills with SKILL.md files
|
||||
- `hooks/` - hooks.json for event handlers
|
||||
- `.mcp.json` - MCP server configurations (if applicable)
|
||||
|
||||
4. **Generate documentation:**
|
||||
- Create/update README.md with:
|
||||
- Installation instructions
|
||||
- Usage examples
|
||||
- Component descriptions
|
||||
- Testing guidance
|
||||
|
||||
5. **Provide testing workflow:**
|
||||
- Local marketplace setup commands
|
||||
- Installation verification steps
|
||||
- Iteration and debugging guidance
|
||||
|
||||
## Reference Documentation
|
||||
|
||||
Follow the official Claude Code plugin and marketplace structure:
|
||||
|
||||
```
|
||||
my-plugin/
|
||||
├── .claude-plugin/
|
||||
│ ├── marketplace.json # Marketplace manifest
|
||||
│ └── plugin.json # Plugin metadata
|
||||
├── commands/ # Custom slash commands (optional)
|
||||
│ └── command-name.md
|
||||
├── agents/ # Custom agents (optional)
|
||||
│ └── agent-name.md
|
||||
├── skills/ # Agent Skills (optional)
|
||||
│ └── skill-name/
|
||||
│ └── SKILL.md
|
||||
├── hooks/ # Event handlers (optional)
|
||||
│ └── hooks.json
|
||||
├── .mcp.json # MCP servers (optional)
|
||||
└── README.md # Documentation
|
||||
```
|
||||
|
||||
## Plugin Manifest Template
|
||||
|
||||
The plugin.json file MUST be created at `<plugin-dir>/.claude-plugin/plugin.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "plugin-name",
|
||||
"version": "1.0.0",
|
||||
"description": "Plugin description",
|
||||
"author": {
|
||||
"name": "Author Name",
|
||||
"url": "https://github.com/username"
|
||||
},
|
||||
"repository": "https://github.com/username/plugin-name",
|
||||
"license": "MIT"
|
||||
}
|
||||
```
|
||||
|
||||
**Important:** The `repository` field must be a string URL, not an object. Using an object format like `{"type": "git", "url": "..."}` will cause validation errors.
|
||||
|
||||
## Marketplace Manifest Template
|
||||
|
||||
The marketplace.json file MUST be created at `<plugin-dir>/.claude-plugin/marketplace.json` alongside plugin.json:
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "marketplace-name",
|
||||
"owner": {
|
||||
"name": "Owner Name"
|
||||
},
|
||||
"plugins": [
|
||||
{
|
||||
"name": "plugin-name",
|
||||
"source": "./",
|
||||
"description": "Plugin description"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Key Guidelines
|
||||
|
||||
- **Plugin manifest**: Use semantic versioning, clear descriptions
|
||||
- **Marketplace manifest**: MUST create marketplace.json in the same .claude-plugin/ directory alongside plugin.json
|
||||
- **Commands**: Markdown files with frontmatter (description, argument-hint)
|
||||
- **Skills**: Create subdirectories with SKILL.md files
|
||||
- **Testing**: Use local marketplace for iterative development
|
||||
- **Documentation**: Include installation, usage, and examples
|
||||
|
||||
## Constraints
|
||||
- Must create valid plugin.json schema in .claude-plugin/ directory
|
||||
- Must create valid marketplace.json schema in the same .claude-plugin/ directory
|
||||
- The repository field in plugin.json MUST be a string URL, not an object
|
||||
- Follow kebab-case naming conventions
|
||||
- Include proper frontmatter in all markdown files
|
||||
- Marketplace source must reference "./" to point to the plugin directory itself
|
||||
- Output final STATUS line with plugin path
|
||||
|
||||
## Example Output
|
||||
```
|
||||
Created plugin structure at: ./my-plugin
|
||||
Generated components:
|
||||
- .claude-plugin/plugin.json
|
||||
- .claude-plugin/marketplace.json
|
||||
- commands/helper.md
|
||||
- README.md
|
||||
|
||||
Next steps:
|
||||
1. cd my-plugin && claude
|
||||
2. /plugin marketplace add .
|
||||
3. /plugin install my-plugin@my-plugin-dev
|
||||
|
||||
Or for GitHub-based installation:
|
||||
1. Push to GitHub repository
|
||||
2. /plugin marketplace add username/my-plugin
|
||||
3. /plugin install my-plugin@my-plugin-dev
|
||||
|
||||
STATUS=OK PLUGIN_PATH=./my-plugin
|
||||
```
|
||||
Reference in New Issue
Block a user