jeremylongshore

windsurf-security-basics

@jeremylongshore/windsurf-security-basics
jeremylongshore
1,004
123 forks
Updated 1/18/2026
View on GitHub

Apply Windsurf security best practices for secrets and access control. Use when securing API keys, implementing least privilege access, or auditing Windsurf security configuration. Trigger with phrases like "windsurf security", "windsurf secrets", "secure windsurf", "windsurf API key security".

Installation

$skills install @jeremylongshore/windsurf-security-basics
Claude Code
Cursor
Copilot
Codex
Antigravity

Details

Pathplugins/saas-packs/windsurf-pack/skills/windsurf-security-basics/SKILL.md
Branchmain
Scoped Name@jeremylongshore/windsurf-security-basics

Usage

After installing, this skill will be available to your AI coding assistant.

Verify installation:

skills list

Skill Instructions


name: windsurf-security-basics description: | Apply Windsurf security best practices for secrets and access control. Use when securing API keys, implementing least privilege access, or auditing Windsurf security configuration. Trigger with phrases like "windsurf security", "windsurf secrets", "secure windsurf", "windsurf API key security". allowed-tools: Read, Write, Grep version: 1.0.0 license: MIT author: Jeremy Longshore jeremy@intentsolutions.io

Windsurf Security Basics

Overview

Security best practices for Windsurf API keys, tokens, and access control.

Prerequisites

  • Windsurf SDK installed
  • Understanding of environment variables
  • Access to Windsurf dashboard

Instructions

Step 1: Configure Environment Variables

# .env (NEVER commit to git)
WINDSURF_API_KEY=sk_live_***
WINDSURF_SECRET=***

# .gitignore
.env
.env.local
.env.*.local

Step 2: Implement Secret Rotation

# 1. Generate new key in Windsurf dashboard
# 2. Update environment variable
export WINDSURF_API_KEY="new_key_here"

# 3. Verify new key works
curl -H "Authorization: Bearer ${WINDSURF_API_KEY}" \
  https://api.windsurf.com/health

# 4. Revoke old key in dashboard

Step 3: Apply Least Privilege

EnvironmentRecommended Scopes
Developmentread:*
Stagingread:*, write:limited
ProductionOnly required scopes

Output

  • Secure API key storage
  • Environment-specific access controls
  • Audit logging enabled

Error Handling

Security IssueDetectionMitigation
Exposed API keyGit scanningRotate immediately
Excessive scopesAudit logsReduce permissions
Missing rotationKey age checkSchedule rotation

Examples

Service Account Pattern

const clients = {
  reader: new WindsurfClient({
    apiKey: process.env.WINDSURF_READ_KEY,
  }),
  writer: new WindsurfClient({
    apiKey: process.env.WINDSURF_WRITE_KEY,
  }),
};

Webhook Signature Verification

import crypto from 'crypto';

function verifyWebhookSignature(
  payload: string, signature: string, secret: string
): boolean {
  const expected = crypto.createHmac('sha256', secret).update(payload).digest('hex');
  return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
}

Security Checklist

  • API keys in environment variables
  • .env files in .gitignore
  • Different keys for dev/staging/prod
  • Minimal scopes per environment
  • Webhook signatures validated
  • Audit logging enabled

Audit Logging

interface AuditEntry {
  timestamp: Date;
  action: string;
  userId: string;
  resource: string;
  result: 'success' | 'failure';
  metadata?: Record<string, any>;
}

async function auditLog(entry: Omit<AuditEntry, 'timestamp'>): Promise<void> {
  const log: AuditEntry = { ...entry, timestamp: new Date() };

  // Log to Windsurf analytics
  await windsurfClient.track('audit', log);

  // Also log locally for compliance
  console.log('[AUDIT]', JSON.stringify(log));
}

// Usage
await auditLog({
  action: 'windsurf.api.call',
  userId: currentUser.id,
  resource: '/v1/resource',
  result: 'success',
});

Resources

Next Steps

For production deployment, see windsurf-prod-checklist.

More by jeremylongshore

View all
rabbitmq-queue-setup
1,004

Rabbitmq Queue Setup - Auto-activating skill for Backend Development. Triggers on: rabbitmq queue setup, rabbitmq queue setup Part of the Backend Development skill category.

model-evaluation-suite
1,004

evaluating-machine-learning-models: This skill allows Claude to evaluate machine learning models using a comprehensive suite of metrics. It should be used when the user requests model performance analysis, validation, or testing. Claude can use this skill to assess model accuracy, precision, recall, F1-score, and other relevant metrics. Trigger this skill when the user mentions "evaluate model", "model performance", "testing metrics", "validation results", or requests a comprehensive "model evaluation".

neural-network-builder
1,004

building-neural-networks: This skill allows Claude to construct and configure neural network architectures using the neural-network-builder plugin. It should be used when the user requests the creation of a new neural network, modification of an existing one, or assistance with defining the layers, parameters, and training process. The skill is triggered by requests involving terms like "build a neural network," "define network architecture," "configure layers," or specific mentions of neural network types (e.g., "CNN," "RNN," "transformer").

oauth-callback-handler
1,004

Oauth Callback Handler - Auto-activating skill for API Integration. Triggers on: oauth callback handler, oauth callback handler Part of the API Integration skill category.