Back to Skills

creating-windsurf-packages

pr-pm
Updated Today
41 views
62
9
62
View on GitHub
Metaaidesign

About

This skill helps developers create Windsurf rules by providing the required format specifications. It enforces plain markdown without frontmatter, a 12,000 character limit, and single-file structure in `.windsurf/rules`. Use it when preparing custom rules to ensure compatibility with Windsurf's constraints.

Quick Install

Claude Code

Recommended
Plugin CommandRecommended
/plugin add https://github.com/pr-pm/prpm
Git CloneAlternative
git clone https://github.com/pr-pm/prpm.git ~/.claude/skills/creating-windsurf-packages

Copy and paste this command in Claude Code to install this skill

Documentation

Creating Windsurf Packages

Overview

Windsurf uses a single .windsurf/rules file containing plain markdown instructions with NO frontmatter.

CRITICAL CONSTRAINTS:

  • No frontmatter - Pure markdown only
  • 12,000 character limit - Hard limit enforced by Windsurf
  • Single file - All rules in one .windsurf/rules file

Quick Reference

AspectRequirement
FormatPlain markdown
FrontmatterNone (forbidden)
Character limit12,000 max
File location.windsurf/rules (single file)

Creating Rules

Plain markdown with optional H1 title and organized sections:

# React Development Guidelines

Guidelines for building React applications in this project.

## Component Structure

- Use functional components with hooks
- Keep components under 200 lines
- Extract logic into custom hooks when appropriate
- Co-locate styles with components

## State Management

We use Zustand for global state:

- Create stores in `src/stores/`
- Use selectors to prevent unnecessary re-renders
- Keep stores focused on single concerns

