Pacing Parity
Write your Cursor rules once and get the Claude Code files generated from them, with a check that catches drift.
github.com/Pacing-Agency/cursor-claude-parity
$python3 cursor_claude_parity.py$python3 cursor_claude_parity.py --checkin sync
We write our rules once, in Cursor: tone, what an agent may and may not do, which tools it can reach. Claude Code reads a different layout. Keep two copies by hand and they drift apart, and a guardrail that exists in only one editor is not really a guardrail. So the Cursor files are the source of truth, and a script writes the Claude Code side from them.
What it writes
- MCP servers.
.cursor/mcp.jsonbecomes.mcp.json. Cursor's${env:VAR}becomes${VAR}, theenvFileline is dropped, and URL servers get a type. - Rules. A marked block in
CLAUDE.mdlists the always-on rules. Always-on rules are copied into.claude/rules/, and rules that apply to certain files become short pointers that load only when those files are touched. - Agents and skills. Short pointers back to the Cursor file, so there is one playbook, not two. Cursor model names are dropped, because Claude Code does not know them.
- Hooks.
.cursor/hooks.jsonbecomes.claude/settings.json, with the event names converted.
Why the rules are copied
We found out the hard way that Claude Code only reads an @ import of a Markdown file. Pointed at one of Cursor's .mdc rule files, the import is listed but its content never reaches the model, so the rule silently does nothing. The script writes the always-on rules out as ordinary copies instead.
How it stays safe
- It never overwrites your own work. Every file it writes carries a marker. A hand-written file of the same name is left alone and reported. In
CLAUDE.mdit only touches the block between its two markers, so the prose around it stays yours. - It checks for drift. Run with
--check, it writes nothing and exits with 1 if the generated files are out of date, which suits CI or a pre-commit hook. - It stays clear of secrets. It never reads
.env, and values for${env:...}stay as references. - It tells you what it skipped. A Cursor hook event with no Claude Code equivalent is named in the output, not dropped quietly.
What does not transfer
Cursor marketplace plugins, canvases and Cursor sign-ins stay in Cursor. Remote MCP servers need authorising again in Claude Code. A person still decides what the rules say and still writes the rest of the project instructions by hand.
What it runs on
One Python file, using only the standard library, with nothing to install. We run it across our own repos, and this site's Claude Code setup was generated by it. It is open source under the MIT licence, with a small example repo and tests: Pacing-Agency/cursor-claude-parity on GitHub.
Other things we built
- Built by us
Pacing Journey
The stored visits and forms from one person on one timeline.
See the build+4
- Built by us
Pacing TechStack
Our in-house scanner lists the tools and tracking a website runs. A quick scan takes about 5 seconds.
See the build - Built by us
Pacing CRM
Our own CRM: a form fill becomes a person, a deal and an instant alert.
See the build
+2
Bring your numbers.
We'll tell you if the spend makes sense.
- A 15-minute callYour goals, your challenges, and whether we're the right fit.
- A 1-hour discovery callWe dig into your numbers. Worth a hundred emails.
- A concrete planAds, a custom build or both, as a one-off project or ongoing.








