Windsurf -- AI-Native Coding IDE
Windsurf by Codeium is an AI-native IDE built from the ground up for agentic coding. Unlike plugin-based AI coding tools, Windsurf's Cascade engine maintains full codebase awareness and can autonomously plan, write, test, debug, and refactor across an entire project.
AI-Native by Design
Windsurf is a full VS Code-compatible editor with AI integrated at every layer -- not bolted on as a plugin. Completion, chat, refactoring, and agentic flows are all first-class features of the editor itself.
Cascade Agentic Engine
Cascade maintains a semantic understanding of your entire codebase. It plans multi-file edits, runs terminal commands, reads test output, and iterates -- completing long-horizon tasks with minimal human steering.
Flows
Flows are Windsurf's structured agentic workflows. Describe a goal in natural language; Cascade plans and executes it. A Flow is the primary interaction mode for non-trivial development tasks.
Model Flexibility
Windsurf supports Claude, GPT-4, and Codeium's own models. Select the model per task, optimising for quality, speed, or cost. Claude is the recommended model for complex reasoning and architecture tasks.
| Feature | Windsurf | GitHub Copilot | Cursor |
|---|---|---|---|
| Agentic multi-file edits | Native (Cascade) | Limited | Yes |
| Terminal integration | Full (run + react) | No | Partial |
| Codebase semantic index | Yes | Partial | Yes |
| Memory across sessions | Yes (Memories) | No | Limited |
| Model choice | Claude, GPT-4, Codeium | GPT-4 only | Claude, GPT-4 |
| IDE base | VS Code fork | VS Code extension | VS Code fork |
ShopMate -- First Windsurf Flow
# Open the shopmate/ folder in Windsurf, press Cmd+I, and type:
Add a wishlist notification feature to ShopMate.
When a product comes back into stock, ShopMate should send an email
to all customers who have it on their wishlist.
Email should:
- Have subject: "[product name] is back in stock!"
- Be written in ThreadCo's friendly brand voice (see .windsurfrules)
- Include the product price, available sizes, and a shop link
- Be generated by Claude, not hardcoded
Implementation:
- Function: generate_restock_email(product: dict, customer_name: str) -> str
- In: shopmate/emails/restock.py
- Tests: tests/test_restock_email.py -- mock the Claude call with respx
- Tests should verify: subject line, customer name personalisation, product details present
Follow conventions in .windsurfrules.