Personal dotfiles managed with symlinks.
ghq get shifumin/dotfiles
cd ~/ghq/github.com/shifumin/dotfiles
./setup.shOr manually:
git clone https://github.com/shifumin/dotfiles.git
cd dotfiles
./setup.sh.zshrc,.zshrc.alias,.zshrc.custom- Zsh configuration.zprofile- Zsh environment.config/sheldon/- Zsh plugin manager (Sheldon)sheldon lock— Install/update pluginssheldon lock --update— Force update all plugins- fzf - Fuzzy finder
- forgit - Git with fzf
- fzf-zsh-plugin - fzf integrations
.gitconfig- Git configuration.gitignore- Global gitignore
.config/nvim/- Neovim configuration.obsidian.vimrc- Obsidian vim modeCursor/- Cursor editor settings (linked into~/Library/Application Support/Cursor/User)
.config/ghostty/- Ghostty terminal configuration.tmux.conf- tmux configuration.tmuxinator/- tmuxinator project configs.tigrc- tig configuration
.pryrc- Pry console configuration.gemrc- RubyGems configuration.rspec- RSpec defaults.default-gems- Default gems for mise
.claude/CLAUDE.md- Global settings (symlinked to~/.claude/CLAUDE.md, applied to all projects).claude/rules/- Context-specific rules (coding, dotfiles, git, shell, skills).claude/commands/- Custom slash commands.claude/skills/- Custom skills.claude/skills.txt- Third-party skill manifest (auto-installed on setup).claude/settings.json- Permissions and hooks configuration.claude/hooks/- PreToolUse hooks (mise-exec-guard.sh).claude/output-styles/- Output styles.claude/statusline.py- Status line script
.claude/CLAUDE.mdserves a dual role: it is a file in this repo AND the user's global Claude Code settings. Changes here affect behavior across all projects.
.default-npm-packages- Default npm packages
.config/
├── karabiner/ # Karabiner-Elements key remapping
├── sheldon/ # Zsh plugin manager
├── nvim/ # Neovim (dein.vim)
├── ghostty/ # Ghostty terminal
├── cmux/ # cmux (coding agent multiplexer)
└── herdr/ # Herdr (terminal multiplexer for coding agents)
.claude/
├── CLAUDE.md # Global Claude Code settings (→ ~/.claude/CLAUDE.md)
├── commands/ # Custom slash commands
├── hooks/ # PreToolUse hooks
├── output-styles/ # Output styles
├── rules/ # Context-specific rules
├── skills/ # Custom skills
├── skills.txt # Third-party skill manifest
├── settings.json # Permissions and hooks configuration
└── statusline.py # Status line script
Cursor/ # Cursor editor settings (→ ~/Library/Application Support/Cursor/User)
Edit dotfiles directly — symlinks keep the repo and home directory in sync:
vim ~/.zshrc # edit via symlink (repo file is updated)
cd ~/ghq/github.com/shifumin/dotfiles
git add .zshrc
git commit -m "update zshrc"
git pushAdd new dotfiles:
- Create the file in the repo at the correct relative path
- Add the path to
setup.sh - Run
./setup.sh - Commit