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) andapplyTo(Copilot). - Generic skill key
applies-to→pathsfor 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.
When rule bodies are merged into CLAUDE.md, .junie/AGENTS.md, or
AGENTS.override.md, Cyncia shifts imported ATX headings so the highest rule heading
sits under the generated rule-file section. Standalone rule files keep their original heading
levels.
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.
Pin a release (example)
curl -fsSL https://raw.githubusercontent.com/crestreach/cyncia/main/install/install.sh \
| bash -s -- --ref v1.0.0 --config-dir my-config --cyncia-dir vendor/cyncia --bootstrap
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. |
After installing
With bootstrap accepted, Cyncia creates the source tree, installs the bundled
agent-conf-sync skill, and runs the first sync. If bootstrap was skipped, create
.agent-config/, copy .cyncia/skills/agent-conf-sync into
.agent-config/skills/, then run .cyncia/scripts/sync-all.sh -i .agent-config -o ..
The README also includes an optional AGENTS.md block that teaches assistants to
author future configuration under .agent-config/ and re-run sync afterwards.
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
A working source tree lives in examples/ in the repo. Point sync-all at it
with
.cyncia/scripts/sync-all.sh -i .cyncia/examples -o /tmp/demo-out.
The MCP step is skipped entirely when .agent-config/mcp-servers/ does not exist.
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. |
Links
Repository resources referenced in the README.
Contact
License
MIT.