Recently Written · git

ai-config

One canonical AI agent config (rules, skills, MCP servers) rendered into Claude Code, Codex, Copilot CLI and Antigravity by acsync

git clone https://github.com/equwal/ai-config

Log | Files | Refs


acsync.toml (4958 bytes)

1 # Canonical AI config for all 8 targets (4 AIs x PC "pc" + desktop "g").
2 # Rendered by acsync (github.com/equwal/agent-config-sync). Machine values live in
3 # ~/.config/acsync/machine.toml on each machine. Its [vars] must set the private
4 # network values the rules use: owner, hub_host, hub_peer_vps, hub_wg_ip, hub_cert,
5 # g_ip, g_user. A rule whose var is missing is skipped on that machine.
6 
7 [targets.claude]
8 instructions = "${home}/.claude/CLAUDE.md"
9 skills = ["${home}/.claude/skills"]
10 mcp = { format = "json", path = "${home}/.claude.json", defaults = { type = "stdio" } }
11 
12 [targets.codex]
13 instructions = "${home}/.codex/AGENTS.md"
14 skills = ["${home}/.codex/skills"]
15 mcp = { format = "codex", path = "${home}/.codex/config.toml", defaults = { startup_timeout_sec = 60 } }
16 
17 [targets.copilot]
18 instructions = "${home}/.copilot/copilot-instructions.md"
19 skills = ["${home}/.copilot/skills"]
20 mcp = { format = "json", path = "${home}/.copilot/mcp-config.json", defaults = { type = "stdio", tools = ["*"] } }
21 
22 [targets.antigravity]
23 instructions = "${home}/.gemini/GEMINI.md"
24 skills = ["${home}/.gemini/skills", "${home}/.gemini/antigravity/skills"]
25 mcp = { format = "json", path = "${home}/.gemini/config/mcp_config.json" }
26 
27 # ---------- rules (one file each; order = order for newly added blocks) ----------
28 [rules.coop]
29 [rules.install]
30 [rules.no-user-todo]
31 targets = ["claude", "codex", "copilot", "antigravity"]
32 file.claude = "${home}/.claude/rules/no-user-todo.md"
33 [rules.ponytail]
34 targets = ["codex"]
35 [rules.windows-powershell]
36 targets = ["codex", "copilot", "antigravity"]
37 machines = ["pc"]
38 adopt_heading = "## MANDATORY on the Windows PC: PowerShell 7.6 syntax"
39 [rules.tooling]
40 [rules.speckit]          # rules/speckit.<target>.md per target
41 [rules.wayland]
42 [rules.undo-commands]
43 machines = ["pc"]        # g never had it; add "g" to roll it out there
44 adopt_heading = "## MANDATORY: Undo commands are copy-only"
45 [rules.patches]
46 [rules.cleanup]
47 [rules.email-patches]
48 [rules.hand-written]
49 [rules.no-bak]
50 [rules.license]
51 
52 # ---------- skills (all 8 skills folders) ----------
53 # ste-writing: retired; must not exist in any skills folder.
54 [skills.agent-creator]
55 [skills.agent-manager]
56 [skills.api-contract-testing]
57 [skills.call-transcript]
58 [skills.ccai-license]
59 [skills.chrome]
60 [skills.coop]
61 [skills.deploy-handoff]
62 only.claude = ["g"]      # the PC uses the deploy-handoff plugin instead
63 [skills.docs-manage]
64 [skills.docs-search]
65 [skills.dynamic-analysis]
66 [skills.i-have-adhd]
67 [skills.impactful-writing]
68 [skills.learn-mode]
69 [skills.memstate]
70 [skills.ponytail]
71 [skills.powershell]
72 [skills.regression-bisect]
73 [skills.skill-finder]
74 [skills.skill-learning]
75 [skills.spaced-repetition]
76 [skills.sshp]
77 [skills.ste100]
78 [skills.structural-refactor]
79 [skills.verification-before-completion]
80 
81 # ---------- MCP servers ----------
82 [mcp.coop]
83 command = "${coop_bin}"
84 args = ["mcp"]
85 [mcp.coop.target.codex]
86 default_tools_approval_mode = "approve"
87 
88 [mcp.headroom]
89 command = "${headroom_bin}"
90 args = ["mcp", "serve"]
91 
92 [mcp.memstate]
93 command = "${node}"
94 args = ["${memstate_js}"]
95 env = { MEMSTATE_ADDR = "${memstate_addr}" }
96 
97 [mcp.context7]
98 url = "https://mcp.context7.com/mcp"
99 targets = ["claude", "copilot", "codex"]
100 target.claude = { type = "http" }
101 target.copilot = { type = "http" }
102 
103 [mcp.ideamine]
104 command = "${node}"
105 args = ["${home_posix}/.claude/plugins/marketplaces/ideamine/bin/ideamine.js", "mcp", "--plugin"]
106 targets = ["copilot", "antigravity", "codex"]
107 
108 [mcp.sshp]
109 command = '${home}\AppData\Local\Programs\Python\Launcher\py.exe'
110 args = ["-3", '${home}\.local\share\sshp-ai\sshp_mcp.py']
111 target.copilot = { type = "local" }
112 
113 # PC-only servers
114 [mcp.windows-mcp]
115 machines = ["pc"]
116 command = '${home}\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\Scripts\uvx.exe'
117 args = ["windows-mcp", "serve", "--transport", "stdio"]
118 
119 [mcp.tokensave]
120 machines = ["pc"]
121 command = "cmd"
122 args = ["/c", '${home}\.tokensave-none\serve-tokensave.cmd']
123 
124 [mcp.qwen]
125 machines = ["pc"]
126 command = '${home}\AppData\Local\Programs\Python\Python314\Scripts\uv.exe'
127 args = ["run", "--script", '${home}\mcp-servers\qwen-local\server.py']
128 env = { QWEN_MODEL = "huihui_ai/qwen3.5-abliterated:9b" }
129 
130 [mcp.anyquery]
131 machines = ["pc"]
132 command = "anyquery"
133 args = ["mcp", "--stdio"]
134 
135 [mcp.cclsp]
136 machines = ["pc"]
137 command = "node"
138 args = ["-r", '${home}\.config\claude\cclsp-exit-on-stdin-end.cjs', '${home}\AppData\Roaming\npm\node_modules\cclsp\dist\index.js']
139 env = { CCLSP_CONFIG_PATH = '${home}\.config\claude\cclsp.json' }
140 
141 [mcp.codebase-memory-mcp]
142 machines = ["pc"]
143 command = "${home_posix}/AppData/Local/Programs/codebase-memory-mcp/codebase-memory-mcp.exe"
144 args = []
145 env = { CBM_RUNTIME_DIR = "${home_posix}/.cache/cbm-runtime" }
146 
147 [mcp.shipyard]
148 machines = ["pc"]
149 targets = ["copilot", "antigravity", "codex"]
150 command = "node"
151 args = ['${home}\shipyard\bin\shipyard.js']
152 env = { MEMSTATE_DB = '${home}\.memstate\memstate.db' }