Windsurf rules: .windsurf/rules format and generator
Windsurf (now part of Devin Desktop) reads workspace rules from Markdown files in .windsurf/rules/. Each file has frontmatter with a trigger: always_on, glob (with globs), model_decision (with a description) or manual. Windsurf also reads AGENTS.md.
Generate a Windsurf rules file
Where the file goes
.windsurf/rules/*.mdin the workspace. Newer releases also support.devin/rules/; check your version.- Legacy single-file
.windsurfrulesat the root.
How it works
always_onrules load every message.globrules load when matching files are involved.model_decisionrules load when the description looks relevant.manualrules load only when you @-mention them.
Tips for a good Windsurf rules
- Windsurf limits rule file size, so keep files short and focused.
- Use one always-on project rule and scope the rest by glob.
Example: SvelteKit (Svelte 5) + Tailwind CSS v4
.windsurf/rules/project.md
---
trigger: always_on
---
# this project
A SvelteKit (Svelte 5) + Tailwind CSS v4 project.
Stack: SvelteKit (Svelte 5), Tailwind CSS v4.
## Commands
- Dev server: `npm run dev`
- Build: `npm run build`
- Type check: `npm run check`
## How to work in this repo
- Read the relevant files before editing. Follow the patterns already in the codebase over these generic rules.
- Make the smallest change that solves the task. Do not refactor or reformat unrelated code.
- Before saying a task is done, run the type-check, lint and tests listed under Commands and fix what you broke.
- If requirements are ambiguous, ask one clear question instead of guessing.
- Never commit secrets, API keys or `.env` files. Use env vars and keep `.env.example` up to date.
- Do not add a new dependency when the standard library or an existing dependency already covers it.
- Ask before adding, removing or upgrading any dependency.
- Ask before changing database schemas, auth, payments or CI configuration.
- Never delete files, drop data or run destructive commands (`rm -rf`, `git push --force`, `DROP TABLE`) without explicit approval.
- Keep each change under ~200 changed lines where possible; split larger work into steps.
.windsurf/rules/sveltekit.md
---
trigger: glob
globs: src/**/*.svelte, src/**/*.ts
---
# SvelteKit (Svelte 5)
- Use Svelte 5 runes: `$state`, `$derived`, `$effect`, `$props`. Do not use legacy `export let` or `$:` syntax in new code.
- Prefer `$derived` over `$effect` for computed values. Use `$effect` only for real side effects.
- Load data in `+page.server.ts` / `+layout.server.ts` `load` functions, not in `onMount`.
- Handle form submissions with form actions and `use:enhance`.
- Read secrets from `$env/static/private` or `$env/dynamic/private`, only in server files.
- Use `error()` and `redirect()` from `@sveltejs/kit` for control flow in load functions and actions.
.windsurf/rules/tailwind.md
---
trigger: glob
globs: **/*.css, **/*.tsx, **/*.vue, **/*.svelte, **/*.astro, **/*.html, **/*.blade.php, **/*.erb
---
# Tailwind CSS v4
- Tailwind v4 is configured in CSS: `@import "tailwindcss";` plus `@theme { ... }` for design tokens. Do not create a `tailwind.config.js` unless the project already has one.
- Use theme tokens (colors, spacing) instead of arbitrary values like `w-[37px]`.
- Build responsive layouts mobile-first with `sm:`, `md:`, `lg:` prefixes.
- Extract repeated class lists into components, not `@apply` chains.
- Support dark mode with the `dark:` variant when the project uses it.
FAQ
What happened to .windsurfrules?
It is the legacy single-file format. Use .windsurf/rules/*.md files with triggers for new projects.
Windsurf rules templates by stack
- Next.js (App Router) + Tailwind CSS v4 + shadcn/ui + Supabase + Zod validation Windsurf rules
- Next.js (App Router) + Tailwind CSS v4 Windsurf rules
- Next.js (App Router) + Tailwind CSS v4 + Prisma + Stripe payments + Zod validation Windsurf rules
- Next.js (App Router) + Tailwind CSS v4 + Drizzle ORM + Clerk auth + Zod validation Windsurf rules
- Next.js (App Router) + Tailwind CSS v4 + shadcn/ui + Vercel AI SDK + Zod validation Windsurf rules
- Next.js (App Router) + Tailwind CSS v4 + Supabase + Stripe payments + Zod validation + Vitest Windsurf rules
- Next.js (App Router) + Tailwind CSS v4 + Firebase Windsurf rules
- Next.js (App Router) + Tailwind CSS v4 + Vitest + Playwright E2E Windsurf rules
- React + Vite + Tailwind CSS v4 + TanStack Query + Vitest + Zod validation Windsurf rules
- React + Vite + Tailwind CSS v4 + Supabase + Zustand Windsurf rules
- React + Vite + Tailwind CSS v4 + Firebase + Vitest Windsurf rules
- Astro + Tailwind CSS v4 Windsurf rules
- SvelteKit (Svelte 5) + Tailwind CSS v4 + Supabase + Zod validation Windsurf rules
- SvelteKit (Svelte 5) + Tailwind CSS v4 + Drizzle ORM + Vitest Windsurf rules
- Nuxt (Vue 3) + Tailwind CSS v4 + Zod validation Windsurf rules
- Nuxt (Vue 3) + Tailwind CSS v4 + Supabase Windsurf rules
- Expo (React Native) + Supabase + Zod validation + Jest Windsurf rules
- Expo (React Native) + TanStack Query + Zustand + Jest Windsurf rules
- Node.js + Express + Prisma + Zod validation + Vitest + Docker Windsurf rules
- Node.js + Express + Drizzle ORM + Zod validation + Docker Windsurf rules
- Python + FastAPI + SQLAlchemy 2 + Alembic + pytest + Docker Windsurf rules
- Python + FastAPI + LLM / agent SDKs (Python) + pytest Windsurf rules
- Python + FastAPI + Supabase + pytest Windsurf rules
- Python (scripts, agents, libraries) + LLM / agent SDKs (Python) + pytest Windsurf rules
- Python + Django + pytest + Docker Windsurf rules
- Python + Django + Tailwind CSS v4 + pytest Windsurf rules
- Ruby on Rails + Tailwind CSS v4 + Docker Windsurf rules
- PHP + Laravel + Tailwind CSS v4 + Stripe payments Windsurf rules
- Go + Docker Windsurf rules
- Rust + Axum + Docker Windsurf rules
- Java + Spring Boot + Docker Windsurf rules
- Flutter (Dart) + Firebase Windsurf rules
- Flutter (Dart) + Supabase Windsurf rules
- Swift + SwiftUI Windsurf rules
- Unity (C#) Windsurf rules
- Godot 4 (GDScript) Windsurf rules
- Phaser (TypeScript web games) + Vitest Windsurf rules
- Chrome Extension (MV3) + Tailwind CSS v4 + Zustand + Vitest Windsurf rules
Official docs: Windsurf / Devin Desktop docs. Last reviewed 2026-10-21.