Skip to main content

Synchronize rules and skills across AI coding assistants (Claude Code, Cursor, Gemini, OpenCode, Codex)

Project description

agent-sync

Synchronize rules, skills, settings, and MCP servers across Claude Code, Cursor, Gemini, OpenCode, and Codex — in real-time.

Edit rules, skills, or MCP servers in any AI agent → they automatically sync to all others. Global Claude settings propagate to configured repos for Claude Code web access.

Installation

Works on macOS, Linux, and Windows (native + WSL).

pip install agent-rules-sync
uv pip install agent-rules-sync   # faster

The daemon installs and starts automatically as a system service.

CLI

agent-sync                         # start/ensure daemon is running
agent-sync sync                    # one-shot sync: rules + skills + settings + mcp
agent-sync sync rules              # sync only CLAUDE.md / rules files
agent-sync sync skills             # sync only skills directories
agent-sync sync settings           # sync only .claude/settings.json + hooks
agent-sync sync mcp                # sync only mcp.json / MCP server configs
agent-sync sync history            # import agent-run shell commands into Atuin
agent-sync sync rules skills       # multiple scopes
agent-sync setup                   # TUI wizard to configure sync directions
agent-sync status                  # daemon and sync status
agent-sync stop                    # stop daemon
agent-sync watch                   # watch in foreground (debugging)

agent-rules-sync also works as an alias for backwards compatibility.

What Gets Synced

1. Rules (CLAUDE.md, GEMINI.md, etc.)

Rules sync bidirectionally across all agent config files. Changes from any agent propagate to all others within 3 seconds.

# Shared Rules
- use pydantic for validation      ← syncs to all agents

## Claude Code Specific
- claude-specific rule             ← stays in Claude only

Monitored locations:

Agent Path
Claude Code ~/.claude/CLAUDE.md
Cursor ~/.cursor/rules/global.mdc (merged output); also reads every *.md / *.mdc in the same ~/.cursor/rules/ dir (subfolders except imported/). Strip YAML frontmatter before parsing.
Cursor (legacy) ~/.cursorrules plus <repo>/.cursorrules for each path in repo_paths.json — same body as global.mdc; Cursor still loads these (docs)
Gemini CLI ~/.gemini/GEMINI.md
Antigravity CLI ~/.gemini/antigravity-cli/plugins/agent-rules-sync/rules/AGENTS.md
OpenCode ~/.config/opencode/AGENTS.md
Codex ~/.codex/AGENTS.md
+ 4 more ~/.config/agents/AGENTS.md, ~/.config/AGENTS.md, ~/.agent/AGENTS.md, ~/.agent/AGENT.md

Repo-specific CLAUDE.md files can be added via repo_paths.json (see Configuration).

2. Skills

Skills are directories containing a SKILL.md file. Synced across all frameworks:

Framework Path
Claude Code ~/.claude/skills/
Cursor ~/.cursor/skills/, ~/.cursor/skills-cursor/
Codex ~/.codex/skills/
Antigravity CLI ~/.gemini/antigravity-cli/plugins/agent-rules-sync/skills/
Gemini Antigravity ~/.gemini/antigravity/skills/
OpenCode ~/.config/opencode/skills/
Shared ~/.agents/skills/

Newest version wins. Add a skill anywhere and the daemon syncs it to the other locations automatically.

3. Settings & Hooks (Claude Code)

Syncs a portable version of ~/.claude/settings.json to configured repos' .claude/settings.json:

  • Strips machine-specific keys (statusLine, spinnerVerbs, remote, etc.)
  • Strips permission rules with absolute paths
  • Rewrites hook commands from ~/.claude/hooks/foo.sh.claude/hooks/foo.sh
  • Copies hook scripts into the repo's .claude/hooks/

This enables full tool permissions and hooks when using Claude Code web on those repos.

4. MCP Servers (mcp.json)

Synchronizes your MCP server list (under the mcpServers key) across all agents and the Claude Desktop. Any server added in Cursor or via claude mcp add becomes available everywhere.

Agent Configuration Path
Claude Code ~/.claude.json
Cursor ~/.cursor/mcp.json
Gemini CLI ~/.gemini/mcp.json
Antigravity CLI ~/.gemini/antigravity-cli/plugins/agent-rules-sync/mcp_config.json
Claude Desktop ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)

Project-specific MCP servers in .mcp.json, .cursor/mcp.json, or .gemini/mcp.json are also merged into the global master list and synced across agents.

5. Agent Command History (Atuin)

Imports shell commands run by coding agents into Atuin so they show up in zsh reverse search alongside normal terminal history. The importer reads local transcript stores, writes a normalized append-only log at ~/.config/agent-rules-sync/agent-command-history.jsonl, and inserts new commands into ~/.local/share/atuin/history.db.

Supported transcript sources:

Agent Source
Codex ~/.codex/sessions/**/*.jsonl
Claude Code ~/.claude/projects/**/*.jsonl
Cursor CLI ~/.cursor/projects/**/agent-transcripts/**/*.jsonl

Current stable Atuin releases do not yet expose first-class agent metadata in search, so imported commands include a harmless trailing tag like # agent:codex. Newer Atuin builds with author / intent columns receive those fields directly.

The daemon watches these transcript roots too. When a transcript changes it imports only the changed transcript into the JSONL log and Atuin, without running a rules/skills/settings sync.

Configuration

Repo Paths

Add repos to sync rules, skills, and settings into:

~/.config/agent-rules-sync/repo_paths.json
["~/Code/my-project", "~/Code/another-repo"]

