DESIGN.md for Cursor: connect it with a project rule
Create .cursor/rules/design-system.mdc and point it to the root DESIGN.md. This example uses an always-applied rule; Cursor runtime behaviour was not tested here.
6 min read
In this note
Create a project rule with the .mdc extension
Cursor documents project rules as .mdc files under .cursor/rules. Put the rule below at .cursor/rules/design-system.mdc in the repository you open in Cursor. Its alwaysApply setting includes the rule in every chat session; the body tells the agent to read DESIGN.md before website work.
That is a deliberate choice for a small website repository where design instructions should be easy to test. In a repository with unrelated services, a rule applied to every chat may be too broad. Start with the small test, then choose a narrower rule type using Cursor’s current documentation.
---
description: Design rules for the Wrenboard website
alwaysApply: true
---
For website work, read DESIGN.md at the project root.
Read styles.css before changing colours or spacing.
For the main action, use the label specified in DESIGN.md.
In your final reply, name the design rule you applied.
Put the decisions in DESIGN.md
This separate note describes a fictional beta page. It names the action, destination, stylesheet and visible checks. The rule file provides the entry point; DESIGN.md supplies the decisions. Keep the named files in the same repository and change the paths if your stylesheet lives elsewhere.
The read instruction in the rule is something you must verify in a session. It is not a claim that saving any file named DESIGN.md makes Cursor load it automatically. A correctly named .mdc file and a useful design note solve different parts of the setup.
# Wrenboard website design
Wrenboard is a fictional research tool for product teams.
The page's main action says Request access and links to #access.
Use .button-primary from styles.css. Keep its existing focus outline.
Use one h1. Keep body copy at least 1rem.
At 390px, the headline wraps and the main action stays inside the page.
Do not add testimonials, prices or customer logos.
Give Cursor one bounded edit
Use a disposable local copy of your page. Change its main-action text to Join waitlist, then ask Cursor to correct that link according to the project instructions. Do not put Request access in the prompt. The correct label should come from DESIGN.md, and the link should still point to the existing access section.
Inspect the diff. The request concerns one link: a new layout, font download or pricing section would be outside it. Then follow the link and confirm that its target exists. A response saying the rule was followed is useful to compare with the diff, but it cannot replace that check.
Correct only the main-action link in index.html according
to the project design instructions. Keep the layout and
other content. Report the files you read and the rule applied.Diagnose a rule that does not appear to apply
Check the repository you opened and the full rule path first. Cursor’s docs distinguish .mdc project rules from plain .md files in that directory. They also distinguish always-applied rules from rules selected by description, file pattern or an explicit mention. A file in the wrong location and a conditional rule that was not selected need different corrections.
For this fixture, keep alwaysApply: true while checking discovery. If you later add file patterns, test a matching frontend file and an unrelated file separately. Record what happened in the actual editor version instead of treating a valid-looking frontmatter block as a runtime result.
What is verified, and what still needs Cursor
Cursor was not installed in the Mac environment used for this article, so this is a documentation-based setup, not a Cursor execution test. The file extension, directory and alwaysApply behaviour were checked against the official rules page on 3 November 2026. No model-compliance rate is claimed.
The downloadable .mdc file belongs inside .cursor/rules; the DESIGN.md file belongs at the project root. Keep an existing rule if it already does this job. Add the pointer there rather than creating two rules that give different labels or component paths.
Carry the same page decisions into another tool
If a teammate uses Claude Code, the same design note can be imported through CLAUDE.md. For Codex, the existing guide shows how to direct website work from AGENTS.md. Tool-specific loading instructions can stay short because they point to the same page decisions.
If you are still deciding what the startup page should contain, work through the full template before adding more editor rules. A perfectly loaded instruction cannot decide which product claims are true.
Put the brief into practice
A launch page should make the buyer, promise, proof, and next action obvious. iter0 uses this same standard when it turns a brief or reference site into a builder-ready page.
Start your launch build