GC-301i · Module 3

Migration Paths

3 min read

Migrating between CLI coding agents — from Claude Code to Gemini CLI, from Codex to Claude Code, or from Gemini CLI to Codex — requires mapping three categories of configuration: project memory (CLAUDE.md → GEMINI.md → AGENTS.md), custom commands (skills → .toml commands → commands), and tool integrations (MCP servers → extensions → plugins). The project memory files are the most portable because they are plain markdown — a well-written CLAUDE.md works as a GEMINI.md with minimal changes. Custom commands require rewriting because the formats differ, but the prompt content transfers directly.

The practical migration path is incremental, not big-bang. Run both tools in parallel for 2 weeks. Port the project memory file first (day 1). Port the most-used custom commands next (days 2-3). Set up tool integrations as needed (days 4-5). Let developers use both tools freely during the transition and migrate their workflows at their own pace. After 2 weeks, assess adoption and make the final call. The team that tries to switch everyone overnight creates friction. The team that migrates gradually finds the natural adoption point.

MIGRATION MAP: Claude Code → Gemini CLI

Project Memory
  CLAUDE.md                    → GEMINI.md (copy, minor edits)
  .claude/settings.json        → .gemini/settings.json (restructure)
  .claudeignore                → .geminiignore (same format)

Custom Commands
  .claude/commands/review.md   → .gemini/commands/review.toml
  .claude/commands/test.md     → .gemini/commands/test.toml
  Format: Markdown → TOML (prompt content is reusable)

Tool Integrations
  MCP servers (settings.json)  → Extensions (settings.json)
  Server-specific configs vary — port individually

Authentication
  Anthropic API key            → Google account or API key
  No cross-tool credential sharing

MIGRATION MAP: Codex → Gemini CLI

Project Memory
  AGENTS.md                    → GEMINI.md (copy, minor edits)
  AGENTS.override.md           → (personal GEMINI.md overrides)
  config.toml                  → .gemini/settings.json

Custom Commands
  codex commands               → .gemini/commands/ (.toml format)

Sandbox
  execpolicy (config.toml)     → hooks (settings.json)
  Different enforcement model — hooks are post-hoc, not pre-hoc