~ / ..

a16n: Take Your Agent Customization Anywhere

One command to move your AI coding setup between tools

an announcement by niko

You’ve spent weeks tuning your AI coding agent. Rules for how it handles your React components. Skills for your deployment workflow. Ignore patterns so it stays out of generated code. Slash commands for common operations. It all works beautifully.

Then your team gets Claude Code licenses. Or you want to try Cursor on a side project. Or half your team uses one tool and half uses the other.

Your choices: re-create everything by hand, or lose it.

I built a16n so neither has to happen.

What It Does#

npx a16n convert --from cursor --to claude

That reads your Cursor rules, skills, commands, and ignore patterns, and writes equivalent Claude Code configuration. The reverse works too:

npx a16n convert --from claude --to cursor

Your carefully-crafted agent setup comes with you. One command, both directions.

Getting Started#

No install required. npx handles it:

# See what you have (without changing anything)
npx a16n discover --from cursor

# Preview the conversion
npx a16n convert --from cursor --to claude --dry-run

# Do it for real
npx a16n convert --from cursor --to claude

That’s the whole recipe. Three commands: inspect, preview, convert.

If you want it permanently:

npm install -g a16n

What Converts#

a16n understands six kinds of agent customization:

What Cursor Claude Code
Global prompts alwaysApply: true rules CLAUDE.md, .claude/rules/*.md
File rules globs: [...] rules .claude/rules/*.md with paths:
Skills Rules with description:, .cursor/skills/ .claude/skills/*/SKILL.md
Manual prompts .cursor/commands/*.md Skills with disable-model-invocation
Ignore patterns .cursorignore permissions.deny
Full skill packages AgentSkills.io format AgentSkills.io format

Things that translate cleanly just translate. Things that can’t (like Claude’s hooks, or Cursor commands that use $ARGUMENTS) get skipped with a clear warning telling you why. No silent data loss.

Beyond Two Tools#

a16n isn’t hardwired to Cursor and Claude. It uses a plugin architecture: each tool is a plugin that knows how to read and write its own format. Cursor and Claude are built in. More can be added.

There’s also a neutral format - the a16n IR - that you can convert to and from:

# Store your config in a tool-agnostic format
npx a16n convert --from cursor --to a16n

# Render it for any supported tool
npx a16n convert --from a16n --to claude

This makes a16n useful as a hub. Maintain one canonical set of agent customization and generate tool-specific configuration on demand - per developer, per project, per CI run.

Third-party plugins are auto-discovered from npm. If a package is named a16n-plugin-* and implements the plugin interface, a16n will find it. There’s already one: a16n-plugin-cursorrules adds support for the legacy .cursorrules format:

npm install -g a16n-plugin-cursorrules
npx a16n convert --from cursorrules --to cursor

Useful Flags#

A few things that came up during real use:

Separate read/write directories. Read from one project, write to another:

npx a16n convert --from cursor --to claude --from-dir ./proj-a --to-dir ./proj-b

Path reference rewriting. If your rule content references file paths (like .cursor/rules/auth.mdc), a16n can rewrite those references to point to the new locations:

npx a16n convert --from cursor --to claude --rewrite-path-refs

Source cleanup. Delete the source files after conversion (only if they were fully consumed - partially-converted sources are preserved):

npx a16n convert --from cursor --to claude --delete-source

Git integration. Control whether output files are tracked or ignored:

npx a16n convert --from cursor --to claude --gitignore-output-with match

The Name#

a16n is a numeronym, like i18n (internationalization) or l10n (localization). Smash ā€œagent customizationā€ together and count the letters between the first and last: a-[gentcustomizatio]-n. Sixteen. It’s short, it’s npm-able, and it was available.

Status#

a16n is on npm at v0.13.0. I’ve been running it in my own workflow for a couple of weeks without incident. The documentation covers the CLI, conversion semantics, and plugin development.

It’s open source under AGPL-3.0 at github.com/Texarkanine/a16n. Contributions welcome - especially plugins for tools I don’t use. If you’re curious about how it got built, there’s a companion diary.

If you have agent customization in one tool and wish you had it in another, give it a try:

npx a16n convert --from cursor --to claude --dry-run

The worst that happens is you see what would change.

~ / ..