Claude-code-plugins cursor-rules-config
install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/cursor-pack/skills/cursor-rules-config" ~/.claude/skills/jeremylongshore-claude-code-plugins-cursor-rules-config && rm -rf "$T"
manifest:
plugins/saas-packs/cursor-pack/skills/cursor-rules-config/SKILL.mdsource content
Cursor Rules Config
Configure project-specific AI behavior through Cursor's rules system. The modern approach uses
.cursor/rules/*.mdc files; the legacy .cursorrules file is still supported but deprecated.
Rules System Architecture
Modern Project Rules (.cursor/rules/*.mdc)
Each
.mdc file contains YAML frontmatter followed by markdown content:
--- description: "Enforce TypeScript strict mode and functional patterns" globs: "src/**/*.ts,src/**/*.tsx" alwaysApply: false --- # TypeScript Standards - Use `const` over `let`, never `var` - Prefer pure functions over classes - All functions must have explicit return types - Use discriminated unions over enums
Frontmatter fields:
| Field | Type | Purpose |
|---|---|---|
| string | Concise rule purpose (shown in Cursor UI) |
| string | Gitignore-style patterns for auto-attachment |
| boolean | = always active; = only when matching files referenced |
Rule Types by alwaysApply
+ globs
Combination
alwaysApplyglobs| alwaysApply | globs | Behavior |
|---|---|---|
| empty | Always injected into every prompt |
| set | Auto-attached when matching files are in context |
| empty | Manual only -- reference with in chat |
File Naming Convention
Use kebab-case with
.mdc extension. Names should describe the rule's scope:
.cursor/rules/ typescript-standards.mdc react-component-patterns.mdc api-error-handling.mdc testing-conventions.mdc database-migrations.mdc security-requirements.mdc
Create new rules via:
Cmd+Shift+P > New Cursor Rule
Complete Project Rules Example
(always-on):.cursor/rules/project-context.mdc
--- description: "Core project context and conventions" globs: "" alwaysApply: true --- # Project: E-Commerce Platform Tech stack: Next.js 15, TypeScript 5.7, Prisma ORM, PostgreSQL, Tailwind CSS 4. Package manager: pnpm. Monorepo with turborepo. ## Conventions - API routes in `app/api/` using Route Handlers - Server Components by default, `"use client"` only when needed - Error boundaries at layout level - All monetary values stored as integers (cents) - Dates stored as UTC, displayed in user timezone
(glob-scoped):.cursor/rules/react-patterns.mdc
--- description: "React component standards for TSX files" globs: "src/**/*.tsx,app/**/*.tsx" alwaysApply: false --- # React Component Rules - Export components as named exports, not default - Props interface named `{Component}Props` - Use `forwardRef` for components accepting `ref` - Colocate styles in `.module.css` files - Server Components: no `useState`, `useEffect`, or event handlers ```tsx // Correct pattern export interface ButtonProps { variant: 'primary' | 'secondary'; children: React.ReactNode; onClick?: () => void; } export function Button({ variant, children, onClick }: ButtonProps) { return ( <button className={styles[variant]} onClick={onClick}> {children} </button> ); }
**`.cursor/rules/api-routes.mdc`** (glob-scoped): ```yaml --- description: "API route handler patterns" globs: "app/api/**/*.ts" alwaysApply: false --- # API Route Standards - Always validate request body with Zod - Return typed `NextResponse.json()` responses - Use consistent error response shape: `{ error: string, code: string }` - Wrap handlers in try/catch with structured logging ```ts import { NextRequest, NextResponse } from 'next/server'; import { z } from 'zod'; const CreateOrderSchema = z.object({ items: z.array(z.object({ productId: z.string().uuid(), quantity: z.number().int().positive(), })), }); export async function POST(req: NextRequest) { try { const body = await req.json(); const parsed = CreateOrderSchema.parse(body); const order = await createOrder(parsed); return NextResponse.json(order, { status: 201 }); } catch (err) { if (err instanceof z.ZodError) { return NextResponse.json( { error: 'Validation failed', code: 'INVALID_INPUT', details: err.issues }, { status: 400 } ); } return NextResponse.json( { error: 'Internal server error', code: 'INTERNAL_ERROR' }, { status: 500 } ); } }
## Legacy .cursorrules Format Place a `.cursorrules` file in project root. Plain markdown, no frontmatter: ```markdown # Project Rules You are working on a Django REST Framework API. ## Stack - Python 3.12, Django 5.1, DRF 3.15 - PostgreSQL 16 with pgvector extension - Redis for caching and Celery broker - pytest for testing ## Conventions - ViewSets over function-based views - Always use serializer validation - Custom exceptions inherit from `APIException` - All endpoints require authentication unless explicitly marked - Use `select_related` and `prefetch_related` to avoid N+1 queries ## Code Style - Type hints on all function signatures - Docstrings on all public methods (Google style) - Max function length: 30 lines
Migration: .cursorrules to .cursor/rules/
Split a monolithic
.cursorrules into scoped .mdc files:
- Create
directory.cursor/rules/ - Extract global context into an
rulealwaysApply: true - Extract language/framework rules into glob-scoped rules
- Delete
after verifying all rules load.cursorrules
Referencing Files in Rules
Use
@file syntax to include additional context files when a rule is applied:
--- description: "Database schema context for migration files" globs: "prisma/**/*.prisma,drizzle/**/*.ts" alwaysApply: false --- Reference these files for schema context: @prisma/schema.prisma @docs/data-model.md
Debugging Rules
- Open Chat and type
to see which rules are active@Cursor Rules - Check glob patterns match your files: open a file, then verify the rule appears in context pills
- Rules with
always show; glob rules only appear when matching files are in contextalwaysApply: true
Enterprise Considerations
- Version control: Commit
to git -- rules are project documentation.cursor/rules/ - Team alignment: Use
for team-wide standardsalwaysApply: true - Sensitive data: Never put API keys, secrets, or credentials in rules files
- Rule size: Keep individual rules focused and under 200 lines; split large rules into multiple files
- Audit trail: Rules changes appear in git history for compliance review