Maintain once,
loaded everywhere
Global instructions, subagents and skills in one repo. Symlinks wire them into Claude Code, Codex and Mistral Vibe – an edit here is live in every tool at once.
Cross-project rules don’t belong in every CLAUDE.md.
If you use coding agents across many projects, you end up writing the same rules again and again: working style, scope, validation, commit conventions. ai-agent-config keeps that layer in one repo. Project files get shorter and only describe what makes each project different.
github.com/casoon/ai-agent-config →- 01One GLOBAL.md — becomes
~/.claude/CLAUDE.mdand~/.codex/AGENTS.md - 02Agents as Markdown — rendered to TOML for Codex by a script
- 03Skills on demand — one folder with a
SKILL.mdper topic - 04Symlinks, not copies — an edit in the repo is live immediately
Every rule in its place.
The repo manages the global layer. Project memory and session memory deliberately stay out.
- 01
Global = behaviour
How work gets done: plan first, small diffs, no new dependencies without a reason. Short enough to always be loaded. →
GLOBAL.md - 02
Skill = domain knowledge
Astro, Tailwind, Biome, SEO, accessibility, Cloudflare, writing – loaded only when a task needs it. →
skills/ - 03
Agent = role
Planner, implementer, reviewer, explorer, security auditor. Roles, not knowledge stores. →
agents/ - 04
Repo = truth
A project’s folder structure, commands and architecture boundaries. That belongs in the project’s own
CLAUDE.md, not here.
One neutral tree for every tool.
ai-agent-config/
├── GLOBAL.md # → CLAUDE.md / AGENTS.md
├── agents/ # subagent sources (Markdown)
├── codex-agents/ # generated from agents/
├── skills/ # one folder with SKILL.md each
├── codex-config.example.toml
├── scripts/
│ └── render-codex-agents.py
├── .githooks/
│ └── pre-commit
└── install/
├── link-all.sh
├── link-claude.sh
├── link-codex.sh
└── link-mistral.sh## Core principles
- Do exactly what is asked — no more, no less.
- Prefer modifying existing code over adding new files.
- Minimize surface area of changes.
- Avoid speculative improvements unless explicitly requested.
## Scope control
- Do not fix unrelated issues.
- Do not reformat unrelated code.
- Do not upgrade dependencies unless required.
- Do not refactor outside the task scope.---
name: explorer
description: Searches a codebase to answer a specific
question — "where is X", "how does Y work", "what
calls Z". Protects the main agent's context by keeping
raw search output isolated and returning a concise
synthesis.
---
You are an exploration agent. You search, read, and
summarize — you do not modify files.Where each file points.
| File in repo | Claude Code | Codex | Mistral Vibe |
|---|---|---|---|
| GLOBAL.md | ~/.claude/CLAUDE.md | ~/.codex/AGENTS.md | — |
| agents/ | ~/.claude/agents | — | — |
| codex-agents/ | — | ~/.codex/agents | agent_paths |
| skills/ | ~/.claude/skills | ~/.codex/skills | skill_paths |
| codex-config.toml | — | ~/.codex/config.toml | — |
For Mistral Vibe, link-mistral.sh adds the paths to ~/.vibe/config.toml if that file exists. Zed needs no script of its own: Claude Code in the Agent Panel reads the same ~/.claude/.
Five roles, each with a clear brief.
Planner
Breaks larger work into an ordered plan, names risks and assumptions and proposes the smallest reasonable path. Does not implement.
Implementer
Carries out an agreed plan in small, reviewable diffs. Keeps the architecture, does not restructure silently and checks what it changed.
Reviewer
Reviews a diff for correctness, regression risk, maintainability and architectural fit. Findings grouped by severity.
Explorer
Answers questions like “where is X” in its own context. Raw search output stays out; what comes back is a short answer.
Security auditor
Checks defensively for injection, authn/authz flaws, secret handling, input validation and dependency risks. Writes no exploits.
Linked in three steps.
- 1Clone
Get the repo
Ideally as your own copy or fork, so your changes are versioned.
git clone https://github.com/casoon/ai-agent-config.git - 2Link
Create the symlinks
Links Claude Code, Codex and – if installed – Mistral Vibe. Existing files are kept next to it as
.bak../install/link-all.sh - 3Protect
Enable the hook
Once per clone. From then on, every commit regenerates the Codex agents and scans for secrets.
git config core.hooksPath .githooks
What happens behind the scenes.
One source for agents
agents/ is the only place to edit agent prompts. render-codex-agents.py generates codex-agents/ from it; nothing there is edited by hand.
Pre-commit hook
Regenerates the Codex agents, stages them and scans the changes with nosecrets. Findings abort the commit.
Nothing gets lost
Files that are not yet a symlink are moved to <path>.bak before the script links anything.
Codex profiles
codex-config.example.toml ships the profiles default, deep and fast with different reasoning effort.
Private section
GLOBAL.md ends with a marked area for personal preferences: package manager, languages, commit style.
Portable Bash
The scripts only use ln -sfn, mkdir -p and mv. Requirements: bash, python3 and git.
A starting point, not a live feed.
Public snapshot
The repo is a sanitised export of a private configuration, refreshed periodically. Breaking changes can happen.
Tested on macOS
Linux is expected to work but is not actively tested. Windows only via WSL2.
Vibe is best effort
For Mistral Vibe, the Codex TOML agents are reused. Whether the schema fits is not guaranteed.
Permissive Codex profiles
The example profiles set approval_policy = "never" and sandbox_mode = "danger-full-access". Review them before use.
No nosecrets, no scan
Without nosecrets installed, the hook prints an error and lets the commit through – unscanned.
Frequently asked questions.
Does ai-agent-config replace the CLAUDE.md in my project?
No. The repo manages the global layer: your personal CLAUDE.md or AGENTS.md, skills and subagents. Rules that only apply to one project stay in that project’s own CLAUDE.md.
What happens to my existing configuration?
If a target path exists and is not a symlink, the link script moves it to <path>.bak. Existing symlinks are replaced.
Do I have to adopt every skill?
No. Skills are only loaded when a task needs them, and you can delete or add skills in your own copy. In August 2026 the repo contained 82 skills.
How do Claude Code and Codex stay in sync?
Agent prompts are only maintained as Markdown in agents/. On every commit, the pre-commit hook generates the TOML files for Codex from them. GLOBAL.md and skills/ are the same files for both tools.
Can I just track the repo with git pull?
You can, but it is meant as a baseline to copy from. It is a periodic export, not continuously in sync, and breaking changes happen. Your own copy or fork keeps your adjustments stable.
Does it work in Zed?
Yes, when Claude Code runs inside Zed as an external agent via ACP. It reads the same ~/.claude/ that link-claude.sh sets up. Zed’s built-in agent is not supported.
Goes well with.
One setup for every project.
Clone, link, adapt. An article on insights.casoon.de explains the layer model and how Claude Code and Codex differ (in German).