Expert guidance for creating effective Cursor slash commands with best practices, format requirements, and schema validation
You are an expert at creating effective Cursor slash commands (.cursor/commands/*.md) that provide clear, actionable instructions for AI assistants.
Use when:
Don't use for:
.cursor/rules/) - use creating-cursor-rules-skill instead| Aspect | Requirement |
|---|---|
| File Location | .cursor/commands/*.md |
| Format | Plain Markdown (NO frontmatter) |
| Filename | Descriptive kebab-case (e.g., review-code.md, generate-tests.md) |
| Invocation | /command-name in chat |
| Content | Clear, actionable instructions with examples |
Good filenames:
review-code.md → /review-codegenerate-tests.md → /generate-testsexplain-code.md → /explain-codeoptimize-performance.md → /optimize-performanceBad filenames:
rc.md - Too crypticreview_code.md - Use hyphens, not underscoresReviewCode.md - Use lowercasereview-code-thoroughly-with-security-checks.md - Too verbosehttps://github.com/pr-pm/prpm/blob/main/packages/converters/schemas/cursor-command.schema.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
}
content field| Mistake | Why It's Wrong | How to Fix |
|---|---|---|
| Adding frontmatter | Cursor commands don't support frontmatter | Remove --- blocks entirely |
| 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 |
❌ Bad - Vague:
# Review Code
Review the code for issues.
✅ Good - Specific:
# 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.
❌ Bad - No guidance:
# Generate Tests
Generate tests for this code.
✅ Good - Clear format:
# 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.
✅ Good - Structured approach:
# 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 codebase
✅ Good - Context-aware:
# 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.
Each command should do ONE thing well.
❌ Bad - Too broad:
# Full Stack Feature
Create a full-stack feature with:
- Database migration
- API endpoint
- Frontend component
- Tests for everything
- Documentation
✅ Good - Focused:
# 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 endpoints
.cursor/commands/review-code.md:
# 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).
.cursor/commands/generate-tests.md:
# 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.
.cursor/commands/document-function.md:
# 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.
.cursor/commands/optimize-performance.md:
# 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.
.cursor/commands/refactor-clean.md:
# 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.
.cursor/commands/fix-bug.md:
# 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.
Commands can be stored in multiple locations (in order of precedence):
.cursor/commands/ directory in your project (shared with team)~/.cursor/commands/ directory (personal, all projects)Best practice: Store team-wide commands in .cursor/commands/ and commit to version control.
After creating a command:
.cursor/commands/command-name.md/command-name in Cursor chatExample:
/generate-tests - Explicitly generate tests when asked*.test.ts filesBefore finalizing a command:
.cursor/commands/ directoryClaude Code commands use frontmatter - remove it for Cursor:
Claude Code:
---
description: Review code
allowed-tools: Read, Grep
---
Review the code...
Cursor:
# Review Code
Review the code...
Rules use frontmatter and are context-aware - simplify to plain Markdown:
Cursor Rule:
---
description: Testing conventions
globs: ["**/*.test.ts"]
---
# Testing Standards
Always write tests...
Cursor Command:
# Generate Tests
Generate comprehensive tests...
/review-code - Code review/refactor-clean - Clean code refactoring/fix-lint - Fix linting issues/improve-types - Improve TypeScript types/generate-tests - Generate unit tests/test-edge-cases - Add edge case tests/test-coverage - Check test coverage/document-function - Document function/add-comments - Add code comments/explain-code - Explain complex code/optimize-performance - Performance optimization/analyze-complexity - Analyze time complexity/reduce-bundle - Reduce bundle size/security-audit - Security vulnerability check/sanitize-input - Add input validation/check-auth - Review authenticationhttps://github.com/pr-pm/prpm/blob/main/packages/converters/schemas/cursor-command.schema.json/Users/khaliqgant/Projects/prpm/app/packages/converters/docs/cursor.mdGolden Rules:
Goal: Create commands that make frequent tasks effortless with a simple /command-name invocation.