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 Code and Chat modes
  • Project with established coding conventions

Tool Use

  • Use Read to inspect only the repository files and configuration needed for the request.
  • Use Grep to locate relevant settings, rules, logs, or code without broad collection.
  • Use Write only for a new artifact the user requested; never write credentials or unreviewed production configuration.
  • Use Edit for bounded, reviewable changes and preserve unrelated user work.

Instructions

Step 1: Root-Level .devin/rules/project.md (Permanent Context)

The .devin/rules/project.md file is the single highest-impact configuration for Cascade output quality. It provides persistent context every session.

<!-- .devin/rules/project.md -->

# 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 .devin/rules/ with YAML frontmatter:

<!-- .devin/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
<!-- .devin/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
<!-- .devin/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
<!-- .devin/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"

Output

Create a minimal customization set using the correct mechanism—Rule, AGENTS.md, Workflow, Skill, Hook, or MCP configuration—with activation behavior, ownership, secret handling, and a verification example. Avoid undocumented settings keys.

Error Handling

IssueCauseSolution
Rules ignored by CascadeFile over 6,000 charsTrim to essentials, split into workspace rules
Workspace rules not loadingWrong directory or invalid frontmatterUse .devin/rules/*.md and validate the trigger: mode
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)

<!-- ~/.codeium/windsurf/memories/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 .devin/rules/project.md .codeiumignore .devin/rules/ 2>/dev/null

Resources

Related Skill

Continue with windsurf-core-workflow-a to apply these configuration patterns in a bounded Cascade session with explicit validation and rollback checkpoints.

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)12moReviewIntermediate
language-runtime-router03moNo flagsBeginner
copilot-sdk75moReviewIntermediate
cursor-prod-checklist42moReviewIntermediate

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