<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Olivia Craft</title>
    <description>The latest articles on DEV Community by Olivia Craft (@olivia_craft).</description>
    <link>https://dev.to/olivia_craft</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3860999%2Fbb205e04-9977-4cb0-88e0-ffbbf2f009ab.png</url>
      <title>DEV Community: Olivia Craft</title>
      <link>https://dev.to/olivia_craft</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/olivia_craft"/>
    <language>en</language>
    <item>
      <title>The Freelancer's Guide to Cursor Rules: One File Per Client</title>
      <dc:creator>Olivia Craft</dc:creator>
      <pubDate>Sun, 05 Apr 2026 05:46:29 +0000</pubDate>
      <link>https://dev.to/olivia_craft/the-freelancers-guide-to-cursor-rules-one-file-per-client-55hm</link>
      <guid>https://dev.to/olivia_craft/the-freelancers-guide-to-cursor-rules-one-file-per-client-55hm</guid>
      <description>&lt;p&gt;Have you ever started a new freelance project and spent the first 3 days just explaining your setup to the AI?&lt;/p&gt;

&lt;p&gt;Your stack, your coding style, your client's requirements, your preferred patterns — over and over again, with every new conversation.&lt;/p&gt;

&lt;p&gt;I did. Then I stopped.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Freelancer's Context Problem
&lt;/h2&gt;

&lt;p&gt;When you're juggling 3-4 clients at once, each project has its own:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tech stack and versions&lt;/li&gt;
&lt;li&gt;Code style preferences
&lt;/li&gt;
&lt;li&gt;Business logic quirks&lt;/li&gt;
&lt;li&gt;Naming conventions&lt;/li&gt;
&lt;li&gt;Things the client explicitly hates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most freelancers handle this by re-explaining everything every session. Senior freelancers keep a mental model. Smart freelancers build systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  One File Per Client
&lt;/h2&gt;

&lt;p&gt;Here's the setup that changed how I work:&lt;/p&gt;

&lt;p&gt;I keep a  file in every client project. Not a generic one — a specific, living document that captures everything Cursor needs to know to produce useful output immediately.&lt;/p&gt;

&lt;p&gt;any&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Pays Off Compoundingly
&lt;/h2&gt;

&lt;p&gt;Session 1 with this file: Cursor writes code that fits the project without me explaining anything.&lt;/p&gt;

&lt;p&gt;Session 10: The file has grown. It includes patterns we established, decisions we documented, things we discovered broke.&lt;/p&gt;

&lt;p&gt;Session 50: I have institutional knowledge captured in a file. When I onboard a subcontractor, I hand them the file. When the client asks why we made a decision 3 months ago, the answer is there.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Proposal Angle
&lt;/h2&gt;

&lt;p&gt;Here's something most freelancers miss: a well-maintained  file is also a scoping tool.&lt;/p&gt;

&lt;p&gt;Before I write a project proposal, I spend 30 minutes building a draft  based on the client's requirements. It forces me to think through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What stack decisions need to be made upfront&lt;/li&gt;
&lt;li&gt;What context I'll need during development&lt;/li&gt;
&lt;li&gt;What patterns the client will likely insist on&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the time I write the proposal, I actually understand the project. My estimates are better. My questions to the client are sharper. I win more projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Freelancer's Cursor Setup
&lt;/h2&gt;

&lt;p&gt;If you're billing by the hour, AI context efficiency directly affects your margin. Here's what I run:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Per-client rules&lt;/strong&gt; (in each project ):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Client business context&lt;/li&gt;
&lt;li&gt;Tech stack decisions&lt;/li&gt;
&lt;li&gt;Things that are live and untouchable&lt;/li&gt;
&lt;li&gt;Current sprint focus&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Global rules&lt;/strong&gt; (in Cursor settings):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your personal coding style&lt;/li&gt;
&lt;li&gt;Your preferred patterns for common tasks&lt;/li&gt;
&lt;li&gt;Your default error handling approach&lt;/li&gt;
&lt;li&gt;Languages/frameworks you hate and why&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The combination means Cursor knows you + knows the client. Output quality goes up. Revision cycles go down.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Unlock
&lt;/h2&gt;

&lt;p&gt;The dirty secret of freelancing with AI is that most people use it like a search engine with autocomplete. They ask questions. They paste code. They explain the same context 50 times.&lt;/p&gt;

&lt;p&gt;The freelancers who are quietly doubling their output are the ones who invested 20 minutes building proper context infrastructure.&lt;/p&gt;

