Personal configuration files for shell, git, terminal, and Claude Code.
| File | Description |
|---|---|
zshrc |
Zsh configuration with Zinit, lazy loading, aliases |
p10k.zsh |
Powerlevel10k prompt theme |
gitconfig |
Git configuration with aliases and signing |
gitignore |
Global gitignore patterns |
gitmessage |
Git commit message template |
ghostty_config |
Ghostty terminal configuration |
.claude/ |
Claude Code configuration |
# Clone the repo
git clone https://github.com/thepushkarp/dotfiles ~/dotfiles
# Symlink configs
ln -sf ~/dotfiles/zshrc ~/.zshrc
ln -sf ~/dotfiles/p10k.zsh ~/.p10k.zsh
ln -sf ~/dotfiles/gitconfig ~/.gitconfig
ln -sf ~/dotfiles/gitignore ~/.gitignore
ln -sf ~/dotfiles/gitmessage ~/.gitmessage
# For Ghostty
ln -sf ~/dotfiles/ghostty_config "~/Library/Application Support/com.mitchellh.ghostty/config"
# For Claude Code
ln -sf ~/dotfiles/.claude ~/.claude| File | Description |
|---|---|
.claude/CLAUDE.md |
Custom instructions for Claude |
.claude/settings.json |
Permissions, plugins, and settings |
.claude/statusline-command.sh |
Custom statusline with git info |
.claude/output-styles/ |
Custom output style prompts |
.claude/hooks/session-start.sh |
SessionStart hook for project setup |
The session-start.sh hook automatically sets up your development environment when starting a Claude Code session.
- Remote-only dependency installation: Only runs heavy setup in Claude Code on the Web
- Python support: Uses
uvto sync dependencies frompyproject.tomlorrequirements.txt - Node/Frontend support: Uses
yarn(ornpm) to install frompackage.json - Git context: Shows current branch, recent commits, and uncommitted changes
- TODO loading: Displays active TODOs if
TODO.mdexists
To use this hook in your projects, add to your project's .claude/settings.json:
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "bash \"$CLAUDE_PROJECT_DIR\"/.claude/hooks/session-start.sh"
}
]
}
]
}
}Then copy the hook script to your project:
mkdir -p .claude/hooks
cp ~/dotfiles/.claude/hooks/session-start.sh .claude/hooks/
chmod +x .claude/hooks/session-start.shThe hook checks CLAUDE_CODE_REMOTE to determine if running in Claude Code on the Web:
if [ "$CLAUDE_CODE_REMOTE" = "true" ]; then
# Only runs in web environment
fiTo persist environment variables for the session, write to CLAUDE_ENV_FILE:
echo 'export MY_VAR=value' >> "$CLAUDE_ENV_FILE"MIT