← All posts
AI Tools

The Best Prompt Structure for Claude, v0, and Windsurf

March 14, 2026 · 8 min read · by Pedro

Claude, v0, and Windsurf are all AI coding tools, but they are not the same tool. Each has a different system prompt, a different training focus, and a different interpretation model. A prompt that works perfectly in Claude will often produce a different result in v0. Understanding why — and how to account for it — is the difference between one-shot results and endless corrections.

Claude (Claude.ai / Claude Code)

Claude is highly literal and follows instructions precisely — which is both its strength and its trap. If your prompt is incomplete, Claude will not guess. It will produce something technically correct but visually wrong because it had no spec to work from.

Claude responds best to prompts with explicit role framing and comprehensive visual specs. It respects structure. It follows numbered constraints. The more precise the spec, the more precisely it executes.

Act as a world-class frontend engineer specializing in React. Build [component] with these exact specs: — [visual specs: colors, spacing, typography] — [interaction states: hover, active, focus] — [animation: duration ms, easing] Constraints: - Single file - No external dependencies beyond React and Tailwind - No placeholder content or TODOs - Production-ready code only

v0 (Vercel)

v0 is optimized for Next.js and shadcn/ui. It has strong opinions about component structure and defaults to Radix-based primitives. It works best when you tell it exactly what you do and do not want from its default patterns.

The most important thing to add to v0 prompts: explicitly state whether you want shadcn components or custom components. v0 defaults to shadcn and will use it even when you do not want it. Saying "no shadcn, fully custom" changes the output dramatically.

Build [component] in Next.js 14 App Router. Stack: React, Tailwind CSS only — no shadcn, no Radix, fully custom. [visual specs] [interaction states] Export as a single client component. No placeholder text. No TODOs. Deploy-ready.

Windsurf

Windsurf operates across your whole codebase, not just a single component. It understands file structure, imports, and context. This means your prompts should reference the existing project context — Windsurf will use it.

The most effective Windsurf prompts follow a three-part pattern: describe the context (what already exists), describe the change (what needs to happen), and describe the constraints (what must not change). Windsurf excels at targeted changes that respect existing patterns.

Context: [describe existing component/page and its current state] Task: Add [feature] to [location in codebase]. Specs: — [exact visual/behavioral specs] Constraints: — Do not modify [X, Y, Z files] — Match the existing [design system/styling approach] — No new dependencies

The one thing all three have in common

Despite their differences, Claude, v0, and Windsurf all share the same failure mode: they guess when specs are missing, and their guesses do not match your intent. The solution is always the same — be more explicit than you think you need to be.

Exact hex values. Explicit interaction states. Clear constraints. No ambiguity. The tool does not need creativity — it needs a spec.

One prompt. Works in all of them.

tknctrl writes prompts optimized for Claude, v0, Cursor, and Windsurf automatically.

Try it free →