pm-multimodels
pm-multimodels is a Claude Code plugin that treats Claude configuration as canonical and translates it for Codex and Cursor.
It synchronizes:
- Project guidance from
CLAUDE.md
- Global and project Claude skills
- Global and project Claude commands
- Codex
AGENTS.md, skills, and command skills/prompts
- Cursor compatibility rules, skills, and commands
MCP synchronization is intentionally deferred.
This gist was critical to getting everything play nice https://gist.github.com/jylkim/ab9cb20e834532ea567d767fef14d268.
Requirements
- macOS or Linux
- Python 3.11 or newer
- Claude Code
- Codex and Cursor when testing their generated configuration
The sync engine uses only the Python standard library. No package installation is required.
Install
Clone the repository:
git clone https://github.com/mbjornson/pm-multimodel.git ~/Projects/pm-multimodels
cd ~/Projects/pm-multimodels
Validate the plugin:
claude plugin validate .
Register this checkout as a local Claude marketplace:
claude plugin marketplace add "$PWD"
Install the plugin persistently:
claude plugin install pm-multimodels@pm-multimodels --scope user
Restart Claude Code, then verify the installation:
claude plugin list
claude plugin details pm-multimodels@pm-multimodels
The plugin should appear as enabled at user scope.
Temporary Development Loading
To test the current checkout without installing it:
claude --plugin-dir "$PWD"
--plugin-dir only loads the plugin for that Claude process. It does not install the plugin or add it to claude plugin list.
Keep the repository in a stable location after registering the local marketplace. Claude uses that marketplace source when installing or updating the plugin.
Update Or Remove
After changing the plugin, update the local marketplace and installed plugin:
claude plugin marketplace update pm-multimodels
claude plugin update pm-multimodels@pm-multimodels
Uninstall the plugin and remove its marketplace:
claude plugin uninstall pm-multimodels@pm-multimodels
claude plugin marketplace remove pm-multimodels
The engine can also be used without loading the Claude plugin:
./scripts/pm-multimodels --help
Configure A Repository
The target repository must contain a root CLAUDE.md.
Start with a dry run:
/pm-multimodels:configure /path/to/repository
Or use the CLI:
./scripts/pm-multimodels configure /path/to/repository
Review the proposed operations and conflicts. Nothing is written during a dry run.
Apply an approved plan:
./scripts/pm-multimodels configure /path/to/repository --apply
By default, generated project skills are exposed through symlinks. To create regular files that can be committed:
./scripts/pm-multimodels configure /path/to/repository \
--mode copy \
--apply
Existing AGENTS.md
An existing hand-authored AGENTS.md is treated as a conflict. After reviewing and approving replacement, run:
./scripts/pm-multimodels configure /path/to/repository \
--adopt-agents \
--apply
The original file is preserved at:
.pm-multimodels/backups/AGENTS.md.bak
Cursor Ignore Rules
If .gitignore excludes .cursor/*, the dry run reports that generated Cursor skills and commands will remain untracked. To add the required exceptions:
./scripts/pm-multimodels configure /path/to/repository \
--update-gitignore \
--apply
The user decides whether generated project artifacts belong in Git.
Generated Project Files
Depending on the selected mode and available Claude sources, configuration creates:
AGENTS.md
.agents/skills/
.cursor/rules/999-pm-multimodels.mdc
.cursor/skills/
.cursor/commands/
.pm-multimodels.json
.pm-multimodels/
CLAUDE.md, .claude/skills/, and .claude/commands/ are never modified.
Global Skills And Commands
Synchronize global Claude sources:
/pm-multimodels:sync --global
Or:
./scripts/pm-multimodels sync --global --apply
Sources:
~/.claude/skills/
~/.claude/commands/
Destinations include:
~/.agents/skills/
~/.cursor/skills/
~/.cursor/commands/
~/.codex/prompts/
Global destinations are symlinked to platform-specific generated adapters under ~/.pm-multimodels/generated/. Raw Claude skills are not linked directly into Codex or Cursor.
To configure a repository and include global synchronization in the same workflow:
./scripts/pm-multimodels configure /path/to/repository \
--include-global \
--apply
Synchronize Changes
Synchronize a previously configured repository:
/pm-multimodels:sync /path/to/repository
Or:
./scripts/pm-multimodels sync /path/to/repository --apply
The repository’s .pm-multimodels.json records its selected mode and global synchronization preference.