Convert Cursor rules to CLAUDE.md for Claude Code
Claude Code does not read Cursor's rule files. Its documentation lists CLAUDE.md, CLAUDE.local.md, the .claude/rules/ directory and AGENTS.md as instruction sources, so .cursor/rules/*.mdc and .cursorrules need to be converted.
The good news: Claude Code's .claude/rules/ files accept a paths field that works like Cursor's globs. Rules that only apply to some files can stay scoped instead of being pasted into one long CLAUDE.md.
Input
Everything runs in your browser. Files are never uploaded.
Output
Converted files appear here. Conversion report
How each rule type converts
| In Cursor rules (.mdc) | Becomes | Result |
|---|---|---|
alwaysApply: true (Always Apply) | Section in CLAUDE.md | Kept |
globs (Apply to Specific Files) | .claude/rules/<name>.md with paths | Kept |
description only (Apply Intelligently) | Section in CLAUDE.md with an “apply when relevant” note | Adapted |
| No fields set (Apply Manually) | Section in CLAUDE.md with an “only when asked” note, or dropped | Adapted |
Legacy .cursorrules | CLAUDE.md | Kept |
| Unknown frontmatter fields | Not supported; listed in the report | Dropped |
Steps
- Drop your
.cursorfolder (or the.mdcfiles) into the converter, or paste a single rule. - Keep Write file-scoped rules to .claude/rules/ checked to preserve globs as
paths. - Read the report. Anything marked adapted was rewritten as text because CLAUDE.md has no equivalent trigger.
- Download the .zip and unpack it at your repository root. In Claude Code, run
/contextand check the memory files list to confirm the files loaded.
Worked example
This output is generated by the same converter you use above, from an illustrative rule set.
Input
.cursor/rules/project.mdc
---
description:
globs:
alwaysApply: true
---
# Project
- Next.js App Router with TypeScript in strict mode.
- Use pnpm. Run `pnpm test` and `pnpm lint` before committing.
- Never commit secrets; read config from environment variables. .cursor/rules/react-components.mdc
---
description: React component conventions
globs: src/components/**/*.tsx
alwaysApply: false
---
- Function components only; no default exports.
- Co-locate tests as `Component.test.tsx`. .cursor/rules/database.mdc
---
description: Read before writing or changing database migrations
globs:
alwaysApply: false
---
- Never edit a migration that has already been applied.
- Every new table needs a primary key and created_at. .cursor/rules/release.mdc
---
description:
globs:
alwaysApply: false
---
- Bump the version in package.json and update CHANGELOG.md. Output
CLAUDE.md
## Project
- Next.js App Router with TypeScript in strict mode.
- Use pnpm. Run `pnpm test` and `pnpm lint` before committing.
- Never commit secrets; read config from environment variables.
## Database
_Apply when relevant: Read before writing or changing database migrations_
- Never edit a migration that has already been applied.
- Every new table needs a primary key and created_at.
## Release
_Apply only when explicitly asked to._
- Bump the version in package.json and update CHANGELOG.md. .claude/rules/react-components.md
---
paths:
- src/components/**/*.tsx
---
- Function components only; no default exports.
- Co-locate tests as `Component.test.tsx`. Report for this example
- kept Project: Merged into CLAUDE.md (always on).
- adapted Database: CLAUDE.md has no way to mark a rule as agent-decided, so it was inlined with a note: Apply when relevant: Read before writing or changing database migrations
- adapted Release: CLAUDE.md has no way to mark a rule as manual, so it was inlined with a note: Apply only when explicitly asked to.
- kept React Components: Written to .claude/rules/react-components.md with `paths` (`src/components/**/*.tsx`), so it loads only for matching files.
Things to watch for
- Rules in
.claude/rules/without apathsfield load at launch, just like CLAUDE.md. Only file-scoped rules are written there by default. - Claude Code reads
AGENTS.mdonly when there is no CLAUDE.md in the working directory or above it. If your repo already has an AGENTS.md, add a line@AGENTS.mdto the new CLAUDE.md so both load. - “Apply Intelligently” rules have no direct CLAUDE.md equivalent. If a rule is long and only matters for one kind of task, consider turning it into a Claude Code skill, which is also loaded by description.
- Lines that start with
@are imports in CLAUDE.md. The report flags them so you can check that each referenced file exists.
FAQ
Does Claude Code read .cursorrules or .cursor/rules?
Not according to its memory documentation, which lists CLAUDE.md, CLAUDE.local.md, .claude/rules/ and AGENTS.md. Convert the Cursor files, or move shared rules into AGENTS.md, which both Cursor and Claude Code can read.
Can I keep using Cursor and Claude Code on the same repo?
Yes. A common setup is AGENTS.md for shared rules (Cursor reads it), Cursor-only scoped rules in .cursor/rules, and a CLAUDE.md that imports AGENTS.md. Convert to AGENTS.md with bridge files enabled to get that layout.
Is my code uploaded?
No. Parsing and conversion run in your browser; the files you drop are never sent to a server.
Sources
Related conversions
- Cursor rules → AGENTS.md One open-format file that most coding agents read.
- CLAUDE.md ↔ AGENTS.md Share one instructions file between Claude Code and other agents.
- .cursorrules → .mdc Migrate the legacy single file to Cursor project rules.
- Which file does each tool read? Compatibility table with sources.