Skip to main content

Declarative plugin manager for Claude Code

Project description

ai-config

Declarative plugin manager for Claude Code — with cross-tool conversion to Codex, Cursor, OpenCode, and Pi.

Why this exists

You've spent time building up your AI coding setup — custom skills, MCP servers, hooks, workflows. Then you want to try Codex or Pi, and you're starting from scratch. Or you get a new machine and have to remember what you installed.

ai-config solves both problems. You define your setup in one YAML file, and it:

  1. Installs your plugins across machines reproducibly (ai-config sync)
  2. Converts your setup to work with other tools automatically — same skills, same config, no manual porting

No more vendor lock-in because your customizations are trapped in one tool's config directory. No more juggling dotfiles across .claude/, .codex/, .cursor/, .opencode/, and .pi/. Write it once, sync everywhere.

Or more simply, run ai-config init and it walks you through everything.

What this isn't

This README does not have:

  • 14 shields.io badges declaring build status, coverage, npm downloads, discord members, twitter followers, and mass-to-charge ratio
  • A mass of emojis to make it look "friendly" and "approachable"
  • Claims about revolutionizing your development workflow
  • A "Quick Start" that's actually 73 steps
  • Screenshots of a dashboard that doesn't exist
  • A "Powered by AI" badge despite just being a for-loop

It's a config file and some commands. That's it.

Installation

pip install ai-config-cli
# or
uv tool install ai-config-cli

This installs ai-config globally. Run ai-config --help to verify.

From source (latest)

uv tool install git+https://github.com/safurrier/ai-config

For development

git clone https://github.com/safurrier/ai-config.git
cd ai-config
just setup    # Install dependencies
just check    # Run lint, type check, tests

Quick Start

1. Create your config

ai-config init

Interactive wizard walks you through adding marketplaces and plugins. Supports GitHub repos and local paths (including env vars like $DOTS_REPO/plugins for portability across machines). Creates .ai-config/config.yaml.

2. Sync to install plugins

ai-config sync

Installs/uninstalls plugins to match your config. If you have conversion enabled, it also generates config for Codex, Cursor, and OpenCode.

If plugins seem stale or out of date:

ai-config sync --fresh

3. Iterate with watch (plugin development)

ai-config watch

Auto-syncs when you edit config or plugin files. Press Ctrl+C to stop.

Note: Claude Code loads plugins at session start. After changes sync, restart Claude Code to apply them. Use claude --resume to continue your previous session.

4. Troubleshoot with doctor

ai-config doctor

Validates marketplaces, plugins, skills, hooks, and MCP servers. Shows fix hints for any issues.

Example: one config, five tools

Say you have a plugin marketplace with your coding skills and MCP servers. Here's the full config:

version: 1
targets:
  - type: claude
    config:
      marketplaces:
        my-plugins:
          source: github
          repo: myorg/ai-plugins
      plugins:
        - id: code-review@my-plugins
          scope: user
        - id: test-writer@my-plugins
          scope: user
      conversion:
        enabled: true
        targets: [codex, cursor, opencode, pi]
        scope: user

Run ai-config sync and you get:

  • Claude Code: plugins installed via claude plugin install
  • Codex: skills in ~/.codex/skills/, MCP in ~/.codex/mcp-config.toml
  • Cursor: rules in ~/.cursor/rules/, MCP in ~/.cursor/mcp.json
  • OpenCode: skills in ~/.opencode/skills/, MCP in ~/opencode.json
  • Pi: skills in ~/.pi/agent/skills/, prompt templates in ~/.pi/agent/prompts/

Same skills, same setup, every tool. Check this config into your dotfiles and run ai-config sync on any machine.

Want to try Pi for the first time? Just add pi to the targets list and re-sync. Your skills are already there.

What it does

Declarative config - Define your plugins in .ai-config/config.yaml:

version: 1
targets:
  - type: claude
    config:
      marketplaces:
        my-marketplace:
          source: github
          repo: owner/repo
        my-local-plugins:
          source: local
          path: $DOTS_REPO/plugins    # env vars preserved for portability
      plugins:
        - id: my-plugin@my-marketplace
          scope: user
          enabled: true
      conversion:
        enabled: true
        targets: [codex, cursor, opencode, pi]
        scope: user

