Convert Cursor rules to GitHub Copilot instructions

GitHub Copilot reads repository-wide instructions from .github/copilot-instructions.md and path-specific instructions from .github/instructions/*.instructions.md. Path-specific files use an applyTo field with comma-separated globs, which maps cleanly from Cursor's globs.

Copilot has no equivalent of Cursor's description-triggered or manual rules, so those are merged into the repository-wide file with a note, or left out.

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 Section in .github/copilot-instructions.md Kept
      globs .github/instructions/<name>.instructions.md with applyTo Kept
      description only Section in copilot-instructions.md with an “apply when relevant” note Adapted
      Manual rules Section with an “only when asked” note, or dropped Adapted

      Steps

      1. Drop your Cursor rule files into the converter.
      2. Choose how to handle description-only and manual rules.
      3. Download and unpack at the repository root; the .github paths are already in place.
      4. Commit the files and check the support notes below for which Copilot surfaces use each file.

      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

      .github/copilot-instructions.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.

      .github/instructions/react-components.instructions.md

      ---
      applyTo: "src/components/**/*.tsx"
      ---
      
      - Function components only; no default exports.
      - Co-locate tests as `Component.test.tsx`.

      Report for this example

      Things to watch for

      FAQ

      Can Copilot use .cursorrules directly?

      No. GitHub's docs list copilot-instructions.md, .instructions.md files and agent files (AGENTS.md, CLAUDE.md, GEMINI.md) as sources; Cursor's files are not on the list.

      How do I write multiple globs in applyTo?

      Separate them with commas inside one string, for example "**/*.ts,**/*.tsx". The converter does this for you.

      Sources

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

      Related conversions