&lt;p&gt;Your  file isn't a configuration file. It's a knowledge system.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you want a head start, I put together a Cursor Rules Pack with 7 production-tested templates for common freelance scenarios — client onboarding, API integrations, SaaS projects, and more. &lt;a href="https://oliviacraftlat.gumroad.com/l/wyaeil" rel="noopener noreferrer"&gt;Check it out here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>cursor</category>
      <category>freelancing</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Why Your Cursor Rules Are Being Silently Ignored (And How to Fix It)</title>
      <dc:creator>Olivia Craft</dc:creator>
      <pubDate>Sun, 05 Apr 2026 00:47:47 +0000</pubDate>
      <link>https://dev.to/olivia_craft/why-your-cursor-rules-are-being-silently-ignored-and-how-to-fix-it-j03</link>
      <guid>https://dev.to/olivia_craft/why-your-cursor-rules-are-being-silently-ignored-and-how-to-fix-it-j03</guid>
      <description>&lt;p&gt;If you set up your .cursorrules file weeks ago and Cursor still feels like it hasn't changed — this is for you.&lt;/p&gt;

&lt;p&gt;Most developers write cursor rules once, check the box, and move on. Then they wonder why Cursor keeps suggesting the wrong patterns, ignoring their preferred stack, or generating code they immediately rewrite.&lt;/p&gt;

&lt;p&gt;The rules aren't broken. They're being ignored. Here's why.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Your rules are too vague to act on
&lt;/h2&gt;

&lt;p&gt;Compare these two rules:&lt;/p&gt;

&lt;p&gt;Bad: "Write clean code"&lt;br&gt;
Better: "Prefer early returns over nested conditionals. Functions should do one thing. Max 40 lines per function."&lt;/p&gt;

&lt;p&gt;Cursor is a language model. It responds to specific, unambiguous instructions — not abstract goals. Vague rules get averaged into the model's general behavior and disappear.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Rewrite every rule as a constraint with a measurable outcome.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. You're fighting the model's defaults
&lt;/h2&gt;

&lt;p&gt;Some things are deeply embedded in the model's training. Telling it "never use console.log" might work 80% of the time — but under pressure (complex debugging, long context), it reverts.&lt;/p&gt;

&lt;p&gt;The rules that stick are the ones that redirect behavior, not fight it head-on.&lt;/p&gt;

&lt;p&gt;Bad rule: "Never use any" (TypeScript)&lt;br&gt;
Better: "When you would use &lt;code&gt;any&lt;/code&gt;, use &lt;code&gt;unknown&lt;/code&gt; instead and add a type guard. If you truly cannot avoid it, add an inline comment explaining why."&lt;/p&gt;

&lt;p&gt;The second version gives the model an acceptable path forward.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Your rules file is too long
&lt;/h2&gt;

&lt;p&gt;There's a practical context limit. A .cursorrules file with 200 lines competes with your actual code for attention in context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Keep your rules file under 80 lines. Prioritize rules that address recurring mistakes — not aspirational guidelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The rules don't reflect your actual project
&lt;/h2&gt;

&lt;p&gt;A generic .cursorrules template you found online will underperform a project-specific one you wrote yourself. The model can't know your business domain, your team's conventions, or which libraries you've banned unless you tell it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; After every session where you corrected the model, ask: "Could a rule have prevented this?" If yes, add it.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. You set them up but never iterated
&lt;/h2&gt;

&lt;p&gt;Cursor Rules are not a config file. They're a living document. Your project evolves. Rules that made sense in week 1 may be wrong in week 8.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The pattern that works:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Something breaks → add a rule&lt;/li&gt;
&lt;li&gt;AI suggests wrong pattern → add a rule&lt;/li&gt;
&lt;li&gt;You find yourself repeating context → add a rule&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;If you want a head start with production-tested rules — the &lt;a href="https://oliviacraft.lat/cursor-rules" rel="noopener noreferrer"&gt;Cursor Rules Pack v2&lt;/a&gt; includes 35+ rules covering dependency discipline, error handling, TypeScript strictness, commit hygiene, and more.&lt;/p&gt;

&lt;p&gt;The goal isn't a perfect .cursorrules file. It's a file that gets slightly less wrong every week.&lt;/p&gt;

</description>
      <category>cursor</category>
      <category>ai</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Stop Re-Explaining Your Stack to Cursor: A Practical Guide to Cursor Rules</title>
      <dc:creator>Olivia Craft</dc:creator>
      <pubDate>Sat, 04 Apr 2026 13:05:08 +0000</pubDate>
      <link>https://dev.to/olivia_craft/stop-re-explaining-your-stack-to-cursor-a-practical-guide-to-cursor-rules-2jf0</link>
      <guid>https://dev.to/olivia_craft/stop-re-explaining-your-stack-to-cursor-a-practical-guide-to-cursor-rules-2jf0</guid>
      <description>&lt;p&gt;If you use Cursor daily, you've probably noticed something: the more complex your project, the more time you spend re-explaining context to the AI.&lt;/p&gt;

&lt;p&gt;"We use TypeScript. We prefer functional components. Don't use classes. Keep functions under 50 lines."&lt;/p&gt;

