WI

windsurf-sdk-patterns

Defines best practices and configuration rules for Windsurf projects to enhance AI output and workspace consistency.

Install

mkdir -p .claude/skills/windsurf-sdk-patterns && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/4820" && unzip -o skill.zip -d .claude/skills/windsurf-sdk-patterns && rm skill.zip

Installs to .claude/skills/windsurf-sdk-patterns

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Apply production-ready Windsurf workspace configuration and Cascade
67 charsno explicit “when” trigger
Intermediate

Key capabilities

  • Configure root-level .windsurfrules for persistent context
  • Create granular workspace rules with trigger modes
  • Integrate external tools via MCP server configuration
  • Apply effective Cascade prompt patterns
  • Establish team coding standards for Windsurf AI

How it works

The skill outlines how to configure Windsurf IDE using rules files for persistent context and granular workspace rules with trigger modes. It also details MCP server integration and effective prompt patterns.

Inputs & outputs

You give it
Windsurf configuration files (.windsurfrules, .windsurf/rules/*.md) and MCP server settings
You get back
Standardized Windsurf IDE behavior, improved Cascade output quality, and integrated external tools

When to use windsurf-sdk-patterns

  • Configure .windsurfrules for projects
  • Integrate MCP servers
  • Establish team coding standards
  • Refactor SDK usage in Windsurf

About this skill

Windsurf Configuration Patterns

Overview

Production-ready configuration patterns for Windsurf IDE: rules files, workspace rules with trigger modes, MCP server integration, and Cascade prompt engineering.

Prerequisites

  • Windsurf authenticated and operational
  • Understanding of Cascade Write vs Chat modes
  • Project with established coding conventions

Instructions

Step 1: Root-Level .windsurfrules (Permanent Context)

The .windsurfrules file is the single highest-impact configuration for Cascade output quality. It provides persistent context every session.

<!-- .windsurfrules -->

# Project: payments-api

## Stack
- Runtime: Node.js 20 LTS
- Language: TypeScript 5.x (strict, noUncheckedIndexedAccess)
- Framework: Fastify v4
- ORM: Drizzle (PostgreSQL)
- Validation: zod
- Testing: Vitest
- Linting: Biome

## Architecture Rules
- Route handlers in src/routes/ — no business logic
- Business logic in src/services/ — never throw, use Result<T,E>
- Database queries in src/repositories/ — Drizzle only
- Shared types in src/types/ — all exported with JSDoc

## Don't
- Don't use `any` type
- Don't use default exports
- Don't use class-based patterns (use functions + closures)
- Don't modify files in migrations/ without explicit request
- Don't use deprecated APIs: my_old_helper, legacyAuth

## Testing
- Unit tests for every service method
- Integration tests for every route handler
- No mocking repositories in integration tests
- Use test fixtures from tests/fixtures/

Limits: 6,000 characters per rules file. 12,000 total (global + workspace combined).

Step 2: Workspace Rules with Trigger Modes

Create granular rules in .windsurf/rules/ with YAML frontmatter:

<!-- .windsurf/rules/testing.md -->
---
trigger: glob
globs: **/*.test.ts, **/*.spec.ts
---
All test files must:
- Use describe/it blocks (not test())
- Mock external API calls with msw
- Assert both success and error paths
- Include at least one snapshot test for UI components
- Use factory functions from tests/fixtures/ for test data
<!-- .windsurf/rules/api-routes.md -->
---
trigger: glob
globs: src/routes/**/*.ts
---
API route handlers must:
- Validate input with zod schema before processing
- Return consistent error format: { error: string, code: string, statusCode: number }
- Include request ID in all log lines
- Never call database directly — use repository layer
<!-- .windsurf/rules/security.md -->
---
trigger: model_decision
description: Apply when code touches authentication, authorization, or secrets
---
Security requirements:
- Never log secrets, tokens, or PII
- Use parameterized queries (never string interpolation for SQL)
- Validate JWT tokens with jose library
- Rate limit all public endpoints
- CORS: explicit origin whitelist, never wildcard in production
<!-- .windsurf/rules/migrations.md -->
---
trigger: manual
---
Database migration rules (activate with @migrations):
- Always create reversible migrations (up + down)
- Never drop columns in production — deprecate first
- Add indexes for any new foreign key columns
- Test migration on a copy of production data first

Step 3: MCP Server Configuration

Connect external tools to Cascade via Model Context Protocol:

// ~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
      }
    },
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": {
        "DATABASE_URL": "${DATABASE_URL}"
      }
    },
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    }
  }
}

