Give Cursor a UI plan it can build from
Cursor's agent writes good components. What it can't know is the rest of your plan: which sections each page has and in what order, the exact copy, your colors, fonts and logo, and the libraries you already use. UIPrompt is where that plan lives. Cursor reads it over MCP or from your repo, and builds every page the same way.
Why Cursor's UI drifts
Ask for “a pricing page” and Cursor has to decide the structure, the hierarchy and the copy on its own. Then it decides again, differently, for the next page. Over a few sessions you get:
- Pages that don't match. Different spacing, button styles and section patterns from one page to the next.
- Placeholder copy. “Streamline your workflow” instead of what you actually want to say.
- Off-brand details. Close but wrong colors, a default font, a redrawn logo.
- Libraries you don't use. A new component library or icon set pulled in because nothing said otherwise.
Cursor rules help with conventions, but not with the plan for each page. That is the part UIPrompt holds.
The quickest way: the UIPrompt plugin
One install adds the UIPrompt connector and a UIPrompt skill that tells Cursor how to build from your plan. In Cursor's plugin settings, add Curtisx1/uiprompt-plugins as a marketplace, then install UIPrompt from the marketplace panel.
Cursor asks you to sign in to UIPrompt the first time it connects. See the plugin on GitHub.
Or connect it yourself
1. The MCP connector
Add UIPrompt to .cursor/mcp.json in your project (or to your global MCP settings). Cursor asks you to sign in to UIPrompt the first time it uses it.
{
"mcpServers": {
"uiprompt": {
"url": "https://uiprompt.app/api/mcp"
}
}
}Cursor can then pull the finished brief with get_agent_context, fetch your logo files with get_brand_logo, and plan new pages on your canvas itself: describe a page or drop in a screenshot, and it lays out the sections with exact copy for you to review before anything is built.
2. The brief in your repo
From the editor, choose Publish → Pull request for your agent. UIPrompt opens a pull request (or commits straight to main) with:
.uiprompt/brief.md: pages, sections in order, design tokens, stack and rules.uiprompt/skeleton.json: the same structure as data- a short marked block in
AGENTS.md(andCLAUDE.mdif you have one) pointing agents at the brief
Cursor reads AGENTS.md from the root of your project, so its agent picks up the brief with no copy and paste. For projects imported from your repo, each page in UIPrompt shows Built or Planned based on the routes Cursor has added.
What Cursor receives
Not a paragraph: a structured brief, with a separate prompt, exact copy and visual weight for every component. This is part of the brief for the demo project:
<design_tokens>
Colors: Ink: #111111, Primary: #2c7ef8, Success: #1bc47d, Soft surface: #f4f6fb
Fonts: Sans: Inter / system-ui
Spacing: Base: 8px grid, Section: 96px desktop / 56px mobile
</design_tokens>
<frameworks>Next.js, React</frameworks>
<styling>Tailwind CSS</styling>
<component_library>Shadcn UI, Radix</component_library>
# Hero Section [order: 1]
- **Hero copy**: Main headline, supporting value prop, and CTAs.
- **Prompt:** Write and render a left-aligned hero for AtlasOps. The headline
should promise release clarity without hype. Add a short paragraph and two CTAs.
- **Exact Copy:** Know what shipped, who felt it, and what broke. | Start free | Watch demo
- **Forbidden Patterns:** gradient blob background, abstract AI sparkle decorations
- **Visual Weight:** HERO — dominant focal point
- **Product preview**: Dashboard preview showing release and incident signals.
- **Visual Weight:** PRIMARY — clearly subordinate to heroThings to ask Cursor
- “Build the pricing page from my UIPrompt project.”
- “Plan a settings page in UIPrompt from this screenshot, then build it.”
- “Which pages in the brief are not built yet? Build the next one.”
- “Use the brand logo from UIPrompt in the header and as the favicon.”
Frequently asked questions
How do I connect UIPrompt to Cursor?
Add a "uiprompt" server with the URL https://uiprompt.app/api/mcp to .cursor/mcp.json or your global MCP settings. Cursor asks you to sign in with your UIPrompt account on first use. No API keys to copy, and you can disconnect it from your projects page at any time.
Does Cursor read the brief from AGENTS.md?
Yes. Cursor reads AGENTS.md from your project root. When UIPrompt ships a brief to your repo, it adds a short marked block there pointing at .uiprompt/brief.md, and leaves your .cursor/rules alone.
Will UIPrompt change my code?
No. It adds a .uiprompt/ folder and a small marked block in AGENTS.md, through a pull request you review or a commit you choose. Cursor writes the application code in your repo, following your conventions.
Do I still need Cursor rules?
Keep them for coding conventions. UIPrompt covers what rules files don’t: the plan for each page, its sections in order, the exact copy, your brand files and the stack to stick to.
Do I need a paid plan?
The editor demo is free with no signup. Connecting Cursor and shipping briefs to GitHub are included in every paid plan. Teammates you invite as viewers can read shared projects for free.
Also using Claude Code, Codex, GitHub Copilot, Windsurf or Gemini CLI? The same plan works there too.
Plan the UI. Cursor builds exactly that.
Lay out your pages once, set your brand, and let Cursor build every page from the same plan.