Cursor Rules for Next.js
11 Cursor rules for Next.js (Server/Client Components and more), written against current docs. Installs in one command, exports AGENTS.md. $12 once.
View Cursor Rules for Next.js
One download, every stack: the installer looks at each repo and installs only the rules it needs, from Next.js 16 to Rails 8, Django and Supabase.

11 Cursor rules for Next.js (Server/Client Components and more), written against current docs. Installs in one command, exports AGENTS.md. $12 once.
View Cursor Rules for Next.js10 Cursor rules for Django (models and N+1 and more), written against current docs. Installs in one command, exports AGENTS.md. $12 once.
View Cursor Rules for Django9 Cursor rules for Rails (Active Record and more), written against current docs. Installs in one command, exports AGENTS.md. $12 once.
View Cursor Rules for Rails8 Cursor rules for Supabase (Row Level Security policies and more), written against current docs. Installs in one command, exports AGENTS.md. $12 once.
View Cursor Rules for Supabase24 Cursor rules (.mdc) for Next.js, TypeScript, React, Python, FastAPI, Django, Go, Rust and more. Detects your stack, installs in one command, lints your rules. $12 once.
View Cursor Rules Pack59 Cursor project rules (.mdc) for the Next.js, Django, Rails and Supabase packs plus 21 general rules (agent workflow, commits, tests, security, review, TypeScript, React, Tailwind, Node, Python, FastAPI, Go, Rust, Spring Boot, Flutter, SQL, Docker, GitHub Actions, Terraform), scoped so each loads only when relevant, with an installer that detects your stack, an AGENTS.md exporter (Claude Code, Codex) and a rules linter. Written against current docs (checked Nov 2026; Next.js 16; Django 5.2 LTS/6.0; Rails 8; Supabase publishable/secret keys, @supabase/ssr).
The screenshot is real output from the kit’s own commands. Tested from a fresh download of this exact zip: ./run_tests.sh ran 8 tests OK on Python 3.13 and 3.10.

