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:
| Tool | File / Directory | Format | Global scope | Project scope |
|---|---|---|---|---|
| Cursor | .cursor/rules/*.mdc | MDC (Markdown + frontmatter) | Yes | Yes |
| Claude Code | .claude/skills/*.md, CLAUDE.md | Markdown | Yes | Yes |
| Windsurf | .windsurf/rules/*.md | Markdown | Yes | Yes |
| Cline | .clinerules | Plain text | No | Yes |
| GitHub Copilot | .github/copilot-instructions.md | Markdown | No | Yes |
| Codex CLI | AGENTS.md, codex.md | Markdown | Yes | Yes |
| OpenCode | .opencode/rules/*.md | Markdown | Yes | Yes |
| Aider | .aider/skills/*.md | Markdown | No | Yes |
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
.mdcformat with appropriate frontmatter, places in.cursor/rules/ - Claude Code: Places as
.mdfile 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.mdusing section markers - Cline: Places in the
.clineruleslocation - 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 -->
Install methods: symlink, copy, and section
You control how skills are installed with three methods:
| Method | How it works | Best for |
|---|---|---|
| Symlink (default) | Creates a symbolic link to the cached skill file | Development — auto-updates on pull |
| Copy | Copies content directly to the target location | CI/CD pipelines, Windows compatibility |
| Section | Embeds content as a marked section in a shared file | Tools 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/*.mdcfiles.claude/skills/*.mdand.claude/rules/*.mdfiles.windsurf/rules/*.mdfiles.clinerules.github/copilot-instructions.mdAGENTS.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