Guidance for Claude Code (claude.ai/code) when working in this repository.
Riley Oest's cross-platform dotfiles (macOS + Linux/WSL + RHEL). Bash-based. Paired with nvim for the editor side of the workflow.
git clone https://github.com/roest1/dotfiles.git ~/dotfiles
cd ~/dotfiles
make all # deps → install → checkIndividual targets: make deps, make install, make shell, make check, make update. All idempotent.
install.sh is the core symlinking engine — the Makefile wraps it. Both are needed; neither is a pure superset of the other.
bash/
bashrc Main entrypoint (~/.bashrc). OS detection, history,
shell options, PATH (dotnet, java, conda, nvm, homebrew),
package managers, sources custom configs.
bash_roest_theme Prompt (PS1 + right-aligned PROMPT_COMMAND), LS_COLORS,
conda env display, git branch/dirty/sync indicators,
GitHub Actions status in prompt (background-cached).
bash_roest_productivity CLI tools: aliases (git, ls/cat/bat/eza), zoxide, fzf,
utility functions (mkcd, up, f, findword, lines, port,
serve, loop, extract, ddiff, c, etc.), .NET aliases
(dclean, dbuild, dtest), help system (`h`).
bash_roest_git GitHub Actions commands: gha, gha-fail, gha-open, gha-ui
(interactive workflow picker with smart log view;
scope: HEAD or recent runs).
bash_roest_github Unified hub (gh-ui) + interactive GitHub management via fzf:
gpr (PR management with filters), ghsecrets, ghbranch, ghenv.
(bash_profile) Login-shell shim — generated by install.sh if missing,
just sources .bashrc. Not tracked.
git/
gitconfig Global git config (user, credential, lfs)
README.md GitHub tips and tricks reference
GITHUB_TOOLS.md Interactive tools walkthrough + demo recording guide
install.sh Symlinks all dotfiles into ~. Backs up existing files.
Generates bash_profile shim if missing. Safe to re-run.
Makefile Orchestrator: deps (brew/dnf), install, shell, check, update.
README.md Setup instructions + file reference
- OS portability:
_OS=mac|linuxdetected inbashrc. Mac/Linux differences (homebrew paths,dateflags,statflags) are handled inline with conditionals. - Bash version: macOS ships bash 3.2.
make depsinstalls bash 5 via homebrew. Bash 4+ features (dirspell,globstar) are guarded withBASH_VERSINFOchecks. - Tool dependencies:
zoxide,fzf,bat,eza,fd,ripgrep,gh,jq. All optional — features degrade gracefully viacommand -vguards.make depsinstalls via brew (macOS/WSL) or dnf+EPEL (RHEL). Some tools have alternate binary names on RHEL/Debian (bat→batcat,fd→fdfind) — handled with fallback checks. - Symlink pattern:
install.shsymlinksbash/*to~/.*(e.g.bash/bashrc→~/.bashrc). Filenames are hard-coded ininstall.sh— edit it when adding or renaming files. - Navigation UX: All interactive fzf commands use consistent keybindings — menus (
-/qback), lists (type to filter,escback), pagers (rrefresh,-/qback). - Machine-local config:
bash_roest_localholds per-machine setup (CUDA, nvim path, RHEL-specific exports) — gitignored, optional-sourced before other custom configs.bash_roest_password_commandsis gitignored for secrets.
- Test on both bash 3.2 (macOS
/bin/bash) and bash 5+ (homebrew / Linux). - Guard all tool usage with
command -vchecks. - Keep the
hhelp function inbash_roest_productivityin sync with any command changes. - The README is intentionally concise: install + new-machine flow + GitHub tools pointer + "what goes where" table. Prose explanations of bash internals belong here in
CLAUDE.md, not in the README.