Goal
Bring Codex CLI, Claude Code, and Gemini CLI to parity with GitHub
Copilot CLI on the user-global instructions layer of this
chezmoi-managed dotfiles repository, so every supported AI agent
receives a stable repository-independent baseline (conversation
language policy, Conventional Commits, signing fallback ladder,
coding defaults, guardrails) without depending on a repository-local
entry file being present.
Background
This repository already maintains the project-level AI
instructions in a Copilot-first layout:
.github/copilot-instructions.md β canonical, fully detailed
(~380 lines)
AGENTS.md, CLAUDE.md, GEMINI.md β compatibility shims that
point at the canonical file
docs/ai-strategy.md β human-facing strategy note that explains
the canonical/shim split
The user-global layer is currently asymmetric. Only Copilot CLI
is fully wired:
| Agent |
Project shim |
User-global instructions |
| GitHub Copilot CLI |
.github/copilot-instructions.md |
home/dot_copilot/copilot-instructions.md (~173 lines, deployed) |
| Codex CLI |
AGENTS.md |
home/dot_codex/config.toml only β no AGENTS.md |
| Claude Code |
CLAUDE.md |
none β no home/dot_claude/ |
| Gemini CLI |
GEMINI.md |
none β no home/dot_gemini/ |
home/dot_copilot/copilot-instructions.md was introduced in commit
9ee65fa feat(copilot): add user-global copilot cli instructions
and refined through three signing-fallback ladder updates
(aff8888, 20fdfbf, 4cafe09). It acts as a
repository-independent baseline that defers to repository-specific
instructions when they exist.
The three remaining agents either ship no user-global instructions
file (Claude, Gemini) or carry only their tool config without
instructions (Codex). Outside this repository, agents reading those
locations fall back to model defaults β losing the cross-agent
conversation-language policy, the Conventional Commits convention,
and the bounded signing fallback ladder the maintainer relies on for
every repository.
Why this matters
- The maintainer drives multiple AI agents in parallel across many
repositories. The user-global baseline is what keeps their
behavior coherent before any repository-specific guidance loads.
- The signing fallback ladder (GPG β classify β optional gpg-agent
restart β SSH β unsigned) is non-trivial. Without a user-global
copy for the other agents, that hard-won knowledge is unavailable
to them in repositories that do not supply project-level
instructions.
docs/ai-strategy.md currently documents only the project-level
layer, so a future contributor cannot tell whether the user-global
asymmetry is intentional or an oversight.
Tracks
Parallel notes:
- Tracks A, B, and C touch disjoint directories
(home/dot_codex/, home/dot_claude/, home/dot_gemini/) and
can be claimed in parallel without rebase risk. Track A adds a
new file to the existing home/dot_codex/ (which currently only
contains config.toml); B and C create the directory.
- Track D edits
docs/ai-strategy.md only. It is independent of
A/B/C because the new section describes the layer generically,
not per-agent file presence. The doc text passes review even if
A/B/C have not yet landed; once they land, no further doc edit
is required.
- No
Blocked by edges. The reviewer-preferred merge order is D
first (so the policy lands with the implementations), then A/B/C
in any order. The IDD discover loop does not enforce that order.
Success criteria
home/dot_codex/AGENTS.md, home/dot_claude/CLAUDE.md, and
home/dot_gemini/GEMINI.md all exist in the source tree and
follow the same structural shape as
home/dot_copilot/copilot-instructions.md (conversation policy,
Conventional Commits, full signing fallback ladder, coding
defaults, guardrails; repository-local precedence note in the
opening paragraph).
chezmoi diff against a fresh checkout reports the three new
files as additions that map to ~/.codex/AGENTS.md,
~/.claude/CLAUDE.md, and ~/.gemini/GEMINI.md.
docs/ai-strategy.md describes the two-layer (project +
user-global) AI instructions structure and names the
home/dot_<agent>/... source paths.
tests/bash/helpers/bats-core/bin/bats tests/bash/ still passes
unchanged.
npx markdownlint-cli2 "**/*.md" and the cspell run both pass
for the new files and the touched documentation.
Out-of-scope
- Reorganizing the existing project-level AI instructions
(.github/copilot-instructions.md, AGENTS.md, CLAUDE.md,
GEMINI.md). The doc-only edit in track D is limited to adding
a user-global-layer section.
- Installing Gemini CLI through mise alongside Claude Code /
Copilot CLI / Codex CLI in README.md. That is a separate
availability decision; file it as its own issue if needed.
- Migrating canonical AI guidance away from Copilot-first.
docs/ai-strategy.md's change policy explicitly defers that
until benchmarks justify it.
Goal
Bring Codex CLI, Claude Code, and Gemini CLI to parity with GitHub
Copilot CLI on the user-global instructions layer of this
chezmoi-managed dotfiles repository, so every supported AI agent
receives a stable repository-independent baseline (conversation
language policy, Conventional Commits, signing fallback ladder,
coding defaults, guardrails) without depending on a repository-local
entry file being present.
Background
This repository already maintains the project-level AI
instructions in a Copilot-first layout:
.github/copilot-instructions.mdβ canonical, fully detailed(~380 lines)
AGENTS.md,CLAUDE.md,GEMINI.mdβ compatibility shims thatpoint at the canonical file
docs/ai-strategy.mdβ human-facing strategy note that explainsthe canonical/shim split
The user-global layer is currently asymmetric. Only Copilot CLI
is fully wired:
.github/copilot-instructions.mdhome/dot_copilot/copilot-instructions.md(~173 lines, deployed)AGENTS.mdhome/dot_codex/config.tomlonly β noAGENTS.mdCLAUDE.mdhome/dot_claude/GEMINI.mdhome/dot_gemini/home/dot_copilot/copilot-instructions.mdwas introduced in commit9ee65fa feat(copilot): add user-global copilot cli instructionsand refined through three signing-fallback ladder updates
(
aff8888,20fdfbf,4cafe09). It acts as arepository-independent baseline that defers to repository-specific
instructions when they exist.
The three remaining agents either ship no user-global instructions
file (Claude, Gemini) or carry only their tool config without
instructions (Codex). Outside this repository, agents reading those
locations fall back to model defaults β losing the cross-agent
conversation-language policy, the Conventional Commits convention,
and the bounded signing fallback ladder the maintainer relies on for
every repository.
Why this matters
repositories. The user-global baseline is what keeps their
behavior coherent before any repository-specific guidance loads.
restart β SSH β unsigned) is non-trivial. Without a user-global
copy for the other agents, that hard-won knowledge is unavailable
to them in repositories that do not supply project-level
instructions.
docs/ai-strategy.mdcurrently documents only the project-levellayer, so a future contributor cannot tell whether the user-global
asymmetry is intentional or an oversight.
Tracks
Parallel notes:
(
home/dot_codex/,home/dot_claude/,home/dot_gemini/) andcan be claimed in parallel without rebase risk. Track A adds a
new file to the existing
home/dot_codex/(which currently onlycontains
config.toml); B and C create the directory.docs/ai-strategy.mdonly. It is independent ofA/B/C because the new section describes the layer generically,
not per-agent file presence. The doc text passes review even if
A/B/C have not yet landed; once they land, no further doc edit
is required.
Blocked byedges. The reviewer-preferred merge order is Dfirst (so the policy lands with the implementations), then A/B/C
in any order. The IDD discover loop does not enforce that order.
Success criteria
home/dot_codex/AGENTS.md,home/dot_claude/CLAUDE.md, andhome/dot_gemini/GEMINI.mdall exist in the source tree andfollow the same structural shape as
home/dot_copilot/copilot-instructions.md(conversation policy,Conventional Commits, full signing fallback ladder, coding
defaults, guardrails; repository-local precedence note in the
opening paragraph).
chezmoi diffagainst a fresh checkout reports the three newfiles as additions that map to
~/.codex/AGENTS.md,~/.claude/CLAUDE.md, and~/.gemini/GEMINI.md.docs/ai-strategy.mddescribes the two-layer (project +user-global) AI instructions structure and names the
home/dot_<agent>/...source paths.tests/bash/helpers/bats-core/bin/bats tests/bash/still passesunchanged.
npx markdownlint-cli2 "**/*.md"and the cspell run both passfor the new files and the touched documentation.
Out-of-scope
(
.github/copilot-instructions.md,AGENTS.md,CLAUDE.md,GEMINI.md). The doc-only edit in track D is limited to addinga user-global-layer section.
Copilot CLI / Codex CLI in
README.md. That is a separateavailability decision; file it as its own issue if needed.
docs/ai-strategy.md's change policy explicitly defers thatuntil benchmarks justify it.