Artificial Intelligence

Claude & Codex Skills

How I configure and use Claude Code and Codex CLI with custom skills, principles, and MCP servers.

Overview

I use Claude Code and Codex CLI as AI coding agents in my development workflow. Both are configured through my dotfiles repo, which syncs configuration across machines.

Identity Architecture

Both tools share a three-layer identity system:

FilePurpose
soul.mdVoice, character, and relationship — who the agent is
principles.mdDecision-making heuristics — how to navigate ambiguity
agents.mdOperating manual — autonomy levels, git conventions, safety

These live in ~/.claude/ and ~/.codex/ respectively.

Key Principles

  • Build, don't just plan — bias toward working code over architecture discussions
  • Understand before automating — read existing code and conventions first
  • Friction is information — investigate why something is hard, don't route around it
  • Correctness over convenience — type-safe code, proper error handling
  • Tools exist to be used — leverage existing crates, CLI tools, and built-ins

Claude Code Skills

Custom skills are invoked with /skill-name in Claude Code:

SkillDescription
cargo-justSmart Rust/just task runner
code-reviewCode review for quality, bugs, and style
git-push-prAutomated git workflow: stage, commit, push, create/update PR
grillRelentlessly interrogate an idea before proposing a plan
interviewIn-depth interviewing to create detailed specifications
slidevCreate web-based developer presentations
test-writerGenerate tests for existing code

Codex CLI Policies

Codex uses tiered command approval rules:

  • Allow: Read-only commands (ls, cat, rg, git status/diff/log, cargo check/clippy)
  • Prompt: Mutating operations (git add/commit/push, cargo build/test, package installs)
  • Forbidden: Dangerous commands (sudo, rm -rf /, cargo publish, shutdown)

MCP Servers

Both tools are configured with Playwright MCP for browser automation:

# .codex/config.toml
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]

No manual install needed — npx auto-fetches on first use.

Dotfiles Sync

All configuration is managed through a sync utility that handles bidirectional synchronization between the repo and $HOME:

./sync-dotfiles.sh push   # Install configs from repo to home
./sync-dotfiles.sh pull   # Backup current configs to repo
./sync-dotfiles.sh status # Show differences

Skill directories with many files are dynamically discovered — adding files to those directories automatically updates the sync list.

Resources