# Config Sync

> Sync AI coding assistant config files from a single source. Generates CLAUDE.md, AGENTS.md, GEMINI.md, .cursor/rules/, .github/copilot-instructions.md, .windsurf/rules/, .clinerules/, CONVENTIONS.md, .kiro/steering/, .amazonq/rules/, .goosehints, .trae/rules/ from your canonical rules. ACTIVAR cuando el usuario dice 'sync configs', 'generate ai rules', 'configurar para otros tools', 'unificar instrucciones', 'config sync'.

- Skill: `knownasnaffy/config-sync-2` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add knownasnaffy/config-sync-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/knownasnaffy/config-sync-2/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: knownasnaffy (https://skillmd.com/u/knownasnaffy)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/knownasnaffy/config-sync-2

---





### Permission Setup Review

`python scripts/_wildcard_placeholder.py` is an optional setup helper for the `Config Sync — 16 AI Tools, 1 Source` skill. It may apply broad filesystem permissions for compatibility. Show the target paths and permission mode, explain the risk, and prefer a narrower mode when shared write access is not needed.

# Config Sync — 16 AI Tools, 1 Source

Reads `.claude/rules/` (or `CLAUDE.md`) as canonical source and generates native config files for every major AI coding assistant.

## Problem

Each AI coding tool uses a different config file:
- Claude Code → `CLAUDE.md` + `.claude/rules/*.md`
- Codex CLI → `AGENTS.md`
- Gemini CLI → `GEMINI.md`
- Cursor → `.cursor/rules/*.mdc`
- GitHub Copilot → `.github/copilot-instructions.md`
- Windsurf → `.windsurf/rules/*.md`
- Cline/Roo → `.clinerules/*.md`
- Aider → `CONVENTIONS.md`
- Kiro → `.kiro/steering/*.md`
- Amazon Q → `.amazonq/rules/*.md`
- Goose → `.goosehints`
- Trae AI → `.trae/rules/*.md`
- Zed → `.rules`
- Amp/OpenCode/Warp → `AGENTS.md` (shared)

Maintaining 16 files for the same instructions is absurd. Config-sync fixes it.

## How It Works

1. **Source of truth**: `.claude/rules/*.md` (most expressive format — supports glob patterns, frontmatter conditions, always/attached/triggered modes)
2. **Fallback source**: `CLAUDE.md` at repo root if `.claude/rules/` doesn't exist
3. **Transform**: Concatenates all rule files, strips Claude-specific frontmatter, generates each format
4. **Output**: Only generates configs for tools you select (or all by default)

## Usage

### Generate all configs
```bash
python3 ~/.openclaw/skills/config-sync/scripts/config-sync.py /path/to/repo
```

### Generate specific tools only
```bash
python3 ~/.openclaw/skills/config-sync/scripts/config-sync.py /path/to/repo --tools codex,gemini,cursor
```

### Preview without writing
```bash
python3 ~/.openclaw/skills/config-sync/scripts/config-sync.py /path/to/repo --dry-run
```

### Init from existing CLAUDE.md
```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.

## Supported Tools

| Tool | Output File | Notes |
|------|-----------|-------|
| Claude Code | `.claude/rules/*.md` (source, not generated) | Already the canonical format |
| Codex CLI | `AGENTS.md` | Flat markdown, no frontmatter |
| Gemini CLI | `GEMINI.md` | Flat markdown |
| Cursor | `.cursor/rules/config-sync.mdc` | MDC format with description + globs |
| GitHub Copilot | `.github/copilot-instructions.md` | Flat markdown |
| Windsurf | `.windsurf/rules/config-sync.md` | Flat markdown |
| Cline/Roo | `.clinerules/config-sync.md` | Flat markdown |
| Aider | `CONVENTIONS.md` | Flat markdown, concise style |
| Kiro | `.kiro/steering/config-sync.md` | Flat markdown |
| Amazon Q | `.amazonq/rules/config-sync.md` | Flat markdown |
| Goose | `.goosehints` | Line-per-rule, no markdown |
| Trae AI | `.trae/rules/config-sync.md` | Flat markdown |
| Zed | `.rules` | Flat markdown |

## Transformation Rules

### Stripped from source
- YAML frontmatter (--- blocks) — tool-specific, not portable
- `alwaysApply: true/false` — Claude Code specific
- Glob patterns in frontmatter — converted to natural language headers

### Added to each output
- Header comment: `<!-- Generated by config-sync. Edit source at .claude/rules/ -->`
- Tool-specific header if needed (e.g., MDC frontmatter for Cursor)

### Format adaptations
- **Goose** (`.goosehints`): Each rule becomes one line, no markdown
- **Cursor** (`.mdc`): Gets MDC frontmatter with `description` and `globs: **`
- **Aider** (`CONVENTIONS.md`): Condensed to bullet points, no long explanations
- **AGENTS.md**: Standard markdown, used by Codex/Amp/OpenCode/Warp (4 tools, 1 file)

## Workflow

1. Edit `.claude/rules/*.md` (your canonical source)
2. Run `config-sync` to generate all other formats
3. Commit all generated files together
4. Repeat when rules change

## Auto-detect installed tools

The 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 installed
- `AGENTS.md` exists → Codex/Amp/OpenCode in use
- `GEMINI.md` exists → Gemini CLI in use

If `--tools` is not specified, generates all formats (belt-and-suspenders approach).

## Philosophy

One source of truth. Many outputs. Like a compiler: write once in the richest language, emit to every target.

