Files
2025-11-29 18:28:02 +08:00

276 lines
7.6 KiB
Markdown

---
name: claude-plugin:create
description: Create a new Claude Code plugin with agents, commands, and/or skills
---
# Create Plugin Command
Create a new Claude Code plugin following granular, composable architecture principles.
## Arguments
- `$1` - Plugin name (required, hyphen-case format)
- `$2` - Plugin description (required)
- `$3` - Components to create: `agents`, `commands`, `skills`, or combinations like `agents,commands` (optional, defaults to prompting)
- `$4` - Additional configuration as JSON (optional)
## Usage
```bash
# Basic usage - will prompt for details
/claude-plugin:create my-plugin-name "Plugin description"
# Specify components
/claude-plugin:create my-plugin-name "Plugin description" agents,commands
# Full configuration
/claude-plugin:create golang-advanced "Advanced Go development tools" agents,commands,skills '{"category":"languages","model":"claude-sonnet-4"}'
```
## Workflow
This command orchestrates plugin creation by:
1. **Validating Input**
- Verify plugin name follows hyphen-case convention
- Ensure plugin doesn't already exist
- Validate component specifications
2. **Gathering Requirements**
- If components not specified, ask user what to create
- Request additional details about agents (names, purposes, models)
- Request command details (names, purposes, workflows)
- Request skill details (names, triggers, content structure)
3. **Creating Plugin Structure**
- Create plugin directory: `plugins/$PLUGIN_NAME/`
- Create component directories as needed
- Set up skill subdirectories (SKILL.md, assets/, references/)
4. **Generating Components**
- Use Task tool with subagent_type="claude-plugin" to design and implement components
- Create agent files with proper frontmatter
- Create command files with argument handling
- Create skill files with progressive disclosure
5. **Updating Marketplace**
- Invoke marketplace-update skill to add plugin entry
- Invoke documentation-update skill to update docs
---
## Implementation
**Plugin Name:** ${1:-"[REQUIRED]"}
**Description:** ${2:-"[REQUIRED]"}
**Components:** ${3:-"[PROMPT USER]"}
**Configuration:** ${4:-"{}"}
### Step 1: Validate Plugin Name
The plugin name must:
- Be in hyphen-case format (e.g., `my-plugin-name`)
- Not already exist in `plugins/` directory
- Be descriptive and focused on a single purpose
### Step 2: Determine Components
If components are not specified in `$3`, ask the user:
**"What components should this plugin include?"**
Options:
- **Agents** - Specialized domain experts with deep knowledge
- **Commands** - Tools and workflow automation
- **Skills** - Modular knowledge packages with progressive disclosure
The plugin must have at least one agent OR one command.
### Step 3: Gather Component Details
For each component type selected:
#### Agents
- Agent name (hyphen-case)
- Agent purpose and description
- Recommended model (haiku for deterministic tasks, sonnet for complex reasoning)
- Key capabilities
- Example use cases
#### Commands
- Command name (hyphen-case)
- Command purpose and description
- Expected arguments
- Workflow steps
- Integration points
#### Skills
- Skill name (hyphen-case)
- Skill description with "Use when" trigger
- Progressive disclosure structure
- Required assets (templates, examples)
- Reference documentation needs
### Step 4: Invoke Plugin Architect
Use Task tool with subagent_type="claude-plugin" to design and implement the plugin:
```
I need to create a new plugin called "$PLUGIN_NAME" with the following specifications:
Description: $PLUGIN_DESCRIPTION
Components: $COMPONENTS
Details: [collected from user]
Please design and implement this plugin following the architecture principles:
- Single responsibility
- Composability
- Context efficiency
- Spec compliance
Create all necessary files with proper frontmatter, documentation, and examples.
```
### Step 5: Update Repository
After plugin creation:
1. **Update Marketplace**
Invoke the marketplace-update skill by running the Python script:
```bash
python plugins/claude-plugin/skills/marketplace-update/marketplace_update.py add \
--name "$PLUGIN_NAME" \
--description "$PLUGIN_DESCRIPTION" \
--version "1.0.0" \
--category "$CATEGORY" \
--agents "$(ls plugins/$PLUGIN_NAME/agents/*.md 2>/dev/null | xargs -n1 basename | tr '\n' ',')" \
--commands "$(ls plugins/$PLUGIN_NAME/commands/*.md 2>/dev/null | xargs -n1 basename | tr '\n' ',')" \
--skills "$(ls -d plugins/$PLUGIN_NAME/skills/*/ 2>/dev/null | xargs -n1 basename | tr '\n' ',')"
```
2. **Update Documentation**
Invoke the documentation-update skill by running the Python script:
```bash
python plugins/claude-plugin/skills/documentation-update/doc_generator.py
```
This regenerates:
- `docs/agents.md` - Agent reference
- `docs/agent-skills.md` - Skills catalog
- `docs/plugins.md` - Plugin directory
- `docs/usage.md` - Usage guide
3. **Verify Structure**
- Check all files have proper frontmatter
- Verify naming conventions
- Ensure documentation is complete
- Confirm marketplace.json is valid
- Verify all documentation files were regenerated
### Step 6: Confirm Success
Report to the user:
- ✓ Plugin created at `plugins/$PLUGIN_NAME/`
- ✓ Components created: [list]
- ✓ Marketplace updated
- ✓ Documentation updated
- Next steps or usage instructions
## Examples
### Example 1: Create Language Plugin
```bash
/claude-plugin:create rust-development "Rust language development tools" agents,commands,skills
```
This would:
- Create `plugins/rust-development/`
- Prompt for agent details (e.g., rust-pro agent)
- Prompt for command details (e.g., rust-scaffold command)
- Prompt for skill details (e.g., rust-patterns skill)
- Generate all components with proper structure
- Update marketplace and documentation
### Example 2: Create Security Plugin
```bash
/claude-plugin:create security-scanning "Security vulnerability scanning and analysis" agents,commands
```
This would:
- Create `plugins/security-scanning/`
- Prompt for security agent details
- Prompt for scanning command details
- Generate components without skills
- Update marketplace and documentation
### Example 3: Create Minimal Plugin
```bash
/claude-plugin:create test-helper "Test generation helper utilities" commands
```
This would:
- Create `plugins/test-helper/`
- Prompt for command details only
- Generate command file
- Update marketplace and documentation
## Error Handling
Common issues and resolutions:
### Plugin Already Exists
If `plugins/$PLUGIN_NAME/` exists:
- Error: "Plugin '$PLUGIN_NAME' already exists. Use /claude-plugin:update to modify existing plugins."
- Suggest using `/claude-plugin:update` command instead
### Invalid Plugin Name
If plugin name is not hyphen-case:
- Error: "Plugin name must be in hyphen-case format (e.g., 'my-plugin-name')"
- Suggest correct format
### No Components Specified
If user doesn't specify components and doesn't respond to prompts:
- Error: "At least one component (agent or command) is required"
- Prompt again with clear options
### Missing Required Arguments
If `$1` or `$2` are not provided:
- Error: "Usage: /claude-plugin:create <plugin-name> <description> [components] [config]"
- Show examples
## Notes
- This command creates new plugins only. Use `/claude-plugin:update` to modify existing plugins.
- All generated files will include proper YAML frontmatter
- The plugin-architect agent ensures adherence to architecture principles
- Skills are invoked automatically for marketplace and documentation updates
- Generated code follows best practices and spec compliance