Coding & Development✨gemini🤖claude💬gpt⌨️cursor🌊windsurf🌐universal

post_sync: "npx prettier --write .tool/*/.mdc"

Write AI rules once → sync to Claude, Cursor, Copilot, Gemini and 10 more tools automatically

Quick Start

Install this Skill

npx skills add yelmuratoff/agent_sync
<div align="center">
  <img src="https://github.com/yelmuratoff/agent/blob/main/assets/agent_sync.png?raw=true" width="400">

  <h3>One source → 13 AI tools. Stop copy-pasting rules.</h3>

  <p>
    <a href="https://github.com/yelmuratoff/agent">
      <img src="https://img.shields.io/badge/shell-bash-4EAA25?style=for-the-badge&logo=gnu-bash&logoColor=white" alt="Built with Bash">
    </a>
    <a href="https://opensource.org/licenses/MIT">
      <img src="https://img.shields.io/badge/license-mit-4EAA25?style=for-the-badge" alt="License">
    </a>
    <a href="https://github.com/yelmuratoff/agent">
      <img src="https://img.shields.io/github/stars/yelmuratoff/agent?style=for-the-badge&logo=github&color=4EAA25" alt="GitHub stars">
    </a>
  </p>
</div>

## The problem

Every AI coding tool wants instructions in its own format and directory: `.claude/CLAUDE.md`, `.cursor/rules/*.mdc`, `.github/instructions/*.instructions.md`, `AGENTS.md`, `.windsurf/rules/`...

Use more than one tool — or work on a team where different people use different tools? You end up maintaining the same rules in 5+ formats. They drift. They go stale. You copy-paste forever.

## The solution

AgentSync syncs from a single source (`.ai/src/`) into **13 AI tools**: Claude Code, GitHub Copilot, Cursor, Gemini CLI, OpenAI Codex, Kimi Code, OpenCode, Windsurf, JetBrains Junie, Cline, Amazon Q, Zed, Google Antigravity.

Write once → `agentsync sync` → every tool gets instructions in its native format.

```
.ai/src/rules/testing.md
    ↓ agentsync sync
├── .claude/rules/testing.md              # + @rules/testing.md import in CLAUDE.md
├── .cursor/rules/testing.mdc             # + globs/alwaysApply frontmatter
├── .github/instructions/testing.instructions.md  # + applyTo frontmatter
├── .windsurf/rules/testing.md            # + trigger: always_on frontmatter
├── .amazonq/rules/testing.md
├── AGENTS.md                             # inlined rule reference (Codex, Gemini, Junie, Kimi, OpenCode)
└── .rules                                # merged into single file (Zed)
```

The frontmatter above is the always-on default. Give a rule `paths:` frontmatter (a list of globs) and AgentSync emits each tool's **scoped** trigger instead (`alwaysApply: false`, `applyTo: <globs>`, `trigger: glob`; Claude keeps `paths:`), so domain rules load only when matching files are touched — keeping the always-on context lean.

## Why not just...?

- **...symlink the files?** Tools demand different extensions (`.mdc`, `.instructions.md`), different frontmatter, different nesting. Symlinks can't transform content — AgentSync does.
- **...a shell script per tool?** You'd be writing the same copy / rename / header-injection logic 13 times. AgentSync is that script, declarative (YAML), already tested on macOS, Linux, and Windows (Git Bash).
- **...stick to the one tool I use today?** Teammates pick different ones. Your future self might too. A single source file future-proofs you.
- **Zero runtime dependencies.** Pure Bash. No Node, Python, `yq`, or `jq`. Install with one `curl | bash`.

<details>
<summary><strong>Table of contents</strong></summary>

- [The problem](#the-problem)
- [The solution](#the-solution)
- [Why not just...?](#why-not-just)
- [Installation](#installation)
- [Quick Start](#quick-start)
- [Project Structure](#project-structure)
- [What Each Part Does](#what-each-part-does)
- [CLI Commands](#cli-commands)
  - [Sync options](#sync-options)
  - [Generate](#generate)
- [Tool Configuration](#tool-configuration)
- [Tool YAML Schema](#tool-yaml-schema)
  - [Key Fields](#key-fields)
- [Supported Tools](#supported-tools)
- [Format Conversions](#format-conversions)
- [Models and Providers Are Not Tools](#models-and-providers-are-not-tools)
- [Adding a New Tool](#adding-a-new-tool)
- [Automation](#automation)
- [Gitignore](#gitignore)
- [How Sync Works](#how-sync-works)
- [Customization workflow](#customization-workflow)
- [How Resources Resolve](#how-resources-resolve)
- [Migrating from the 0.10 flat layout](#migrating-from-the-010-flat-layout)
- [Path Overrides](#path-overrides)
- [Migrating Existing Configurations](#migrating-existing-configurations)
  - [Step-by-step](#step-by-step)
  - [What gets overwritten](#what-gets-overwritten)
  - [Drift detection](#drift-detection)
  - [`agentsync adopt` — promote an IDE edit back into source](#agentsync-adopt--promote-an-ide-edit-back-into-source)
  - [Disabling sync for specific tools](#disabling-sync-for-specific-tools)
- [Workspaces — nested AgentSync projects](#workspaces--nested-agentsync-projects)
- [Profiles — multiple config homes per tool](#profiles--multiple-config-homes-per-tool)
- [Development](#development)
- [Uninstall](#uninstall)

</details>

## Installation

Requirements: `git`, `bash`. Works on **macOS** and **Linux** out of the box. On **Windows**, use [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) or [Git Bash](https://gitforwindows.org/) (included with Git for Windows).

```bash
c

... (truncated)
Repository
11stars
2forks
View on GitHub
Details
DiscoveredJul 20, 2026
Last UpdatedJul 20, 2026
Quality Score
43/100