Install
npx rule-porter --to agents-mdclaude mcp add rule-porter -- npx rule-porter --to agents-md{
"mcpServers": {
"rule-porter": {
"command": "npx",
"args": [
"rule-porter",
"--to",
"agents-md"
]
}
}
}Install command taken from the project's README or registry entry. Always review code before running it.
README excerpt
Read full README on GitHub →rule-porter
Switch AI editors without rewriting all your rules.
Convert Cursor rules to Claude Code, GitHub Copilot, Windsurf, or AGENTS.md. And back. Bidirectional. Zero dependencies.
npx rule-porter --to agents-md
The problem
Your rules are locked into one tool's format. Cursor uses .mdc files with YAML frontmatter and glob patterns. Claude Code uses CLAUDE.md. Copilot uses .github/copilot-instructions.md. None of them understand each other.
What you get
$ npx rule-porter --to agents-md
Converting 12 Cursor rules → AGENTS.md
✓ 9 rules converted cleanly
⚠ 3 rules had glob patterns (preserved as comments)
Written: AGENTS.md
Converting back works too:
npx rule-porter --from agents-md --to cursor
# → 12 individual .mdc files with frontmatter and globs restored
Supported formats
| Format | Read | Write | File |
|---|---|---|---|
| Cursor | ✅ | ✅ | .cursor/rules/*.mdc |
| Cursor (legacy) | ✅ | — | .cursorrules |
| AGENTS.md | ✅ | ✅ | AGENTS.md |
| Claude Code | ✅ | ✅ | CLAUDE.md |
| GitHub Copilot | ✅ | ✅ | .github/copilot-instructions.md |
| Windsurf | ✅ | ✅ | .windsurfrules |
Common conversions
# Cursor → other formats
npx rule-porter --to agents-md
npx rule-porter --to claude-md
npx rule-porter --to copilot
npx rule-porter --to windsurf
# Other formats → Cursor
npx rule-porter --from agents-md --to cursor
npx rule-porter --from claude-md --to cursor
# Between any two formats
npx rule-porter --from agents-md --to claude-md
# Migrate legacy .cursorrules to .mdc
npx rule-porter --from cursorrules-legacy --to cursor
# Preview without writing
npx rule-porter --to agents-md --dry-run
What converts cleanly
- Rule names, descriptions, and body content
- Global vs conditional rule separation
alwaysApplyrules become top-level sections- Globs are restored when converting back to Cursor
What gets flagged
- Glob patterns become comments in flat formats (markdown doesn't support file scoping)
- Manual-attach rules (no globs, not alwaysApply) get flagged for review
- No silent data loss. Every non-1:1 conversion produces a warning.
Options
--to <format> Target format (required)
--from <format> Source format (default: auto-detect)
--out Output file path
--dry-run Preview without writing
Next step: check your converted rules
After converting, make sure they actually work:
npx cursor-doctor scan # Health check with letter grade
npx cursor-doctor lint # Detailed rule-by-rule linting
cursor-doctor catches broken frontmatter, conflicting instructions, and 100+ other issues. Also: rule-gen generates rules from your codebase using AI. npx rulegen-ai
License
MIT
Similar plugs
Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, Google Antigravity, and Pi
The Developer Tool for Visual Engineers • An Open-Source AI-First Design tool • Visually build, style, and edit your code with AI • World's best, top-most agent recommended #1…
A powerful GUI app and Toolkit for Claude Code - Create custom agents, manage interactive Claude Code sessions, run secure background agents, and more.