\`\`\`typescript
// Good: Focused store
const useAuthStore = create((set) => ({
  user: null,
  login: (user) => set({ user }),
  logout: () => set({ user: null }),
}));
\`\`\`

## Testing

- Write tests alongside components (`.test.tsx`)
- Use React Testing Library
- Test user behavior, not implementation details
- Aim for 80% coverage on new code

Character Budget Tips

To stay under 12,000 characters:

  1. Focus on project-specific patterns - AI already knows general best practices
  2. Use concise language - Every word counts
  3. Limit code examples - Only essential patterns
  4. Skip obvious practices - Don't repeat what AI knows
  5. Reference external docs - Link instead of repeating

Example: Project-Specific Context

# Project Architecture

## Tech Stack

- **Frontend**: React 18 + TypeScript + Vite
- **Styling**: Tailwind CSS
- **State**: Zustand
- **Routing**: React Router v6
- **API**: REST with axios

## Directory Structure

\`\`\`
src/
  components/     # Reusable UI components
  features/       # Feature-specific code
  hooks/          # Custom React hooks
  stores/         # Zustand stores
  utils/          # Helper functions
  types/          # TypeScript types
\`\`\`

## Coding Conventions

- Use PascalCase for components
- Use camelCase for functions/variables
- Use kebab-case for file names
- Export components as named exports

## API Integration

All API calls go through `src/api/client.ts`:

\`\`\`typescript
import { apiClient } from '@/api/client';

// Use the client
const users = await apiClient.get('/users');
\`\`\`

## Environment Variables

Access via `import.meta.env`:

- `VITE_API_URL` - Backend API URL
- `VITE_APP_ENV` - Environment (dev/staging/prod)

Content Format

Standard markdown including:

  • H1 title: Main heading (optional)
  • H2/H3 sections: Organize content
  • Lists: Unordered and ordered
  • Code blocks: With language specifiers
  • Standard markdown: Bold, italic, links

Common Mistakes

MistakeFix
Adding YAML frontmatterNo frontmatter allowed - plain markdown only
Exceeding 12,000 charsPrioritize project-specific content, trim aggressively
Multiple filesAll content in single .windsurf/rules file
Generic best practicesFocus on project-specific patterns
Verbose examplesKeep examples minimal and focused

Checking Character Count

Use this command to check character count:

wc -m .windsurf/rules

Stay well under 12,000 to leave room for updates.

What to Include

High Priority (include these):

  • Project-specific tech stack
  • Directory structure and naming conventions
  • API patterns unique to your project
  • Custom tooling and scripts
  • Environment-specific configuration
  • Team conventions and workflows

Low Priority (skip these):

  • General programming best practices
  • Language syntax explanations
  • Framework basics (React, TypeScript)
  • Obvious code quality rules
  • Verbose explanations of standard patterns

Example: Full Stack Project

# TaskMaster Development Guide

## Architecture

### Frontend
- React 18 with TypeScript
- Vite for build tooling
- Zustand for state management
- React Query for server state
- Tailwind CSS for styling

### Backend
- Node.js with Express
- PostgreSQL with Prisma ORM
- WebSocket for real-time features
- Redis for caching and pub/sub
- JWT for authentication

## File Structure

\`\`\`
src/
  components/     # Reusable UI components
  features/       # Feature-based modules
  hooks/          # Custom React hooks
  lib/            # Utility functions
  pages/          # Route pages
  types/          # TypeScript types
\`\`\`

## Development Workflow

1. Create feature branch from `main`
2. Write tests first (TDD)
3. Implement feature
4. Run `pnpm test` and `pnpm lint`
5. Create PR with description
6. Merge after approval

## Testing

- Use Vitest for unit tests
- Use Playwright for E2E tests
- Aim for 80% coverage on new code
- Mock external dependencies

Compression Techniques

Verbose (100+ words):

When you are working with React components, it's very important to remember
that you should always use functional components with hooks instead of class
components. This is because hooks provide a more modern and flexible way to
manage state and side effects. Additionally, you should keep your components
small and focused on a single responsibility...

Concise (30 words):

## React Components

- Use functional components with hooks (no classes)
- Keep under 200 lines
- Single responsibility
- Custom hooks for complex logic

Migration from Other Formats

When converting to Windsurf:

  1. Strip all frontmatter - Remove YAML headers completely
  2. Combine multiple files - Merge into single document
  3. Prioritize content - Keep project-specific, remove generic
  4. Trim examples - Only essential code samples
  5. Monitor length - Check character count regularly

Validation

Documentation: /Users/khaliqgant/Projects/prpm/app/packages/converters/docs/windsurf.md

Schema location: /Users/khaliqgant/Projects/prpm/app/packages/converters/schemas/windsurf.schema.json

Best Practices

  1. Be concise - 12,000 character limit means prioritize
  2. Single file - Combine all project context cohesively
  3. Clear structure - Use headers for scannable sections
  4. Real examples - Show actual code patterns from project
  5. Update regularly - Keep in sync with architecture changes
  6. No frontmatter - Plain markdown only, no YAML

Remember: Windsurf uses plain markdown with NO frontmatter. 12,000 character limit. Single .windsurf/rules file.

GitHub Repository

pr-pm/prpm
Path: .claude/skills/creating-windsurf-packages
claudeclaude-codecursorcursor-ai-editcursorrulespackage-manager

Related Skills

sglang

Meta

SGLang is a high-performance LLM serving framework that specializes in fast, structured generation for JSON, regex, and agentic workflows using its RadixAttention prefix caching. It delivers significantly faster inference, especially for tasks with repeated prefixes, making it ideal for complex, structured outputs and multi-turn conversations. Choose SGLang over alternatives like vLLM when you need constrained decoding or are building applications with extensive prefix sharing.

View skill

evaluating-llms-harness

Testing

This Claude Skill runs the lm-evaluation-harness to benchmark LLMs across 60+ standardized academic tasks like MMLU and GSM8K. It's designed for developers to compare model quality, track training progress, or report academic results. The tool supports various backends including HuggingFace and vLLM models.

View skill

llamaguard

Other

LlamaGuard is Meta's 7-8B parameter model for moderating LLM inputs and outputs across six safety categories like violence and hate speech. It offers 94-95% accuracy and can be deployed using vLLM, Hugging Face, or Amazon SageMaker. Use this skill to easily integrate content filtering and safety guardrails into your AI applications.

View skill

langchain

Meta

LangChain is a framework for building LLM applications using agents, chains, and RAG pipelines. It supports multiple LLM providers, offers 500+ integrations, and includes features like tool calling and memory management. Use it for rapid prototyping and deploying production systems like chatbots, autonomous agents, and question-answering services.

View skill