Claude Code agent instructions & skills in Gemini CLI, Codex CLI, Copilot CLI — portability check

2026-03-27 15:00 (7 months ago)
Symlink Truce
Play a song themed on this article

I, ytyng, use Claude Code as my main development tool. When Claude Code's server responses are unstable I sometimes use other agent development tools too, and I think it would be convenient if the skills, MCP settings and so on that I made for Claude Code could be used there as they are.

So I investigated whether Claude Code's configuration files and command definitions can be used as they are in other tools (Gemini CLI, OpenAI Codex CLI, GitHub Copilot CLI). Ideally, I want to share them just by creating symbolic links.

Tools Covered

Configuration File Layouts for Each Tool

Project instruction files (Project Instruction)

Each tool reads a Markdown file placed in the project root and decides how to behave in that project from it. Only the file name differs; the content is the same natural-language Markdown.

Tool File Name Official documentation
Claude Code CLAUDE.md Using CLAUDE.md files
Gemini CLI GEMINI.md GEMINI.md
Codex CLI AGENTS.md AGENTS.md Guide
Copilot CLI AGENTS.md / .github/copilot-instructions.md Custom Instructions

AGENTS.md is an open standard defined by the Linux Foundation's Agentic AI Foundation (announcement, December 2025). OpenAI, Anthropic, and Block co-founded it. It is adopted by more than 60,000 open source projects, and Claude Code also reads AGENTS.md as a fallback when there is no CLAUDE.md.

Official site: https://agents.md/

Global config directories

Tool Config Dir Settings Format
Claude Code ~/.claude/ settings.json (JSON)
Gemini CLI ~/.gemini/ settings.json (JSON)
Codex CLI ~/.codex/ config.toml (TOML)
Copilot CLI ~/.copilot/ copilot-instructions.md (Markdown)

CLI help excerpts

These are the configuration-related options, excerpted from each tool's --help.

Claude Code

--system-prompt <prompt>       System prompt for session
--mcp-config <configs...>      Load MCP servers from JSON files
--settings <file-or-json>      Path to settings JSON file
--plugin-dir <path>            Load plugins from a directory
--disable-slash-commands       Disable all skills

Gemini CLI

--policy                       Additional policy files or directories
--extensions / -e              List of extensions to use
--include-directories          Additional workspace directories

Codex CLI

-c, --config <key=value>       Override config from ~/.codex/config.toml
-p, --profile <CONFIG_PROFILE> Configuration profile
-s, --sandbox <SANDBOX_MODE>   Sandbox policy

Conclusion: What Can Be Shared, and What Cannot

What can be shared via symbolic links

1. Project instruction files: fully shareable

All tools use natural-language instructions in Markdown format, so they can be shared just by symlinking from one canonical file.

AGENTS.md                              # Source of truth
CLAUDE.md -> AGENTS.md                 # Claude Code
GEMINI.md -> AGENTS.md                 # Gemini CLI
                                       # Copilot CLI reads AGENTS.md directly

Git tracks symbolic links as they are, so the same structure is kept when team members clone the repository.

2. Global instruction files: fully shareable

In my environment, the global instructions of three tools point to the same file.

~/.claude/CLAUDE.md  -> ~/home-files/config/claude-code/CLAUDE.md
~/.gemini/GEMINI.md  -> ~/home-files/config/claude-code/CLAUDE.md
~/.codex/AGENTS.md   -> ~/home-files/config/claude-code/CLAUDE.md

Claude Code specific instructions (such as "review with /review-stage") are also visible to Gemini and Codex, but a tool without the feature just ignores them, so there is no real harm. The global instructions of Copilot CLI can also be shared by symlink.

3. Slash commands / custom agents

Tool Command Dir Format How to invoke
Claude Code ~/.claude/commands/ .md (YAML frontmatter) /command-name
Codex CLI ~/.codex/prompts/ .md (YAML frontmatter) Passed as an argument
Gemini CLI ~/.gemini/commands/ .toml /command-name
Copilot CLI ~/.copilot/agents/ / .github/agents/ .agent.md (Markdown) /agent or --agent name

Claude Code and Codex CLI use the same .md + YAML frontmatter format, so they can be shared directly by symlink. Copilot CLI uses its own extension, .agent.md, and the file structure also differs, so direct sharing is not possible.

~/.codex/prompts/ -> ~/home-files/config/claude-code/commands/

In my environment this symlink is already working.

Only Gemini CLI uses the .toml format, so it cannot be shared by a direct symlink.

The Claude Code / Codex CLI command format.

---
description: "Create feature branch, commit, push, and open a pull request."
allowed-tools: Bash(git:*), Bash(gh:*), Bash(open:*)
---

今回の修正内容にあった名前でフィーチャーブランチを作ってください。

The Gemini CLI command format.

description = "Create feature branch, commit, push, and open a pull request."
prompt = """
今回の修正内容にあった名前でフィーチャーブランチを作ってください。
"""

The content is the same, but the file format differs. For Gemini CLI, conversion is needed.

What cannot be shared

Skills (auto-trigger)

Claude Code's skill system (~/.claude/skills/) is a feature of its own that is triggered by automatically matching the user's input based on description. Neither Gemini CLI nor Codex CLI has an equivalent system (Codex has .agents/skills/, but the format and behavior differ).

Copilot CLI has a mechanism called custom agents (.agent.md files), with a feature that automatically delegates to subagents depending on the context. The concept is close to Claude Code's skills, but the file format (.agent.md) and location (.github/agents/ or ~/.copilot/agents/) differ, so sharing by symlink is not possible.

Skills are one of Claude Code's biggest differentiators, but each tool is starting to have its own skill-like feature, and I hope for standardization in the future.

settings.json / config.toml

Not shareable, because each tool's schema is completely different.

  • Claude Code: manages permissions, hooks, plugins, sandbox in JSON
  • Gemini CLI: manages auth, theme, mcpServers in JSON
  • Codex CLI: manages model, trust_level, mcp_servers in TOML

Hooks / Plugins

A Claude Code specific feature. Copilot CLI also has hooks, but the format differs.

MCP server settings

Claude Code and Gemini CLI have a similar structure in JSON format, but tool-specific options (permissions and so on) are mixed in, so automatic sync is difficult. Syncing by hand is the realistic way.

References

Categories

Archive