Reads .claude/rules/ (or CLAUDE.md) as canonical source and generates native config files for every major AI coding assistant.
Each AI coding tool uses a different config file:
CLAUDE.md + .claude/rules/*.mdAGENTS.mdGEMINI.md.cursor/rules/*.mdc.github/copilot-instructions.md.windsurf/rules/*.md.clinerules/*.mdCONVENTIONS.md.kiro/steering/*.md.amazonq/rules/*.md.goosehints.trae/rules/*.md.rulesAGENTS.md (shared)Maintaining 16 files for the same instructions is absurd. Config-sync fixes it.
.claude/rules/*.md (most expressive format — supports glob patterns, frontmatter conditions, always/attached/triggered modes)CLAUDE.md at repo root if .claude/rules/ doesn't existbash
python3 ~/.openclaw/skills/config-sync/scripts/config-sync.py /path/to/repo
bash
python3 ~/.openclaw/skills/config-sync/scripts/config-sync.py /path/to/repo --tools codex,gemini,cursor
bash
python3 ~/.openclaw/skills/config-sync/scripts/config-sync.py /path/to/repo --dry-run
bash
python3 ~/.openclaw/skills/config-sync/scripts/config-sync.py /path/to/repo --init
This creates .claude/rules/ from your existing CLAUDE.md as the canonical source.
ToolOutput FileNotesClaude Code.claude/rules/*.md (source, not generated)Already the canonical formatCodex CLIAGENTS.mdFlat markdown, no frontmatterGemini CLIGEMINI.mdFlat markdownCursor.cursor/rules/config-sync.mdcMDC format with description + globsGitHub Copilot.github/copilot-instructions.mdFlat markdownWindsurf.windsurf/rules/config-sync.mdFlat markdownCline/Roo.clinerules/config-sync.mdFlat markdownAiderCONVENTIONS.mdFlat markdown, concise styleKiro.kiro/steering/config-sync.mdFlat markdownAmazon Q.amazonq/rules/config-sync.mdFlat markdownGoose.goosehintsLine-per-rule, no markdownTrae AI.trae/rules/config-sync.mdFlat markdownZed.rulesFlat markdown
alwaysApply: true/false — Claude Code specific<!-- Generated by config-sync. Edit source at .claude/rules/ -->.goosehints): Each rule becomes one line, no markdown.mdc): Gets MDC frontmatter with description and globs: **CONVENTIONS.md): Condensed to bullet points, no long explanations.claude/rules/*.md (your canonical source)config-sync to generate all other formatsThe script checks for:
.cursor/ directory → Cursor installed.github/copilot-instructions.md exists → Copilot in use.windsurf/ → Windsurf installed.clinerules/ → Cline installed.kiro/ → Kiro installed.amazonq/ → Amazon Q installed.trae/ → Trae installedAGENTS.md exists → Codex/Amp/OpenCode in useGEMINI.md exists → Gemini CLI in useIf --tools is not specified, generates all formats (belt-and-suspenders approach).
One source of truth. Many outputs. Like a compiler: write once in the richest language, emit to every target.