✦ Open Source CLI Tool

One .ai/ folder.
All your AI tools.
Always in sync.

Stop maintaining separate config files for every AI coding tool. dotai manages Claude, Gemini, Cursor, Copilot, Windsurf, Codex & Antigravity from a single directory using symlinks.

$ npm install -g @nbslabs/dotai

Edit once. Every tool stays in sync.

dotai creates a .ai/ directory as your source of truth, then symlinks each file to where every AI tool expects it.

.ai/ ← Your source of truth (committed to git) ├── AI.md ──→ CLAUDE.md, GEMINI.md, AGENTS.md, │ .github/copilot-instructions.md ├── rules/ ──→ .cursor/rules/, .windsurf/rules/, .gemini/rules/ ├── commands/ ──→ .claude/commands/, .gemini/commands/ ├── skills/ ──→ .claude/skills/, .agents/skills/ ├── workflows/ ──→ .agents/workflows/ ├── settings/ │ ├── claude.json ──→ .claude/settings.json │ └── gemini.json ──→ .gemini/settings.json └── ignore/ ├── .aiignore ──→ .geminiignore └── .codeiumignore ──→ .codeiumignore

Up and running in 30 seconds

# Install globally $ npm install -g @nbslabs/dotai # Initialize in your project $ cd your-project $ dotai init # That's it — .ai/ is your single source of truth # Symlinks are created for all selected tools
# After cloning a dotai-managed repo $ dotai link # recreates all symlinks from .ai/

7 tools. One config.

Every major AI coding tool is supported out of the box.

Claude Code .claude/

AI.md → CLAUDE.md, settings, commands, skills

Gemini CLI .gemini/

AI.md → GEMINI.md, settings, commands, ignore

Cursor .cursor/

Rules directory symlink

GitHub Copilot .github/

AI.md → copilot-instructions.md, prompts, instructions

Windsurf .windsurf/

AI.md → AGENTS.md, rules, ignore

Codex CLI .codex/

AI.md → AGENTS.md, global skills

Antigravity .gemini/

AI.md → GEMINI.md, settings, rules, workflows, skills

Full mapping reference

What you edit in .ai/ and where each tool reads it from.

You edit Tool sees Used by
AI.mdCLAUDE.mdClaude Code
AI.mdGEMINI.mdGemini CLI / Antigravity
AI.mdAGENTS.mdWindsurf, Codex
AI.md.github/copilot-instructions.mdGitHub Copilot
rules/.cursor/rules/Cursor
rules/.windsurf/rules/Windsurf
rules/.gemini/rules/Antigravity
commands/.claude/commands/Claude Code
commands/.gemini/commands/Gemini CLI
skills/.claude/skills/Claude Code
skills/.agents/skills/Antigravity
workflows/.agents/workflows/Antigravity
settings/claude.json.claude/settings.jsonClaude Code
settings/gemini.json.gemini/settings.jsonGemini / Antigravity
ignore/.aiignore.geminiignoreGemini CLI
ignore/.codeiumignore.codeiumignoreWindsurf

9 commands to manage everything

Every command supports --help for detailed usage.

CommandDescriptionFlags
dotai init Scaffold .ai/ directory and create .dotai.json -y, --yes skip prompts, use defaults
--tools <list> comma-separated tool IDs
--dir <path> custom AI directory (default: .ai)
--no-link skip symlinking after init
--dry-run preview without writing
dotai link [tools...] Create symlinks for specified or all configured tools --force overwrite existing files
--backup back up files before replacing
--no-backup skip backup even with --force
--dry-run preview without writing
dotai unlink [tools...] Remove symlinks, optionally restore originals --restore restore backed-up files
--no-restore don't restore backups
--dry-run preview without writing
dotai status Show the current state of every symlink --json output as JSON
--tool <id> filter by tool
dotai add <tool> Add a new tool to an existing project --link auto-create symlinks after adding
--dry-run preview without writing
dotai remove <tool> Remove a tool and clean up its symlinks --keep-files keep symlinked files
--purge remove tool-specific templates
dotai list List all supported tools and their link status --all show all tools (incl. unconfigured)
--json output as JSON
dotai sync Re-evaluate and repair all symlinks --tools <list> comma-separated tools to sync
--dry-run preview without writing
dotai doctor Run diagnostics and auto-fix issues --fix auto-fix all found issues
--tool <id> check specific tool only
--json output as JSON

Works everywhere

🍎 macOS

Standard filesystem symlinks. Works out of the box.

🐧 Linux

Standard filesystem symlinks. Works out of the box.

🪟 Windows

NTFS junctions for dirs, symlinks for files. No admin needed on Win 10+.

All symlinks use relative paths for portability — move or clone the repo anywhere.