A detailed comparison of how the top AI coding IDEs handle rule configuration, context management, and customization.
| Feature | Cursor | Windsurf | GitHub Copilot | Claude Code | Cline | Codex | Zed AI | Gemini CLI | Aider | Continue.dev |
|---|---|---|---|---|---|---|---|---|---|---|
| Config file | .cursor/rules/*.mdc |
.windsurfrules |
.github/copilot-instructions.md |
CLAUDE.md |
.clinerules |
AGENTS.md |
.rules |
GEMINI.md |
conventions.md |
.continue/rules/*.md |
| Multi-file support | ✅ (.mdc per rule) | ❌ (single file) | ✅ (.instructions.md) | ✅ (.claude/rules/) | ✅ (.clinerules/) | ✅ (dir-based) | ❌ (single file) | ✅ (dir-based) | ❌ (single file) | ✅ (rules per topic) |
| Glob/path filtering | ✅ (globs in YAML) | ❌ | ✅ (applyTo) | ❌ (directory-based) | ✅ (YAML frontmatter) | ❌ | ❌ | ❌ | ❌ | ✅ (YAML globs) |
| Global rules | ✅ (User Rules) | ✅ (global_rules.md) | ✅ (VS Code settings) | ✅ (~/.claude/CLAUDE.md) | ✅ (VS Code settings) | ✅ (~/.codex/AGENTS.md) | ❌ | ❌ | ✅ (~/.aider.conf.yml) | ✅ (~/.continue/) |
| AGENTS.md support | ✅ native | ❌ (manual) | ✅ (detected) | ❌ (manual) | ✅ (reads it) | ✅ native | ✅ native | ✅ native | ✅ native | ❌ |
| Hierarchy levels | User > Project > Rule | Global > Project | Repo > Directory | User > Project > Dir | Global > Workspace | Global > Project > Dir | Project only | Project > Dir | Global > Project | Global > Project > Rule |
| Format | YAML frontmatter + MD | Plain Markdown | YAML frontmatter + MD | Plain Markdown | Plain MD / YAML+MD | Plain Markdown | Plain Markdown | Plain Markdown | Plain Markdown | YAML frontmatter + MD |
| Max recommended size | ~500 tokens per .mdc | ~6000 chars global | No hard limit | No hard limit | No hard limit | 32 KiB default | No hard limit | No hard limit | No hard limit | No hard limit |
| Legacy file | .cursorrules |
- | - | - | - | - | - | - | - | - |
- User Rules: Set in Cursor Settings → General → "Rules for AI"
- Project Rules (.mdc): Loaded from
.cursor/rules/directoryalwaysApply: true→ Always included in contextglobs: ["*.tsx"]→ Auto-activated when matching files are open- No flags → Only when explicitly @-mentioned
- Legacy (.cursorrules): Single file in project root, always loaded
- AGENTS.md: Read natively from project root
Loading order: User Rules → .cursorrules → .cursor/rules/*.mdc (filtered by context)
- Global Rules: Configured in Windsurf Settings → AI Settings → Global Rules
- Applied to ALL projects (max ~6000 characters)
- Project Rules (.windsurfrules): Single file in project root
- Always loaded for the project
- Plain Markdown format
Loading order: Global Rules → .windsurfrules
- Repository Instructions:
.github/copilot-instructions.md(always active) - Path-specific:
.github/instructions/*.instructions.mdwithapplyTofrontmatter - AGENTS.md: Detected and read from project root
- VS Code Settings:
github.copilot.chat.codeGeneration.instructionsin settings.json
Loading order: VS Code Settings → Repository Instructions → Path-specific (filtered)
- User-global:
~/.claude/CLAUDE.md(personal rules across all projects) - Project root:
./CLAUDE.md(project-level rules) - Modular rules:
./.claude/rules/*.md(topic-specific rules) - Directory-specific:
./subfolder/CLAUDE.md(scoped overrides)
Loading order: User-global → Project CLAUDE.md → .claude/rules/ → Directory CLAUDE.md
Key behavior: CLAUDE.md content is treated as immutable system rules with higher priority than user chat input.
- VS Code Settings: Global rules in Cline extension settings
- Single file:
.clinerulesin project root - Multi-file:
.clinerules/folder with numbered Markdown files - Cross-tool: Also reads
.cursorrules,CLAUDE.md,.windsurfrules,AGENTS.md
Loading order: VS Code Settings → .clinerules(/) → Cross-tool files (if present)
- Global scope:
~/.codex/AGENTS.override.md→~/.codex/AGENTS.md - Project scope:
AGENTS.mdfrom Git root down to current working directory - Override:
AGENTS.override.mdtakes precedence at each level - Config:
~/.codex/config.tomlfor discovery settings
Loading order: Global AGENTS.md → Project root AGENTS.md → Subdirectory AGENTS.md (concatenated)
- Project Rules: Scans project root for rule files in priority order
.rules→.cursorrules→.windsurfrules→.clinerules→.github/copilot-instructions.md→AGENTS.md→CLAUDE.md→GEMINI.md
- First match wins — only one file is loaded
Loading order: First file found in priority scan order
Key behavior: Zed is the most format-compatible editor, recognizing 8+ rule file formats natively. No proprietary config format needed.
- Project root:
./GEMINI.md(primary configuration) - Directory-specific:
./subfolder/GEMINI.md(scoped instructions) - Fallback:
AGENTS.md(also supported)
Loading order: Project GEMINI.md → Subdirectory GEMINI.md (hierarchical)
Key behavior: Similar to Claude Code's CLAUDE.md model — hierarchical plain Markdown files scoped by directory.
- Global config:
~/.aider.conf.yml(model, auto-commit, lint/test commands) - Project conventions:
.aider/conventions.mdorconventions.mdin project root - AGENTS.md: Read natively from project root
- Ad-hoc context:
--readflag to pass any file as read-only context
Loading order: Global config → Project conventions → AGENTS.md → --read files
Key behavior: CLI-based pair programming tool. Supports multiple LLM backends. Auto-commits changes by default.
- Global config:
~/.continue/directory with model configuration - Project rules:
.continue/rules/*.mdwith YAML frontmatteralwaysApply: true→ Always included in contextglobs: ["*.tsx"]→ Auto-activated for matching filesregex: "TODO|FIXME"→ Activated by content patterns
- Model config:
.continuerc.jsonin project root
Loading order: Global config → Project rules (filtered by type/glob/regex)
Key behavior: Open-source IDE extension for VS Code and JetBrains. Rule format similar to Cursor's .mdc files with YAML frontmatter.
Which IDE reads which file natively?
| File | Cursor | Windsurf | Copilot | Claude Code | Cline | Codex | Zed AI | Gemini CLI | Aider | Continue |
|---|---|---|---|---|---|---|---|---|---|---|
AGENTS.md |
✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
.cursorrules |
✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
.windsurfrules |
❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
CLAUDE.md |
❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
GEMINI.md |
❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ |
.clinerules |
❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ |
.rules |
❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
.github/copilot-instructions.md |
❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
.cursor/rules/*.mdc |
✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
.claude/rules/*.md |
❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
.continue/rules/*.md |
❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
conventions.md |
❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ |
Key insight: Zed AI is the most format-compatible editor, reading 8+ rule file formats natively. Using AGENTS.md gives you the broadest native support (Cursor, Copilot, Cline, Codex, Zed AI, Gemini CLI, Aider).
- Using one IDE: Use that IDE's native format for full feature support
- Switching between IDEs: Use AGENTS.md with symlinks
- Best approach: Maintain AGENTS.md as source of truth + symlinks
- Advanced: AGENTS.md for universal rules + IDE-specific files for advanced features
- Must have: AGENTS.md (broadest compatibility)
- Nice to have:
.github/copilot-instructions.md(GitHub integration) - Optional:
.cursor/rules/for Cursor-specific features
- Simple projects: Single AGENTS.md file is sufficient
- Medium projects: AGENTS.md + one IDE-specific config
- Complex monorepos: Hierarchical AGENTS.md + IDE-specific modular rules
See also: Migration Guide for step-by-step migration instructions between IDEs.