howiclaudearmory◆ common build
r/wkbefwky
CommonUnrated
Bind on Pickupanonymous
Item Level — · this rig hasn’t been appraised yet (run the analyze prompt)
configClaude Code 2.1.144OpusiTerm2
claude‑ing sinceFeb 2025
EQUIPPED
the physical loadout- KeyboardLogitech MX Keyboard
- PointerLogitech MX Master
- Displays27" + 13" laptop2 screens
- MicAirPods Proon a boom arm
- AudioAirPods Proearbuds
- RigMacBook Air M3 · 16GBsitting desk
gear names link out — affiliate links — howiclaude may earn a commission
BUILD
abilities · augments · attunements- Augment:frontend-designplugin
- Augment:superpowersplugin
- Augment:swift-lspplugin
- Augment:claude-md-managementplugin
- Augment:skill-creatorplugin
- Augment:feature-devplugin
- Augment:claude-code-setupplugin
- Attuned:GmailGmail: Search/draft Gmail from inside Claude — kills the mid-session context switch.
- Use:Claude from CLI
STATS
while equipped- Burns 2,350,112,463 tokens per month (~2.4B)
- Inspected 0 times
ACHIEVEMENTS
No achievements unlocked yet — this rig hasn’t earned any badges.
2.35B tokens/mo, almost all Opus, mostly dictated
IN ACTION
statusline · the build, runningtheir statusline
┌ claude (fullscreen TUI) ──────────┐ │ session badge · branch · PR · ctx │ │ │ │ terminal canvas │ │ │ └───────────────────────────────────┘
how the panes are tiled
▸ a couple of their prompts — running
inspect: the full config — 9 sections · 31 cards9 sections · 31 cards · every one exportable
TL;DR
2.35B tokens/mo, almost all Opus, mostly dictated
MacBook Air M3 + a Dell 5K. Voice-hold dictation into Opus on xhigh, defaultMode:auto, skipAutoPermissionPrompt. 79 sessions a week, peak 9–11pm. Custom statusline + an async-Haiku badge updater that re-labels each session as I work. The Tinkerer / Night-Shift profile.
How I actually work
A typical session
I open a worktree, hold the voice key, brief the agent like a colleague. xhigh + auto mode means it runs end-to-end without polite check-ins. The statusline tells me what session I'm in, what the agent is on, and how close I am to the 5h limit. 11/day across ~14 projects.
Voice-hold dictation on Opus
#voice-dictationTyping is the bottleneck on a long brief. Hold the key, talk like you're walking a colleague through it, release. Opus xhigh fills in the typing-quality gap.
Night shift (9pm–11pm peak)
#night-shiftThe house is quiet, the inbox is closed, and Opus is in a steady cadence. The longest streak (24 days) was built one 10pm session at a time.
Config that matters
xhigh + auto + skipAutoPermissionPrompt
Why it's there: The 'just let it cook' triplet. effortLevel:xhigh for plan quality, defaultMode:auto to skip the polite check-ins, skipAutoPermissionPrompt to remove the prompt-on-first-tool dialog. Pair with a tight allow/deny list so the autonomy doesn't bite.
{
"effortLevel": "xhigh",
"permissions": { "defaultMode": "auto" },
"skipAutoPermissionPrompt": true
}Voice hold-mode
Why it's there: The voice-key acts like a push-to-talk radio. Hold → speak → release inserts the transcription as your prompt. Removes the typing latency from long briefs.
{
"voice": { "enabled": true, "mode": "hold" }
}editorMode: normal (vim) + fullscreen TUI
Why it's there: Normal-mode keybindings in the prompt input + fullscreen TUI to take over the terminal. The session name carries the work label so I know which window I'm in.
{
"editorMode": "normal",
"tui": "fullscreen"
}Tight allow/deny list under defaultMode:auto
Why it's there: auto-mode is reckless without a deny list. Allow the common safe Bash verbs + scoped Read/Write/Edit; hard-deny destructive git + rm -rf + sudo.
{
"permissions": {
"allow": [
"WebFetch", "WebSearch", "Read",
"Edit(~/Documents/projects/**)",
"Write(~/Documents/projects/**)",
"Bash(git *)", "Bash(gh *)", "Bash(npm *)", "Bash(npx *)",
"Bash(node *)", "Bash(open *)", "Bash(ls *)", "Bash(cat *)",
"Bash(mkdir *)", "Bash(cp *)", "Bash(mv *)",
"Bash(pwd)", "Bash(which *)", "Bash(echo *)",
"Bash(wc *)", "Bash(head *)", "Bash(tail *)",
"Bash(sort *)", "Bash(curl *)"
],
"deny": [
"Bash(git push --force *)",
"Bash(git push -f *)",
"Bash(git reset --hard *)",
"Bash(rm -rf *)",
"Bash(sudo *)"
],
"defaultMode": "auto"
}
}Stop hook → afplay Tink
Why it's there: A single short chime when the agent stops talking. Trains you that 'silence then Tink = your turn'. Nothing fancier.
{
"hooks": {
"Stop": [{
"matcher": "",
"hooks": [{
"type": "command",
"command": "[ -z \"${_LIVED_BADGE_HOOK:-}\" ] && afplay /System/Library/Sounds/Tink.aiff &"
}]
}]
}
}Async-Haiku iTerm badge updater (the centerpiece)
Why it's there: UserPromptSubmit hook writes the user's prompt as the iTerm badge immediately (instant feedback), then fires a background Haiku call that returns a 3–6 word topic phrase and overwrites the badge. statusline.sh reads the per-session file every tick and pushes OSC 1337 SetBadgeFormat to the terminal. Net effect: the watermark on the top-right of each session tracks the work as it evolves. Cost: pennies/month. Recursion guard via _LIVED_BADGE_HOOK so the Haiku subprocess doesn't re-fire the hook.
#!/bin/bash
# Recursion guard: the Haiku call below is itself a `claude -p` which fires hooks.
[ -n "${_LIVED_BADGE_HOOK:-}" ] && exit 0
input=$(cat)
prompt=$(printf '%s' "$input" | jq -r '.prompt // empty')
session_id=$(printf '%s' "$input" | jq -r '.session_id // empty')
[ -z "$session_id" ] && exit 0
state_file="$HOME/.claude/badge-state/$session_id"
mkdir -p "$(dirname "$state_file")"
clean=$(printf '%s' "$prompt" | tr '\n\t' ' ' | sed 's/^[^[:alnum:]]*//; s/[[:space:]]\{2,\}/ /g')
[ "${#clean}" -lt 12 ] && exit 0
# 1) Immediate: write the truncated prompt as the label.
printf '%s' "${clean:0:60}" > "$state_file"
Rich statusline + iTerm badge/tab integration
Why it's there: One bar shows everything that matters per tick: session name, worktree purpose (with a ⚠MAIN warning if you're NOT in a worktree), branch, PR state (cached 60s via gh), context % dot, 5h rate dot + reset countdown, sandbox/remote flags. Also pushes OSC 1337 SetBadgeFormat + OSC 1 tab title to the terminal so each tab is identifiable at a glance. Falls back from /dev/tty to the parent's ttys### when the statusline subprocess has no controlling terminal — the part that makes the badge actually show reliably.
# (excerpt — the file is ~200 lines; the trick is the OSC + parent-tty fallback)
if [ "${TERM_PROGRAM:-}" = "iTerm.app" ]; then
badge_b64=$(printf '%s' "$badge_label" | base64)
term_dev=""
if { : > /dev/tty; } 2>/dev/null; then
term_dev="/dev/tty"
else
# statusline subprocess often has no controlling tty — fall back to parent's.
ppid_tty=$(ps -o tty= -p "${PPID:-0}" | tr -d ' ')
case "$ppid_tty" in
ttys*|tty*) [ -w "/dev/$ppid_tty" ] && term_dev="/dev/$ppid_tty" ;;
esac
fi
[ -n "$term_dev" ] && {
printf '\e]1337;SetBadgeFormat=%s\a' "$badge_b64" > "$term_dev"
printf '\e]1;%s\a' "$session_label" > "$term_dev"
}
firemoteControlAtStartup + agentPushNotifEnabled
Why it's there: Remote-control opens the door to controlling sessions from the phone; push notifs page me when a long agent run finishes. Lets the night-shift cadence keep working when I'm not staring at the screen.
{
"remoteControlAtStartup": true,
"agentPushNotifEnabled": true
}Plugins enabled
frontend-design
Why it's there: Distinctive frontend output — used heavily on the howiclaude rig-page redesign.
superpowers (5.1.0)
Why it's there: Brainstorming, TDD, systematic-debugging, writing-plans — the discipline rails.
swift-lsp
Why it's there: Swift work outside this repo.
claude-md-management
Why it's there: Periodic CLAUDE.md audits + the revise-claude-md command.
skill-creator
Why it's there: Building / editing custom skills.
feature-dev
Why it's there: code-architect / code-explorer / code-reviewer subagents.
claude-code-setup
Why it's there: Automation recommender + setup helpers.
My CLAUDE.md
I don't keep a global CLAUDE.md
No `~/.claude/CLAUDE.md` at all. Project-level CLAUDE.md files do the heavy lifting (this howiclaude repo's is dense and load-bearing: principles + build order + memory pointers). The opinion: global rules drift and become noise; per-project context is where the rationale + history live.
Stack & MCP
Gmail (MCP)
Why it's there: Search threads, draft replies, label triage from inside Claude — kills the context-switch cost of jumping back to mail mid-session.
On the desk
MacBook Air M3 · 16GB
Why it's there: Yes, on an Air. The Air is enough — Claude does the heavy lifting in the datacenter. The constraint forces tight session hygiene + worktree discipline.
Dell U2720Q 5K (main display)
Why it's there: 27" 5K at 2560×1440 UI scale. One big canvas: editor + statusline + terminal all visible at once; no window-shuffling between context-switches.
Logitech MX Keyboard + MX Master mouse
Why it's there: MX Master scroll wheel + back/forward buttons are worth real money for fast file navigation. The MX keyboard's quiet keys matter on the night shift.
AirPods Pro (mic + headphones)
Why it's there: Voice-hold dictation goes through the AirPods mic. The noise-canceling means the household can be loud without it bleeding into the transcription.
Stats (113-day window from local JSONL)
2,350,112,463 tokens / month
Why it's there: Scaled from the 113-day window. Dollar figure stays private.
1,286 sessions · 79.7/week
Why it's there: ≈11 sessions a day across ~14 projects. The rhythm is project-switching, not single-flow.
94.2% Opus · 2.4% Sonnet · 3.5% Haiku
Why it's there: Opus does the work, Haiku does the background labels (badge updater), Sonnet barely appears. The price tag is the trade — bought back in throughput.
Peak 9pm–11pm
Why it's there: Hour-of-start buckets: 21h=158, 22h=146, 20h=119, 19h=97. The Night Shift signature is unambiguous.
Longest streak: 24 days
Why it's there: Built one 10pm session at a time. Current streak: 5 days.
Why this setup
The bet: high-quality model + minimal friction > everything else
Opus xhigh costs more, auto-mode is risky, dictation feels weird at first. The combined effect is that the marginal cost of starting a session is near-zero — voice key down, brief, voice key up, done. That's what makes 79 sessions a week sustainable.