/bin
The commands that get typed dozens of times a day. One rule governs the whole set: an alias may improve a tool's defaults, but must never change its semantics in a way that would surprise me on someone else's machine. Muscle memory travels; the configuration does not.
Replacements
The ones that stuck changed behaviour rather than appearance. Each of these tells me something the original did not.
- eza
- Listing, with git status per file. Knowing what is modified without running a second command is the entire reason.
- bat
- Syntax highlighting when reading, with the real thing kept one alias away for pipes that object to colour codes.
- ripgrep
- Search that respects ignore files by default, which is almost always what I meant.
- fd
- Finding files without remembering the argument order. Also what the fuzzy finder walks.
- difftastic
- Structural diff. It compares syntax trees, so a reformat and a logic change stop looking alike during review.
- dust
- Disk usage as a tree rather than a wall of numbers.
- zoxide
- Directory jumping that learns. It replaces most of what a directory alias list used to do.
Safety
Removing, copying, and moving are all interactive by default. On a machine that touches client production, half a second of friction on a destructive command is worth paying every time — and the times it matters are exactly the times I was moving too fast to notice.
Navigation
- clone
- Clones into a canonical path derived from the remote, then moves me there. This is the function the identity model rests on: I never choose a path, so the path is always right, so the identity derived from it is always right.
- repo
- Fuzzy-jump to any repository, with recent commits in the preview pane. Scales to however many engagements are live, which an alias list does not.
- mkcd
- Make a directory and enter it. Small, and typed constantly.
- extract
- One command for every archive format, so the flags stop being something to remember.
Context switching
These are the ones that decide what a subsequent command will affect, so they all report back rather than switching silently.
- awsp
- Pick a cloud profile, verify it, and export it for this shell only — never to a file, never globally. Closing the tab ends the access.
- assume
- Single sign-on plus temporary credentials, and it can open the console in a browser container pinned to that account. The wrong-client-console-in-another-tab mistake stops being possible rather than merely unlikely.
- kc
- Pick a cluster context from the merged configuration. Each cluster's config is a separate file, so adding or dropping one is a file operation rather than a YAML edit.
- envrc-aws
- Scaffold a repository's per-directory environment file, and append it to the ignore list in the same step. Account context belongs to the repository, not to my shell profile.
- wt
- Create a git worktree and land in it. Git has one checkout state per working directory, so two agent sessions sharing a checkout will tangle their histories. One worktree per session makes that impossible.
Before handing anything back
A single command runs secret scanning and a filesystem vulnerability and misconfiguration scan across the working tree. It is the pre-flight before a repository is made public or handed to a client, and it exists as one word because a check that takes three commands to run is a check that gets skipped.
Deliberately absent
Two omissions are as considered as anything above.
There is no shorthand for deleting cluster resources. Destroying something in a live cluster should be typed in full, every time, because the typing is the last moment available to reconsider.
There is no alias for applying infrastructure changes without review. Not a shorter one, not a guarded one — none. The plan-then-apply pause is the only thing standing between a bad assumption and a rewritten state file, and a convenience that removes it is not a convenience.