Approach

Every business is different, so we always start with a conversation.

How we work
About

We're a small London team of marketers, and we use AI to go faster.

About us
  • Cam BowenCam BowenCo-founder
  • Ben PowerBen PowerCo-founder
  • ElectraElectra
  • MahirMahir
  • NatashaNatasha
  • RahabaRahaba
  • ZobaerZobaer
Open to anyone

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

Open source on GitHub

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.json becomes .mcp.json. Cursor's ${env:VAR} becomes ${VAR}, the envFile line is dropped, and URL servers get a type.
  • Rules. A marked block in CLAUDE.md lists 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.json becomes .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.md it 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.

Next step

Bring your numbers.

We'll tell you if the spend makes sense.

  1. A 15-minute callYour goals, your challenges, and whether we're the right fit.
  2. A 1-hour discovery callWe dig into your numbers. Worth a hundred emails.
  3. A concrete planAds, a custom build or both, as a one-off project or ongoing.
15 minutes · No pitch deck · A straight answer