plugin-dev
Plugin development toolkit with skills for creating agents, commands, hooks, MCP integrations, and comprehensive plugin structure guidance
Installation
/plugin marketplace add giginet/claude-plugins-official
/plugin install plugin-dev@claude-plugins-official
claude plugin marketplace add giginet/claude-plugins-official
claude plugin install plugin-dev@claude-plugins-official
Skills
| Name | Description | |||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
agent-development |
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins. | |||||||||||||||||||||||||||||||||||
Agent Development for Claude Code PluginsOverviewAgents are autonomous subprocesses that handle complex, multi-step tasks independently. Understanding agent structure, triggering conditions, and system prompt design enables creating powerful autonomous capabilities. Key concepts: - Agents are FOR autonomous work, commands are FOR user-initiated actions - Markdown file format with YAML frontmatter - Triggering via description field with examples - System prompt defines agent behavior - Model and color customization Agent File StructureComplete Format
Frontmatter Fieldsname (required)Agent identifier used for namespacing and invocation. Format: lowercase, numbers, hyphens only Length: 3-50 characters Pattern: Must start and end with alphanumeric Good examples:
- Bad examples:
- description (required)Defines when Claude should trigger this agent. This is the most critical field. Must include:
1. Triggering conditions ("Use this agent when...")
2. Multiple Format:
Best practices: - Include 2-4 concrete examples - Show proactive and reactive triggering - Cover different phrasings of same intent - Explain reasoning in commentary - Be specific about when NOT to use the agent model (required)Which model the agent should use. Options:
- Recommendation: Use color (required)Visual identifier for agent in UI. Options: Guidelines: - Choose distinct colors for different agents in same plugin - Use consistent colors for similar agent types - Blue/cyan: Analysis, review - Green: Success-oriented tasks - Yellow: Caution, validation - Red: Critical, security - Magenta: Creative, generation tools (optional)Restrict agent to specific tools. Format: Array of tool names
Default: If omitted, agent has access to all tools Best practice: Limit tools to minimum needed (principle of least privilege) Common tool sets:
- Read-only analysis: System Prompt DesignThe markdown body becomes the agent's system prompt. Write in second person, addressing the agent directly. StructureStandard template:
Best Practices✅ DO: - Write in second person ("You are...", "You will...") - Be specific about responsibilities - Provide step-by-step process - Define output format - Include quality standards - Address edge cases - Keep under 10,000 characters ❌ DON'T: - Write in first person ("I am...", "I will...") - Be vague or generic - Omit process steps - Leave output format undefined - Skip quality guidance - Ignore error cases Creating AgentsMethod 1: AI-Assisted GenerationUse this prompt pattern (extracted from Claude Code):
Then convert to agent file format with frontmatter. See Method 2: Manual Creation
Validation RulesIdentifier Validation
Rules: - 3-50 characters - Lowercase letters, numbers, hyphens only - Must start and end with alphanumeric - No underscores, spaces, or special characters Description ValidationLength: 10-5,000 characters Must include: Triggering conditions and examples Best: 200-1,000 characters with 2-4 examples System Prompt ValidationLength: 20-10,000 characters Best: 500-3,000 characters Structure: Clear responsibilities, process, output format Agent OrganizationPlugin Agents Directory
All NamespacingAgents are namespaced automatically:
- Single plugin: Testing AgentsTest TriggeringCreate test scenarios to verify agent triggers correctly:
Test System PromptEnsure system prompt is complete:
Quick ReferenceMinimal Agent
Frontmatter Fields Summary
Best PracticesDO:
- ✅ Include 2-4 concrete examples in description
- ✅ Write specific triggering conditions
- ✅ Use DON'T: - ❌ Use generic descriptions without examples - ❌ Omit triggering conditions - ❌ Give all agents same color - ❌ Grant unnecessary tool access - ❌ Write vague system prompts - ❌ Skip testing Additional ResourcesReference FilesFor detailed guidance, consult:
Example FilesWorking examples in
Utility ScriptsDevelopment tools in
Implementation WorkflowTo create an agent for a plugin:
Focus on clear triggering conditions and comprehensive system prompts for autonomous operation. |
||||||||||||||||||||||||||||||||||||
command-development |
This skill should be used when the user asks to "create a slash command", "add a command", "write a custom command", "define command arguments", "use command frontmatter", "organize commands", "create command with file references", "interactive command", "use AskUserQuestion in command", or needs guidance on slash command structure, YAML frontmatter fields, dynamic arguments, bash execution in commands, user interaction patterns, or command development best practices for Claude Code. | |||||||||||||||||||||||||||||||||||
Command Development for Claude Code
OverviewSlash commands are frequently-used prompts defined as Markdown files that Claude executes during interactive sessions. Understanding command structure, frontmatter options, and dynamic features enables creating powerful, reusable workflows. Key concepts:
Command BasicsWhat is a Slash Command?A slash command is a Markdown file containing a prompt that Claude executes when invoked. Commands provide:
Critical: Commands are Instructions FOR ClaudeCommands are written for agent consumption, not human consumption. When a user invokes Correct approach (instructions for Claude):
Incorrect approach (messages to user):
The first example tells Claude what to do. The second tells the user what will happen but doesn't instruct Claude. Always use the first approach. Command LocationsProject commands (shared with team):
Personal commands (available everywhere):
Plugin commands (bundled with plugins):
File FormatBasic StructureCommands are Markdown files with
Simple command:
No frontmatter needed for basic commands. With YAML FrontmatterAdd configuration using YAML frontmatter:
YAML Frontmatter FieldsdescriptionPurpose: Brief description shown in
Best practice: Clear, actionable description (under 60 characters) allowed-toolsPurpose: Specify which tools command can use Type: String or Array Default: Inherits from conversation
Patterns:
Use when: Command requires specific tool access modelPurpose: Specify model for command execution Type: String (sonnet, opus, haiku) Default: Inherits from conversation
Use cases:
argument-hintPurpose: Document expected arguments for autocomplete Type: String Default: None
Benefits:
disable-model-invocationPurpose: Prevent SlashCommand tool from programmatically calling command Type: Boolean Default: false
Use when: Command should only be manually invoked Dynamic ArgumentsUsing $ARGUMENTSCapture all arguments as single string:
Usage:
Expands to:
Using Positional ArgumentsCapture individual arguments with
Usage:
Expands to:
Combining ArgumentsMix positional and remaining arguments:
Usage:
Expands to:
File ReferencesUsing @ SyntaxInclude file contents in command:
Usage:
Effect: Claude reads Multiple File ReferencesReference multiple files:
Static File ReferencesReference known files without arguments:
Bash Execution in CommandsCommands can execute bash commands inline to dynamically gather context before Claude processes the command. This is useful for including repository state, environment information, or project-specific context. When to use:
Implementation details:
For complete syntax, examples, and best practices, see Command OrganizationFlat StructureSimple organization for small command sets:
Use when: 5-15 commands, no clear categories Namespaced StructureOrganize commands in subdirectories:
Benefits:
Use when: 15+ commands, clear categories Best PracticesCommand Design
Argument Handling
File References
Bash Commands
Documentation
Common PatternsReview Pattern
Testing Pattern
Documentation Pattern
Workflow Pattern
TroubleshootingCommand not appearing:
Arguments not working:
Bash execution failing:
File references not working:
Plugin-Specific FeaturesCLAUDE_PLUGIN_ROOT VariablePlugin commands have access to Purpose:
Basic usage:
Common patterns:
Why use it:
Plugin Command OrganizationPlugin commands discovered automatically from
Namespace benefits:
Naming conventions:
Plugin Command PatternsConfiguration-based pattern:
Template-based pattern:
Multi-script pattern:
See Integration with Plugin ComponentsCommands can integrate with other plugin components for powerful workflows. Agent IntegrationLaunch plugin agents for complex tasks:
Key points:
Skill IntegrationLeverage plugin skills for specialized knowledge:
Key points:
Hook CoordinationDesign commands that work with plugin hooks:
See Multi-Component WorkflowsCombine agents, skills, and scripts:
When to use:
Validation PatternsCommands should validate inputs and resources before processing. Argument Validation
File Existence Checks
Plugin Resource Validation
Error Handling
Best practices:
For detailed frontmatter field specifications, see |
||||||||||||||||||||||||||||||||||||
hook-development |
This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API. | |||||||||||||||||||||||||||||||||||
Hook Development for Claude Code PluginsOverviewHooks are event-driven automation scripts that execute in response to Claude Code events. Use hooks to validate operations, enforce policies, add context, and integrate external tools into workflows. Key capabilities: - Validate tool calls before execution (PreToolUse) - React to tool results (PostToolUse) - Enforce completion standards (Stop, SubagentStop) - Load project context (SessionStart) - Automate workflows across the development lifecycle Hook TypesPrompt-Based Hooks (Recommended)Use LLM-driven decision making for context-aware validation:
Supported events: Stop, SubagentStop, UserPromptSubmit, PreToolUse Benefits: - Context-aware decisions based on natural language reasoning - Flexible evaluation logic without bash scripting - Better edge case handling - Easier to maintain and extend Command HooksExecute bash commands for deterministic checks:
Use for: - Fast deterministic validations - File system operations - External tool integrations - Performance-critical checks Hook Configuration FormatsPlugin hooks.json FormatFor plugin hooks in
Key points:
- Example:
Settings Format (Direct)For user settings in
Key points: - No wrapper - events directly at top level - No description field - This is the settings format Important: The examples below show the hook event structure that goes inside either format. For plugin hooks.json, wrap these in Hook EventsPreToolUseExecute before any tool runs. Use to approve, deny, or modify tool calls. Example (prompt-based):
Output for PreToolUse:
PostToolUseExecute after tool completes. Use to react to results, provide feedback, or log. Example:
Output behavior: - Exit 0: stdout shown in transcript - Exit 2: stderr fed back to Claude - systemMessage included in context StopExecute when main agent considers stopping. Use to validate completeness. Example:
Decision output:
SubagentStopExecute when subagent considers stopping. Use to ensure subagent completed its task. Similar to Stop hook, but for subagents. UserPromptSubmitExecute when user submits a prompt. Use to add context, validate, or block prompts. Example:
SessionStartExecute when Claude Code session begins. Use to load context and set environment. Example:
Special capability: Persist environment variables using
See SessionEndExecute when session ends. Use for cleanup, logging, and state preservation. PreCompactExecute before context compaction. Use to add critical information to preserve. NotificationExecute when Claude sends notifications. Use to react to user notifications. Hook Output FormatStandard Output (All Hooks)
Exit Codes
Hook Input FormatAll hooks receive JSON via stdin with common fields:
Event-specific fields:
Access fields in prompts using Environment VariablesAvailable in all command hooks:
Always use ${CLAUDE_PLUGIN_ROOT} in hook commands for portability:
Plugin Hook ConfigurationIn plugins, define hooks in
Plugin hooks merge with user's hooks and run in parallel. MatchersTool Name MatchingExact match:
Multiple tools:
Wildcard (all tools):
Regex patterns:
Note: Matchers are case-sensitive. Common Patterns
Security Best PracticesInput ValidationAlways validate inputs in command hooks:
Path SafetyCheck for path traversal and sensitive files:
See Quote All Variables
Set Appropriate Timeouts
Defaults: Command hooks (60s), Prompt hooks (30s) Performance ConsiderationsParallel ExecutionAll matching hooks run in parallel:
Design implications: - Hooks don't see each other's output - Non-deterministic ordering - Design for independence Optimization
Temporarily Active HooksCreate hooks that activate conditionally by checking for a flag file or configuration: Pattern: Flag file activation
Pattern: Configuration-based activation
Use cases: - Enable strict validation only when needed - Temporary debugging hooks - Project-specific hook behavior - Feature flags for hooks Best practice: Document activation mechanism in plugin README so users know how to enable/disable temporary hooks. Hook Lifecycle and LimitationsHooks Load at Session StartImportant: Hooks are loaded when Claude Code session starts. Changes to hook configuration require restarting Claude Code. Cannot hot-swap hooks:
- Editing To test hook changes:
1. Edit hook configuration or scripts
2. Exit Claude Code session
3. Restart: Hook Validation at StartupHooks are validated when Claude Code starts: - Invalid JSON in hooks.json causes loading failure - Missing scripts cause warnings - Syntax errors reported in debug mode Use Debugging HooksEnable Debug Mode
Look for hook registration, execution logs, input/output JSON, and timing information. Test Hook ScriptsTest command hooks directly:
Validate JSON OutputEnsure hooks output valid JSON:
Quick ReferenceHook Events Summary
Best PracticesDO: - ✅ Use prompt-based hooks for complex logic - ✅ Use ${CLAUDE_PLUGIN_ROOT} for portability - ✅ Validate all inputs in command hooks - ✅ Quote all bash variables - ✅ Set appropriate timeouts - ✅ Return structured JSON output - ✅ Test hooks thoroughly DON'T: - ❌ Use hardcoded paths - ❌ Trust user input without validation - ❌ Create long-running hooks - ❌ Rely on hook execution order - ❌ Modify global state unpredictably - ❌ Log sensitive information Additional ResourcesReference FilesFor detailed patterns and advanced techniques, consult:
Example Hook ScriptsWorking examples in
Utility ScriptsDevelopment tools in
External Resources
Implementation WorkflowTo implement hooks in a plugin:
Focus on prompt-based hooks for most use cases. Reserve command hooks for performance-critical or deterministic checks. |
||||||||||||||||||||||||||||||||||||
mcp-integration |
This skill should be used when the user asks to "add MCP server", "integrate MCP", "configure MCP in plugin", "use .mcp.json", "set up Model Context Protocol", "connect external service", mentions "${CLAUDE_PLUGIN_ROOT} with MCP", or discusses MCP server types (SSE, stdio, HTTP, WebSocket). Provides comprehensive guidance for integrating Model Context Protocol servers into Claude Code plugins for external tool and service integration. | |||||||||||||||||||||||||||||||||||
MCP Integration for Claude Code PluginsOverviewModel Context Protocol (MCP) enables Claude Code plugins to integrate with external services and APIs by providing structured tool access. Use MCP integration to expose external service capabilities as tools within Claude Code. Key capabilities: - Connect to external services (databases, APIs, file systems) - Provide 10+ related tools from a single service - Handle OAuth and complex authentication flows - Bundle MCP servers with plugins for automatic setup MCP Server Configuration MethodsPlugins can bundle MCP servers in two ways: Method 1: Dedicated .mcp.json (Recommended)Create
Benefits: - Clear separation of concerns - Easier to maintain - Better for multiple servers Method 2: Inline in plugin.jsonAdd
Benefits: - Single configuration file - Good for simple single-server plugins MCP Server Typesstdio (Local Process)Execute local MCP servers as child processes. Best for local tools and custom servers. Configuration:
Use cases: - File system access - Local database connections - Custom MCP servers - NPM-packaged MCP servers Process management: - Claude Code spawns and manages the process - Communicates via stdin/stdout - Terminates when Claude Code exits SSE (Server-Sent Events)Connect to hosted MCP servers with OAuth support. Best for cloud services. Configuration:
Use cases: - Official hosted MCP servers (Asana, GitHub, etc.) - Cloud services with MCP endpoints - OAuth-based authentication - No local installation needed Authentication: - OAuth flows handled automatically - User prompted on first use - Tokens managed by Claude Code HTTP (REST API)Connect to RESTful MCP servers with token authentication. Configuration:
Use cases: - REST API-based MCP servers - Token-based authentication - Custom API backends - Stateless interactions WebSocket (Real-time)Connect to WebSocket MCP servers for real-time bidirectional communication. Configuration:
Use cases: - Real-time data streaming - Persistent connections - Push notifications from server - Low-latency requirements Environment Variable ExpansionAll MCP configurations support environment variable substitution: ${CLAUDE_PLUGIN_ROOT} - Plugin directory (always use for portability):
User environment variables - From user's shell:
Best practice: Document all required environment variables in plugin README. MCP Tool NamingWhen MCP servers provide tools, they're automatically prefixed: Format: Example:
- Plugin: Using MCP Tools in CommandsPre-allow specific MCP tools in command frontmatter:
Wildcard (use sparingly):
Best practice: Pre-allow specific tools, not wildcards, for security. Lifecycle ManagementAutomatic startup: - MCP servers start when plugin enables - Connection established before first tool use - Restart required for configuration changes Lifecycle:
1. Plugin loads
2. MCP configuration parsed
3. Server process started (stdio) or connection established (SSE/HTTP/WS)
4. Tools discovered and registered
5. Tools available as Viewing servers:
Use Authentication PatternsOAuth (SSE/HTTP)OAuth handled automatically by Claude Code:
User authenticates in browser on first use. No additional configuration needed. Token-Based (Headers)Static or environment variable tokens:
Document required environment variables in README. Environment Variables (stdio)Pass configuration to MCP server:
Integration PatternsPattern 1: Simple Tool WrapperCommands use MCP tools with user interaction:
Use for: Adding validation or preprocessing before MCP calls. Pattern 2: Autonomous AgentAgents use MCP tools autonomously:
Use for: Multi-step MCP workflows without user interaction. Pattern 3: Multi-Server PluginIntegrate multiple MCP servers:
Use for: Workflows spanning multiple services. Security Best PracticesUse HTTPS/WSSAlways use secure connections:
Token ManagementDO: - ✅ Use environment variables for tokens - ✅ Document required env vars in README - ✅ Let OAuth flow handle authentication DON'T: - ❌ Hardcode tokens in configuration - ❌ Commit tokens to git - ❌ Share tokens in documentation Permission ScopingPre-allow only necessary MCP tools:
Error HandlingConnection FailuresHandle MCP server unavailability: - Provide fallback behavior in commands - Inform user of connection issues - Check server URL and configuration Tool Call ErrorsHandle failed MCP operations: - Validate inputs before calling MCP tools - Provide clear error messages - Check rate limiting and quotas Configuration ErrorsValidate MCP configuration: - Test server connectivity during development - Validate JSON syntax - Check required environment variables Performance ConsiderationsLazy LoadingMCP servers connect on-demand: - Not all servers connect at startup - First tool use triggers connection - Connection pooling managed automatically BatchingBatch similar requests when possible:
Testing MCP IntegrationLocal Testing
Validation Checklist
DebuggingEnable Debug Logging
Look for: - MCP server connection attempts - Tool discovery logs - Authentication flows - Tool call errors Common IssuesServer not connecting: - Check URL is correct - Verify server is running (stdio) - Check network connectivity - Review authentication configuration Tools not available:
- Verify server connected successfully
- Check tool names match exactly
- Run Authentication failing: - Clear cached auth tokens - Re-authenticate - Check token scopes and permissions - Verify environment variables set Quick ReferenceMCP Server Types
Configuration Checklist
Best PracticesDO: - ✅ Use ${CLAUDE_PLUGIN_ROOT} for portable paths - ✅ Document required environment variables - ✅ Use secure connections (HTTPS/WSS) - ✅ Pre-allow specific MCP tools in commands - ✅ Test MCP integration before publishing - ✅ Handle connection and tool errors gracefully DON'T: - ❌ Hardcode absolute paths - ❌ Commit credentials to git - ❌ Use HTTP instead of HTTPS - ❌ Pre-allow all tools with wildcards - ❌ Skip error handling - ❌ Forget to document setup Additional ResourcesReference FilesFor detailed information, consult:
Example ConfigurationsWorking examples in
External Resources
Implementation WorkflowTo add MCP integration to a plugin:
Focus on stdio for custom/local servers, SSE for hosted services with OAuth. |
||||||||||||||||||||||||||||||||||||
plugin-settings |
This skill should be used when the user asks about "plugin settings", "store plugin configuration", "user-configurable plugin", ".local.md files", "plugin state files", "read YAML frontmatter", "per-project plugin settings", or wants to make plugin behavior configurable. Documents the .claude/plugin-name.local.md pattern for storing plugin-specific configuration with YAML frontmatter and markdown content. | |||||||||||||||||||||||||||||||||||
Plugin Settings Pattern for Claude Code PluginsOverviewPlugins can store user-configurable settings and state in Key characteristics:
- File location: File StructureBasic Template
Example: Plugin State File.claude/my-plugin.local.md:
Reading Settings FilesFrom Hooks (Bash Scripts)Pattern: Check existence and parse frontmatter
See From CommandsCommands can read settings files to customize behavior:
From AgentsAgents can reference settings in their instructions:
Parsing TechniquesExtract Frontmatter
Read Individual FieldsString fields:
Boolean fields:
Numeric fields:
Read Markdown BodyExtract content after second
Common PatternsPattern 1: Temporarily Active HooksUse settings file to control hook activation:
Use case: Enable/disable hooks without editing hooks.json (requires restart). Pattern 2: Agent State ManagementStore agent-specific state and configuration: .claude/multi-agent-swarm.local.md:
Read from hooks to coordinate agents:
Pattern 3: Configuration-Driven Behavior.claude/my-plugin.local.md:
Use in hooks or commands:
Creating Settings FilesFrom CommandsCommands can create settings files:
Template GenerationProvide template in plugin README:
Best PracticesFile Naming✅ DO:
- Use ❌ DON'T:
- Use different directory (not GitignoreAlways add to
Document this in plugin README. DefaultsProvide sensible defaults when settings file doesn't exist:
ValidationValidate settings values:
Restart RequirementImportant: Settings changes require Claude Code restart. Document in your README:
Hooks cannot be hot-swapped within a session. Security ConsiderationsSanitize User InputWhen writing settings files from user input:
Validate File PathsIf settings contain file paths:
PermissionsSettings files should be:
- Readable by user only ( Real-World Examplesmulti-agent-swarm Plugin.claude/multi-agent-swarm.local.md:
Hook usage (agent-stop-notification.sh):
- Checks if file exists (line 15-18: quick exit if not)
- Parses frontmatter to get coordinator_session, agent_name, enabled
- Sends notifications to coordinator if enabled
- Allows quick activation/deactivation via ralph-loop Plugin.claude/ralph-loop.local.md:
Hook usage (stop-hook.sh): - Checks if file exists (line 15-18: quick exit if not active) - Reads iteration count and max_iterations - Extracts completion_promise for loop termination - Reads body as the prompt to feed back - Updates iteration count on each loop Quick ReferenceFile Location
Frontmatter Parsing
Body Parsing
Quick Exit Pattern
Additional ResourcesReference FilesFor detailed implementation patterns:
Example FilesWorking examples in
Utility ScriptsDevelopment tools in
Implementation WorkflowTo add settings to a plugin:
Focus on keeping settings simple and providing good defaults when settings file doesn't exist. |
||||||||||||||||||||||||||||||||||||
plugin-structure |
This skill should be used when the user asks to "create a plugin", "scaffold a plugin", "understand plugin structure", "organize plugin components", "set up plugin.json", "use ${CLAUDE_PLUGIN_ROOT}", "add commands/agents/skills/hooks", "configure auto-discovery", or needs guidance on plugin directory layout, manifest configuration, component organization, file naming conventions, or Claude Code plugin architecture best practices. | |||||||||||||||||||||||||||||||||||
Plugin Structure for Claude CodeOverviewClaude Code plugins follow a standardized directory structure with automatic component discovery. Understanding this structure enables creating well-organized, maintainable plugins that integrate seamlessly with Claude Code. Key concepts:
- Conventional directory layout for automatic discovery
- Manifest-driven configuration in Directory StructureEvery Claude Code plugin follows this organizational pattern:
Critical rules:
Plugin Manifest (plugin.json)The manifest defines plugin metadata and configuration. Located at Required Fields
Name requirements:
- Use kebab-case format (lowercase with hyphens)
- Must be unique across installed plugins
- No spaces or special characters
- Example: Recommended Metadata
Version format: Follow semantic versioning (MAJOR.MINOR.PATCH) Keywords: Use for plugin discovery and categorization Component Path ConfigurationSpecify custom paths for components (supplements default directories):
Important: Custom paths supplement defaults—they don't replace them. Components in both default directories and custom paths will load. Path rules:
- Must be relative to plugin root
- Must start with Component OrganizationCommandsLocation: Example structure:
File format:
Usage: Commands integrate as native slash commands in Claude Code AgentsLocation: Example structure:
File format:
Usage: Users can invoke agents manually, or Claude Code selects them automatically based on task context SkillsLocation: Example structure:
SKILL.md format:
Supporting files: Skills can include scripts, references, examples, or assets in subdirectories Usage: Claude Code autonomously activates skills based on task context matching the description HooksLocation: Example structure:
Configuration format:
Available events: PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification Usage: Hooks execute automatically in response to Claude Code events MCP ServersLocation: Example format:
Usage: MCP servers integrate seamlessly with Claude Code's tool system Portable Path References${CLAUDE_PLUGIN_ROOT}Use
Why it matters: Plugins install in different locations depending on: - User installation method (marketplace, local, npm) - Operating system conventions - User preferences Where to use it: - Hook command paths - MCP server command arguments - Script execution references - Resource file paths Never use:
- Hardcoded absolute paths ( Path Resolution RulesIn manifest JSON fields (hooks, MCP servers):
In component files (commands, agents, skills):
In executed scripts:
File Naming ConventionsComponent FilesCommands: Use kebab-case Agents: Use kebab-case Skills: Use kebab-case directory names
- Supporting FilesScripts: Use descriptive kebab-case names with appropriate extensions
- Documentation: Use kebab-case markdown files
- Configuration: Use standard names
- Auto-Discovery MechanismClaude Code automatically discovers and loads components:
Discovery timing: - Plugin installation: Components register with Claude Code - Plugin enable: Components become available for use - No restart required: Changes take effect on next Claude Code session Override behavior: Custom paths in Best PracticesOrganization
Naming
Portability
Maintenance
Common PatternsMinimal PluginSingle command with no dependencies:
Full-Featured PluginComplete plugin with all component types:
Skill-Focused PluginPlugin providing only skills:
TroubleshootingComponent not loading:
- Verify file is in correct directory with correct extension
- Check YAML frontmatter syntax (commands, agents, skills)
- Ensure skill has Path resolution errors:
- Replace all hardcoded paths with Auto-discovery not working:
- Confirm directories are at plugin root (not in Conflicts between plugins: - Use unique, descriptive component names - Namespace commands with plugin name if needed - Document potential conflicts in plugin README - Consider command prefixes for related functionality For detailed examples and advanced patterns, see files in |
||||||||||||||||||||||||||||||||||||
skill-development |
This skill should be used when the user wants to "create a skill", "add a skill to plugin", "write a new skill", "improve skill description", "organize skill content", or needs guidance on skill structure, progressive disclosure, or skill development best practices for Claude Code plugins. | |||||||||||||||||||||||||||||||||||
Skill Development for Claude Code PluginsThis skill provides guidance for creating effective skills for Claude Code plugins. About SkillsSkills are modular, self-contained packages that extend Claude's capabilities by providing specialized knowledge, workflows, and tools. Think of them as "onboarding guides" for specific domains or tasks—they transform Claude from a general-purpose agent into a specialized agent equipped with procedural knowledge that no model can fully possess. What Skills Provide
Anatomy of a SkillEvery skill consists of a required SKILL.md file and optional bundled resources:
SKILL.md (required)Metadata Quality: The Bundled Resources (optional)Scripts (
|
||||||||||||||||||||||||||||||||||||
Commands
| Name | Description | |||||
|---|---|---|---|---|---|---|
create-plugin |
Guided end-to-end plugin creation workflow with component design, implementation, and validation | |||||
Plugin Creation WorkflowGuide the user through creating a complete, high-quality Claude Code plugin from initial concept to tested implementation. Follow a systematic approach: understand requirements, design components, clarify details, implement following best practices, validate, and test. Core Principles
Initial request: $ARGUMENTS Phase 1: DiscoveryGoal: Understand what plugin needs to be built and what problem it solves Actions:
Output: Clear statement of plugin purpose and target users Phase 2: Component PlanningGoal: Determine what plugin components are needed MUST load plugin-structure skill using Skill tool before this phase. Actions:
Output: Confirmed list of components to create Phase 3: Detailed Design & Clarifying QuestionsGoal: Specify each component in detail and resolve all ambiguities CRITICAL: This is one of the most important phases. DO NOT SKIP. Actions:
Example questions for a skill:
Example questions for an agent:
Output: Detailed specification for each component Phase 4: Plugin Structure CreationGoal: Create plugin directory structure and manifest Actions:
Output: Plugin directory structure created and ready for components Phase 5: Component ImplementationGoal: Create each component following best practices LOAD RELEVANT SKILLS before implementing each component type:
Actions for each component: For Skills:
For legacy
|
||||||
Agents
| Name | Description | Model | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
agent-creator |
Use this agent when the user asks to "create an agent", "generate an agent", "build a new agent", "make me an agent that...", or describes agent functionality they need. Trigger when user wants to create autonomous agents for plugins. Examples: <example> Context: User wants to create a code review agent user: "Create an agent that reviews code for quality issues" assistant: "I'll use the agent-creator agent to generate the agent configuration." <commentary> User requesting new agent creation, trigger agent-creator to generate it. </commentary> </example> <example> Context: User describes needed functionality user: "I need an agent that generates unit tests for my code" assistant: "I'll use the agent-creator agent to create a test generation agent." <commentary> User describes agent need, trigger agent-creator to build it. </commentary> </example> <example> Context: User wants to add agent to plugin user: "Add an agent to my plugin that validates configurations" assistant: "I'll use the agent-creator agent to generate a configuration validator agent." <commentary> Plugin development with agent addition, trigger agent-creator. </commentary> </example> | sonnet | |||||||||
You are an elite AI agent architect specializing in crafting high-performance agent configurations. Your expertise lies in translating user requirements into precisely-tuned agent specifications that maximize effectiveness and reliability. Important Context: You may have access to project-specific instructions from CLAUDE.md files and other context that may include coding standards, project structure, and custom requirements. Consider this context when creating agents to ensure they align with the project's established patterns and practices. When a user describes what they want an agent to do, you will:
Agent Creation Process:
name: [identifier]
description: [Use this agent when... Examples: [Complete system prompt] ```
Quality Standards: - Identifier follows naming rules (lowercase, hyphens, 3-50 chars) - Description has strong trigger phrases and 2-4 examples - Examples show both explicit and proactive triggering - System prompt is comprehensive (500-3,000 words) - System prompt has clear structure (role, responsibilities, process, output) - Model choice is appropriate - Tool selection follows least privilege - Color choice matches agent purpose Output Format: Create agent file, then provide summary: Agent Created: [identifier]Configuration
File Created
How to UseThis agent will trigger when [triggering scenarios]. Test it by: [suggest test scenario] Validate with: Next Steps[Recommendations for testing, integration, or improvements] Edge Cases: - Vague user request: Ask clarifying questions before generating - Conflicts with existing agents: Note conflict, suggest different scope/name - Very complex requirements: Break into multiple specialized agents - User wants specific tool access: Honor the request in agent configuration - User specifies model: Use specified model instead of inherit - First agent in plugin: Create agents/ directory first ``` This agent automates agent creation using the proven patterns from Claude Code's internal implementation, making it easy for users to create high-quality autonomous agents. |
|||||||||||
plugin-validator |
Use this agent when the user asks to "validate my plugin", "check plugin structure", "verify plugin is correct", "validate plugin.json", "check plugin files", or mentions plugin validation. Also trigger proactively after user creates or modifies plugin components. Examples: <example> Context: User finished creating a new plugin user: "I've created my first plugin with commands and hooks" assistant: "Great! Let me validate the plugin structure." <commentary> Plugin created, proactively validate to catch issues early. </commentary> assistant: "I'll use the plugin-validator agent to check the plugin." </example> <example> Context: User explicitly requests validation user: "Validate my plugin before I publish it" assistant: "I'll use the plugin-validator agent to perform comprehensive validation." <commentary> Explicit validation request triggers the agent. </commentary> </example> <example> Context: User modified plugin.json user: "I've updated the plugin manifest" assistant: "Let me validate the changes." <commentary> Manifest modified, validate to ensure correctness. </commentary> assistant: "I'll use the plugin-validator agent to check the manifest." </example> | inherit | |||||||||
You are an expert plugin validator specializing in comprehensive validation of Claude Code plugin structure, configuration, and components. Your Core Responsibilities: 1. Validate plugin structure and organization 2. Check plugin.json manifest for correctness 3. Validate all component files (commands, agents, skills, hooks) 4. Verify naming conventions and file organization 5. Check for common issues and anti-patterns 6. Provide specific, actionable recommendations Validation Process:
Quality Standards: - All validation errors include file path and specific issue - Warnings distinguished from errors - Provide fix suggestions for each issue - Include positive findings for well-structured components - Categorize by severity (critical/major/minor) Output Format: Plugin Validation ReportPlugin: [name]Location: [path] Summary[Overall assessment - pass/fail with key stats] Critical Issues ([count])
Warnings ([count])
Component Summary
Positive Findings
Recommendations
Overall Assessment[PASS/FAIL] - [Reasoning] Edge Cases: - Minimal plugin (just plugin.json): Valid if manifest correct - Empty directories: Warn but don't fail - Unknown fields in manifest: Warn but don't fail - Multiple validation errors: Group by file, prioritize critical - Plugin not found: Clear error message with guidance - Corrupted files: Skip and report, continue validation ``` Excellent work! The agent-development skill is now complete and all 6 skills are documented in the README. Would you like me to create more agents (like skill-reviewer) or work on something else? |
|||||||||||
skill-reviewer |
Use this agent when the user has created or modified a skill and needs quality review, asks to "review my skill", "check skill quality", "improve skill description", or wants to ensure skill follows best practices. Trigger proactively after skill creation. Examples: <example> Context: User just created a new skill user: "I've created a PDF processing skill" assistant: "Great! Let me review the skill quality." <commentary> Skill created, proactively trigger skill-reviewer to ensure it follows best practices. </commentary> assistant: "I'll use the skill-reviewer agent to review the skill." </example> <example> Context: User requests skill review user: "Review my skill and tell me how to improve it" assistant: "I'll use the skill-reviewer agent to analyze the skill quality." <commentary> Explicit skill review request triggers the agent. </commentary> </example> <example> Context: User modified skill description user: "I updated the skill description, does it look good?" assistant: "I'll use the skill-reviewer agent to review the changes." <commentary> Skill description modified, review for triggering effectiveness. </commentary> </example> | inherit | |||||||||
You are an expert skill architect specializing in reviewing and improving Claude Code skills for maximum effectiveness and reliability. Your Core Responsibilities: 1. Review skill structure and organization 2. Evaluate description quality and triggering effectiveness 3. Assess progressive disclosure implementation 4. Check adherence to skill-creator best practices 5. Provide specific recommendations for improvement Skill Review Process:
Quality Standards: - Description must have strong, specific trigger phrases - SKILL.md should be lean (under 3,000 words ideally) - Writing style must be imperative/infinitive form - Progressive disclosure properly implemented - All file references work correctly - Examples are complete and accurate Output Format: Skill Review: [skill-name]Summary[Overall assessment and word counts] Description AnalysisCurrent: [Show current description] Issues: - [Issue 1 with description] - [Issue 2...] Recommendations: - [Specific fix 1] - Suggested improved description: "[better version]" Content QualitySKILL.md Analysis: - Word count: [count] ([assessment: too long/good/too short]) - Writing style: [assessment] - Organization: [assessment] Issues: - [Content issue 1] - [Content issue 2] Recommendations: - [Specific improvement 1] - Consider moving [section X] to references/[filename].md Progressive DisclosureCurrent Structure: - SKILL.md: [word count] - references/: [count] files, [total words] - examples/: [count] files - scripts/: [count] files Assessment: [Is progressive disclosure effective?] Recommendations: [Suggestions for better organization] Specific IssuesCritical ([count])
Major ([count])
Minor ([count])
Positive Aspects
Overall Rating[Pass/Needs Improvement/Needs Major Revision] Priority Recommendations
Edge Cases: - Skill with no description issues: Focus on content and organization - Very long skill (>5,000 words): Strongly recommend splitting into references - New skill (minimal content): Provide constructive building guidance - Perfect skill: Acknowledge quality and suggest minor enhancements only - Missing referenced files: Report errors clearly with paths ``` This agent helps users create high-quality skills by applying the same standards used in plugin-dev's own skills. |
|||||||||||
README
Plugin Development Toolkit
A comprehensive toolkit for developing Claude Code plugins with expert guidance on hooks, MCP integration, plugin structure, and marketplace publishing.
Overview
The plugin-dev toolkit provides seven specialized skills to help you build high-quality Claude Code plugins:
- hook-development - Advanced hooks API and event-driven automation
- mcp-integration - Model Context Protocol server integration
- plugin-structure - Plugin organization and manifest configuration
- plugin-settings - Configuration patterns using .claude/plugin-name.local.md files
- command-development - Creating slash commands with frontmatter and arguments
- agent-development - Creating autonomous agents with AI-assisted generation
- skill-development - Creating skills with progressive disclosure and strong triggers
Each skill follows best practices with progressive disclosure: lean core documentation, detailed references, working examples, and utility scripts.
Guided Workflow Command
/plugin-dev:create-plugin
A comprehensive, end-to-end workflow command for creating plugins from scratch, similar to the feature-dev workflow.
8-Phase Process: 1. Discovery - Understand plugin purpose and requirements 2. Component Planning - Determine needed skills, commands, agents, hooks, MCP 3. Detailed Design - Specify each component and resolve ambiguities 4. Structure Creation - Set up directories and manifest 5. Component Implementation - Create each component using AI-assisted agents 6. Validation - Run plugin-validator and component-specific checks 7. Testing - Verify plugin works in Claude Code 8. Documentation - Finalize README and prepare for distribution
Features: - Asks clarifying questions at each phase - Loads relevant skills automatically - Uses agent-creator for AI-assisted agent generation - Runs validation utilities (validate-agent.sh, validate-hook-schema.sh, etc.) - Follows plugin-dev's own proven patterns - Guides through testing and verification
Usage:
/plugin-dev:create-plugin [optional description]
# Examples:
/plugin-dev:create-plugin
/plugin-dev:create-plugin A plugin for managing database migrations
Use this workflow for structured, high-quality plugin development from concept to completion.
Skills
1. hook-development
Trigger phrases: "create a hook", "add a PreToolUse hook", "validate tool use", "implement prompt-based hooks", "${CLAUDE_PLUGIN_ROOT}", "block dangerous commands"
What it covers: - Prompt-based hooks (recommended) with LLM decision-making - Command hooks for deterministic validation - All hook events: PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification - Hook output formats and JSON schemas - Security best practices and input validation - ${CLAUDE_PLUGIN_ROOT} for portable paths
Resources: - Core SKILL.md (1,619 words) - 3 example hook scripts (validate-write, validate-bash, load-context) - 3 reference docs: patterns, migration, advanced techniques - 3 utility scripts: validate-hook-schema.sh, test-hook.sh, hook-linter.sh
Use when: Creating event-driven automation, validating operations, or enforcing policies in your plugin.
2. mcp-integration
Trigger phrases: "add MCP server", "integrate MCP", "configure .mcp.json", "Model Context Protocol", "stdio/SSE/HTTP server", "connect external service"
What it covers: - MCP server configuration (.mcp.json vs plugin.json) - All server types: stdio (local), SSE (hosted/OAuth), HTTP (REST), WebSocket (real-time) - Environment variable expansion (${CLAUDE_PLUGIN_ROOT}, user vars) - MCP tool naming and usage in commands/agents - Authentication patterns: OAuth, tokens, env vars - Integration patterns and performance optimization
Resources: - Core SKILL.md (1,666 words) - 3 example configurations (stdio, SSE, HTTP) - 3 reference docs: server-types (~3,200w), authentication (~2,800w), tool-usage (~2,600w)
Use when: Integrating external services, APIs, databases, or tools into your plugin.
3. plugin-structure
Trigger phrases: "plugin structure", "plugin.json manifest", "auto-discovery", "component organization", "plugin directory layout"
What it covers: - Standard plugin directory structure and auto-discovery - plugin.json manifest format and all fields - Component organization (commands, agents, skills, hooks) - ${CLAUDE_PLUGIN_ROOT} usage throughout - File naming conventions and best practices - Minimal, standard, and advanced plugin patterns
Resources: - Core SKILL.md (1,619 words) - 3 example structures (minimal, standard, advanced) - 2 reference docs: component-patterns, manifest-reference
Use when: Starting a new plugin, organizing components, or configuring the plugin manifest.
4. plugin-settings
Trigger phrases: "plugin settings", "store plugin configuration", ".local.md files", "plugin state files", "read YAML frontmatter", "per-project plugin settings"
What it covers: - .claude/plugin-name.local.md pattern for configuration - YAML frontmatter + markdown body structure - Parsing techniques for bash scripts (sed, awk, grep patterns) - Temporarily active hooks (flag files and quick-exit) - Real-world examples from multi-agent-swarm and ralph-loop plugins - Atomic file updates and validation - Gitignore and lifecycle management
Resources: - Core SKILL.md (1,623 words) - 3 examples (read-settings hook, create-settings command, templates) - 2 reference docs: parsing-techniques, real-world-examples - 2 utility scripts: validate-settings.sh, parse-frontmatter.sh
Use when: Making plugins configurable, storing per-project state, or implementing user preferences.
5. command-development
Trigger phrases: "create a slash command", "add a command", "command frontmatter", "define command arguments", "organize commands"
What it covers: - Slash command structure and markdown format - YAML frontmatter fields (description, argument-hint, allowed-tools) - Dynamic arguments and file references - Bash execution for context - Command organization and namespacing - Best practices for command development
Resources: - Core SKILL.md (1,535 words) - Examples and reference documentation - Command organization patterns
Use when: Creating slash commands, defining command arguments, or organizing plugin commands.
6. agent-development
Trigger phrases: "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "autonomous agent"
What it covers:
- Agent file structure (YAML frontmatter + system prompt)
- All frontmatter fields (name, description, model, color, tools)
- Description format with
Resources: - Core SKILL.md (1,438 words) - 2 examples: agent-creation-prompt (AI-assisted workflow), complete-agent-examples (4 full agents) - 3 reference docs: agent-creation-system-prompt (from Claude Code), system-prompt-design (~4,000w), triggering-examples (~2,500w) - 1 utility script: validate-agent.sh
Use when: Creating autonomous agents, defining agent behavior, or implementing AI-assisted agent generation.
7. skill-development
Trigger phrases: "create a skill", "add a skill to plugin", "write a new skill", "improve skill description", "organize skill content"
What it covers: - Skill structure (SKILL.md with YAML frontmatter) - Progressive disclosure principle (metadata → SKILL.md → resources) - Strong trigger descriptions with specific phrases - Writing style (imperative/infinitive form, third person) - Bundled resources organization (references/, examples/, scripts/) - Skill creation workflow - Based on skill-creator methodology adapted for Claude Code plugins
Resources: - Core SKILL.md (1,232 words) - References: skill-creator methodology, plugin-dev patterns - Examples: Study plugin-dev's own skills as templates
Use when: Creating new skills for plugins or improving existing skill quality.
Installation
Install from claude-code-marketplace:
/plugin install plugin-dev@claude-code-marketplace
Or for development, use directly:
cc --plugin-dir /path/to/plugin-dev
Quick Start
Creating Your First Plugin
- Plan your plugin structure:
- Ask: "What's the best directory structure for a plugin with commands and MCP integration?"
-
The plugin-structure skill will guide you
-
Add MCP integration (if needed):
- Ask: "How do I add an MCP server for database access?"
-
The mcp-integration skill provides examples and patterns
-
Implement hooks (if needed):
- Ask: "Create a PreToolUse hook that validates file writes"
- The hook-development skill gives working examples and utilities
Development Workflow
The plugin-dev toolkit supports your entire plugin development lifecycle:
┌─────────────────────┐
│ Design Structure │ → plugin-structure skill
│ (manifest, layout) │
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ Add Components │
│ (commands, agents, │ → All skills provide guidance
│ skills, hooks) │
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ Integrate Services │ → mcp-integration skill
│ (MCP servers) │
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ Add Automation │ → hook-development skill
│ (hooks, validation)│ + utility scripts
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ Test & Validate │ → hook-development utilities
│ │ validate-hook-schema.sh
└──────────┬──────────┘ test-hook.sh
│ hook-linter.sh
Features
Progressive Disclosure
Each skill uses a three-level disclosure system: 1. Metadata (always loaded): Concise descriptions with strong triggers 2. Core SKILL.md (when triggered): Essential API reference (~1,500-2,000 words) 3. References/Examples (as needed): Detailed guides, patterns, and working code
This keeps Claude Code's context focused while providing deep knowledge when needed.
Utility Scripts
The hook-development skill includes production-ready utilities:
# Validate hooks.json structure
./validate-hook-schema.sh hooks/hooks.json
# Test hooks before deployment
./test-hook.sh my-hook.sh test-input.json
# Lint hook scripts for best practices
./hook-linter.sh my-hook.sh
Working Examples
Every skill provides working examples: - hook-development: 3 complete hook scripts (bash, write validation, context loading) - mcp-integration: 3 server configurations (stdio, SSE, HTTP) - plugin-structure: 3 plugin layouts (minimal, standard, advanced) - plugin-settings: 3 examples (read-settings hook, create-settings command, templates) - command-development: 10 complete command examples (review, test, deploy, docs, etc.)
Documentation Standards
All skills follow consistent standards: - Third-person descriptions ("This skill should be used when...") - Strong trigger phrases for reliable loading - Imperative/infinitive form throughout - Based on official Claude Code documentation - Security-first approach with best practices
Total Content
- Core Skills: ~11,065 words across 7 SKILL.md files
- Reference Docs: ~10,000+ words of detailed guides
- Examples: 12+ working examples (hook scripts, MCP configs, plugin layouts, settings files)
- Utilities: 6 production-ready validation/testing/parsing scripts
Use Cases
Building a Database Plugin
1. "What's the structure for a plugin with MCP integration?"
→ plugin-structure skill provides layout
2. "How do I configure an stdio MCP server for PostgreSQL?"
→ mcp-integration skill shows configuration
3. "Add a Stop hook to ensure connections close properly"
→ hook-development skill provides pattern
Creating a Validation Plugin
1. "Create hooks that validate all file writes for security"
→ hook-development skill with examples
2. "Test my hooks before deploying"
→ Use validate-hook-schema.sh and test-hook.sh
3. "Organize my hooks and configuration files"
→ plugin-structure skill shows best practices
Integrating External Services
1. "Add Asana MCP server with OAuth"
→ mcp-integration skill covers SSE servers
2. "Use Asana tools in my commands"
→ mcp-integration tool-usage reference
3. "Structure my plugin with commands and MCP"
→ plugin-structure skill provides patterns
Best Practices
All skills emphasize:
✅ Security First - Input validation in hooks - HTTPS/WSS for MCP servers - Environment variables for credentials - Principle of least privilege
✅ Portability - Use ${CLAUDE_PLUGIN_ROOT} everywhere - Relative paths only - Environment variable substitution
✅ Testing
- Validate configurations before deployment
- Test hooks with sample inputs
- Use debug mode (claude --debug)
✅ Documentation - Clear README files - Documented environment variables - Usage examples
Contributing
This plugin is part of the claude-code-marketplace. To contribute improvements:
- Fork the marketplace repository
- Make changes to plugin-dev/
- Test locally with
cc --plugin-dir - Create PR following marketplace-publishing guidelines
Version
0.1.0 - Initial release with seven comprehensive skills and three validation agents
Author
Daisy Hollman (daisy@anthropic.com)
License
MIT License - See repository for details
Note: This toolkit is designed to help you build high-quality plugins. The skills load automatically when you ask relevant questions, providing expert guidance exactly when you need it.
License
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
claude-plugins-official