AI Setup Sync
Keep your team's AI setup files — Claude Code, GitHub Copilot, Cursor, Google Antigravity 2.0,
Gemini CLI, OpenAI Codex, and more — in sync across every project, automatically.
AI teams maintain per-tool configuration files: system prompts, coding instructions, agent skills,
Copilot rules. Keeping them consistent across dozens of projects and developers is manual and
error-prone. AI Setup Sync solves this by treating your AI setup files like shared code: you
maintain one GitHub repository, and every developer's projects stay current without doing anything.
Changes flow in one direction: repo → projects. Developers can edit files locally; the extension
detects conflicts and lets them choose what to keep.
Before you start — you'll need a GitHub repository containing your shared AI setup files.
See Setting up your repository below.
Features
- Automatic sync — pulls on project open and re-checks daily in the background.
- Multi-tool support — Claude Code, GitHub Copilot, Cursor, Google Antigravity 2.0, Gemini CLI, OpenAI Codex, and any custom paths.
- Conflict resolution — detects local edits and prompts per file, with a built-in diff viewer before overwriting.
- Path mappings — translate repo folder names to the local paths tools expect (e.g.
Claude/ → .claude/).
- Configurable branch — sync from
main, master, or any branch your repo uses.
- Git exclude — synced files are silently added to
.git/info/exclude so they never appear as pending changes.
- Private & SSO repos — GitHub token stored securely in the OS keychain (VS Code SecretStorage).
- Non-destructive — files removed from the repo are never deleted from disk; local edits are always preserved on removal.
Quick start
- Search AI Setup Sync in VS Code Extensions and install, or use the Install button on this page.
- Set
aiSetupSync.repository to your GitHub repository URL in VS Code user settings.
- Open a project — sync runs automatically.
Setting up your repository
The extension syncs from any GitHub repository you own. Here's how to set one up:
Create a GitHub repository and add your setup files on your default branch (main or master). Any combination of tools is supported — just place files where each tool expects them.
Example layout:
your-setup-repo/
├── CLAUDE.md # Claude Code root instructions
├── AGENTS.md # Cross-tool instructions (Antigravity 2.0, Cursor, Claude Code)
├── .claude/
│ ├── instructions/
│ │ └── coding-style.md
│ └── skills/
│ └── code-review/
│ └── SKILL.md
├── .github/
│ └── copilot-instructions.md # GitHub Copilot instructions
├── .cursor/
│ └── rules/
│ └── coding-style.mdc # Cursor rules
├── .agents/
│ └── skills/
│ └── code-review.md # Google Antigravity 2.0 skills
├── .gemini/
│ └── settings.json # Gemini CLI config
├── GEMINI.md # Gemini CLI workspace context
└── .codex/
└── config.toml # OpenAI Codex config
Set aiSetupSync.repository to your repository URL in VS Code user settings.
If your repo organises files under different names (e.g. Claude/ instead of .claude/), configure aiSetupSync.pathMappings — keys are repo paths, values are local destinations:
"aiSetupSync.pathMappings": {
"Claude": ".claude",
"Copilot": ".github",
"Cursor": ".cursor",
"Codex": ".codex"
}
Claude/instructions/style.md → .claude/instructions/style.md, and so on.
If your repo is private or behind SAML SSO, run AI Setup Sync: Set GitHub Token from the command palette. Create a GitHub personal access token with the repo scope, then — for SAML SSO orgs — authorize it for your org on GitHub (Settings → Personal access tokens → Configure SSO → Authorize).
If your default branch is not main, set aiSetupSync.branch to match (e.g. master).
Push changes to your branch — every project syncs automatically on the next open or background check.
Shared vs project-specific files: Add shared instructions to the central repo and open a PR — on merge they sync to every project. Keep project-specific files in your project repo; the extension only touches files it synced and leaves everything else alone.
Default synced paths
By default, the extension syncs these paths from the main branch (configurable via aiSetupSync.branch). .cursorrules is not included — use .cursor/rules/ instead.
| Path |
Tool |
.claude |
Claude Code |
CLAUDE.md |
Claude Code |
.github |
GitHub Copilot |
.cursor |
Cursor |
.agents |
Google Antigravity 2.0 |
AGENTS.md |
Google Antigravity 2.0 (also read by Cursor and Claude Code) |
.gemini |
Gemini CLI |
GEMINI.md |
Gemini CLI |
.codex |
OpenAI Codex |
Configurable via aiSetupSync.targetFolders — toggle defaults on or off, or add custom paths.
Private and SSO-protected repositories require a GitHub personal access token with the repo scope — create one here. Run
AI Setup Sync: Set GitHub Token from the command palette to store it securely in the
OS keychain. For SAML SSO repos, also authorize the token for your organisation in GitHub:
Settings → Personal access tokens → Configure SSO → Authorize.
Settings
| Setting |
Default |
Purpose |
aiSetupSync.repository |
(required) |
GitHub repository URL to sync from, e.g. https://github.com/your-org/your-repo. Private repos and SAML SSO org repos require a token with the repo scope — run Set GitHub Token from the command palette. |
aiSetupSync.branch |
main |
Branch to sync from. Set to master or any other branch name if your repo uses a different default. |
aiSetupSync.targetFolders |
(see above) |
Files and folders to sync from the repo root. Each entry can be toggled on or off — set to false to disable a default without removing it. Add new entries for any tool that reads config from your project. |
aiSetupSync.pathMappings |
{} |
Rename paths as files are synced from the repo to your project. "Claude": ".claude" rewrites Claude/instructions/style.md → .claude/instructions/style.md. More specific (longer) keys always win. |
aiSetupSync.conflictPolicy |
prompt |
How to handle files you've edited locally that differ from the repository version. prompt — ask per file, with a Show diff button. overwrite — always replace. skip — never touch local edits. |
aiSetupSync.syncMode |
always |
When to sync automatically. always — on open + daily background check. onOpen — on open only. manual — only when you run Sync Now. |
Conflict handling
On each sync the extension compares file content against what it last wrote:
Unmodified → updated silently.
Deleted locally → restored automatically.
Edited locally → handled per aiSetupSync.conflictPolicy. With prompt (default):
| Choice |
Effect |
| Overwrite all |
Replace with repo version. |
| Keep all mine |
Leave your edits; won't re-prompt while your local version stays unchanged. |
| Review each |
Decide file by file — each dialog has a Show diff button to compare local vs. repository before choosing. |
| Escape / close |
Re-prompts on the next sync. |
Files removed from the repo are reported but never deleted from disk.
Status bar
Once installed, look for AI Setup Sync in the status bar at the very bottom of the VS Code window (right side). It shows sync state at a glance and clicking it triggers an immediate sync.
| Indicator |
Meaning |
✓ AI Setup Sync |
Up to date — last sync completed successfully. |
⟳ AI Setup Sync |
Sync in progress. |
⚠ AI Setup Sync |
Sync failed — hover to see the error, click to retry. |
⚙ AI Setup Sync |
No repository configured — click to open settings. |
Commands
All commands are under the AI Setup Sync category in the command palette (Ctrl+Shift+P / Cmd+Shift+P).
- Sync Now — sync immediately.
- Remove Synced Files — delete synced files from the project (local edits are preserved).
- Open Settings — jump to extension settings.
- Set GitHub Token — securely store a GitHub personal access token in the OS keychain (required for private repos and SAML SSO org repos). The token needs the
repo scope; for SAML SSO orgs, also authorize it via Settings → Personal access tokens → Configure SSO. Submit empty to clear.
Activity is logged to the AI Setup Sync output channel (Output panel → dropdown).
Git exclude
Synced files are automatically added to .git/info/exclude (per-clone, never committed) so
they don't show up as pending changes. Only the exact synced files are excluded — anything you
create yourself in the same folders (e.g. a project-specific skill) stays visible to git and
committable normally.
Removing synced files
Run Remove Synced Files before uninstalling for an immediate cleanup. The extension also
runs a cleanup hook on uninstall, but it fires only after a full VS Code restart.
Only files whose content matches what the extension last wrote are removed — files you edited
locally are kept so no work is lost. If any files are kept, they are listed in the
AI Setup Sync output channel and a Force remove all button is offered to
delete them regardless of local edits.
License
MIT