·5 min read

One Rulebook for All Your AI Coding Tools

Stop maintaining separate .cursorrules, CLAUDE.md, and .windsurfrules files. Write once, install everywhere with agent skills.

The rules file fragmentation problem

Every AI coding tool has its own configuration format. If your team uses Cursor, Claude Code, and Windsurf, you're maintaining three separate files that say the same thing:

project/
  .cursor/rules/api-conventions.mdc    # Cursor rules
  .claude/skills/api-conventions.md    # Claude Code skills
  .windsurf/rules/api-conventions.md   # Windsurf rules

Same content. Three files. Three places to update when conventions change. Multiply that by every repository your team works on, and you have a maintenance nightmare.

Every AI coding tool's rules format compared

Here's where each tool looks for instructions:

ToolFile / DirectoryFormatGlobal scopeProject scope
Cursor.cursor/rules/*.mdcMDC (Markdown + frontmatter)YesYes
Claude Code.claude/skills/*.md, CLAUDE.mdMarkdownYesYes
Windsurf.windsurf/rules/*.mdMarkdownYesYes
Cline.clinerulesPlain textNoYes
GitHub Copilot.github/copilot-instructions.mdMarkdownNoYes
Codex CLIAGENTS.md, codex.mdMarkdownYesYes
OpenCode.opencode/rules/*.mdMarkdownYesYes
Aider.aider/skills/*.mdMarkdownNoYes

That's 8 different file paths, 3 different formats, and inconsistent scope support. If you want the same API conventions enforced everywhere, you're copying content into up to 8 locations.

Why keeping rules in sync is a nightmare

The real pain isn't the initial setup — it's the ongoing maintenance:

  • Drift: Developer A updates the Cursor rules, forgets to update Claude Code. Now the tools give conflicting advice in the same codebase.
  • Onboarding: New team members need to know which files matter for which tools. "Oh, ignore the .cursorrules — we use the folder now. But the Windsurf file is current."
  • Code review: When rules change in a PR, reviewers need to verify the same change was made in all tool-specific files.
  • Multi-repo: If your team has 10 repositories, each with 3 tool configs, that's 30 files to keep synchronized.

The unified approach: agent skills

Agent skills solve this by creating a single source of truth. You write your instructions once, publish them to a registry, and install them into any combination of tools:

# Write once
echo "Always use TypeScript strict mode..." > api-conventions.md

# Publish to your team's registry
localskills publish api-conventions.md --team my-team --name api-conventions

# Install into every tool your team uses
localskills install my-team/api-conventions --target cursor claude windsurf copilot

One file. One publish. Every tool gets the right format automatically.

How localskills.sh translates one skill into 8 formats

When you run localskills install, the CLI adapts the content for each target platform:

  • Cursor: Wraps content in .mdc format with appropriate frontmatter, places in .cursor/rules/
  • Claude Code: Places as .md file in .claude/skills/ (or .claude/rules/ for rule-type content)
  • Windsurf: Places in .windsurf/rules/ with markdown format
  • GitHub Copilot: Embeds as a section in .github/copilot-instructions.md using section markers
  • Cline: Places in the .clinerules location
  • Codex CLI: Embeds as a section in AGENTS.md
  • OpenCode: Places in .opencode/rules/
  • Aider: Places in .aider/skills/

For tools that use a single shared file (like Copilot or Codex), the CLI uses section embedding — delimited markers that let multiple skills coexist in one file:

<!-- localskills:start:api-conventions -->
Always use TypeScript strict mode...
<!-- localskills:end:api-conventions -->

<!-- localskills:start:testing-patterns -->
Write tests using Vitest...
<!-- localskills:end:testing-patterns -->

You control how skills are installed with three methods:

MethodHow it worksBest for
Symlink (default)Creates a symbolic link to the cached skill fileDevelopment — auto-updates on pull
CopyCopies content directly to the target locationCI/CD pipelines, Windows compatibility
SectionEmbeds content as a marked section in a shared fileTools that use a single config file
# Symlink (default)
localskills install my-team/api-conventions --target cursor

# Explicit copy
localskills install my-team/api-conventions --target cursor --copy

# The CLI auto-selects "section" for tools like Copilot that need it
localskills install my-team/api-conventions --target copilot

Migrating your existing rules to localskills.sh

Already have rules files scattered across your project? The CLI makes migration simple:

# Install the CLI
npm install -g @localskills/cli
localskills login

# Publish scans your project for existing rules files automatically
localskills publish

The publish command detects:

  • .cursor/rules/*.mdc files
  • .claude/skills/*.md and .claude/rules/*.md files
  • .windsurf/rules/*.md files
  • .clinerules
  • .github/copilot-instructions.md
  • AGENTS.md
  • And more

It prompts you to select which files to publish, assigns names, and uploads them to your team's registry. From there, every team member installs them with one command.

Read the step-by-step publishing tutorial or learn about Cursor rules and CLAUDE.md in detail.


Stop maintaining duplicate rules files. Write once, install everywhere with localskills.sh.

npm install -g @localskills/cli
localskills login
localskills publish