&lt;p&gt;Sound familiar? You're writing this in every chat window. Every new session. Every time the model forgets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cursor Rules fix this.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Are Cursor Rules?
&lt;/h2&gt;

&lt;p&gt;Cursor Rules (&lt;code&gt;.cursor/rules/*.mdc&lt;/code&gt; files) let you define persistent instructions that Cursor applies to every interaction. Think of them as a permanent system prompt for your project.&lt;/p&gt;

&lt;p&gt;Instead of telling the AI your conventions each time, you define them once:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# TypeScript Rules&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Use strict TypeScript. No &lt;span class="sb"&gt;`any`&lt;/span&gt; types.
&lt;span class="p"&gt;-&lt;/span&gt; Prefer &lt;span class="sb"&gt;`const`&lt;/span&gt; over &lt;span class="sb"&gt;`let`&lt;/span&gt;. Never use &lt;span class="sb"&gt;`var`&lt;/span&gt;.
&lt;span class="p"&gt;-&lt;/span&gt; All async functions must handle errors explicitly.
&lt;span class="p"&gt;-&lt;/span&gt; Export types separately from implementations.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Done. Cursor reads this on every request.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Actually Matters
&lt;/h2&gt;

&lt;p&gt;The difference between a good Cursor session and a frustrating one usually comes down to context consistency. When the AI knows your stack, your conventions, and your constraints upfront:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code suggestions fit your codebase immediately&lt;/li&gt;
&lt;li&gt;You stop correcting the same mistakes repeatedly
&lt;/li&gt;
&lt;li&gt;Reviews get faster (AI already knows what "good" looks like for your project)&lt;/li&gt;
&lt;li&gt;Onboarding new contributors becomes easier (the rules document your standards)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Problem With DIY Rules
&lt;/h2&gt;

&lt;p&gt;Writing effective Cursor Rules isn't obvious. There's no official template. Most developers start from scratch, iterate through trial and error, and end up with rules that are either too vague ("write clean code") or too rigid.&lt;/p&gt;

&lt;p&gt;What actually works:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Layer your rules by scope&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Global rules: apply everywhere (naming conventions, error handling)&lt;/li&gt;
&lt;li&gt;Feature rules: apply to specific directories (API routes, components)&lt;/li&gt;
&lt;li&gt;Task rules: apply to specific file types (tests, migrations)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Be explicit about what NOT to do&lt;/strong&gt;&lt;br&gt;
Cursor responds well to negative constraints:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Never generate placeholder comments like "// TODO: implement this"
- Don't add console.log statements for debugging
- Never use default exports for utility functions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Include examples, not just descriptions&lt;/strong&gt;&lt;br&gt;
Rules with examples outperform abstract descriptions consistently.&lt;/p&gt;
&lt;h2&gt;
  
  
  A Starter Pack That Works
&lt;/h2&gt;

&lt;p&gt;After testing across 15+ project types (SaaS, APIs, CLI tools, Next.js apps), the rules that move the needle most are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Architecture rules&lt;/strong&gt; — where things live and why&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code style rules&lt;/strong&gt; — beyond what linters catch&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI behavior rules&lt;/strong&gt; — how the model should approach uncertainty&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing rules&lt;/strong&gt; — what to test and how to structure it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Documentation rules&lt;/strong&gt; — inline comments vs. external docs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is exactly what the &lt;strong&gt;&lt;a href="https://oliviacraftlat.gumroad.com/l/wyaeil" rel="noopener noreferrer"&gt;Cursor Rules Pack&lt;/a&gt;&lt;/strong&gt; covers — 50+ production-tested rules across these categories, structured so you can drop them into any project and start seeing results in the first session.&lt;/p&gt;
&lt;h2&gt;
  
  
  Getting Started Today
&lt;/h2&gt;

&lt;p&gt;Even if you don't use a pre-built pack, start with three rules in any project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Core Rules&lt;/span&gt;
&lt;span class="p"&gt;
1.&lt;/span&gt; Before writing any code, state your approach in one sentence.
&lt;span class="p"&gt;2.&lt;/span&gt; If you're unsure about a requirement, ask before implementing.
&lt;span class="p"&gt;3.&lt;/span&gt; Match the code style of the surrounding file, not your defaults.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These three alone reduce the most common friction points.&lt;/p&gt;




&lt;p&gt;If you're already using Cursor Rules and want to compare notes — or if you've found rules that work particularly well for your stack — drop them in the comments. Always curious what's working for others.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The &lt;a href="https://oliviacraftlat.gumroad.com/l/wyaeil" rel="noopener noreferrer"&gt;Cursor Rules Pack&lt;/a&gt; ($27) includes 50+ rules organized by project type with a setup guide. Built for developers who want results without the trial-and-error.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>cursor</category>
      <category>ai</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
