7.6 KiB
name, description
| name | description |
|---|---|
| claude-plugin:create | 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 likeagents,commands(optional, defaults to prompting)$4- Additional configuration as JSON (optional)
Usage
# 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:
-
Validating Input
- Verify plugin name follows hyphen-case convention
- Ensure plugin doesn't already exist
- Validate component specifications
-
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)
-
Creating Plugin Structure
- Create plugin directory:
plugins/$PLUGIN_NAME/ - Create component directories as needed
- Set up skill subdirectories (SKILL.md, assets/, references/)
- Create plugin directory:
-
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
-
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:
-
Update Marketplace
Invoke the marketplace-update skill by running the Python script:
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' ',')" -
Update Documentation
Invoke the documentation-update skill by running the Python script:
python plugins/claude-plugin/skills/documentation-update/doc_generator.pyThis regenerates:
docs/agents.md- Agent referencedocs/agent-skills.md- Skills catalogdocs/plugins.md- Plugin directorydocs/usage.md- Usage guide
-
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
/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
/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
/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:updatecommand 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 [components] [config]"
- Show examples
Notes
- This command creates new plugins only. Use
/claude-plugin:updateto 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