ALWAYS invoke this skill when creating or editing slash commands. NEVER create slash commands without this skill.
From claudenpx claudepluginhub outcomeeng/claude --plugin claudeThis skill uses the workspace's default tool permissions.
references/arguments.mdreferences/patterns.mdreferences/tool-restrictions.mdGuides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Facilitates interactive brainstorming sessions using diverse creative techniques and ideation methods. Activates when users say 'help me brainstorm' or 'help me ideate'.
<accessing_skill_files>
When this skill is invoked, Claude Code provides the base directory. Throughout this skill, we refer to it as ${SKILL_DIR}.
Reference files: ${SKILL_DIR}/references/
IMPORTANT: Do NOT search the project directory for skill files. If you cannot find a file, use Glob: .claude/plugins/cache/**/creating-commands/**/*.md
</accessing_skill_files>
<quick_start>
<workflow> 1. Create `.claude/commands/` directory (project) or use `~/.claude/commands/` (personal) 2. Create `command-name.md` file 3. Add YAML frontmatter (at minimum: `description`) 4. Write command prompt 5. Test with `/command-name [args]` </workflow> <example> **File**: `.claude/commands/optimize.md`---
description: Analyze this code for performance issues and suggest optimizations
---
Analyze the performance of this code and suggest three specific optimizations:
Usage: /optimize
Claude receives the expanded prompt and analyzes the code in context. </example> </quick_start>
<xml_structure> All generated slash commands should use XML tags in the body (after YAML frontmatter) for clarity and consistency.
<required_tags>
<objective> - What the command does and why it matters
<objective>
What needs to happen and why this matters.
Context about who uses this and what it accomplishes.
</objective>
<process> or <steps> - How to execute the command
<process>
Sequential steps to accomplish the objective:
1. First step
2. Second step
3. Final step
</process>
<success_criteria> - How to know the command succeeded
<success_criteria>
Clear, measurable criteria for successful completion.
</success_criteria>
</required_tags>
<conditional_tags>
<context> - When loading dynamic state or files
<context>
Current state: ! `git status`
Relevant files: @ package.json
</context>
(Note: Remove the space after @ in actual usage)
<verification> - When producing artifacts that need checking
<verification>
Before completing, verify:
- Specific test or check to perform
- How to confirm it works
</verification>
<testing> - When running tests is part of the workflow
<testing>
Run tests: ! `npm test`
Check linting: ! `npm run lint`
</testing>
<output> - When creating/modifying specific files
<output>
Files created/modified:
- `./path/to/file.ext` - Description
</output>
</conditional_tags>
<structure_example>
---
name: example-command
description: Does something useful
argument-hint: [input]
---
<objective>
Process $ARGUMENTS to accomplish [goal].
This helps [who] achieve [outcome].
</objective>
<context>
Current state: ! `relevant command`
Files: @ relevant/files
</context>
<process>
1. Parse $ARGUMENTS
2. Execute operation
3. Verify results
</process>
<success_criteria>
- Operation completed without errors
- Output matches expected format
</success_criteria>
</structure_example> </xml_structure>
<intelligence_rules>
Simple commands (single operation, no artifacts):
<objective>, <process>, <success_criteria>/check-todos, /first-principlesComplex commands (multi-step, produces artifacts):
<objective>, <process>, <success_criteria><context> (if loading state), <verification> (if creating files), <output> (what gets created)/commit, /create-prompt, /run-promptCommands with dynamic arguments:
$ARGUMENTS in <objective> or <process> tagsargument-hint in frontmatterCommands that produce files:
<output> tag specifying what gets created<verification> tag with checks to performCommands that run tests/builds:
<testing> tag with specific commands<success_criteria></intelligence_rules>
<arguments_intelligence> Determine whether a command needs arguments:
Needs arguments — task operates on user-specified data:
$ARGUMENTS for single input: Fix issue #$ARGUMENTS$1, $2, $3 for structured input: Review PR #$1 with priority $2argument-hint in frontmatterNo arguments — task operates on implicit context (conversation, known files, project state):
argument-hint and don't reference $ARGUMENTSFor detailed examples and patterns, see ${SKILL_DIR}/references/arguments.md.
</arguments_intelligence>
<file_structure>
Project commands: .claude/commands/
(project) in /help listPersonal commands: ~/.claude/commands/
(user) in /help listFile naming: command-name.md → invoked as /command-name
</file_structure>
<yaml_frontmatter>
<field name="description"> **Required** - Describes what the command doesdescription: Analyze this code for performance issues and suggest optimizations
Shown in the /help command list.
</field>
argument-hint: [issue-number]
argument-hint: <pr-number> <priority> <assignee>
Shown in autocomplete. Omit for self-contained commands that don't take arguments. </field>
<field name="allowed-tools"> **Optional** - Restricts which tools Claude can useallowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*)
Formats:
allowed-tools: [Read, Edit, Write]allowed-tools: SequentialThinkingallowed-tools: Bash(git add:*)If omitted: All tools available </field> </yaml_frontmatter>
<dynamic_context>
Execute bash commands before the prompt using the exclamation mark prefix directly before backticks (no space between).
Note: Examples below show a space after the exclamation mark to prevent execution during skill loading. In actual slash commands, remove the space.
Example:
---
description: Create a git commit
allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*)
---
<context>
- Current git status: ! `git status`
- Current git diff: ! `git diff HEAD`
- Current branch: ! `git branch --show-current`
- Recent commits: ! `git log --oneline -10`
</context>
<process>
Based on the above changes, create a single git commit.
</process>
The bash commands execute and their output is included in the expanded prompt. </dynamic_context>
<file_references>
Use @ prefix to reference specific files:
---
description: Review implementation
---
Review the implementation in @ src/utils/helpers.js
(Note: Remove the space after @ in actual usage)
Claude can access the referenced file's contents. </file_references>
<best_practices>
1. Always use XML structure
# All slash commands should have XML-structured bodies
After frontmatter, use XML tags:
<objective> - What and why (always)<process> - How to do it (always)<success_criteria> - Definition of done (always)2. Clear descriptions
# Good
description: Analyze this code for performance issues and suggest optimizations
# Bad
description: Optimize stuff
3. Use dynamic context for state-dependent tasks
Current git status: ! `git status`
Files changed: ! `git diff --name-only`
4. Restrict tools when appropriate
# For git commands - prevent running arbitrary bash
allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*)
# For analysis - thinking only
allowed-tools: SequentialThinking
5. Use $ARGUMENTS for flexibility
Find and fix issue #$ARGUMENTS
6. Reference relevant files
Review @ package.json for dependencies
Analyze @ src/database/* for schema
(Note: Remove the space after @ in actual usage) </best_practices>
<common_patterns>
Common command patterns with full examples are in ${SKILL_DIR}/references/patterns.md:
<context> and allowed-tools$ARGUMENTS with argument-hint@ $ARGUMENTS file references with analysis</common_patterns>
<reference_guides>
Arguments reference: ${SKILL_DIR}/references/arguments.md
Patterns reference: ${SKILL_DIR}/references/patterns.md
Tool restrictions: ${SKILL_DIR}/references/tool-restrictions.md
</reference_guides>
<generation_protocol>
description (required), argument-hint (if arguments needed), allowed-tools (if tool restrictions needed)<objective>, <process>, <success_criteria>; add <context>, <verification>, <testing>, <output> as needed (see <intelligence_rules>)$ARGUMENTS or positional $1/$2 in tags (see <arguments_intelligence>).claude/commands/, personal in ~/.claude/commands/</generation_protocol>
<success_criteria> A well-structured slash command meets these criteria:
YAML Frontmatter:
description field is clear and conciseargument-hint present if command accepts argumentsallowed-tools specified if tool restrictions neededXML Structure:
<objective>, <process>, <success_criteria>Arguments Handling:
$ARGUMENTS used when command operates on user-specified data$1, $2, etc.) used when structured input needed$ARGUMENTS reference for self-contained commandsFunctionality:
Quality:
<process> tag<success_criteria></success_criteria>