Coding Agents
Cursor rules converter: Copilot, Windsurf, CLAUDE.md and AGENTS.md
Convert Cursor rules, GitHub Copilot instructions, Devin Desktop (Windsurf) rules, CLAUDE.md and AGENTS.md into each other. File patterns are mapped, rule types are matched to the closest equivalent, and anything that can’t carry over is listed. Free, and it runs in your browser.
Your rule files (4)
Cursor rule · Always on
Cursor rule · Matching files: src/components/**/*.{ts,tsx}
Cursor rule · Agent decides
Cursor rule · Manual
Converted in your browser. Nothing you paste or open is uploaded. The file path tells the converter what each file is, so keep it as it is in your repository.
4 rules → 4 Claude Code files
| Rule | Applies | From |
|---|---|---|
| project | Always on | .cursor/rules/project.mdc |
| components | Matching files | .cursor/rules/components.mdc |
| api-services | Agent decides | .cursor/rules/api-services.mdc |
| migrations | Manual | .cursor/rules/migrations.mdc |
- Package manager: pnpm. Never use npm or yarn.
- Run `pnpm test` and `pnpm lint` before you say a task is done.
- Never edit generated files in `dist/` or `src/generated/`.
---
paths:
- "src/components/**/*.{ts,tsx}"
---
- Use named exports, not default exports.
- Keep components under 200 lines; extract subcomponents into the same folder.
- Styles go in a CSS module next to the component.
---
description: "Conventions for backend API services and request validation"
---
- One service per file under `src/services/`.
- Validate every request body with the Zod schemas in `src/schemas/`.
- Return `{ code, message }` errors; never throw raw strings.
---
disable-model-invocation: true
---
- Every migration needs both `up` and `down`.
- Never change a column type in place: add a column, backfill, then drop the old one.
Good to know
- “api-services” becomes a skill: Claude Code has no description-triggered rule, but loads a skill when its description fits the task. You can also run it with
/api-services. - “migrations” becomes a skill that only runs when you type
/migrations.
Steps
How to use the AI coding rules converter
- Open your rule files, or paste each one into a file box. Keep each file’s path as it is in your repository, such as .cursor/rules/api.mdc, because the path tells the converter what the file is.
- Check the line under each file: it shows what the file was read as and when it applies.
- Choose the tool to convert to.
- Read the notes, especially “Changed in the conversion”, then download the files and put them at the paths shown.
Method
How it works
Every AI coding tool lets you give the agent standing instructions, but each keeps them in its own files with its own frontmatter. Underneath, they all answer one question: when should this rule reach the model? There are four answers, and the converter reads every file into one of them before writing it out in the target’s format.
- Always on. Sent with every request: Cursor’s
alwaysApply: true, Copilot’s.github/copilot-instructions.md, Devin Desktop’strigger: always_on, CLAUDE.md and a root AGENTS.md. - Matching files. Added when the agent works on files that match a pattern: Cursor’s
globs, Copilot’sapplyTo, Devin Desktop’strigger: globand Claude Code’spaths. - Agent decides. Only a description is shown, and the agent pulls the rule in when it looks relevant: Cursor’s Apply Intelligently and Devin Desktop’s
model_decision. - Manual. Used only when you ask for it, usually with an @-mention.
Where the formats don’t line up
Always-on and file-scoped rules convert cleanly between Cursor, Copilot, Devin Desktop and Claude Code. The other two types don’t. Copilot documents description-only and manual instruction files for VS Code, but GitHub’s own docs only describe applyTo files for the cloud agent and code review. Claude Code rules read only paths, so the closest match for an agent-decided rule is a skill, which Claude loads when its description fits the task; a manual rule becomes a skill with disable-model-invocation: true that you run as a slash command. AGENTS.md has no frontmatter at all: it can only be scoped by folder, so a src/web/** rule becomes src/web/AGENTS.md, while other patterns and agent-decided rules are folded into the root file and load every time. Each of these changes appears in the notes.
Patterns and limits
Cursor and Copilot take several patterns as one comma-separated value; Claude Code takes a YAML list. Claude Code documents brace patterns such as src/**/*.{ts,tsx}; the other tools don’t, so the converter expands them into separate patterns for Cursor, Copilot and Devin Desktop. Devin Desktop’s docs show one pattern per glob rule, so a rule with several patterns is written as one file per pattern. The converter also warns when a file passes a documented size: 500 lines for a Cursor rule, 200 lines for CLAUDE.md, 12,000 characters for a Devin Desktop rule and about 1,000 lines for a Copilot instruction file.
Mentions and imports
The same @ means different things. In a Cursor rule, @template.ts tells the agent where to look, and it reads the file when needed. In CLAUDE.md, @path outside backticks imports the whole file at launch, up to four levels deep. The converter flags both directions, so you can wrap a mention in backticks or paste in what an import used to supply.
Do you need to convert at all?
Often not every file. Cursor reads AGENTS.md (in the root and in folders) and CLAUDE.md, which it always applies. Copilot’s cloud agent reads AGENTS.md, CLAUDE.md or GEMINI.md, and Devin Desktop treats a root AGENTS.md as an always-on rule and one in a folder as a rule for that folder. Claude Code reads AGENTS.md from v2.1.277 when there’s no CLAUDE.md. If your rules are project-wide, one AGENTS.md may cover every tool you use; convert to tool-specific files when you need file patterns or rules the agent pulls in only when relevant.
Everything runs in your browser. File formats were checked against each tool’s documentation on 2026-10-12.
Examples
Worked examples
| Applies | Cursor (.mdc) | GitHub Copilot | Devin Desktop (Windsurf) | Claude Code | AGENTS.md |
|---|---|---|---|---|---|
| Always on | alwaysApply: true | .github/copilot-instructions.md | trigger: always_on | CLAUDE.md (or a rule without paths) | Root AGENTS.md |
| Matching files | globs (comma-separated) | applyTo (comma-separated, quoted) | trigger: glob + globs (one pattern) | .claude/rules/ with a paths list | Nested AGENTS.md, folders only |
| Agent decides | description | description only (VS Code) | trigger: model_decision + description | A skill with a description | No equivalent |
| Manual | No description or globs; @-mention it | No applyTo or description; attach it (VS Code) | trigger: manual; @-mention it | A skill with disable-model-invocation: true | No equivalent |
A Cursor project converted to Claude Code
The four rules in the “Cursor rules” example, one of each type, become 4 files: the always-on rule is CLAUDE.md, the file-scoped rule keeps its brace pattern in .claude/rules/, the agent-decided rule becomes a skill, and the manual rule becomes a skill you run with /migrations.
- Package manager: pnpm. Never use npm or yarn.
- Run `pnpm test` and `pnpm lint` before you say a task is done.
- Never edit generated files in `dist/` or `src/generated/`.
---
paths:
- "src/components/**/*.{ts,tsx}"
---
- Use named exports, not default exports.
- Keep components under 200 lines; extract subcomponents into the same folder.
- Styles go in a CSS module next to the component.
---
description: "Conventions for backend API services and request validation"
---
- One service per file under `src/services/`.
- Validate every request body with the Zod schemas in `src/schemas/`.
- Return `{ code, message }` errors; never throw raw strings.
---
disable-model-invocation: true
---
- Every migration needs both `up` and `down`.
- Never change a column type in place: add a column, backfill, then drop the old one.
The same file-scoped rule for Copilot
---
globs: src/components/**/*.{ts,tsx}
alwaysApply: false
---
- Use named exports, not default exports.
- Keep components under 200 lines; extract subcomponents into the same folder.
- Styles go in a CSS module next to the component.
---
applyTo: "src/components/**/*.ts,src/components/**/*.tsx"
---
- Use named exports, not default exports.
- Keep components under 200 lines; extract subcomponents into the same folder.
- Styles go in a CSS module next to the component.
Cursor’s globs becomes a quoted applyTo, and the brace pattern is expanded into two comma-separated patterns.
FAQ
Frequently asked questions
How do I convert .cursorrules to CLAUDE.md?
Open or paste your .cursorrules file, choose Claude Code as the target and download CLAUDE.md. The legacy file is always applied, so it becomes your CLAUDE.md as it is. Check the notes for @file mentions: in Cursor they point the agent at a file, but in CLAUDE.md the same text imports the whole file at launch. Wrap any you want kept as pointers in backticks.
Is .cursorrules deprecated?
Cursor’s help centre calls the root .cursorrules file legacy and says it will be deprecated. Its migration advice is to create a project rule in .cursor/rules, paste the old content in, set the type to Always Apply and delete .cursorrules. Project rules must use the .mdc extension; a plain .md file in that folder is ignored. Cursor also reads AGENTS.md and CLAUDE.md.
What is the GitHub Copilot equivalent of Cursor rules?
Always-on rules go in .github/copilot-instructions.md. Rules scoped to files go in .github/instructions/NAME.instructions.md with an applyTo glob in the frontmatter, such as applyTo: "**/*.ts,**/*.tsx". Copilot uses both files when they match. A file with only a description, which matches Cursor’s Apply Intelligently, is loaded on demand by VS Code but isn’t documented for Copilot on GitHub.com.
Where do Windsurf rules go now?
Windsurf was renamed Devin Desktop in June 2026. Workspace rules go in .devin/rules/*.md, with .windsurf/rules/*.md still read as a fallback and the legacy .windsurfrules file still read too. Each rule sets a trigger: always_on, glob, model_decision or manual. Workspace rule files are limited to 12,000 characters each and the global rules file to 6,000.
Should I use AGENTS.md instead of tool-specific rules?
If your rules apply to the whole project, yes: one AGENTS.md is read by Cursor, Copilot’s cloud agent, Devin Desktop, Codex and Claude Code (from v2.1.277, when there’s no CLAUDE.md). Gemini CLI reads GEMINI.md by default, but you can point its context.fileName setting at AGENTS.md. It has no frontmatter, so it can’t express file patterns or agent-decided rules; nested AGENTS.md files scope instructions to a folder. Keep tool-specific files for rules that need that control. To write a new AGENTS.md or CLAUDE.md from scratch, use the CLAUDE.md generator.
Does Claude Code have rule types like Cursor?
Partly. CLAUDE.md and .claude/rules files without paths always load. A rule with a paths list loads when Claude reads or edits a matching file, like Cursor’s Apply to Specific Files. There’s no description-triggered rule, so the converter writes those as skills, which Claude loads when the description fits; manual rules become skills you run with a slash command. The skill generator checks the result.
Is anything uploaded when I convert my rules?
No. Reading, converting and zipping all happen in your browser, and nothing you paste or open is sent to a server. The converter does check for anything that looks like an API key, token or password, because rule files are committed to your repository and sent to the model with every request.
Related
Related tools
- CLAUDE.md GeneratorGenerate a CLAUDE.md and AGENTS.md for your project.
- Claude Skill GeneratorCreate a SKILL.md and skill folder, or validate one you have.
- Claude Code Settings BuilderBuild and check a settings.json with permission rules.
- MCP Config GeneratorBuild MCP server configs for Claude, Cursor, VS Code and Devin Desktop (Windsurf).
- AI Token CounterCount tokens for GPT, Claude, Gemini, DeepSeek, Qwen and more.
- Context Window CheckerSee whether your text fits each model’s context window.