DEV Community

Cover image for This week in Cursor + .NET — 7 rules (week ending July 19, 2026)
Agentic Architect
Agentic Architect

Posted on • Originally published at agentic-architect.dev

This week in Cursor + .NET — 7 rules (week ending July 19, 2026)

Every weekday a single, opinionated rule for senior C#/.NET engineers using Cursor. Here's the full week in one read — canonical posts live on the Agentic Architect blog.

7 daily senior rules

Rule 17: ConfigureAwait false in Libraries

Sun 19 Jul

Library code (non-ASP.NET) should ConfigureAwait false on every awaited Task. ASP.NET Core code should not. Cursor mixes the two contexts in the same solution. Detect the project type and enforce the right default.

→ Permalink on the blog

Rule 16: async void Outside Event Handlers

Sat 18 Jul

async void is a deadlock and unhandled-exception trap everywhere except UI event handlers. The AI uses it routinely for "fire and forget" — wrong answer every time. Flag it on sight.

→ Permalink on the blog

Rule 15: Records for Value Objects, Classes for Entities

Fri 17 Jul

Value objects (Money, Address, Coordinates) should be records. Entities with identity (Order, Customer) should be classes with an Id. Cursor mixes these constantly. A rule that classifies based on the presence or absence of an identity property keeps the distinction honest.

→ Permalink on the blog

Rule 14: Sealed By Default

Thu 16 Jul

Mark every class sealed unless inheritance is explicitly planned. Stops Cursor inventing accidental inheritance hierarchies "for flexibility." Small but measurable virtual-call perf wins too.

→ Permalink on the blog

Rule 13: Strongly-Typed IDs

Wed 15 Jul

OrderId as record struct OrderId(Guid Value) beats raw Guid everywhere. Stops the AI passing a CustomerId where an OrderId was expected — a bug the compiler can't catch with primitive obsession but catches instantly with domain primitives.

→ Permalink on the blog

Rule 12: IOptionsSnapshot Over Raw Config

Tue 14 Jul

Business code should never call IConfiguration directly. Strongly-typed IOptions or IOptionsSnapshot bindings only. The AI loves to "just grab the config value" — refuse it and force a settings class with validation attributes.

→ Permalink on the blog

Rule 11: Rethrow, Don't throw ex

Mon 13 Jul

throw ex resets the stack trace. throw preserves it. Cursor gets this wrong about 40 percent of the time when generating catch blocks. Rewrite any naked throw ex to throw unless the exception has been explicitly wrapped.

→ Permalink on the blog


Try one rule before you trust the whole kit

The free arch-core-lite.mdc is one drop-in Cursor rule that ends the morning re-explanation ritual. Install in 60 seconds, see whether Cursor actually remembers your DI lifetimes, and decide for yourself whether the full kit is worth £9.00.

Canonical home for everything in this digest: https://agentic-architect.dev/blog/.

Top comments (0)