python3 tools/install_rules.py --detect /path/to/app # what it finds
python3 tools/install_rules.py /path/to/app --auto # install rules for detected stacks into .cursor/rules/
python3 tools/install_rules.py /path/to/app --all --agents-md # everything, plus AGENTS.md
python3 tools/lint_rules.py /path/to/app/.cursor/rules --project /path/to/appExisting files are never overwritten unless you pass --force; --dry-run previews. ./tools/demo.sh runs it on examples/sample-app; ./run_tests.sh runs the tests. As a Cursor plugin, the manifest is .cursor-plugin/plugin.json.
| Rule | Loads | First instruction |
|---|---|---|
| core-agent-workflow.mdc | always | Read the files you are about to change, and the code that calls them, before editing |
| core-git-commits.mdc | Agent picks it | Commit subject: imperative mood, ≤ 72 characters, no trailing period: Fix rounding in invoice totals, not fixed... |
| core-testing.mdc | Agent picks it | Use the test framework and folder layout the repo already uses |
| core-security.mdc | Agent picks it | Treat all input as untrusted: request bodies, query strings, headers, file names, webhook payloads, LLM output |
| core-code-review.mdc | @-mention | |
| core-docs.mdc | Agent picks it | When behavior, configuration, env vars, commands or public APIs change, update the README/docs in the same change |
| core-error-handling.mdc | Agent picks it | Never swallow errors: no empty catch {} / except: pass |
| typescript.mdc | by file (/*.ts, /*.tsx) | Keep strict on |
| react.mdc | by file (/*.tsx, /*.jsx) | Function components and hooks only |
| tailwind.mdc | by file (/*.tsx, /*.jsx, /*.html, /*.vue, tailwind.config.*) | Use the design tokens in the Tailwind config/theme (colors, spacing, fonts) |
| node-express.mdc | Agent picks it | Validate every request body, params and query at the route boundary with the repo's schema library |
| python.mdc | by file (/*.py) | Follow the formatter/linter config in pyproject.toml (ruff/black/isort) |
| fastapi.mdc | Agent picks it | Request and response bodies are Pydantic models |
| go.mdc | by file (/*.go) | gofmt/goimports formatting |
| rust.mdc | by file (/*.rs, Cargo.toml) | cargo fmt and cargo clippy -- -D warnings clean before finishing |
| java-spring-boot.mdc | by file (/*.java, pom.xml, build.gradle*) | Constructor injection (final fields), no field @Autowired |
| flutter-dart.mdc | by file (/*.dart, pubspec.yaml) | Sound null safety: avoid ! |
| sql-migrations.mdc | by file (/migrations/, /*.sql, /migrate/) | Never edit a migration that has already run in any shared environment |
| docker.mdc | by file (/Dockerfile*, /docker-compose*.yml, /docker-compose*.yaml, /compose*.yaml, .dockerignore) | Pin base images to a specific version tag (and digest for production), never latest |
| github-actions.mdc | by file (.github/workflows/, .github/actions/) | Set least-privilege permissions: at the top of each workflow (contents: read by default) and grant more per job... |
| terraform.mdc | by file (/*.tf, /*.tfvars) | Run terraform fmt and terraform validate |
| nextjs-overview.mdc | always | Check the next version in package.json before using an API |
| nextjs-server-client-components.mdc | by file (app//*.tsx, src/app//*.tsx, components//*.tsx, src/components//*.tsx) | Default to Server Components |
| nextjs-async-request-apis.mdc | by file (app//page.tsx, app//layout.tsx, app//route.ts, src/app//page.tsx, src/app//layout.tsx, src/app//route.ts) | params and searchParams are Promises: const { slug } = await props.params |
| nextjs-data-caching.mdc | Agent picks it | Since Next.js 15, fetch and GET Route Handlers are not cached by default |
| nextjs-server-actions.mdc | Agent picks it | Treat every 'use server' function as a public POST endpoint: re-check authentication and authorization inside the... |
| nextjs-route-handlers.mdc | by file (app//route.ts, src/app//route.ts, app//route.js, src/app//route.js) | Export named functions per method (GET, POST, ...) |
| nextjs-proxy.mdc | by file (proxy.ts, src/proxy.ts, middleware.ts, src/middleware.ts) | Next.js 16 renames middleware.ts to proxy.ts and the export to proxy |
| nextjs-metadata-seo.mdc | by file (app//layout.tsx, app//page.tsx, app/sitemap.ts, app/robots.ts, src/app//layout.tsx, src/app//page.tsx) | Use export const metadata or export async function generateMetadata({ params }) in Server Component pages and... |
| nextjs-images-fonts.mdc | by file (next.config.*, app//*.tsx, components//*.tsx, src//*.tsx) | Use next/image with explicit width/height (or fill plus a sized parent) and a real alt |
| nextjs-config-env.mdc | by file (next.config.*, .env.example, package.json) | serverRuntimeConfig/publicRuntimeConfig are removed in 16 |
| nextjs-errors-loading.mdc | by file (app//error.tsx, app//not-found.tsx, app//loading.tsx, app//default.tsx, src/app//error.tsx, src/app//loading.tsx) | error.tsx must be a Client Component ('use client') and receives error and reset |
| django-overview.mdc | always | Check the Django version (requirements/pyproject/lockfile) before using an API |
| django-models-orm.mdc | by file (/models.py, /models/*.py, /managers.py, /services.py) | Avoid N+1 queries: select_related() for ForeignKey/OneToOne, prefetch_related() for reverse and many-to-many |
| django-migrations.mdc | by file (/migrations/*.py) | Never edit a migration that has been applied in any shared environment |
| django-views-urls.mdc | by file (/views.py, /views/*.py, /urls.py) | Match the repo's style (function-based or class-based views) |
| django-forms-validation.mdc | by file (/forms.py, /forms/*.py) | Validate all user input through a Form, ModelForm or serializer |
| django-security.mdc | by file (/settings.py, /settings/*.py) | Production: DEBUG = False, explicit ALLOWED_HOSTS, SECRET_KEY from the environment, SECURE_SSL_REDIRECT,... |
| django-templates.mdc | by file (/templates//*.html) | Keep autoescaping on |
| django-tasks.mdc | Agent picks it | Use the queue the project already has (Celery, RQ, Django-Q, or Django 6.0 django.tasks) |
| django-drf.mdc | by file (/serializers.py, /api//*.py, /viewsets.py) | Serializers list fields explicitly |
| django-testing.mdc | by file (/tests.py, /tests//*.py, /test_*.py, conftest.py) | Use the framework the repo uses (pytest-django or django.test.TestCase) |
| rails-overview.mdc | always | Check the Rails version in Gemfile.lock before using an API |
| rails-models.mdc | by file (app/models//*.rb) | Back every validation that matters with a database constraint (null: false, unique index, foreign key) |
| rails-migrations.mdc | by file (db/migrate/*.rb) | Never edit a migration that has run outside your machine |
| rails-controllers.mdc | by file (app/controllers//*.rb) | Rails 8+: use params.expect(post: [:title, :body]) instead of params.require(:post).permit(:title, :body) |
| rails-jobs.mdc | by file (app/jobs//*.rb, config/recurring.yml, config/queue.yml) | Rails 8 production default is Solid Queue (database-backed, config/queue.yml, recurring work in... |
| rails-hotwire-views.mdc | by file (app/views//*.erb, app/javascript//*.js, app/helpers//*.rb) | Rails 8 default front end: Propshaft + importmap + Turbo + Stimulus |
| rails-security.mdc | by file (config//*.rb, app/controllers//*.rb, app/models/user.rb) | Secrets in bin/rails credentials:edit (or env vars) |
| rails-testing.mdc | by file (test//*.rb, spec//*.rb) | Use the repo's framework: Minitest (Rails default, bin/rails test) or RSpec |
| rails-deploy-kamal.mdc | by file (config/deploy.yml, config/deploy.*.yml, .kamal/, Dockerfile) | Rails 8 apps deploy with Kamal 2 (config/deploy.yml) and Thruster in front of Puma, from the generated Dockerfile |
| supabase-overview.mdc | always | Keys: the publishable key (sb_publishable_...) is for anything shipped to users and only reaches what Row Level... |
| supabase-rls-policies.mdc | by file (supabase/migrations//*.sql, supabase//*.sql) | alter table x enable row level security; in the same migration that creates the table |
| supabase-ssr-auth.mdc | by file (utils/supabase/, lib/supabase/, src/lib/supabase/, proxy.ts, middleware.ts, app/auth/) | Use @supabase/ssr (createBrowserClient, createServerClient) |
| supabase-migrations-cli.mdc | by file (supabase/migrations//*.sql, supabase/config.toml, supabase/seed.sql) | New change: supabase migration new add_notes and write SQL, or make the change locally and capture it with... |
| supabase-queries.mdc | by file (/*.ts, /*.tsx) | Type the client: createClient<Database>(...) with generated types |
| supabase-edge-functions.mdc | by file (supabase/functions/) | Functions live in supabase/functions/<name>/index.ts and use Deno.serve |
| supabase-storage.mdc | Agent picks it | Buckets are private unless the files are truly public |
| supabase-realtime.mdc | Agent picks it | postgres_changes only streams tables added to the supabase_realtime publication, and it respects RLS for the... |
Zip, 75 KB, v1.0, 150 files. You may use and modify this kit for your own work and for clients you serve, including paid client work. Not affiliated with or endorsed by Cursor (Anysphere).
59 Cursor rules: Next.js 16, Django, Rails 8, Supabase and general rules for TypeScript, Python, Go and more. Detects each repo's stack. $29 once, $60 value.
SEO MCP server for Claude Code, Cursor and Claude Desktop: page audits, redirect chains, robots.txt, sitemaps and site crawls. No API keys or credits. $29 once.
View SEO Audit MCP Server8 Cursor rules for Laravel, written against current docs. Installs in one command, exports AGENTS.md for Claude Code and Codex. $12 once.
View Cursor Rules for LaravelFree Laravel Cursor rules in .mdc format, checked against current Laravel docs, plus a linter that shows why a rule isn't applying.
View Laravel Cursor Rules Starter (Free)