Not plugin tours — end-to-end recipes. Each lists the tools, the keys, where
the AI sits, and what "done" looks like. Keybinding legend: Space = leader.
Tools: Pyright + Ruff (auto), venv-selector, Claude Code, DAP.
tmux new -s api→nvim. Select the project venv once:Space c v.Space a c→ Claude in plan mode: "add a paginated GET /invoices endpoint; look at how /orders does it first" — pointing at an existing pattern is the highest-value sentence you can type.- Accept diffs file-by-file (
Space a a). Ruff formats on save. - Test loop in the float terminal
Ctrl+/:pytest -x -q(or have Claude run it). Debug a gnarly failure with breakpoints:Space d bon a line,Space d cto run the test under debugpy. Space g g→ stage hunks, commit. Done = endpoint + passing tests + clean diff you actually read.
Tools: vtsls, Tailwind LSP, Prettier, Claude Code.
- Window 1
nvim, window 3npm run dev. - Component skeleton:
Space a c→ "create an InvoiceTable following OrdersTable.tsx conventions". Tailwind classes autocomplete with color swatches;gdjumps into component definitions,grfinds usages. - Rename a prop across the codebase:
Space c r(LSP rename — safer than agent find-replace). - Visual check in the browser; iterate via selection: select JSX →
Space a s→ "make this responsive".
- Reproduce first: failing command in
Ctrl+/terminal. Space a c: paste the stack trace (orSpace a bto add the suspect file). Ask for root cause before any fix — "explain why this happens; don't edit yet."- Cross-check big diagnoses with a second agent (agent-orchestration.md).
- Fix + regression test in one diff;
]dwalks any new diagnostics. Done = the old failure fails no more and is pinned by a test.
Space g g→ lazygit → browse the branch diff; orgit diff main | nvim -.- Claude: "review the diff between main and HEAD: correctness first, then
naming, then perf; cite file:line". Trouble panel (
Space x x) tracks anything it turns into diagnostics. - Independent pass from Codex/Gemini for high-stakes changes; human arbitrates disagreements — that's the review.
Tools: jupytext (auto), molten, per-project kernel.
cd project && source .venv/bin/activate
pip install ipykernel && python -m ipykernel install --user --name projectnvim analysis.ipynb— it opens as Markdown with code fences.Space j i→ pick theprojectkernel.- Run: select lines →
Space j e; outputs render inline (Space j oto reopen). Dataframes/text always work; add image.nvim for inline plots (see usage.md). - Refactor freely — it's a text buffer with full LSP. Save writes valid
.ipynb; the git diff stays human-readable.
Tools: yamlls (Kubernetes schemas built in), kubectl, a kube-context switcher, Claude Code.
Set up per-cluster kubeconfigs once (this pattern scopes the context to one shell — prod in pane A can't leak into pane B):
mkdir -p ~/.kube/configs # drop staging.yaml, prod.yaml here
# in ~/.zshrc or ~/.bashrc:
use() {
local dir=~/.kube/configs f
if [ -z "$1" ]; then command ls "$dir" 2>/dev/null | sed 's/\.ya\?ml$//'; return; fi
for f in "$dir/$1.yaml" "$dir/$1.yml" "$dir/$1"; do
[ -f "$f" ] && export KUBECONFIG=$f && kubectl config current-context && return
done
echo "no kubeconfig named '$1'" >&2; return 1
}- tmux window:
use staging→kubectl get pods -w. Another pane:use prodfor read-only comparison. (kubectxis the plugin-equivalent if you prefer a tool; this is 12 lines of shell.) - Manifests in nvim get schema validation + completion from yamlls — most "why won't it apply" bugs are red-underlined before you apply.
- Feed incidents to Claude with real data:
kubectl describe pod X > /tmp/pod.txt, then "read /tmp/pod.txt — why is this pod CrashLooping?" Files beat pasted walls of text. - Fix the manifest (diff review),
kubectl applyfrom the pane, watch.
nvim paper.tex→\llonce — latexmk recompiles on every save; PDF follows along,\lvjumps the PDF to your cursor.- Citations autocomplete from the
.bib;]]/[[move between sections;csechanges an environment. - AI for prose: select a paragraph →
Space a s→ "tighten this abstract; keep the claims". Review the diff like code.
- Mechanical, type-safe renames → LSP (
Space c r), not AI. - Structural changes → Claude in plan mode: "extract the retry logic in
services/.py into a shared decorator; show the plan first"*. Approve,
then accept diffs per file. Grep-verify leftovers:
Space /old name. - The test suite is the referee; run it before and after
(
Ctrl+/→pytest). No green, no merge.