crestreach / cyncia

Author your AI-assistant config once, sync it to every tool.

Cyncia (pronounced "SIN-sha", /ˈsɪnʃə/) is a tool-agnostic source of truth for AI coding-assistant configuration: agents, skills, rules and guidelines, a top-level AGENTS.md, and MCP servers. It generates the per-tool files that Cursor, Claude Code, GitHub Copilot, VS Code, JetBrains Junie, and Codex expect. Author your config once, and Cyncia syncs it to every tool you use.

Supported tools

  • Cursor
  • Claude Code
  • GitHub Copilot
  • VS Code
  • JetBrains Junie
  • Codex

Paths, file formats, frontmatter keys, and MCP secret placeholders are translated for each tool. Vendor docs were last checked on 2026-05-04.

Overview

Each tool looks in a different place and expects different file formats and frontmatter keys. Cyncia lets you author one portable source tree under .agent-config/, then mechanically translate it for every supported assistant.

You write this once

.agent-config/
├── AGENTS.md                 # project-wide guidelines
├── agents/<name>.md          # one subagent per file
├── skills/<name>/SKILL.md    # one skill per folder
├── rules/<name>.md           # one rule per file
└── mcp-servers/<name>.json   # one MCP server per file

…and Cyncia generates

  • Tool-specific file paths and layouts
  • Tool-specific file formats
  • Tool-specific frontmatter keys
  • MCP server config in each tool's documented shape

For the full reference (formats, frontmatter, MCP secret tokens, per-tool field map, edge cases), see the cyncia.md reference in the repo.

How it works

Cyncia maps a generic source layout into each tool’s expected destination layout.

Source Cursor Claude Code GitHub Copilot VS Code JetBrains Junie Codex
AGENTS.md AGENTS.md CLAUDE.md .github/copilot-instructions.md - .junie/AGENTS.md AGENTS.md (+ AGENTS.override.md when Codex rules are enabled)
agents/<n>.md .cursor/agents/<n>.md .claude/agents/<n>.md .github/agents/<n>.agent.md - .junie/agents/<n>.md .codex/agents/<n>.toml
skills/<n>/ .cursor/skills/<n>/ .claude/skills/<n>/ .github/skills/<n>/ - .junie/skills/<n>/ .agents/skills/<n>/
rules/<n>.md .cursor/rules/<n>.mdc merged into CLAUDE.md or .claude/rules/<n>.md (configurable, see cyncia.conf) .github/instructions/<n>.instructions.md - merged into .junie/AGENTS.md merged into AGENTS.override.md (configurable)
mcp-servers/<n>.json .cursor/mcp.json .mcp.json (uses VS Code’s .vscode/mcp.json) .vscode/mcp.json stdout snippet .codex/config.toml

Frontmatter and secret tokens

  • Generic rule keys (applies-to, always-apply, description) → globs / alwaysApply (Cursor) and applyTo (Copilot).
  • Generic skill key applies-to → paths for Claude; stripped elsewhere.
  • Generic agent key mcp-servers → mcpServers: [...] (Claude), tools: ["<server>/*", ...] (Copilot); stripped for Cursor and Junie.
  • MCP secret tokens (${secret:NAME}, ${secret:NAME?optional}) → ${env:NAME} (Cursor), ${NAME} / ${NAME:-} (Claude), ${input:NAME} + inputs[] entry (VS Code), and Codex environment forwarding / bearer-token env vars where Codex documents those fields.

Rules on Codex