Each repo gets:

  • <repo>/CLAUDE.md — synced from global rules
  • <repo>/.cursorrules — legacy Cursor rules file; mirrored from the same content as global.mdc (optional; Cursor prefers .cursor/rules/)
  • <repo>/.claude/skills/ — synced from master skills
  • <repo>/.claude/settings.json — portable settings (auto-generated)
  • <repo>/.claude/hooks/ — hook scripts (copied from ~/.claude/hooks/)

Sync Directions

Configure per-component direction via agent-sync setup (TUI wizard) or edit directly:

~/.config/agent-rules-sync/sync_config.json
{
  "mode": "default",
  "components": {
    "rules":    { "direction": "bidirectional", "enabled": true },
    "skills":   { "direction": "bidirectional", "enabled": true },
    "settings": { "direction": "push",          "enabled": true },
    "hooks":    { "direction": "push",           "enabled": true },
    "mcp":      { "direction": "bidirectional", "enabled": true }
  }
}

Directions:

Direction Behavior
bidirectional Newest version wins, syncs everywhere (default for rules/skills)
push Master → agents only (master is source of truth)
pull Agents → master only (aggregate, don't push back)

Settings and hooks only support push (they are generated from global config).

Settings Strip Rules

Customize which keys/paths are stripped when generating portable settings:

~/.config/agent-rules-sync/settings_sync.json
{
  "strip_keys": ["statusLine", "spinnerVerbs", "remote"],
  "strip_path_prefixes": ["/Users/", "/home/", "/opt/homebrew/"],
  "sync_hooks": true,
  "hook_script_dir": ".claude/hooks"
}

Setup Wizard

Run agent-sync setup for a guided TUI to configure sync directions:

┌──────────────────────────────────────────────────────────┐
│ agent-sync  ·  Setup Wizard                              │
└──────────────────────────────────────────────────────────┘

  ── Sync Mode ───────────────────────────────────────────

  default       Rules/skills are bidirectional (newest wins).
                Settings/hooks push from global → repos.

  per_component Configure each component independently.

  Choice [1-2] (Enter = default):

Commands Reference

agent-sync sync [rules] [skills] [settings] [mcp] [all]
Scope What it syncs
rules Rules files (CLAUDE.md, GEMINI.md, etc.) across all agents
skills Skill directories across all frameworks + configured repos
settings ~/.claude/settings.json → repo .claude/settings.json + hooks
mcp MCP server configurations (mcp.json, ~/.claude.json)
history Agent-run shell commands → Atuin history/backsearch
all All of the above (default when no scope given)

How It Works

~/.claude/settings.json         ~/.claude/CLAUDE.md        ~/.claude/skills/
        │                               │                         │
        │  strip machine-specific       │  merge shared +         │  newest
        │  rewrite hook paths           │  agent-specific         │  version
        ▼                               ▼                         ▼
  repo/.claude/             all agent CLAUDE.md          all framework
  settings.json             GEMINI.md AGENTS.md          skills/ dirs
  hooks/                    (9+ locations)               (6+ locations)

Daemon watches all locations with filesystem events. A slow periodic rescan is kept as a fallback for missed events or platforms without an event backend.

Backups

Every file change is backed up with a timestamp:

~/.config/agent-rules-sync/backups/     ← rules backups
~/.config/agent-rules-sync/skill_backups/  ← skills backups

Restore any version:

cp ~/.config/agent-rules-sync/backups/claude_20260125_014532.md ~/.claude/CLAUDE.md

Troubleshooting

agent-sync status              # check daemon + sync status
tail -f ~/.config/agent-rules-sync/daemon.log   # live logs
agent-sync stop && agent-sync  # restart daemon
agent-sync watch               # run in foreground for debugging

Uninstall

curl -fsSL https://raw.githubusercontent.com/dhruv-anand-aintech/agent-rules-sync/main/uninstall.sh | bash

Or manually:

agent-sync stop
pip uninstall -y agent-rules-sync
rm -rf ~/.config/agent-rules-sync

Agent rule files and repos are not touched.

Requirements

  • Python 3.8+
  • macOS, Linux, or Windows

License

MIT — see LICENSE


Edit anywhere. Sync everywhere.

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

agent_rules_sync-1.5.2.tar.gz (56.9 kB view details)

Uploaded Source

Built Distribution

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

agent_rules_sync-1.5.2-py3-none-any.whl (43.6 kB view details)

Uploaded Python 3

File details

Details for the file agent_rules_sync-1.5.2.tar.gz.

File metadata

  • Download URL: agent_rules_sync-1.5.2.tar.gz
  • Upload date:
  • Size: 56.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agent_rules_sync-1.5.2.tar.gz
Algorithm Hash digest
SHA256 6889f4a86b44b2fdb41ef1a3de6222042ef16a330d9061bad0cfd950e8c61cb3
MD5 b33c514fa8affee8f4e995246edfe0bc
BLAKE2b-256 a06c0b01e092d3d2135ffe38364be1564884d8c84e06f08a1effda6a7f858175

See more details on using hashes here.

File details

Details for the file agent_rules_sync-1.5.2-py3-none-any.whl.

File metadata

File hashes

Hashes for agent_rules_sync-1.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d35ae65694af4fc71b2dbd566a6c452634981b0107fbfba20cbd840a253cbdbe
MD5 be15684ffc927e60c84596c3f8be7fbe
BLAKE2b-256 347f7e2fa6592a63b734d08a075e26b7f55f26edf98c8966acaf9066308d7bb8

See more details on using hashes here.

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