macOS developer environment managed with chezmoi. Optimized for software engineering, data infrastructure, AI engineering, and a Codex-centered workflow.
Apple Silicon macOS is the only supported target. Machine-specific behavior is handled through capability probes rather than OS branches.
- Core: zsh, chezmoi, Homebrew
- Primary agent: Codex in the ChatGPT desktop app
- Agent fallbacks: Codex CLI in cmux; Claude Code when explicitly needed
- Review: Codex desktop first, VS Code for visual inspection
- Terminal: cmux, Ghostty, iTerm2, tmux, Powerlevel10k, fzf, zoxide
- Editor: VS Code and Neovim
- Python: uv
- Infrastructure: OrbStack, direnv, gh, difftastic, lazygit
- Productivity: Raycast, Obsidian, Todoist, KeepingYouAwake
-
Install Xcode Command Line Tools:
xcode-select --install
-
Bootstrap and apply:
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply k-schmidt -
Sign in to the ChatGPT desktop app, then authenticate terminal tools as needed:
gh auth login codex login claude auth login
-
Configure Touch ID for
sudoif desired:sudo sed -i '' '2i\auth sufficient pam_tid.so' /etc/pam.d/sudo
Codex desktop is the control plane. A task owns one coherent outcome; a managed worktree provides isolation when implementation should not touch the local checkout. Use Codex handoff to move a task between its worktree and the local checkout.
cmux remains available for terminal-first Codex CLI sessions. Its Codex hooks provide lifecycle state, notifications, and session restoration. VS Code is the fallback review surface for diffs that benefit from a full editor. Claude remains an explicit fallback: cmux keeps its native Claude wrapper for those sessions, but no shell alias or launcher makes Claude the default.
Implementation tasks stop at a tested, review-ready diff. Commit, push, and pull-request creation happen only after explicit approval.
Stable cross-project skills live in ~/.agents/skills and are shared with Claude through a compatibility link. Codex defaults to one task and decides implementation structure from the work rather than requiring a planning pipeline.
$to-prdcreates a concise specification when a persistent PRD is actually useful; it does not force task decomposition.$diagnosing-bugsestablishes a tight reproduction, tests falsifiable hypotheses, and stops at root cause unless a fix was requested.$ast-grepsearches and rewrites code structurally when shape matters more than text.$review-before-publishreviews correctness, repository standards, and specification fidelity across committed and uncommitted changes without crossing the publish boundary.$dotfilesmanages chezmoi source, application, and synchronization.$unslopis an explicit-only editor for removing generated-writing patterns from human-facing prose.
Project-specific workflows live in a non-discovered library and can be copied into a repository when needed:
codex-skill list
codex-skill attach grill-with-docs update-docsThe command installs versionable snapshots under the repository's .agents/skills/ directory and refuses to overwrite existing skills. grill-with-docs runs a domain-aware design interview; update-docs reconciles implemented behavior with project documentation. Both remain explicit-only after attachment.
Always edit source files rather than deployed targets:
chezmoi edit ~/.zshrc
chezmoi applyTo add a Homebrew package:
chezmoi edit ~/.config/brew/Brewfile
chezmoi applyPublishing remains explicit:
cd ~/.local/share/chezmoi
pre-commit run --all-files
git add .
git commit -m "feat: description"
git pushChezmoi installs commit and push hooks automatically. Commit checks cover portable file syntax, staged secrets, skill metadata and links, rendered shell sources, Neovim Lua formatting, and a full chezmoi dry run. The push hook scans the complete dotfiles Git history for secrets before anything leaves the machine.
dot_codex/AGENTS.md— portable global guidance loaded by CodexAGENTS.md— repository-only chezmoi rules; excluded from deploymentdot_agents/skills/— canonical global personal skill source shared across agentsdot_local/share/codex-skill-library/— reusable skills attached to projects only when neededdot_local/bin/executable_codex-skill— helper for listing and attaching project skillsdot_claude/— minimal Claude fallback import and settingsdot_config/brew/Brewfile— Homebrew formula and cask manifestdot_config/cmux/— cmux editor and agent-integration settingsdot_zshrc,dot_bashrc,dot_bash_profile— shell configurationdot_config/nvim/— Neovim configuration.pre-commit-config.yaml— repository-only validation and secret checksrun_onchange_*.sh.tmpl— idempotent package and integration reconciliation
Codex desktop owns ~/.codex/config.toml, authentication, plugins, MCP servers, project trust, hooks state, and runtime databases. VS Code Settings Sync owns VS Code settings, keybindings, and extensions. Neither mutable surface is tracked here.
- Optional tools are activated only when their executable or directory exists.