Intro ✨
You've got the perfect prompt ready to go. You've even upgraded to the newest AI mode. But your AI coding buddy is still confused with directory paths, suggests old libraries, or explains stuff like assigning x = 5
as if it's some big deal. Frustrating, am I right?
Here is the thing 👉:
AI coding tools can't read your mind. They don't understand the context behind your project's goal or quirks. But there is a simple fix: contextual rules files.
Why Context is the Key? 🔑
Modern AI Coding helpers like GitHub Copilot, Cursor, and Windsurf have been trained on loads of code. However, without some clear direction, they just default to generic suggestions.
Real-world example 🌍:
You're making a Next.js 14 eCommerce app with Turborepo. You Ask the AI to 'add a product search endpoint.' It throws out REST API in /src/app/api/search/route.js
, but your team uses tRPC in a shared packages/api
module. Now you're stuck rewriting boilerplate.
A rules file can solve this by answering the key questions right from the start:
- Project purpose: This is a high-performance eCommerce platform for sneaker collectors.
- Code structure: Monorepo with Turborepo: apps/web (Next.js 14), packages/api (tRPC).
- Tech stack: PostgresSQL via Neon, Tailwind, TypeScript. Avoid adding new dependencies.
With this context, the AI align with your setup from jump.
Setting Up Your Rules File 🛠️:
Editor-Specific Setup
- VS Code: Turn on GitHub Copilot's Custom Instructions (Settings → Copilot → Configure).
-
Cursor: Create
cursor.rules
in your project root. -
Windsurf: Add
.windsurf.rules
(works with YAML or JSON)
Quick Tip 💡: Start your rules file with:
Every time you apply a rule, say it clearly in the output. This makes the AI "show its work," so you can check its decisions.
Crafting Your Rules File: 4 Key Sections
A. Project Context 📜
Bad Example: An e-commerce app using Next.js
Good Example:
Purpose: A curated marketplace for rare sneakers. Focus on performance (Core Web Vitals > 90) and security (PCI compliance). Why it works: It explains why the project exists, helping the AI prioritize properly.
B. Codebase Structure 🗂️:
Bad Example: We use a monorepo.
Good Example:
STRUCTURE:
-
apps/web
: Next.js 14 (App Router) frontend. -
packages/api
: tRPC v11 routers. All backend logic lives here. -
packages/ui
: Shared components using Shadcn/ui.Result:
When you ask the AI to "add a newsletter form," it knows to place it in packages/ui/components
instead of duplicating it in /src/components
.
C. Tech Stack 🖥️
Bad Example: We use JavaScript.
Good Example:
TECH:
- Language: TypeScript (strict mode).
- DB: PostgreSQL (Neon Serverless). Never suggest MongoDB.
- Styling: Tailwind + CSS Modules. Avoid inline styles.
Impact: The AI won't suggest mongoose for MongoDB or add random style={{}}
props.
D. Custom Rules 📏
Only add rules for the problems the AI keeps messing up:
RULES:
- Functions: camelCase. TypeScript interfaces: PascalCase.
- Comments: Only for complex business logic (e.g., scoring algorithms).
- API Errors: Use Zod for validation, never manual checks.
Real-World Success Stories 🏆
Case 1: Automating Visa Appointments
Problem: The AI kept suggesting Python scripts with selenium
, but the team used Playwright in a TypeScript monorepo.
Rules File Fix 🩹:
Purouse: Automate Schengen visa bookings for Spain (the consulate requires Chrome).
Tech: Playwright (TypeScript), AWS Lambda deployment. Now the AI generates Playwright scripts with Lambda-ready handlers.
Case 2: Enforcing Commit Standards
Problem: Commit messages were inconsistent like "fixed stuff."
Rules File Fix:
Git: Use Conventional Commits (e.g., feat: add checkout cart). The AI code assistant's one-click commit generator now outputs feat(cart): add guest checkout
.
Keeping Your Rules File Up to Date 🔄
Golden Rule: Less is more.
Do ✅:
- Add rules bit by bit. After the AI suggested
moment.js
(deprecated):-
Tech: Use
date-fns
for dates. Skipmoment.js
.
-
Tech: Use
- Review the file weekly. Clean up old rules.
Don't ❌:
Write a whole book. If your file gets over 50 lines, split it into specific rules (e.g., backend. Rules
).
The Future of Context-Aware AI 🚀
Here are some trends to keep an eye on:
-
Conditional Context: If the task involves "database," INCLUDE
schemas/prisma/schema.prisma
-
AI-Generated Rules: I noticed you turned down
lodash
three times. Want to add a rule to prefer native methods?"
Wrap Up 🎁
Contextual rules files transform your AI assistant from a "talented intern" into a senior engineer who knows your codebase like the back of their hand. Start small:
- Create a rules with your project’s purpose.
- Add one rule for your tech stack.
- Let the AI explain its decisions with "State applied rules".
Before you know it, you’ll spend less time fixing errors and more time building.
Bonus 🎉: Here’s an example template to kick off your rules file.
# **SneakerEcom AI Rules Template**
`cursor.rules` | `.windsurf.rules` | `copilot_instructions.md`
### **PURPOSE**
- Build a high-performance marketplace for limited-edition sneakers.
- Prioritize:
- Fast Core Web Vitals (LCP < 1.2s, INP < 200ms)
- PCI-DSS compliance for checkout flows
- Scalable inventory management for 100k+ SKUs
### STRUCTURE
- MONOREPO (Turborepo):
- `apps/storefront`: Next.js 14 (App Router) + Tailwind
- `apps/admin`: React dashboard for inventory/orders
- `packages/api`: tRPC routers (product, cart, payment)
- `packages/ui`: Shared components using shadcn/ui
- `packages/db`: PostgreSQL schema (via Neon) + Drizzle ORM
### TECH
- Language: TypeScript (strict: true)
- Database: PostgreSQL (Neon Serverless) + Redis (Upstash)
- APIs:
- Payment: Stripe (reject PayPal/Paddle suggestions)
- Search: Algolia (never implement raw SQL search)
- Styling:
- Tailwind + CSS Modules
- Reject inline styles or CSS-in-JS
- Images: Use Next.js Image + Imgix optimization
### RULES
1. **Naming**:
- React components: PascalCase (e.g., `SneakerCard.tsx`)
- API endpoints: kebab-case (e.g., `/api/checkout/create-session`)
2. **Comments**:
- Only add JSDoc for complex pricing logic
(e.g., dynamic coupon stacking)
- No obvious comments (e.g., "// sets price to 100")
3. **Errors**:
- Use Zod for API input validation
- Return HTTP 429 for rate-limited endpoints
- Never expose database errors (mask with "Something went wrong")
4. **Security**:
- All forms: Sanitize inputs with DOMPurify
- Cookies: `SameSite=Strict` for auth
- Payment: Never store raw Stripe IDs in logs
5. **Performance**:
- Lazy-load product carousels with `React.lazy`
- All images: `loading="lazy"` + WebP format
- API responses: Cache for 10s via `@vercel/kv`
### EXAMPLE TRIGGER
// When asked to "add a new product variant selector":
// AI applies these rules automatically:
// - Creates component in `packages/ui/components/product`
// - Uses Radix UI for accessibility
// - Adds JSDoc explaining size mapping logic
// - Output: "Applied rules: TECH (Imgix), RULES (Comments)"
Pro Tip 🌟: Start with your starting template, then add rules when the AI makes mistakes (e.g., after it suggests
localStorage
for cart data instead of cookies).
Top comments (0)