Codex’s native .rules files are Starlark command-approval policies, not Markdown instruction files. By default Cyncia merges generic rules/*.md into root AGENTS.override.md, which Codex prefers over AGENTS.md in the same directory. Set codex-rules-mode: ignore to skip Markdown rule output for Codex, and keep Codex command policy under .codex/rules/*.rules by hand.

Install

From your project root, run the installer.

curl -fsSL https://raw.githubusercontent.com/crestreach/cyncia/main/install/install.sh | bash

The installer is idempotent. It creates .agent-config/ with a stub AGENTS.md only when needed, downloads scripts/, skills/, examples/, README.md, and cyncia.md into .cyncia/, records the installed ref in .cyncia/VERSION, reconciles .cyncia/cyncia.conf, then offers to copy bundled skills and run sync-all. Re-running upgrades the installed snapshot and can refresh copied skills.

Dependencies

  • Bash 4+ (macOS/Linux/WSL/Git Bash)
  • PowerShell 5.1+ or PowerShell 7+ (Windows / cross-platform)
  • jq 1.6+ (required only when the MCP sync step runs)
  • Git (not required by the installer or by sync time)
  • Standard POSIX utilities (sed, awk, grep, find, cp, mv)

Common installer flags

Flag Default Purpose
--config-dir PATH .agent-config Authoring source tree.
--cyncia-dir PATH .cyncia Where installed cyncia files live.
--ref REF main Branch or tag to download.
--repo OWNER/NAME crestreach/cyncia GitHub repo to download from.
--bootstrap - Answer “yes” to all prompts without asking; also the default when there is no TTY.
--no-bootstrap - Answer “no” to all prompts: skip copying skills and skip running sync-all.
-h, --help - Print installer usage and exit.

Usage

Once the agent-conf-sync skill is installed, you can ask your AI assistant to run syncs in plain language, or call the scripts directly.

Ask your assistant

  • "sync agent config"
  • "regenerate Cursor rules"
  • "clean sync for Copilot only"
  • "sync delegate-to-aside for Cursor and Claude"

The skill detects the platform, locates the installed scripts, infers input/output roots, tools, item filters, and clean mode, then reports what was written.

Run scripts directly

# Sync using the default tool list from .cyncia/cyncia.conf
.cyncia/scripts/sync-all.sh -i .agent-config -o .

# Only some tools
.cyncia/scripts/sync-all.sh -i .agent-config -o . --tools cursor,claude

# Only some items (by name); --clean removes stale generated files
.cyncia/scripts/sync-all.sh -i .agent-config -o . --items delegate-to-aside --clean

# Windows / PowerShell
.\.cyncia\scripts\sync-all.ps1 -InputRoot .agent-config -OutputRoot $PWD

Default layout

A default directory layout is documented in the repository README.

your-repo/
├── .agent-config/        # source of truth (you author these)
│   ├── AGENTS.md
│   ├── agents/
│   ├── skills/
│   ├── rules/
│   └── mcp-servers/
├── .cyncia/              # installed cyncia files
│   ├── scripts/
│   └── skills/
├── .cursor/              # generated
├── .claude/              # generated
├── .github/              # generated (instructions, skills, agents, copilot-instructions.md)
├── .junie/               # generated
├── .codex/               # generated (agents + MCP server tables in config.toml)
├── .agents/              # generated Codex skills
├── .vscode/mcp.json      # generated (when mcp-servers/ exists)
├── AGENTS.md             # generated (copy of .agent-config/AGENTS.md)
├── AGENTS.override.md    # generated for Codex rules when codex-rules-mode=agents-override
└── CLAUDE.md             # generated

Configuration (.cyncia/cyncia.conf)

The installer creates .cyncia/cyncia.conf with defaults. New versions may prompt to add or remove properties while preserving user comments and unrelated content. If the file or a key is missing, sync uses built-in defaults.

Key Default Values Effect
claude-rules-mode claude-md claude-md, rule-files How rules/*.md is emitted for Claude Code. claude-md merges into CLAUDE.md. rule-files writes each rule to .claude/rules/*.md and references it from CLAUDE.md via @-import syntax.
codex-rules-mode agents-override agents-override, ignore How Codex Markdown rule guidance is handled. agents-override merges root AGENTS.md plus rules/*.md into root AGENTS.override.md. ignore emits no Markdown rules for Codex.
codex-sync-mcp true true, false Whether Codex MCP servers are synced into .codex/config.toml. When enabled, only mcp_servers tables are updated and unrelated Codex config is preserved. With --clean, existing mcp_servers are replaced; without --clean, selected servers are added or updated.
default-tools cursor,claude,copilot,vscode,junie,codex comma-separated tools Tool list for sync-all when --tools / -Tools is omitted.

License

MIT.