AI Tools Compared

Migrating from Windsurf to Cursor involves more than just installing a new editor. Your project configurations, custom rules, snippets, and workflow settings need to be transferred carefully to maintain productivity. This guide walks you through the complete process of moving your project config from Windsurf to Cursor.

Understanding Windsurf and Cursor Config Structures

Both Windsurf and Cursor are built on VS Code, but they store custom configurations differently. Windsurf uses its own “rules” system and Cascade workflows, while Cursor employs “Cursor Rules” and project-specific settings. Understanding these differences helps you plan your migration strategy.

Windsurf stores project-specific configurations in a .windsurf directory at your project root. This directory contains JSON files defining AI behavior, custom commands, and workflow automations. Cursor, on the other hand, uses a .cursor directory with a different configuration structure. Both support YAML and JSON formats, but the key names and organizational logic vary.

Before starting the migration, ensure both editors are installed on your system. You will need access to your project directories and some familiarity with editing configuration files.

Exporting Windsurf Project Config

Begin by locating your Windsurf configuration files. Open your project in Windsurf and navigate to the settings panel. Look for the “Project Settings” or “Rules” section where you have defined custom behaviors.

Finding Your Windsurf Rules

Windsurf stores rules in the .windsurf folder within each project. If you have been using Windsurf for significant projects, check your project directories:

# List all Windsurf config directories in your projects
find ~/projects -type d -name ".windsurf" 2>/dev/null

Each .windsurf directory typically contains files like config.json or rules.md. The rules file defines how Windsurf’s AI behaves in your project, including custom instructions, file patterns, and interaction preferences.

Exporting Cascade Workflows

If you use Windsurf’s Cascade feature for automated workflows, export these before switching. Cascade workflows are stored as JSON files within the .windsurf directory:

{
  "workflows": [
    {
      "name": "Code Review",
      "trigger": "onPush",
      "steps": [
        {"action": "run", "command": "npm test"},
        {"action": "analyze", "scope": "changedFiles"}
      ]
    }
  ]
}

Copy these workflow definitions to a safe location. You will recreate them in Cursor using its own automation features.

Setting Up Cursor with Your Config

Now that you have exported your Windsurf settings, the next step is importing them into Cursor. Cursor uses a similar but distinct configuration system that requires some manual translation.

Creating Cursor Rules

Cursor uses .cursorrules files (or cursor.rules in the root directory) to define project-specific AI behavior. Create or update this file in your project root:

# Project Rules for [Your Project Name]

## Context
You are working on a [project description]. This is a [language/framework] application using [key technologies].

## Code Style
- Use [your preferred style guidelines]
- Follow [specific conventions]
- Prefer [patterns you commonly use]

## Guidelines
- Always run tests before committing
- Use descriptive variable names
- Keep functions under 50 lines

Importing Custom Snippets

If you have custom snippets in Windsurf, export them and import into Cursor. Both editors support VS Code snippets, which are stored in snippets folders. Locate your Windsurf snippets:

# Find snippet files
find ~/.windsurf -name "*.json" -path "*snippets*" 2>/dev/null

Copy these snippet files to Cursor’s equivalent location:

# Copy to Cursor's snippets directory
cp -r ~/.windsurf/snippets ~/.cursor/

Migrating Keyboard Shortcuts and Keybindings

Both editors support VS Code keybindings, but custom keybindings may need adjustment. Export your Windsurf keybindings and adapt them for Cursor.

Exporting Windsurf Keybindings

Access the keyboard shortcuts panel in Windsurf (Cmd+K on Mac or Ctrl+K on Windows), then export your custom keybindings. The file is typically located at:

# On macOS
~/Library/Application\ Support/Windsurf/User/keybindings.json

# On Windows
%APPDATA%/Windsurf/User/keybindings.json

Applying Keybindings to Cursor

Copy or adapt these keybindings to Cursor’s configuration location:

# On macOS
cp ~/Library/Application\ Support/Windsurf/User/keybindings.json \
   ~/Library/Application\ Support/Cursor/User/keybindings.json

Review each keybinding. Some may conflict with Cursor’s default shortcuts and require modification.

Transferring Terminal Profiles and Tasks

If you have custom terminal configurations or task definitions in Windsurf, migrate these to Cursor for an experience.

Task Configurations

Both editors support VS Code task definitions. Your tasks.json file should work directly in Cursor if you copy it:

cp .windsurf/tasks.json .cursor/
# or
cp .vscode/tasks.json .cursor/

Terminal Profiles

Custom terminal profiles and shell integrations may need reconfiguration. Check your shell configuration files (.bashrc, .zshrc, or .fish) for Windsurf-specific aliases and functions, then add equivalent configurations for Cursor if needed.

Preserving Git and Version Control Settings

Your Git configurations, including hooks and settings, transfer automatically since they are project-based. However, review the following:

Git Hooks

If you use Husky, lefthook, or similar tools for Git hooks, these work in Cursor without modification. Verify that your pre-commit and pre-push hooks function correctly after the switch.

Remote URLs

Update your Git remote URLs if you have added Windsurf-specific remotes:

git remote -v
git remote set-url origin git@github.com:your-repo-url.git

Verifying Your Migration

After transferring all configurations, spend time verifying that everything works correctly in Cursor.

Test Your Setup

  1. Open your project in Cursor

  2. Verify that custom rules load correctly (check the “Rules” panel)

  3. Test your snippets by triggering them

  4. Confirm keyboard shortcuts work as expected

  5. Run your test suite to ensure nothing broke

Adjust and Iterate

You will likely need to fine-tune some settings. Cursor’s AI behavior differs from Windsurf’s, so adjust your rules to get similar results. The initial setup takes time, but the investment pays off in improved productivity.

Built by theluckystrike — More at zovo.one