Convert .cursorrules to .cursor/rules (.mdc)

Cursor's documentation calls the root .cursorrules file legacy and points to project rules in .cursor/rules (or AGENTS.md) instead. Project rules are .mdc files with a small frontmatter block that controls when each rule loads.

The converter splits your file at every ## heading, writes one .mdc file per section with alwaysApply: true, and keeps code blocks intact. You then decide which sections deserve narrower scoping.

Input

    Everything runs in your browser. Files are never uploaded.

    Output

    Converted files appear here.

    Conversion report

      How each rule type converts

      In .cursorrules (legacy) Becomes Result
      Each ## Heading section .cursor/rules/<heading>.mdc, Always Apply Kept
      Text before the first heading .cursor/rules/overview.mdc Kept
      File without ## headings One project.mdc Kept
      Headings inside code blocks Left alone (not treated as sections) Kept

      Steps

      1. Paste your .cursorrules or drop the file. Split by ## headings is already on.
      2. Download the .zip and unpack it at the repository root.
      3. Open each generated file and narrow it where it makes sense: set globs (for example tests/**) and alwaysApply: false, or write a description so the agent pulls it in only when relevant.
      4. Delete .cursorrules once the new rules work, so Cursor doesn't see the same instructions twice.

      Worked example

      This output is generated by the same converter you use above, from an illustrative rule set.

      Input

      .cursorrules

      You are working on a Python 3.12 FastAPI service.
      
      ## Code style
      
      - Type hints on every public function.
      - Format with ruff; line length 100.
      
      ## Testing
      
      - Use pytest. Put tests in tests/ mirroring the package layout.
      - Run `uv run pytest` before you finish a task.
      
      ## API
      
      - Validate request bodies with Pydantic models.
      - Return errors as {"detail": "..."} with the right status code.

      Output

      .cursor/rules/overview.mdc

      ---
      description:
      globs:
      alwaysApply: true
      ---
      
      You are working on a Python 3.12 FastAPI service.

      .cursor/rules/code-style.mdc

      ---
      description:
      globs:
      alwaysApply: true
      ---
      
      - Type hints on every public function.
      - Format with ruff; line length 100.

      .cursor/rules/testing.mdc

      ---
      description:
      globs:
      alwaysApply: true
      ---
      
      - Use pytest. Put tests in tests/ mirroring the package layout.
      - Run `uv run pytest` before you finish a task.

      .cursor/rules/api.mdc

      ---
      description:
      globs:
      alwaysApply: true
      ---
      
      - Validate request bodies with Pydantic models.
      - Return errors as {"detail": "..."} with the right status code.

      Report for this example

      Things to watch for

      FAQ

      Is .cursorrules still supported?

      Cursor's docs describe it as legacy and say it will be deprecated; they recommend project rules or AGENTS.md. Migrating now avoids a surprise later.

      What do description, globs and alwaysApply do?

      alwaysApply: true loads the rule in every chat. globs loads it when matching files are in context. A description alone lets the agent decide. With none set, you @-mention the rule manually.

      Sources

      Format details last checked against these docs on 2026-10-30.

      Related conversions