config-sync
Write once. AI everywhere.
Generate config files for 12 AI coding assistants from a single source of truth.
The Problem
Every AI coding tool uses a different config file:
| Tool | Config File |
|---|---|
| Claude Code | CLAUDE.md + .claude/rules/ |
| Codex CLI / Amp / OpenCode / Warp | AGENTS.md |
| Gemini CLI | GEMINI.md |
| Cursor | .cursor/rules/*.mdc |
| GitHub Copilot | .github/copilot-instructions.md |
| Windsurf | .windsurf/rules/ |
| Cline / Roo Code | .clinerules/ |
| Aider | CONVENTIONS.md |
| Kiro | .kiro/steering/ |
| Amazon Q | .amazonq/rules/ |
| Goose | .goosehints |
| Trae AI | .trae/rules/ |
| Zed | .rules |
Change a rule? Update 13 files. Or let config-sync do it.
Install
pip install aiconfigsync
Or with pipx (recommended for CLI tools):
pipx install aiconfigsync
Or clone and install locally:
git clone https://github.com/nadalpiantini/config-sync.git
cd config-sync
pip install -e .
Usage
Generate all configs
config-sync /path/to/your/repo
Generate specific tools
config-sync /path/to/your/repo --tools codex,gemini,cursor
Preview without writing
config-sync /path/to/your/repo --dry-run
Migrate from CLAUDE.md
Already have a CLAUDE.md? Split it into .claude/rules/ (the canonical source):
config-sync /path/to/your/repo --init
List supported tools
config-sync --list-tools
How It Works
┌─────────────────────┐
│ .claude/rules/ │ ← your single source of truth
└─────────┬───────────┘
│ config-sync
┌─────┼─────────────────────────┐
▼ ▼ ▼ ▼ ▼ ▼
AGENTS GEMINI CURSOR COPILOT WINDSURF CLINE
.md .md /rules .md /rules /rules
▼
AIDER KIRO AMAZON-Q GOOSE TRAE ZED
.md /steer /rules hints /rules .rules
- Source:
.claude/rules/*.md— the most expressive format (frontmatter, glob patterns, conditional loading) - Transform: Concatenate rules, strip tool-specific frontmatter, adapt format per tool
- Output: Native configs for each tool with
<!-- Generated by config-sync -->headers
Smart Detection
Auto-detects which tools are already configured in your repo and reports them:
$ config-sync ./my-project
Source: 2,847 chars
Detected: cursor, copilot, codex
Generating: codex, gemini, cursor, copilot, windsurf, cline, aider, kiro, amazonq, goose, trae, zed
+ AGENTS.md (2,937 chars)
+ GEMINI.md (2,937 chars)
+ .cursor/rules/config-sync.mdc (2,933 chars)
...
Format Adaptations
Each tool gets properly formatted output:
- Cursor: MDC frontmatter with
globs: **andalwaysApply: true - Aider: Condensed to bullet points
- Goose: Plain text, one rule per line (no markdown)
- All others: Flat markdown with generated header
Supported Tools
| Tool | Output File | Format |
|---|---|---|
| Codex / Amp / OpenCode / Warp | AGENTS.md |
Markdown |
| Gemini CLI | GEMINI.md |
Markdown |
| Cursor | .cursor/rules/config-sync.mdc |
MDC |
| GitHub Copilot | .github/copilot-instructions.md |
Markdown |
| Windsurf | .windsurf/rules/config-sync.md |
Markdown |
| Cline / Roo Code | .clinerules/config-sync.md |
Markdown |
| Aider | CONVENTIONS.md |
Condensed bullets |
| Kiro (AWS) | .kiro/steering/config-sync.md |
Markdown |
| Amazon Q | .amazonq/rules/config-sync.md |
Markdown |
| Goose (Block) | .goosehints |
Plain text |
| Trae AI | .trae/rules/config-sync.md |
Markdown |
| Zed | .rules |
Markdown |
Philosophy
Write once in the richest format. Compile to every target.
.claude/rules/ is your source code. The generated configs are compiled output. Edit the source, re-run config-sync, commit all files together.
Requirements
- Python 3.10+
- Zero external dependencies
License
Metadata
Release files for aiconfigsync 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| aiconfigsync-1.1.0.tar.gz | 7.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aiconfigsync-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.9 kB
Release files / aiconfigsync-1.1.0.tar.gz
| Download URL | aiconfigsync-1.1.0.tar.gz |
|---|---|
| Size | 7.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0dffb3e36134660b5f306583778109d478c9450a41bcc91c688413a6e69526cb
|
|
BLAKE2b-256 checksum How to use checksums |
8759a69c45ec0619cd06869861c6469c5d101d20fe85650d77764297219ad879
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Release files / aiconfigsync-1.1.0-py3-none-any.whl
| Download URL | aiconfigsync-1.1.0-py3-none-any.whl |
|---|---|
| Size | 8.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f8e9486f43296eb588ac9b3669bb0e66b1f01ca472bd41d0c09df86e5da18aef
|
|
BLAKE2b-256 checksum How to use checksums |
b6947e8c33aee31f4d4592ba67c4a07e060375e4c04cb76f7503c965ab955525
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.3
|
Security for aiconfigsync 1.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.