Interactive setup - Don't want to write YAML? Run the wizard:

ai-config init

Walks you through adding marketplaces and plugins with arrow-key navigation. Escape goes back a step, Ctrl+C cancels.

Sync - Make reality match your config:

ai-config sync

Cross-tool conversion - Generate config for other AI coding tools:

ai-config convert --plugin ~/.claude/plugins/my-plugin --target codex

Or let sync handle it automatically with the conversion: section in your config. Skills, hooks, MCP servers, and commands are mapped to each tool's native format.

Validation - Find problems before they bite you:

ai-config doctor
ai-config doctor --target codex    # validate converted output

Checks that marketplaces exist, plugins are installed, skills are valid, hooks work.

Commands

Command What it does
init Interactive config generator
sync Install/uninstall plugins to match config (+ conversion)
status Show what's currently installed
watch Auto-sync on file changes (plugin development)
update Update plugins to latest versions
doctor Validate setup and show fix hints
convert Convert a plugin to another tool's format
plugin create Scaffold a new plugin
cache clear Clear the plugin cache

Config file locations

ai-config looks for config in this order:

  1. .ai-config/config.yaml (project-local)
  2. ~/.ai-config/config.yaml (global)

You can also pass -c /path/to/config.yaml to any command.

Paths support environment variables ($MY_VAR) and tilde (~), expanded at load time.

Scopes

Plugins can be installed in different scopes:

  • user - Available everywhere (~/.claude/plugins/)
  • project - Only in the current project (.claude/plugins/)

Conversion targets

ai-config converts Claude plugins to work with:

Tool Output Binary
Codex (OpenAI) .codex/ codex
Cursor .cursor/ cursor-agent
OpenCode .opencode/ opencode
Pi .pi/ pi

Skills, commands, hooks, and MCP servers are mapped to each tool's native format. Not everything maps 1:1 — conversion reports show what was native, approximated, or unsupported.

Troubleshooting

Something not working? Force a full rebuild:

ai-config sync --force

This clears the plugin cache and re-converts everything from scratch. Use it when plugins aren't showing up, you've added a new conversion target, or things are just out of sync.

If you only want to redo conversions without clearing the plugin cache:

ai-config sync --force-convert

Something's broken and Claude Code won't help

ai-config doctor --verbose

Converted output looks wrong

ai-config doctor --target codex    # or cursor, opencode, pi

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ai_config_cli-0.4.2.tar.gz (276.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ai_config_cli-0.4.2-py3-none-any.whl (97.5 kB view details)

Uploaded Python 3

File details

Details for the file ai_config_cli-0.4.2.tar.gz.

File metadata

  • Download URL: ai_config_cli-0.4.2.tar.gz
  • Upload date:
  • Size: 276.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ai_config_cli-0.4.2.tar.gz
Algorithm Hash digest
SHA256 8afae3d999dc1018d0451226483eb5e8a30a82d9e95db191b66be2df6957d118
MD5 2ef8efbf42d592cd7dac2b93e29855f1
BLAKE2b-256 d6124fc82a47eb4fac5e0d0fd655082366e1b129a08c9003cb13d6cd1c9525cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for ai_config_cli-0.4.2.tar.gz:

Publisher: publish.yml on safurrier/ai-config

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ai_config_cli-0.4.2-py3-none-any.whl.

File metadata

  • Download URL: ai_config_cli-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 97.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ai_config_cli-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 296fa4b84520c27493b3232b3239855667655955274d2f7463cc97c507cd4eb7
MD5 4e44d824a0a3433fe87004a697bba5c2
BLAKE2b-256 fdc5e95d8f3656d6c20a05e79d14aaef67b107e5c328a6591118390ce1ace785

See more details on using hashes here.

Provenance

The following attestation bundles were made for ai_config_cli-0.4.2-py3-none-any.whl:

Publisher: publish.yml on safurrier/ai-config

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page