Enable in Windsurf Settings > Cascade > Model Context Protocol (MCP).

Tool limit: Cascade supports max 100 MCP tools total across all servers. Disable unused tools in each MCP's settings page.

Step 4: Effective Cascade Prompt Patterns

GOOD prompts (specific, scoped):
"In src/services/payment.ts, add a refundPayment method that calls
Stripe's refund API. Handle partial refunds. Return Result<Refund, PaymentError>."

"@src/routes/users.ts Add input validation using the UserCreateSchema
from src/types/user.ts. Return 400 with field-level errors."

BAD prompts (vague, unscoped):
"Add validation to the API"
"Refactor the codebase"
"Make it better"

Error Handling

IssueCauseSolution
Rules ignored by CascadeFile over 6,000 charsTrim to essentials, split into workspace rules
Workspace rules not loadingWrong directoryMust be .windsurf/rules/, not .windsurfrules/
MCP server not connectingCommand not foundEnsure npx can resolve the package
Too many MCP toolsOver 100 tool limitDisable unused tools per MCP server
Glob trigger not firingWrong pattern syntaxUse gitignore-style globs: **/*.test.ts

Examples

Global Rules (Apply to All Projects)

<!-- ~/.windsurf/global_rules.md (6,000 char limit) -->
- Always use English for code comments and commit messages
- Prefer functional programming patterns over OOP
- Write self-documenting code; add comments only for "why", not "what"
- When suggesting terminal commands, explain what they do
- Never suggest installing global npm packages

Project Health Check

# Verify Windsurf config exists
ls -la .windsurfrules .codeiumignore .windsurf/rules/ 2>/dev/null

Resources

Next Steps

Apply patterns in windsurf-core-workflow-a for real-world Cascade usage.

Prerequisites

Windsurf authenticated and operationalUnderstanding of Cascade Write vs Chat modesProject with established coding conventions

Limitations

  • 6,000 characters per rules file
  • 12,000 total characters for global + workspace rules combined
  • Cascade supports max 100 MCP tools total across all servers

How it compares

This skill provides specific patterns for configuring Windsurf IDE and Cascade, offering a structured approach compared to general usage guidelines.

Compared to similar skills

windsurf-sdk-patterns side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
windsurf-sdk-patterns (this skill)127dReviewIntermediate
language-runtime-router01moNo flagsBeginner
copilot-sdk74moReviewIntermediate
cursor-prod-checklist427dReviewIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

More by jeremylongshore

View all by jeremylongshore

analyzing-logs

jeremylongshore

Analyze application logs to detect performance issues, identify error patterns, and improve stability by extracting key insights.

14123

ollama-setup

jeremylongshore

Configure auto-configure Ollama when user needs local LLM deployment, free AI alternatives, or wants to eliminate hosted API costs. Trigger phrases: "install ollama", "local AI", "free LLM", "self-hosted AI", "replace OpenAI", "no API costs". Use when appropriate context detected. Trigger with relevant phrases based on skill purpose.

1167

backtesting-trading-strategies

jeremylongshore

Backtest crypto and traditional trading strategies against historical data. Calculates performance metrics (Sharpe, Sortino, max drawdown), generates equity curves, and optimizes strategy parameters. Use when user wants to test a trading strategy, validate signals, or compare approaches. Trigger with phrases like "backtest strategy", "test trading strategy", "historical performance", "simulate trades", "optimize parameters", or "validate signals".

1071

generating-database-seed-data

jeremylongshore

Process this skill enables AI assistant to generate realistic test data and database seed scripts for development and testing environments. it uses faker libraries to create realistic data, maintains relational integrity, and allows configurable data volumes. u... Use when working with databases or data models. Trigger with phrases like 'database', 'query', or 'schema'.

1033

cursor-codebase-indexing

jeremylongshore

Execute set up and optimize Cursor codebase indexing. Triggers on "cursor index setup", "codebase indexing", "index codebase", "cursor semantic search". Use when working with cursor codebase indexing functionality. Trigger with phrases like "cursor codebase indexing", "cursor indexing", "cursor".

885

testing-mobile-apps

jeremylongshore

Execute mobile app testing on iOS and Android devices/simulators. Use when performing specialized testing. Trigger with phrases like "test mobile app", "run iOS tests", or "validate Android functionality".

810

Search skills

Search the agent skills registry