This repository is a personal environment/tooling monorepo managed with stow-style paths.
config/common/: shared dotfiles (.config/nvim, fish, git, tmux, etc.).config/macos/andconfig/linux/: platform-specific overrides.bin/common/.local/bin/: cross-platform helper scripts.bin/macos/.local/bin/andbin/linux/.local/bin/: OS-specific utilities.install/: install entrypoints and package setup (arch/,macos/,devbox/,Makefile)..github/workflows/: CI for linters and secret scanning.
make -C install install: run full platform install (install/arch/install.shorinstall/macos/install.sh).make -C install packages: install/update packages for current OS.make -C install stow: apply symlinked config changes.make -C install shell-plugins: refresh shell plugin dependencies.
Useful local lint checks (matching CI intent):
stylua --check config/common/.config/nvimshfmt --simplify --indent 2 -d <files>shellcheck <script.sh>
- Shell scripts should be POSIX/Bash-friendly, executable, and lint-clean.
- Write shell helpers and alias-like commands as Bash scripts under
bin/by default. - Only keep a helper as a Fish function when it must change the current shell state, such as
cd,export, or similar shell-local mutations. - Keep shell formatting consistent with CI (
shfmtindent2, simplify enabled). - Lua style follows
.stylua.toml; avoid ad-hoc style changes. - Prefer descriptive script names (
nodeswitch,update-shell-plugins) over abbreviations.
There is no unit-test suite; quality is enforced mainly via linters and manual validation.
- Run targeted linting for edited files before opening a PR.
- Validate behavior changes by running the relevant command locally (for example, run updated scripts directly).
- Ensure no secrets are introduced; CI runs
detect-secrets.
- Follow the existing commit style: short, imperative, scoped summaries (for example,
Add codex config,Fix gitignore). - Keep commits focused; avoid bundling unrelated changes.
- Before pushing, sanity-check changed paths and run targeted validation for touched files.
- If a change is non-trivial, include brief rationale in the commit body (what changed and why).
- Never commit credentials, tokens, or machine-specific secrets.
- Keep personal/local runtime state out of the repo unless intentionally tracked.