This file applies to the entire repository.
Personal dotfiles repository for macOS/Linux shell and CLI tooling setup.
Main goals:
- Keep configs easy to restore on a new machine.
- Keep bootstrap and shell startup files safe and maintainable.
- Keep changes low-risk for daily shell usage.
files/: source dotfiles that are linked into$HOMEbyclone_and_link.sh.clone_and_link.sh: bootstrap script used for first install and updates.scripts/lint-shell.sh: strict shell lint entrypoint (used in CI).scripts/lint-shell-all.sh: advisory lint over broader shell config, including zsh files..github/workflows/shellcheck.yml: CI lint workflow.README.mdandSETUP.md: user-facing setup and maintenance docs.
- Prefer small, targeted edits over broad refactors.
- Preserve behavior unless a change request explicitly asks to change it.
- Be conservative with shell startup files; failures can block terminal startup.
- Keep scripts POSIX/Bash compatible according to existing shebang and style.
- Do not introduce secrets, tokens, private keys, or machine-specific sensitive data.
Run after shell-related changes:
bash scripts/lint-shell.shOptional broader advisory scan:
bash scripts/lint-shell-all.shIf you need advisory lint to fail for cleanup work:
STRICT=1 bash scripts/lint-shell-all.sh- Repo-level config is in
.shellcheckrc. scripts/lint-shell.shis the authoritative strict lint command.- Keep CI green by ensuring
scripts/lint-shell.shpasses.
When adding/removing tooling or scripts, update:
README.mdfor usage commands.SETUP.mdfor installation prerequisites.
- Use clear commit messages with intent first (e.g.
Add ...,Fix ...,Refactor ...). - Group related changes in one commit.
- Avoid committing unrelated local experiments.