Give Windsurf a UI plan it can build from

Windsurf's Cascade 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. Windsurf reads it over MCP or from your repo, and builds every page the same way.

Why Windsurf's UI drifts

Ask for “a pricing page” and Windsurf 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.

Windsurf rules help with conventions, but not with the plan for each page. That is the part UIPrompt holds.

Two ways to connect

1. The MCP connector

Add UIPrompt to Windsurf's mcp_config.json (open it from Cascade's MCP settings), refresh, and sign in to UIPrompt in the browser when asked.

{
  "mcpServers": {
    "uiprompt": {
      "serverUrl": "https://uiprompt.app/api/mcp"
    }
  }
}

Windsurf 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 (and CLAUDE.md if you have one) pointing agents at the brief

Cascade treats a root AGENTS.md as always-on, so it 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 Windsurf has added.

What Windsurf 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 hero

Things to ask Windsurf

  • “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 Windsurf?

Add a "uiprompt" server with serverUrl https://uiprompt.app/api/mcp to Windsurf's mcp_config.json, refresh the MCP servers in Cascade, and sign in with your UIPrompt account in the browser. No API keys or headers to add, and you can disconnect it from your projects page at any time.

How does Windsurf find the brief in my repo?

Cascade reads AGENTS.md at the root of your project as an always-on rule. When UIPrompt ships a brief to your repo, it adds a short marked block there pointing at .uiprompt/brief.md and leaves your Windsurf 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. Windsurf writes the application code in your repo, following your conventions.

Do I still need Windsurf rules?

Keep them for coding conventions. UIPrompt covers what rules 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 Windsurf 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, Cursor, GitHub Copilot or Gemini CLI? The same plan works there too.

Plan the UI. Windsurf builds exactly that.

Lay out your pages once, set your brand, and let Windsurf build every page from the same plan.