Overrides
Overrides
Section titled “Overrides”File overrides let you provide tool-specific files that take priority over generated content.
File Overrides
Section titled “File Overrides”Place files in tool-specific directories within .ai/:
.ai/├── .claude/ # Claude Code file overrides├── .codex/ # Codex file overrides├── .cursor/ # Cursor file overrides├── .gemini/ # Gemini CLI file overrides├── .opencode/ # OpenCode file overrides├── .windsurf/ # Windsurf file overrides└── .copilot/ # GitHub Copilot file overridesFiles are symlinked to the tool’s output directory:
| Source | Target |
|---|---|
.ai/.claude/<path> | .claude/<path> |
.ai/.codex/<path> | .codex/<path> |
.ai/.cursor/<path> | .cursor/<path> |
.ai/.gemini/<path> | .gemini/<path> |
.ai/.opencode/<path> | .opencode/<path> |
.ai/.windsurf/<path> | .windsurf/<path> |
.ai/.copilot/<path> | .github/<path> |
Override Priority
Section titled “Override Priority”When a file override exists at the same path as a generated file, the override takes priority. The generated file is replaced with a symlink to the override.
Example
Section titled “Example”Given this structure:
.ai/├── settings.json # Shared settings└── .claude/ └── settings.json # Claude-specific overrideAfter lnai sync:
.claude/├── CLAUDE.md # symlink → ../.ai/AGENTS.md└── settings.json # symlink → ../.ai/.claude/settings.json (override wins)The generated settings.json is replaced by a symlink to the override file.
Common Use Cases
Section titled “Common Use Cases”Custom Settings
Section titled “Custom Settings”Override the generated settings file with custom configuration:
.ai/.claude/settings.jsonAdditional Commands
Section titled “Additional Commands”Add tool-specific commands that aren’t part of the unified config:
.ai/.claude/└── commands/ └── deploy.mdTool-Specific Workflows
Section titled “Tool-Specific Workflows”Add GitHub Actions or other tool-specific files:
.ai/.copilot/└── workflows/ └── ci.ymlAfter sync, this becomes .github/workflows/ci.yml.