Tool Mastery & Rediscovery¶
Research into the problem of forgetting the tools you already own — the custom CLIs in
~/tools, the apps/ scripts in this repo, and the daily third-party tools (fzf, ripgrep,
git, tmux, neovim) whose efficient features never make it into muscle memory.
The goal is not more apps or more note-taking. It is consolidation: fewer, better tools, actually memorized, actually combined. This directory collects the research, the prior art, and the design options so decisions can be made deliberately.
Research date: 2026-07-07. Sources are cited inline in each document.
Build status (2026-07-08)
This series is a point-in-time analysis; some "what you have today" cells below are now
historical. Acted on since: menu unifies the discovery doors (job 1), and the retention
layer (job 3) was rebuilt — the workflows motd random card was removed and replaced by
the menu review cadence register plus a first-shell-of-each-half-day nudge (the "first-shell
gating + scheduled active recall" this research recommended, achieved by replacing the motd
rather than keeping it). See docs/apps/menu.md.
The core reframe¶
The starting assumption was "I need a tool to record what I do and analyze it." The research changed that framing. You do not have a missing-tool problem — you have a fragmentation and passivity problem. The pieces already exist in this repo; they are scattered across five front doors and are almost entirely passive (recognition), with no active (recall) layer.
Everything the research surfaced sorts into three distinct jobs that are currently conflated. Separating them is the key move.
| Job | Question it answers | Memory mode | What you have today | The gap |
|---|---|---|---|---|
| 1. Discovery / lookup | "What do I have and how do I use it — right now?" | Recognition (long tail) | workflows, cheat, tldr, toolbox, menu, mkdocs site |
5–6 separate doors; nothing unifies them; mkdocs needs a browser |
| 2. Recording / analysis | "What am I actually doing, and where am I slow?" | Measurement | zsh EXTENDED_HISTORY + tool-usage (grep) |
Rich capture + real analysis ("you do X the slow way") |
| 3. Active review / retention | "Drill me until it's automatic." | Recall (hot set) | workflows motd (random card on startup) |
No active recall — only passive exposure |
The single most-cited principle across every thread: look up the long tail, drill the hot set. Point-of-need lookup (Job 1) is correct for commands you use monthly. Spaced, active recall (Job 3) is correct for the ~20 things you keep fumbling. A random tip on startup — what you have now — is neither: it is recognition without scheduling, so it builds ambient awareness but not retention.
What you already have (the ecosystem map)¶
Grounding the research in the actual repo, because most recommendations graft onto existing pieces rather than replacing them:
| Layer | Tool | State | Location |
|---|---|---|---|
| Author | capture-workflow skill, workflows new |
Working | .claude/skills/, apps/common/workflows |
| Browse (personal cards) | workflows search — fzf + bat over 32 cards |
Working | ~/.local/share/workflows/*.md |
| Browse (tool catalog) | toolbox — reads ~/dev/tools.yml (69 KB) |
Working | ~/tools/toolbox |
| Browse (federated) | menu |
Working — fzf search across tools registry + tagged workflows + skills, biased to name/tags, delegating display to each collection | apps/common/menu |
| Browse (generic) | cheat (community sheets), tldr |
Working, but generic, not yours | ~/.config/cheat, tealdeer |
| Surface | workflows motd → random card on shell startup |
Working (the review you like) | .zshrc line ~437 |
| Analyze | tool-usage — grep frequency over history |
Registry-driven list; raw counts only (no cwd/exit/duration) | apps/common/tool-usage |
Two concrete findings that surfaced here (both since fixed — see the consolidation doc):
menuwas silently broken andtool-usageused a hardcoded, already-stale tool list. Both now derive their list from thecustom-toolscategory in~/dev/tools.yml(Syncthing-synced), and the eight uncatalogued personal tools were added to the registry.- You are already recording everything.
EXTENDED_HISTORY,SHARE_HISTORY, timestamps, and durations are on. 10,051 entries sit in~/.local/state/zsh/history. The gap is analysis, not capture — you do not need atuin to start (though it captures far more; see Job 2).
What your real history already shows¶
A live demonstration of the Job-2 idea, run against your actual 10k-line history:
- Top exact commands:
gst629,risky582,exit466,ls418,git push393,clear363,nvim191,reload145,z dot130. - Signal vs. noise:
font(661) andtheme(530) dominate raw frequency — but that is dev/test looping while building those tools, not daily use. Raw frequency lies; the analysis layer must separate "I'm developing this" from "I use this." - Concrete inefficiencies visible even now:
git push/git pull/git difftyped in full hundreds of times with no short alias (you aliasgstbut not these);clear363× +reload145× +exit466× is heavy manual session churn; 2,774 distinct commands out of 10k means very high diversity — exactly the profile that forgets its own surface area.
This is the proof-of-concept: "you type git push 393 times — add gp" is a finding your
current grep-based tool-usage cannot produce.
The convergent architecture¶
Independently, four of the five research threads landed on the same shape: one source of truth, deriving every layer, with no new note-taking app.
- Single source of truth — descriptions live inline next to the thing they describe
(alias
# comments, tool--help, workflow front matter). Nothing is documented twice, so nothing drifts. This directly answers your "goes out of sync" complaint. - Discovery surface — one fzf keystroke fans out across that source of truth and drops the real command onto the prompt (so it enters history and reinforces itself).
- Anti-forgetting at point of use — the real command stays visible (alias expansion,
precognition.nvim), so lookups don't become permanent crutches. - Ambient resurfacing — the startup tip, upgraded from per-shell random to a weekly "tool of the week" cadence (sustained exposure beats novelty for mastery).
- Data for pruning + scheduling — history analysis surfaces both dead weight (never used → cut) and forgotten keepers (in your dotfiles, absent from history → resurface).
- Memorization layer (optional, heaviest) — active recall / spaced repetition over the hot set, cards auto-generated from the same inline source.
How to read this directory¶
Each document is a menu of options with tradeoffs and use cases — not a plan. Decisions come after.
- Discovery & the terminal docs browser — Job 1. navi vs.
cheat vs. um vs. DIY fzf;
help2man/ Cobra doc generation so your tools' docs can't drift; how to unify the five front doors into one. Addresses the "terminal browser for only my shit" idea. - Usage recording & analysis — Job 2. atuin vs. histdb vs. resh vs. your existing history; the SQL that produces real insights; LLM-assisted review; the concrete findings from your own history.
- Active review & retention — Job 3. The long-tail/hot-set
principle; spaced repetition in the terminal;
zsh-you-should-use; motd variants; why your current random-workflow setup is half the answer. - Neovim mastery — the editor-side of all three jobs.
keymaps.nvim(always-in-sync cheatsheet + usage stats),hardtime.nvim,precognition.nvim, and the build-your-ownvim.on_keycomposition analysis. - Consolidation architecture — the synthesis. The single-source-of-truth pipeline, how each piece grafts onto what you already have, a phased path, and the open decisions to make together.