Hook Development for Claude Code Plugins
anthropics/claude-plugins-official
Explains how to write Claude Code plugin hooks, both prompt-based checks and bash commands, for events such as PreToolUse, Stop and SessionStart.
Expert guidance for creating Claude Code slash commands with correct frontmatter, structure, and best practices
$ npx skills add pr-pm/prpm --skill creating-claude-commands -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install pr-pm/prpm creating-claude-commands --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/pr-pm/prpm.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/creating-claude-commands .claude/skills/creating-claude-commands && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "creating-claude-commands" agent skill from https://github.com/pr-pm/prpm/tree/main/.claude/skills/creating-claude-commands into .claude/skills/creating-claude-commands/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-claude-commands", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/pr-pm/prpm/tree/main/.claude/skills/creating-claude-commandsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add pr-pm/prpm --skill creating-claude-commands -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install pr-pm/prpm creating-claude-commands --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pr-pm/prpm.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/creating-claude-commands .agents/skills/creating-claude-commands && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "creating-claude-commands" agent skill from https://github.com/pr-pm/prpm/tree/main/.claude/skills/creating-claude-commands into .agents/skills/creating-claude-commands/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-claude-commands", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pr-pm/prpm --skill creating-claude-commands -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install pr-pm/prpm creating-claude-commands --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pr-pm/prpm.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/creating-claude-commands .cursor/skills/creating-claude-commands && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "creating-claude-commands" agent skill from https://github.com/pr-pm/prpm/tree/main/.claude/skills/creating-claude-commands into .cursor/skills/creating-claude-commands/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-claude-commands", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/pr-pm/prpm.git --path .claude/skills/creating-claude-commands--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add pr-pm/prpm --skill creating-claude-commands -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install pr-pm/prpm creating-claude-commands --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pr-pm/prpm.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/creating-claude-commands .gemini/skills/creating-claude-commands && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "creating-claude-commands" agent skill from https://github.com/pr-pm/prpm/tree/main/.claude/skills/creating-claude-commands into .gemini/skills/creating-claude-commands/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-claude-commands", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install pr-pm/prpm creating-claude-commandsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add pr-pm/prpm --skill creating-claude-commands -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/pr-pm/prpm.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/creating-claude-commands .github/skills/creating-claude-commands && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "creating-claude-commands" agent skill from https://github.com/pr-pm/prpm/tree/main/.claude/skills/creating-claude-commands into .github/skills/creating-claude-commands/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-claude-commands", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add pr-pm/prpm --skill creating-claude-commands -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install pr-pm/prpm creating-claude-commands --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/pr-pm/prpm.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/creating-claude-commands .opencode/skills/creating-claude-commands && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "creating-claude-commands" agent skill from https://github.com/pr-pm/prpm/tree/main/.claude/skills/creating-claude-commands into .opencode/skills/creating-claude-commands/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "creating-claude-commands", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
creating-claude-commandsExpert guidance for creating Claude Code slash commands with correct frontmatter, structure, and best practices
Creating Claude Commands is an agent skill from pr-pm/prpm. Expert guidance for creating Claude Code slash commands with correct frontmatter, structure, and best practices
Its SKILL.md is about 3.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Agent Workflows, covering Hooks and plugins. It works with Bash. The repository describes itself as: The universal registry for AI coding tools. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 5f993e6. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
docs.claude.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Creating Claude Commands loads about 3.9k tokens when it runs. Until then it costs about 34 tokens; SKILL.md has 658 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from pr-pm/prpm at commit 5f993e6, republished under its MIT licence (© pr-pm). 658 words, ~3,902 tokens.
.claude/skills/creating-claude-commands/SKILL.md (or your agent's skills folder).Expert guidance for creating Claude Code slash commands - quick actions triggered by /command-name.
Activate this skill when:
| Field | Required | Type | Description |
|---|---|---|---|
description | No | string | Brief description shown in autocomplete |
allowed-tools | No | string | Comma-separated list of tools (inherits if not specified) |
argument-hint | No | string | Expected arguments (e.g., add [tagId] | remove [tagId] | list) |
model | No | string | Specific model (sonnet, opus, haiku, inherit) |
disable-model-invocation | No | boolean | Prevent SlashCommand tool from calling this |
commandType | No | string | Set to "slash-command" for round-trip conversion |
@Reference files directly in command prompts using @ prefix:
Review the implementation in @src/utils/helpers.js
Compare @src/old-version.js with @src/new-version.js!Execute bash commands inline using ! prefix (requires Bash in allowed-tools):
---
allowed-tools: Bash(git *)
---
Current git status: !`git status`
Last 5 commits: !`git log --oneline -5`$ARGUMENTS - All arguments passed to command$1, $2, $3... $9 - Individual positional arguments.claude/commands/ to organize commands/subdirectory.command-name.claude/commands/git/quick-commit.md → /git.quick-commitSlash commands must be saved as Markdown files:
Project commands (shared with team):
.claude/commands/command-name.mdPersonal commands (individual use):
~/.claude/commands/command-name.md---
description: Generate documentation for code
allowed-tools: Read, Edit
model: sonnet
---
# 📝 Documentation Generator
Generate comprehensive documentation for the selected code.
## Instructions
- Analyze code structure and purpose
- Generate clear, concise documentation
- Include parameter descriptions
- Add usage examples
- Follow JSDoc/TSDoc format for TypeScript---
description: Manage tags for files
argument-hint: add [tagId] | remove [tagId] | list
allowed-tools: Read, Write
---
# Tag Manager
Manage tags for project files.
## Usage
- `/tags add <tagId>` - Add a tag (use $1 for tagId)
- `/tags remove <tagId>` - Remove a tag (use $1 for tagId)
- `/tags list` - List all tags
## Implementation
Action: $1
Tag ID: $2
All arguments: $ARGUMENTS---
description: Compare two files and suggest improvements
allowed-tools: Read, Edit
argument-hint: <file1> <file2>
---
# File Comparator
Compare @$1 with @$2 and identify:
- Differences in approach
- Which implementation is better
- Suggested improvements---
description: Create commit with git status context
argument-hint: <commit-message>
allowed-tools: Bash(git *)
---
# Smart Git Commit
## Current Status
!`git status --short`
## Recent Changes
!`git diff --stat`
Create a commit with message: $ARGUMENTS
Ensure the commit message follows conventional commit format.---
description: Quick code review
---
Review the current file for:
- Code quality issues
- Security vulnerabilities
- Performance bottlenecks
- Best practice violationsBrief description of what the command does. Shown in autocomplete. Defaults to first line from prompt if not specified.
---
description: Generate comprehensive documentation for selected code
---Comma-separated string of tools the command can use. Inherits from conversation if not specified.
Valid tools: Read, Write, Edit, Grep, Glob, Bash, WebSearch, WebFetch, Task, Skill, SlashCommand, TodoWrite, AskUserQuestion
---
allowed-tools: Read, Edit, Grep
---With Bash restrictions:
---
allowed-tools: Bash(git status:*), Bash(git diff:*), Read
---Expected arguments for the command. Shown when auto-completing.
---
argument-hint: [file-path]
------
argument-hint: add [tagId] | remove [tagId] | list
---Specific model to use for this command. Inherits from conversation if not specified.
Valid values:
sonnet - General purpose (Claude Sonnet 3.5)haiku - Fast, simple tasks (Claude Haiku 3.5)opus - Complex reasoning (Claude Opus 4)inherit - Use conversation model (default)---
model: sonnet
---Set to true to prevent Claude from automatically invoking this command via the SlashCommand tool.
---
disable-model-invocation: true
---Set to "slash-command" for explicit type preservation in round-trip conversion (PRPM extension).
---
commandType: slash-command
---The content after frontmatter contains the command prompt and instructions.
Can include emoji icon for visual identification:
# 📝 Documentation Generator# 🔍 Code ReviewerClear, actionable guidance for what the command should do:
## Instructions
- Analyze code structure and purpose
- Generate clear, concise documentation
- Include parameter descriptions
- Add usage examplesSpecify expected output format:
## Output Format
Return formatted documentation ready to paste above the code:
/**
* Function description
* @param {string} name - Parameter description
* @returns {Promise<User>} Return value description
*/Show Claude what good output looks like:
## Example Output
```typescript
/**
* Creates a new user with the provided data
* @param {UserData} userData - User information (email, name)
* @returns {Promise<User>} Created user with ID
* @throws {ValidationError} If email format is invalid
*/
async function createUser(userData: UserData): Promise<User> {
// ...
}
## Schema Validation
Commands are validated against the JSON Schema:
**Schema Location:** https://github.com/pr-pm/prpm/blob/main/packages/converters/schemas/claude-slash-command.schema.json
**Required structure:**
```json
{
"frontmatter": {
"description": "string (optional)",
"allowed-tools": "string (optional)",
"argument-hint": "string (optional)",
"model": "string (optional)",
"disable-model-invocation": "boolean (optional)",
"commandType": "slash-command (optional)"
},
"content": "string (markdown content)"
}| Mistake | Problem | Solution |
|---|---|---|
| Using array for tools | allowed-tools: [Read, Write] | Use string: allowed-tools: Read, Write |
| Wrong field names | tools:, arguments: | Use allowed-tools, argument-hint |
| Missing frontmatter delimiters | Frontmatter not parsed | Use --- before and after YAML |
| Invalid tool names | bash, grep (lowercase) | Use capitalized: Bash, Grep |
| Invalid model values | 3.5-sonnet, claude-opus | Use: sonnet, opus, haiku, inherit |
| Icons in frontmatter | icon: 📝 | Put icon in H1: # 📝 Title |
| No description | Autocomplete shows filename | Add description field |
Each command should do ONE thing well:
Good:
---
description: Generate JSDoc comments for functions
---Bad:
---
description: Generate docs, fix linting, add tests, refactor code
---Make descriptions specific and actionable:
Good:
description: Generate comprehensive JSDoc documentation for selected codeBad:
description: Make docsOnly request tools actually needed:
Good:
allowed-tools: Read, EditBad:
allowed-tools: Read, Write, Edit, Grep, Glob, Bash, WebSearchUse argument-hint to show expected arguments:
argument-hint: [file-path]argument-hint: <feature-name>argument-hint: add [item] | remove [item] | listShow users how to invoke the command:
## Usage
- `/generate-docs path/to/file.ts` - Generate docs for specific file
- `/generate-docs` - Generate docs for current selectionTell Claude what format you want:
## Output Format
Generate TypeScript interfaces with JSDoc comments:
```typescript
/**
* User account information
*/
interface User {
/** Unique identifier */
id: string;
/** User email address */
email: string;
}
### 7. Add Examples to Prompt
Show Claude examples of good output:
```markdown
## Example
Good documentation:
```typescript
/**
* Calculates total price with tax
* @param price - Base price before tax
* @param taxRate - Tax rate as decimal (e.g., 0.08 for 8%)
* @returns Total price including tax
*/
function calculateTotal(price: number, taxRate: number): number {
return price * (1 + taxRate);
}
### 8. Use Icons for Visual Identification
Add emoji to H1 heading for quick recognition:
```markdown
# 📝 Documentation Generator
# 🔍 Code Reviewer
# 🧪 Test Generator
# 🔧 Refactoring Assistant
# 🐛 Bug FinderOrganize related commands using subdirectories:
File: .claude/commands/git/status.md
---
description: Show enhanced git status
allowed-tools: Bash(git *)
---
# Git Status
!`git status`
Branch: !`git branch --show-current`
Recent commits: !`git log --oneline -3`Invoke with: /git.status
File: .claude/commands/git/quick-commit.md
---
description: Quick commit with conventional format
argument-hint: <type> <message>
allowed-tools: Bash(git *)
---
# Quick Commit
Create conventional commit: $1($2): $ARGUMENTS
!`git add -A && git commit -m "$1: $ARGUMENTS"`Invoke with: /git.quick-commit feat "add user auth"
---
description: Review code for quality, security, and performance issues
allowed-tools: Read, Grep
---
# 🔍 Code Reviewer
Review the selected code or current file for:
## Code Quality
- Clean, readable code
- Proper naming conventions
- DRY principle adherence
- SOLID principles
## Security
- Input validation
- SQL injection risks
- XSS vulnerabilities
- Authentication/authorization
## Performance
- Inefficient algorithms
- Unnecessary computations
- Memory leaks
- Database query optimization
## Output Format
Provide specific file:line references for all issues:
**[Issue Type]** (file.ts:42) - Issue description and suggested fix---
description: Generate comprehensive documentation for selected code
allowed-tools: Read, Edit
model: sonnet
---
# 📝 Documentation Generator
Generate comprehensive documentation for the selected code.
## Instructions
- Analyze code structure and purpose
- Generate clear, concise documentation
- Include parameter descriptions with types
- Add usage examples
- Follow JSDoc/TSDoc format for TypeScript
- Document error conditions and edge cases
## Output Format
Return formatted documentation ready to paste above the code.
For TypeScript/JavaScript:
```typescript
/**
* Function description
* @param {Type} paramName - Parameter description
* @returns {ReturnType} Return value description
* @throws {ErrorType} Error conditions
*/
### Test Generator
```markdown
---
description: Generate test cases for selected code
allowed-tools: Read, Write
---
# 🧪 Test Generator
Generate comprehensive test cases for the selected code.
## Test Coverage
Create tests covering:
- Happy path scenarios
- Edge cases
- Error conditions
- Boundary values
- Invalid input handling
## Structure
Follow the project's testing conventions:
- Use existing test framework (Jest, Mocha, etc.)
- Match naming patterns
- Follow setup/teardown patterns
- Use appropriate matchers
## Example
```typescript
describe('calculateTotal', () => {
it('should calculate total with valid inputs', () => {
const result = calculateTotal(100, 0.08);
expect(result).toBe(108);
});
it('should handle zero tax rate', () => {
const result = calculateTotal(100, 0);
expect(result).toBe(100);
});
it('should throw for negative price', () => {
expect(() => calculateTotal(-100, 0.08)).toThrow();
});
});
### Git Workflow Command
```markdown
---
description: Create and push feature branch
argument-hint: <feature-name>
allowed-tools: Bash(git *)
---
# 🌿 Feature Branch Creator
Create and push a new feature branch.
## Process
1. Create branch: `feature/$1`
2. Switch to new branch
3. Push to origin with upstream tracking
## Usage
```bash
/feature user-authentication
/feature api-optimizationgit checkout -b feature/$1
git push -u origin feature/$1
### Refactoring Command
```markdown
---
description: Refactor code while preserving behavior
allowed-tools: Read, Edit, Bash
---
# 🔧 Refactoring Assistant
Refactor the selected code while maintaining functionality.
## Guidelines
- Preserve existing behavior exactly
- Improve code structure and readability
- Extract reusable functions
- Reduce complexity
- Follow project conventions
- Update related tests
## Process
1. Read and understand current implementation
2. Identify refactoring opportunities
3. Propose changes with explanations
4. Update code with improvements
5. Verify tests still pass
6. Update documentation if needed
## Safety
- Run tests after refactoring
- Commit changes incrementally
- Keep changes focused and atomicBefore finalizing a slash command:
allowed-tools is comma-separated string, not array.claude/commands/*.md© pr-pm, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/creating-claude-commands of pr-pm/prpm.
Open the folder on GitHubat commit 5f993e6
Creating Claude Commands next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Creating Claude Commands this skillpr-pm/prpm | 122 | — | ~3.9k | Automated safety check: Pass | MIT | |
| Hook Development for Claude Code Pluginsanthropics/claude-plugins-official | 38k | 10 repos | ~4.1k | Automated safety check: Notes | Apache-2.0 | |
| Plugin Settings Patternanthropics/claude-plugins-official | 38k | 7 repos | ~3k | Automated safety check: Pass | Apache-2.0 | |
| Crush Configurationcharmbracelet/crush | 29k | — | ~3.7k | Automated safety check: Pass | Custom licence | |
| Verify Setup Health Checkdiet103/claude-code-infrastructure-showcase | 10k | — | ~363 | Automated safety check: Pass | MIT | |
| Claude SmartReflexioAI/claude-smart | 783 | — | ~439 | Automated safety check: Pass | Apache-2.0 |
anthropics/claude-plugins-official
Explains how to write Claude Code plugin hooks, both prompt-based checks and bash commands, for events such as PreToolUse, Stop and SessionStart.
anthropics/claude-plugins-official
Shows how Claude Code plugins keep per-project settings and state in .claude/plugin-name.local.md files with YAML frontmatter and a markdown body.
charmbracelet/crush
Explains how to configure the Crush coding agent with crushrc or crush.json, covering providers, models, LSPs, MCP servers, hooks, permissions and config precedence.
diet103/claude-code-infrastructure-showcase
Run the infrastructure health check and fix anything that fails
ReflexioAI/claude-smart
Codex-only — use when the user asks to run claude-smart commands in Codex, including claude-smart show, learn, restart, dashboard, clear-all, or slash-like requests such as /claude-smart:learn.
greatSumini/cc-system
Create and configure Claude Code hooks for customizing agent behavior.
pr-pm/prpm
Reference for writing Claude Code agent files: location, frontmatter fields, validation limits, tool and model choices, and the required content format.
pr-pm/prpm
Covers how to build, configure and publish Claude Code hooks: event types, exit codes, JSON I/O, and PRPM packaging.
pr-pm/prpm
Shows how to write .claude/rules/ files correctly: paths frontmatter instead of globs, quoted glob patterns, global rules and conversion of Cursor rules.
pr-pm/prpm
Reference for writing portable Agent Skills packages, covering SKILL.md frontmatter limits, name rules, directory layout and where Codex CLI, GitHub Copilot and Amp look for skills.
pr-pm/prpm
A skill your agent uses when implementing Stripe webhook endpoints and getting 'Raw body not available' or signature verification errors - provides raw body parsing solutions and subscription period…
pr-pm/prpm
Guides writing an agents.md project-context file: plain markdown with no frontmatter, focused on what an AI coding assistant cannot already know.
Works with
Categories
Expert guidance for creating Claude Code slash commands with correct frontmatter, structure, and best practices. Creating Claude Commands is an agent skill from pr-pm/prpm.
Creating Claude Commands fits situations like: tasks that involve Hooks and plugins.
Run `npx skills add pr-pm/prpm --skill creating-claude-commands -a claude-code`. Or copy the skill folder (.claude/skills/creating-claude-commands in pr-pm/prpm) into .claude/skills/creating-claude-commands in your project. Claude Code loads it when a task matches its description.
Run `npx skills add pr-pm/prpm --skill creating-claude-commands -a codex`. Or copy the skill folder (.claude/skills/creating-claude-commands in pr-pm/prpm) into .agents/skills/creating-claude-commands in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add pr-pm/prpm --skill creating-claude-commands -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/creating-claude-commands, .gemini/skills/creating-claude-commands, .github/skills/creating-claude-commands and .opencode/skills/creating-claude-commands in your project.
Going by SKILL.md and its folder, Creating Claude Commands needs the command-line tools its instructions call (git).
SKILL.md names 1 domain. As links in the text: docs.claude.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Creating Claude Commands is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.9k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Creating Claude Commands: Hook Development for Claude Code Plugins (anthropics/claude-plugins-official, 38k stars), Plugin Settings Pattern (anthropics/claude-plugins-official, 38k stars), Crush Configuration (charmbracelet/crush, 29k stars) and Verify Setup Health Check (diet103/claude-code-infrastructure-showcase, 10k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
pr-pm (a GitHub organization) maintains it in pr-pm/prpm, which has 122 GitHub stars. The repository holds 35 skills in this directory. The repository was last updated on October 6, 2026.
Source: pr-pm/prpm on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.