creating-cursor-commands
Original:🇺🇸 English
Translated
Expert guidance for creating effective Cursor slash commands with best practices, format requirements, and schema validation
2installs
Sourcepr-pm/prpm
Added on
NPX Install
npx skill4agent add pr-pm/prpm creating-cursor-commandsTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Creating Cursor Slash Commands
You are an expert at creating effective Cursor slash commands () that provide clear, actionable instructions for AI assistants.
.cursor/commands/*.mdWhen to Use This Skill
Use when:
- User wants to create a new Cursor slash command
- User asks to improve existing slash commands
- User needs help understanding Cursor command format
- User wants to convert prompts to slash commands
- User asks about Cursor command validation
Don't use for:
- Cursor rules () - use
.cursor/rules/insteadcreating-cursor-rules-skill - Claude Code slash commands - those use different format with frontmatter
- Complex multi-step workflows - those should be Cursor rules
Quick Reference
| Aspect | Requirement |
|---|---|
| File Location | |
| Format | Plain Markdown (NO frontmatter) |
| Filename | Descriptive kebab-case (e.g., |
| Invocation | |
| Content | Clear, actionable instructions with examples |
Format Requirements
Critical Rules
- NO frontmatter allowed - Cursor commands are plain Markdown only
- Descriptive filenames - The filename becomes the command name
- Clear instructions - Tell AI exactly what to do
- Include examples - Show desired output format
File Naming
Good filenames:
- →
review-code.md/review-code - →
generate-tests.md/generate-tests - →
explain-code.md/explain-code - →
optimize-performance.md/optimize-performance
Bad filenames:
- - Too cryptic
rc.md - - Use hyphens, not underscores
review_code.md - - Use lowercase
ReviewCode.md - - Too verbose
review-code-thoroughly-with-security-checks.md
Schema Validation
Schema Location
https://github.com/pr-pm/prpm/blob/main/packages/converters/schemas/cursor-command.schema.jsonSchema Structure
json
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://prpm.dev/schemas/cursor-command.schema.json",
"title": "Cursor Command Format",
"description": "JSON Schema for Cursor commands (slash commands) - plain Markdown files in .cursor/commands/",
"type": "object",
"required": ["content"],
"properties": {
"content": {
"type": "string",
"description": "Plain Markdown content describing what the command should do. No frontmatter supported."
}
},
"additionalProperties": false
}Key Validations
- Must be plain Markdown - No YAML frontmatter
- Content-only structure - Single field
content - No metadata - Unlike Cursor rules, commands have no configuration
Common Mistakes
| Mistake | Why It's Wrong | How to Fix |
|---|---|---|
| Adding frontmatter | Cursor commands don't support frontmatter | Remove |
| Using default exports syntax | Commands are not code files | Write plain Markdown instructions |
| Vague instructions | AI needs specific guidance | Add concrete examples and steps |
| Too many tasks | Commands should be focused | Create separate commands or use rules |
| Missing context | AI needs to know what to do | Include expected output format |
Best Practices
1. Be Specific and Actionable
❌ Bad - Vague:
markdown
# Review Code
Review the code for issues.✅ Good - Specific:
markdown
# Review Code
Review the selected code for:
- Code quality and best practices
- Potential bugs or edge cases
- Performance improvements
- Security vulnerabilities
Provide specific, actionable feedback with code examples where appropriate.2. Include Expected Output Format
❌ Bad - No guidance:
markdown
# Generate Tests
Generate tests for this code.✅ Good - Clear format:
markdown
# Generate Tests
Generate comprehensive unit tests for the selected code.
Include:
- Happy path test cases
- Edge cases and error handling
- Mock external dependencies
- Follow existing test patterns in the project
Use the testing framework already configured in the project.3. Provide Step-by-Step Instructions
✅ Good - Structured approach:
markdown
# Explain Code
Provide a clear explanation of what the selected code does.
Include:
- High-level purpose and goals
- Step-by-step breakdown of logic
- Any non-obvious behavior or edge cases
- Dependencies and side effects
- How it fits into the larger codebase4. Reference Project Context
✅ Good - Context-aware:
markdown
# Add Component
Create a new React component following our project conventions.
Structure:
- Functional component with TypeScript
- Props interface defined separately
- Export as named export (not default)
- Co-locate styles if needed
- Follow existing component patterns in components/ directory
Use the same testing approach as existing components.5. Focus on One Task
Each command should do ONE thing well.
❌ Bad - Too broad:
markdown
# Full Stack Feature
Create a full-stack feature with:
- Database migration
- API endpoint
- Frontend component
- Tests for everything
- Documentation✅ Good - Focused:
markdown
# Create API Endpoint
Create a new API endpoint following our conventions.
Include:
- Input validation with Zod
- Error handling with try/catch
- TypeScript types for request/response
- Follow patterns in existing endpointsExamples
Code Review Command
.cursor/commands/review-code.mdmarkdown
# Review Code
Review the selected code for:
1. **Code Quality**
- Clean, readable code
- Proper naming conventions
- DRY principle adherence
2. **Security**
- Input validation
- SQL injection risks
- XSS vulnerabilities
- Authentication/authorization checks
3. **Performance**
- Inefficient algorithms
- Unnecessary computations
- Memory leaks
- Database query optimization
4. **Best Practices**
- Error handling
- Type safety
- Test coverage
- Documentation
Provide specific file and line references for all issues found.
Format findings as a numbered list with severity (Critical/High/Medium/Low).Test Generation Command
.cursor/commands/generate-tests.mdmarkdown
# Generate Tests
Generate comprehensive unit tests for the selected code.
Test Coverage:
- Happy path scenarios
- Edge cases
- Error conditions
- Boundary values
- Invalid inputs
Requirements:
- Use existing test framework (Jest/Vitest/etc.)
- Follow project testing patterns
- Mock external dependencies
- Include test descriptions
- Aim for 100% code coverage
Format tests in the same style as existing test files in the project.Documentation Generator
.cursor/commands/document-function.mdmarkdown
# Document Function
Generate comprehensive documentation for the selected function.
Include:
**Function signature:**
- Parameter types and descriptions
- Return type and description
- Generic types if applicable
**Description:**
- What the function does (one-line summary)
- Why it exists (use case)
- How it works (implementation details if non-obvious)
**Examples:**
- Basic usage example
- Edge case example if relevant
**Notes:**
- Any side effects
- Performance considerations
- Related functions
Use JSDoc/TSDoc format for TypeScript/JavaScript.Optimization Command
.cursor/commands/optimize-performance.mdmarkdown
# Optimize Performance
Analyze the selected code for performance improvements.
Look for:
**Algorithmic Issues:**
- O(n²) or worse time complexity
- Unnecessary nested loops
- Inefficient data structures
**React-Specific:**
- Unnecessary re-renders
- Missing useMemo/useCallback
- Large component trees
- Props drilling
**General:**
- Redundant computations
- Memory leaks
- Synchronous blocking operations
- Large bundle size contributors
Suggest specific optimizations with code examples.
Estimate performance impact of each suggestion.Refactoring Command
.cursor/commands/refactor-clean.mdmarkdown
# Refactor for Clean Code
Refactor the selected code to improve maintainability.
Apply these principles:
**Extract Functions:**
- Break down large functions (> 50 lines)
- Create single-responsibility functions
- Use descriptive names
**Simplify Logic:**
- Reduce nesting (early returns)
- Eliminate duplication
- Clarify complex conditionals
**Improve Names:**
- Use meaningful variable names
- Follow project naming conventions
- Avoid abbreviations
**Type Safety:**
- Add proper TypeScript types
- Eliminate 'any' types
- Use interfaces/types
Preserve all existing functionality and tests.Bug Fix Command
.cursor/commands/fix-bug.mdmarkdown
# Fix Bug
Analyze and fix the bug in the selected code.
Investigation steps:
1. Identify the root cause
2. Explain why the bug occurs
3. Propose a fix
4. Consider edge cases
5. Suggest tests to prevent regression
Fix requirements:
- Minimal changes to fix the issue
- Don't break existing functionality
- Add/update tests
- Add comments explaining the fix if non-obvious
Explain the fix clearly with before/after code examples.Storage Locations
Commands can be stored in multiple locations (in order of precedence):
- Project commands: directory in your project (shared with team)
.cursor/commands/ - Global commands: directory (personal, all projects)
~/.cursor/commands/ - Team commands: Created via Cursor Dashboard (enterprise teams)
Best practice: Store team-wide commands in and commit to version control.
.cursor/commands/Testing Your Commands
After creating a command:
- Save to
.cursor/commands/command-name.md - Invoke with in Cursor chat
/command-name - Verify AI follows instructions correctly
- Test edge cases:
- No code selected
- Empty files
- Complex code
- Different languages
- Iterate based on results
Commands vs. Cursor Rules
Use Commands When:
- ✅ Simple, focused task
- ✅ Explicit user invocation desired
- ✅ Personal productivity shortcuts
- ✅ One-time operations
Use Cursor Rules When:
- ✅ Context-aware automatic activation
- ✅ File-type specific guidance
- ✅ Team standardization
- ✅ Always-on conventions
Example:
- Command: - Explicitly generate tests when asked
/generate-tests - Rule: Auto-attach testing conventions to files
*.test.ts
Validation Checklist
Before finalizing a command:
- Filename is descriptive and kebab-case
- NO frontmatter (plain Markdown only)
- Instructions are clear and specific
- Expected output format is described
- Examples are included
- Steps are actionable
- Command is focused on one task
- Edge cases are considered
- File is in directory
.cursor/commands/ - Command has been tested
Converting from Other Formats
From Claude Code Slash Commands
Claude Code commands use frontmatter - remove it for Cursor:
Claude Code:
markdown
---
description: Review code
allowed-tools: Read, Grep
---
Review the code...Cursor:
markdown
# Review Code
Review the code...From Cursor Rules
Rules use frontmatter and are context-aware - simplify to plain Markdown:
Cursor Rule:
markdown
---
description: Testing conventions
globs: ["**/*.test.ts"]
---
# Testing Standards
Always write tests...Cursor Command:
markdown
# Generate Tests
Generate comprehensive tests...Common Use Cases
Code Quality
- - Code review
/review-code - - Clean code refactoring
/refactor-clean - - Fix linting issues
/fix-lint - - Improve TypeScript types
/improve-types
Testing
- - Generate unit tests
/generate-tests - - Add edge case tests
/test-edge-cases - - Check test coverage
/test-coverage
Documentation
- - Document function
/document-function - - Add code comments
/add-comments - - Explain complex code
/explain-code
Performance
- - Performance optimization
/optimize-performance - - Analyze time complexity
/analyze-complexity - - Reduce bundle size
/reduce-bundle
Security
- - Security vulnerability check
/security-audit - - Add input validation
/sanitize-input - - Review authentication
/check-auth
References
- Schema:
https://github.com/pr-pm/prpm/blob/main/packages/converters/schemas/cursor-command.schema.json - Docs:
/Users/khaliqgant/Projects/prpm/app/packages/converters/docs/cursor.md - Official Docs: https://cursor.com/docs/agent/chat/commands
Remember
Golden Rules:
- NO frontmatter - plain Markdown only
- Descriptive filenames - they become command names
- Clear instructions - AI needs specific guidance
- Include examples - show desired output
- One task per command - keep it focused
Goal: Create commands that make frequent tasks effortless with a simple invocation.
/command-name