- macOS and Linux development environment
- One-command setup, safe to re-run
- Version-controlled and portable across machines
git clone https://github.com/cassmtnr/dotfiles.git ~/dotfiles
cd ~/dotfiles
# Review .brewfile, .aliases, .functions, and .defaults before running
# to customize packages and preferences for your setup.
./install.shIdempotent β safe to run multiple times.
./update.sh # Refresh symlinks only
./update.sh -p # Also update Homebrew packages
./update.sh -d # Also re-apply macOS defaults
./update.sh -a # All of the abovedotfiles/
βββ install.sh # Full installation
βββ update.sh # Lightweight update (symlinks + optional packages/defaults)
βββ .utils.sh # Shared utilities (OS detection, logging, symlinks, packages)
βββ .brewfile # Homebrew packages (45+)
βββ .editorconfig # Cross-editor coding standards
βββ .zshrc # Shell configuration
βββ .zshenv # Environment variables
βββ .functions # Utility functions (mkd, killport, extract, weather)
βββ .aliases # Shell aliases (25+)
βββ .ssh-agent # SSH agent management
βββ .completion # Shell completions
βββ .starship # Starship prompt configuration
βββ .defaults # macOS system preferences
βββ .bun # Bun JavaScript runtime config
βββ .ghostty/ # Ghostty terminal (Nord theme, custom keybindings)
βββ .ssh/config # SSH configuration template
βββ .ai/ # AI CLI configuration
β βββ common/ # Shared by Claude Code & Codex CLI
β β βββ instructions.md # Global AI instructions
β β βββ commands/ # Slash commands (/craft)
β β βββ hooks/ # PreToolUse safety hooks
β βββ claude/ # Claude Code only
β β βββ settings.json # Settings (plugins, permissions, statusline)
β β βββ config/ # Custom statusline script
β βββ codex/ # Codex CLI only
β βββ config.toml # Model and approval policy
β βββ hooks.json # Hook configuration
βββ .vscodium/ # VSCodium settings, extensions, custom icon
βββ .lazydocker/ # LazyDocker terminal UI configuration
βββ .motd/ # Message of the Day scripts (Linux/VPS)
βββ .alfred/ # Alfred workflows and preferences (macOS only)
- SSH: Edit
~/dotfiles/.ssh/configwith your key paths and hosts - SSH Agent: Edit
.ssh-agentwith your key paths - Git:
git config --global user.name/user.email - Local overrides: Create
~/.zshrc.localfor machine-specific settings
Shared configuration for Claude Code and Codex CLI, symlinked to ~/.claude/ and ~/.codex/.
.ai/common/contains only assets that are intended to work for both CLIs.ai/claude/contains Claude-only settings.ai/codex/contains Codex-only settings~/.codex/instructions.mdis loaded by Codex viamodel_instructions_filein.ai/codex/config.toml- Codex hooks are enabled explicitly in
.ai/codex/config.tomlbecausehooks.jsonis ignored unless thecodex_hooksfeature is on - Codex TUI status line and terminal title are versioned in
.ai/codex/config.tomlvia the built-in[tui]settings; keeping the fullstatus_linelist there makes it persist across new Codex sessions - Codex project trust is intentionally not hardcoded in the repo because
projects.<path>.trust_levelis machine-specific
Safety hooks β block-dangerous-commands.js blocks dangerous Bash commands via PreToolUse hooks at three levels:
- Critical: filesystem destruction, disk operations, fork bombs, git history rewriting
- High (default): git write ops, elevated privileges, secrets exposure, publishing/deployment, database ops
- Strict: cautionary patterns (
git checkout .,docker prune)
Plugins (Claude Code only) β installed from enabled entries in .ai/claude/settings.json (currently superpowers, code-simplifier, frontend-design, sentry, swift-lsp, pyright-lsp).
VSCodium (open-source VS Code without Microsoft telemetry). Settings, extensions, and a custom icon are managed in .vscodium/:
install.sh/update.shhandle symlinks, extensions, and icon automaticallybrew()wrapper in.functionsre-applies the icon after upgradesalias code="codium"for transparent compatibility
- Never commit actual SSH keys β only configuration templates
- Use
.zshrc.localfor private/sensitive configurations - SSH keys should have
600permissions .gitignoreprotects sensitive files
- Slow startup:
time zsh -lic exitandzmodload zsh/zprof - SSH issues:
ssh -T git@github.comorssh -vTfor debug - Homebrew:
brew doctorandbrew update
CC0 1.0 Universal