Modular macOS dotfiles configuration focused on performance and maintainability.
- β‘ Lightning Fast: < 0.5s shell startup time
- π Modular Design: Clear structure organized by functionality
- π Symlink Mode: Changes take effect immediately, no sync needed
- π€ AI-Friendly: Includes
AGENTS.mdand dedicated skill for easy AI-assisted maintenance - π― Lazy Loading: Dev tools (nvm, pyenv, sdkman) loaded on demand
- π Comprehensive Documentation: All tools documented with sources and purposes
dotfiles/
βββ zsh/ # Zsh configuration (modular)
β βββ core/ # Core functionality (PATH, completion, history, prompt)
β βββ tools/ # Tool configurations (kubectl, git, fzf, etc.)
β βββ aliases/ # Categorized aliases
βββ git/ # Git configuration
βββ brew/ # Homebrew Brewfile
βββ manual/ # Manual install configs (see manual/README.md)
β βββ karabiner/ # Karabiner-Elements rules
βββ misc/ # Other configs (tmux, vimrc, vim runtime, etc.)
βββ external/ # External source assets (aliases, prompt helpers)
βββ docs/ # Documentation
βββ AGENTS.md # AI agent guide
βββ install.sh # Installation script
βββ uninstall.sh # Uninstallation script
Tell Agent:
Fetch and follow instructions from https://raw.githubusercontent.com/shihyuho/dotfiles/refs/heads/main/docs/INSTALL.md
DOTFILES_DIR="${DOTFILES_DIR:-$HOME/.config/dotfiles}"
# Clone repository
git clone https://github.com/shihyuho/dotfiles.git "$DOTFILES_DIR"
cd "$DOTFILES_DIR"
# Complete setup (symlinks + Homebrew packages)
make setup
# Or step by step:
make install # Create symlinks only
make brew # Install Homebrew packages only
# First-time setup: create local secrets file
cp "$DOTFILES_DIR/secrets.example" ~/.secrets
chmod 600 ~/.secrets
# Then edit ~/.secrets and set sensitive env vars
# Uninstall managed symlinks (optional)
make uninstall
# Restart shell
exec zshSee available commands: make help
- kubectl (+ 800 aliases), k9s, helm, kustomize
- git, lazygit, gh, ghq
- fzf, zoxide, exa, ripgrep
- Go, Node.js (nvm), Python (pyenv), Java (sdkman)
See docs/TOOLS.md for complete tool list.
- AGENTS.md: AI agent guide (architecture principles, modification rules)
- docs/INSTALL.md: AI installation playbook
- docs/SETUP.md: Human installation guide
- docs/TOOLS.md: Tool list and sources
-
Performance First: Startup speed < 0.5s
- Use fast-path defaults for common Homebrew prefixes with fallback detection for non-standard installs
- Smart caching (completion, git info)
- Lazy loading for dev tools
-
Modular: Organized by functionality, easy to maintain
- Core configs (
zsh/core/): Loaded in numeric order - Tool configs (
zsh/tools/): Conditional loading - Dev tools (
zsh/tools/dev/): Lazy loading
- Core configs (
-
AI-Friendly:
- Detailed
AGENTS.mdincluded - Config files include metadata (source, purpose, update date)
- Dedicated skill:
.agents/skills/dotfiles-manager/(project-level)
- Detailed
# 1. Edit Brewfile
echo 'brew "tool-name"' >> brew/Brewfile
# 2. Install
make brew
# 3. Check status
make check-tool TOOL=tool-name
# 4. Test
make test# Run all tests
make test
# Run CI-friendly tests
make test-ci
# Detailed startup analysis
make measure-startup
# Check specific tool
make check-tool TOOL=kubectlSince using symlink mode, directly edit files in dotfiles repo:
DOTFILES_DIR="${DOTFILES_DIR:-$HOME/.config/dotfiles}"
vim "$DOTFILES_DIR/zsh/core/30-prompt.zsh"
exec zsh # Reload
make test # Verify changes# Remove only symlinks managed by this repository
make uninstall# Update all
make update-aliases
# Update specific
make update-aliases TARGET=kubectlThis dotfiles is designed for AI collaboration:
- Read AGENTS.md: Understand architecture principles and modification rules
- Use dotfiles-manager skill: Provides standardized operation workflows
- Follow testing standards: Test startup speed and functionality after each modification
AI agents can safely help with:
- Adding new tool configurations
- Updating external alias files
- Optimizing startup speed
- Cleaning up unused tools
- Startup time: 0.16-0.22s (tested on M2 MacBook Air)
- Target: every run < 0.5s
- Lazy loading saves: ~200ms (nvm + pyenv + sdkman)
MIT