174 lines
4.5 KiB
Markdown
174 lines
4.5 KiB
Markdown
---
|
|
name: plugin-creator
|
|
description: Generate new Claude Code plugin scaffolds with configurable components. Use when users want to create a new plugin, start a plugin project, or scaffold plugin components.
|
|
---
|
|
|
|
# Plugin Creator
|
|
|
|
Generate well-structured Claude Code plugins following SideQuest marketplace patterns.
|
|
|
|
## When to Use This Skill
|
|
|
|
- User wants to create a new plugin
|
|
- User asks about plugin structure or scaffolding
|
|
- User mentions "new plugin", "create plugin", "plugin template"
|
|
- User wants to add components (commands, MCP server, hooks, skills) to a project
|
|
|
|
## Plugin Components
|
|
|
|
| Component | Purpose | Files Created |
|
|
|-----------|---------|---------------|
|
|
| commands | Slash commands users invoke | `commands/*.md` |
|
|
| mcp-server | Tools Claude can call | `mcp-servers/{name}/index.ts` |
|
|
| hooks | Event handlers | `hooks/hooks.json` |
|
|
| skills | Autonomous capabilities | `skills/{name}/SKILL.md` |
|
|
|
|
## Implementation Types
|
|
|
|
| Type | Use Case | Structure |
|
|
|------|----------|-----------|
|
|
| Markdown only | Commands/skills are just prompts | No src/, stub scripts |
|
|
| TypeScript | CLI tools, utilities, testable logic | src/, full scripts |
|
|
|
|
**Note**: MCP server component auto-selects TypeScript (code required).
|
|
|
|
## Quick Reference
|
|
|
|
### Create Plugin
|
|
```
|
|
/plugin-template:create my-plugin
|
|
```
|
|
Then select:
|
|
1. Components (commands, mcp-server, hooks, skills)
|
|
2. Implementation type (markdown or typescript)
|
|
|
|
### Strip TypeScript
|
|
```
|
|
/plugin-template:strip my-plugin
|
|
```
|
|
Converts TypeScript plugin to markdown-only.
|
|
|
|
### Upgrade to TypeScript
|
|
```
|
|
/plugin-template:upgrade my-plugin
|
|
```
|
|
Adds TypeScript setup to markdown-only plugin.
|
|
|
|
### Plugin Naming
|
|
- Use kebab-case: `my-awesome-plugin`
|
|
- Lowercase letters, numbers, hyphens
|
|
- Must start with a letter
|
|
|
|
### Standard Structures
|
|
|
|
**Markdown Only:**
|
|
```
|
|
plugins/{name}/
|
|
├── .claude-plugin/plugin.json
|
|
├── package.json ←(stub scripts)
|
|
├── commands/
|
|
└── skills/{name}/
|
|
```
|
|
|
|
**TypeScript:**
|
|
```
|
|
plugins/{name}/
|
|
├── .claude-plugin/plugin.json
|
|
├── package.json ←(full scripts)
|
|
├── tsconfig.json
|
|
├── src/
|
|
│ ├── index.ts
|
|
│ └── index.test.ts
|
|
├── commands/
|
|
├── mcp-servers/{name}/
|
|
├── hooks/
|
|
└── skills/{name}/
|
|
```
|
|
|
|
## Generation Workflow
|
|
|
|
1. **Validate** plugin name (kebab-case, no conflicts)
|
|
2. **Ask** which components to include
|
|
3. **Create** directory structure
|
|
4. **Generate** files from templates
|
|
5. **Register** in marketplace.json
|
|
6. **Install** dependencies with bun
|
|
7. **Verify** with tests
|
|
|
|
## Template Patterns
|
|
|
|
### package.json
|
|
- Namespace: `@sidequest/{name}`
|
|
- Scripts: test, typecheck, format, lint, check
|
|
- Uses Biome for formatting/linting
|
|
|
|
### MCP Server
|
|
- Uses `mcpez` library
|
|
- Export types for testing
|
|
- Zod schemas for input validation
|
|
|
|
### Commands
|
|
- YAML frontmatter with description
|
|
- argument-hint for usage hints
|
|
- allowed-tools for security
|
|
|
|
### Skills
|
|
- YAML frontmatter with name, description
|
|
- When to use section
|
|
- Quick reference table
|
|
|
|
## Post-Generation Steps
|
|
|
|
After generating a plugin:
|
|
|
|
1. **Navigate**: `cd plugins/{name}`
|
|
2. **Install**: `bun install`
|
|
3. **Test**: `bun test`
|
|
4. **Develop**: Add your logic to the generated files
|
|
|
|
## Examples
|
|
|
|
### Example 1: Create Simple Command Plugin
|
|
```
|
|
User: I want to create a plugin for managing todo lists
|
|
Assistant: I'll create a todo-manager plugin for you.
|
|
[Uses /plugin-template:create todo-manager]
|
|
[Selects commands component]
|
|
[Generates scaffold]
|
|
```
|
|
|
|
### Example 2: Create Full Plugin with MCP
|
|
```
|
|
User: Create a plugin that provides git statistics
|
|
Assistant: I'll scaffold a git-stats plugin with an MCP server.
|
|
[Uses /plugin-template:create git-stats]
|
|
[Selects commands, mcp-server, skills]
|
|
[Generates full structure]
|
|
```
|
|
|
|
### Example 3: Add Components to Existing Plugin
|
|
```
|
|
User: My plugin needs an MCP server now
|
|
Assistant: I'll add an MCP server to your existing plugin.
|
|
[Creates mcp-servers/{name}/ directory]
|
|
[Generates index.ts and package.json]
|
|
[Updates .mcp.json]
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
| Issue | Solution |
|
|
|-------|----------|
|
|
| Name conflict | Choose different name or remove existing |
|
|
| Invalid name | Use kebab-case (lowercase, hyphens) |
|
|
| Bun install fails | Check network, run manually |
|
|
| Tests fail | Check generated code, fix issues |
|
|
|
|
## Related Commands
|
|
|
|
- `/plugin-template:create [name]` - Create new plugin
|
|
- `/plugin-template:strip [name]` - Remove TypeScript, convert to markdown-only
|
|
- `/plugin-template:upgrade [name]` - Add TypeScript to markdown-only plugin
|
|
- `/git:commit` - Commit your plugin changes
|
|
- `/para-brain:capture` - Document plugin ideas
|