From skills-toolkit
Creates, converts, validates, and publishes Claude Code plugins with Agent Skills, hooks, agents, and servers. Automates manifest generation, scanning, structure validation, and marketplace prep.
npx claudepluginhub full-stack-biz/claude-skills-toolkit --plugin skills-toolkitThis skill is limited to using the following tools:
**Dual purpose:** Create plugins from scratch OR transform existing projects into well-structured plugins.
references/automated-scanning-workflow.mdreferences/components-in-plugins.mdreferences/directory-structure.mdreferences/hooks.mdreferences/implementation-workflow.mdreferences/installation-and-cli.mdreferences/local-development.mdreferences/lsp-servers.mdreferences/mcp-servers.mdreferences/output-styles.mdreferences/plugin-architecture.mdreferences/plugin-caching.mdreferences/plugin-json-schema.mdreferences/plugin-paths-variables.mdreferences/quick-reference.mdreferences/quick-start-guide.mdreferences/slash-command-format.mdreferences/team-marketplaces.mdreferences/troubleshooting-and-production.mdreferences/validation-checklist.mdGuides building Claude Code plugins: architecture, directory structure, manifests, components (commands, agents, skills, hooks, MCP servers), and marketplace distribution.
Orchestrates agentic workflow to create new Claude Code plugins from scratch: prerequisite checks, research, design verification, atomic implementation, validation, documentation.
Guides developers in creating, scaffolding, validating, and publishing Claude Code plugins including directory structure, plugin.json schema, YAML frontmatter, agents, commands, skills, and marketplace deployment.
Share bugs, ideas, or general feedback.
Dual purpose: Create plugins from scratch OR transform existing projects into well-structured plugins.
Use AskUserQuestion with predefined options to gather requirements:
questions: [
{
question: "What would you like to do?",
header: "Action",
options: [
{
label: "Create a new plugin",
description: "Build a plugin from scratch with proper manifest, structure, and components"
},
{
label: "Convert a project to plugin",
description: "Transform existing project into plugin with manifest and proper directory layout"
},
{
label: "Validate a plugin",
description: "Check plugin structure against Claude Code standards"
},
{
label: "Publish to marketplace",
description: "Prepare plugin for distribution and marketplace publication"
}
],
multiSelect: false
}
]
Then proceed to the appropriate workflow section based on their selection.
Invoke plugin-creator in these scenarios:
Creating new plugins: Building a plugin from scratch with proper manifest, commands, agents, Skills, hooks, and/or MCP servers organized correctly.
Converting projects to plugins: Take an existing project and transform it into a Claude Code plugin with .claude-plugin/plugin.json manifest and proper directory structure.
Validating plugin structure: Check existing plugins against Claude Code plugin standards (manifest schema, directory layout, naming conventions).
Multi-component plugins: Creating plugins that bundle multiple elements (Skills, hooks, agents, MCP servers, etc.).
Team/production plugins: Building plugins for distribution across teams or deployment to plugin marketplaces.
NOT for: General Claude questions, debugging plugin behavior at runtime, writing plugin code directly (focus on structure/organization only).
Slash commands (via commands/ directory) are deprecated in favor of Agent Skills.
When creating new plugins, use Agent Skills (skills/ directory) instead. Slash commands still work for backward compatibility but are being phased out. Use skill-creator to build Agent Skills instead.
Plugins extend Claude Code with custom functionality shared across projects and teams.
Plugin activation: Pure LLM reasoning on manifest metadata. Claude discovers plugins via:
Plugin structure (at project root):
.
├── .claude-plugin/
│ └── plugin.json # Required: metadata manifest
├── skills/ # Optional: Agent Skills (recommended)
│ └── code-review/
│ ├── SKILL.md
│ └── references/
├── agents/ # Optional: subagents
│ ├── code-reviewer.md
│ └── security-auditor.md
├── hooks.json # Optional: event handlers
├── .mcp.json # Optional: MCP servers
├── .lsp.json # Optional: LSP servers
└── commands/ # DEPRECATED: Use skills instead
├── hello.md
└── review.md
Token loading hierarchy:
Why this matters for your plugin:
Copy-paste templates for creating a plugin structure from scratch: manifest, skills, agents, and testing. See references/quick-start-guide.md for complete bash commands and examples.
START HERE: Always begin by asking the user to clarify their intent and collect all required manifest data using AskUserQuestion (one question at a time, progressive disclosure):
For users creating a new plugin, conduct this structured interview to gather all manifest.json fields before file creation. Use the predefined options format shown in Quick Routing above for Step 1.
Action - Use the predefined options from "Quick Routing" section above
Plugin name - "What's the plugin name?" (lowercase-hyphen, 1-64 chars)
plugin.json → name fieldcode-reviewer, pdf-processorPurpose/description - "What does the plugin do? Describe its main purpose and capabilities."
plugin.json → description field (1-1024 chars)Version - "What version? (semantic format: MAJOR.MINOR.PATCH)"
plugin.json → version field1.0.0Author information - "Who is the author? (name, optional: email, URL)"
plugin.json → author object with name field (REQUIRED){"name": "Your Name", "email": "optional@email.com", "url": "https://optional.url"}Optional metadata - "Any additional metadata? (license, repository, homepage)"
plugin.json → license, repository, homepage fields"MIT", "https://github.com/user/plugin", "https://docs.example.com"Components (BATCH 1) - Use AskUserQuestion with predefined options (multiSelect: true):
questions: [
{
question: "Which core components will the plugin include?",
header: "Core Components",
options: [
{ label: "Skills", description: "Agent Skills (recommended)" },
{ label: "Agents", description: "Subagents for complex workflows" },
{ label: "Hooks", description: "Event handlers and automation" },
{ label: "MCP servers", description: "Model Context Protocol servers" }
],
multiSelect: true
}
]
questions: [
{
question: "Include Language Server Protocol (LSP) support?",
header: "LSP Servers",
options: [
{ label: "Yes", description: "Add language-specific code intelligence" },
{ label: "No", description: "Skip LSP servers" }
],
multiSelect: false
}
]
⏸️ Wait for both batch responses before proceeding.
questions: [
{
question: "What's the distribution scope for this plugin?",
header: "Distribution",
options: [
{ label: "Personal", description: "Personal use only" },
{ label: "Team-shared", description: "Share with team members" },
{ label: "Marketplace", description: "Publish to plugin marketplace for community" }
],
multiSelect: false
}
]
| Interview Question | Maps to | Type | Required | Notes |
|---|---|---|---|---|
| Action | (routing logic) | string | Yes | Determines workflow path |
| Plugin name | plugin.json → name | string | Yes | kebab-case, 1-64 chars, no spaces |
| Purpose/description | plugin.json → description | string | Yes | 1-1024 chars, clear and specific |
| Version | plugin.json → version | string | No | Semantic versioning (default: 1.0.0) |
| Author name | plugin.json → author.name | string | Yes | Must be object property, not string |
| Author email | plugin.json → author.email | string | No | Optional contact information |
| Author URL | plugin.json → author.url | string | No | Optional profile/website |
| License | plugin.json → license | string | No | e.g., "MIT", "Apache-2.0" |
| Repository | plugin.json → repository | string | No | GitHub/GitLab URL |
| Homepage | plugin.json → homepage | string | No | Documentation URL |
| Components (BATCH 1) | Directory structure | array | No | Skills, Agents, Hooks, MCP servers (max 4 options) |
| Components (BATCH 2) | Directory structure | boolean | No | Include LSP servers (yes/no) |
| Distribution scope | marketplace.json | string | No | "personal", "team", or "marketplace" |
Failure: author is string instead of object
"author": "John Doe""author": {"name": "John Doe"}Failure: Missing required fields
name, description, author.name are always presentFailure: Incorrect marketplace.json schema
owner MUST be object: {"name": "username"}plugins MUST be array: [{...}]source MUST start with ./Based on their answers, route to the appropriate workflow section below:
When validating existing plugins, always run the automated scanning phase FIRST before manual validation.
See references/automated-scanning-workflow.md for complete scanning workflow, decision handling, and example validation sequences. The scanner is read-only only—it scans and reports, never modifies. All user decisions are explicit and visible.
Quick reference: Run the scanner, process errors/warnings, use AskUserQuestion for decisions, execute approved changes, re-scan, then proceed to manual validation.
Interview requirements → create structure → add components → run claude plugin validate → test locally
See references/implementation-workflow.md for complete step-by-step procedures.
Identify components → create plugin structure → migrate and update metadata → run claude plugin validate → test locally
See references/implementation-workflow.md for complete step-by-step procedures.
FIRST: Run claude plugin validate /path/to/plugin directly. Review output for errors. THEN: Do manual checks for best practices from references/validation-checklist.md.
Make your plugin installable via claude plugin marketplace add owner/repo.
Step 1: Ensure plugin.json exists at .claude-plugin/plugin.json
Step 2: Create .claude-plugin/marketplace.json with this structure:
{
"name": "your-plugin-name",
"owner": {
"name": "github-username-or-org"
},
"plugins": [
{
"name": "your-plugin-name",
"source": "./",
"description": "What the plugin does"
}
]
}
CRITICAL schema requirements:
owner MUST be an object with name field, NOT a stringplugins MUST be an array (can be empty [])source paths MUST start with ./Step 3: Validate with claude plugin validate /path/to/plugin
See references/team-marketplaces.md for complete marketplace schema and common errors.
BEFORE generating manifests, verify you have all required data:
{"name": "..."})ALWAYS structure author as object:
{
"name": "my-plugin",
"description": "What it does.",
"version": "1.0.0",
"author": {
"name": "Your Name"
}
}
NEVER generate with incomplete data - Incomplete manifests cause validation failures. Run the interview flow first, collect all fields, then proceed with generation.
For marketplace.json, use official schema:
{
"name": "plugin-name",
"owner": {
"name": "github-username"
},
"plugins": [
{
"name": "plugin-name",
"source": "./",
"description": "What it does"
}
]
}
Create plugin directory:
mkdir -p my-plugin/.claude-plugin
mkdir -p my-plugin/commands my-plugin/agents my-plugin/skills
Write plugin.json:
{
"name": "my-plugin",
"description": "[Action]. [Brief description of purpose and capabilities].",
"version": "1.0.3"
}
Add components:
.md files in skills/ (recommended approach)claude --plugin-dir /path/to/my-pluginStep 1: Understand plugin architecture
→ How plugins load, token costs, standard directory layout, manifest format
→ references/plugin-architecture.md for architecture overview
→ references/directory-structure.md for standard layout
→ references/plugin-json-schema.md for plugin.json format
Step 2: Set up plugin structure & manifest
→ Create .claude-plugin/plugin.json with metadata (name, description, version)
→ Templates and common patterns for quick setup
→ references/quick-reference.md for templates and metadata requirements
Step 3: Add Agent Skills, Hooks, or other components
→ Agent Skills: recommended approach, .md files in skills/
→ Hooks: event handlers in hooks.json
→ Subagents: isolated execution in agents/
→ External services: MCP servers, LSP for code intelligence
→ references/components-in-plugins.md for packaging guidance
→ Use skill-creator, subagent-creator, or hook-creator skills to build components
Step 4: Validate & test locally
→ Run claude plugin validate /path for errors
→ Run claude --plugin-dir /path for local testing
→ Check best practices from validation checklist
→ references/validation-checklist.md for comprehensive checks
→ references/local-development.md for debugging
→ Complete step-by-step procedures for converting projects to plugins
→ references/implementation-workflow.md for full conversion workflow
→ references/automated-scanning-workflow.md for scanning & validation phase
→ Semantic versioning, changelog, marketplace setup
→ references/versioning-and-distribution.md for versioning
→ references/team-marketplaces.md for marketplace.json schema and multi-plugin registries
Path handling & caching:
→ Use ${CLAUDE_PLUGIN_ROOT} variable in hooks/scripts. Plugins are cached for security.
→ references/plugin-paths-variables.md for path guidance
→ references/plugin-caching.md for caching behavior
Installing & managing plugins:
→ Installation scopes (global, project), CLI commands (install/uninstall/enable/disable/update)
→ references/installation-and-cli.md for scope and commands
Troubleshooting & production:
→ Debugging plugins, common issues, best practices, production checklist
→ references/troubleshooting-and-production.md
Integration patterns:
→ External service integration (MCP servers), language-specific intelligence (LSP)
→ references/mcp-servers.md for MCP configuration
→ references/lsp-servers.md for LSP integration
Legacy support:
→ Command file format (deprecated, for backward compatibility only)
→ references/slash-command-format.md for legacy command support
See references/quick-reference.md for component templates, formats, and metadata requirements.
| Component | Use Case |
|---|---|
Agent Skills (skills/) | Capabilities Claude uses automatically or via /skill-name (recommended) |
Subagents (agents/) | Isolated execution environments with custom prompts, tools, and permissions (use subagent-creator skill) |
Hooks (hooks.json) | Event handlers (tool use, permissions, sessions) (use hook-creator skill) |
MCP Servers (.mcp.json) | External service integration (APIs, databases) |
LSP Servers (.lsp.json) | Language-specific code intelligence |
Commands (commands/) | DEPRECATED: Use Agent Skills instead |
Plugin naming conventions: Hyphen-separated lowercase (code-reviewer, pdf-processor, test-runner). Include action/domain; becomes plugin namespace /plugin-name for skills, commands, hooks.
Description formula (Claude's activation signal):
[Action]. [Brief description of purpose]. [Components/scope].
Example: "Review code for best practices and potential issues. Includes validate, report, and export commands."
CLI commands: claude plugin install|uninstall|enable|disable|update <name>@<marketplace> [--scope user|project|local]
Important paths note: Plugins are cached (not in-place) for security. Use ${CLAUDE_PLUGIN_ROOT} variable in hooks/scripts for paths. See references/plugin-paths-variables.md for details.
Installation scopes:
user (global): ~/.claude/skills/ (all projects)project (shared): .claude/skills/ (via git)local (personal): .claude/skills/ (not shared)managed (read-only): System cache (marketplace plugins)See references/installation-and-cli.md for scope and CLI details.
Step 0 (AUTOMATED SCANNING): For existing plugins, run the automated scanner first to catch common issues:
bash /path/to/plugin-creator/scripts/scan-plugin.sh /path/to/plugin /tmp/plugin-scan.json
Review the JSON output and use AskUserQuestion to handle any decisions (file cleanup, permissions, etc.). See "Automated Scanning Phase" section above for details.
Step 1 (REQUIRED): Run the validation command directly:
claude plugin validate /path/to/plugin
Do NOT create wrapper scripts. Run this command directly and review its output.
Step 2: If validation passes, check best practices from references/validation-checklist.md:
claude --plugin-dir /path/to/plugin