Borrowing it
Nothing to install: this file belongs to Thurbeen/thurbox. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/Thurbeen/thurbox/main/.agents/skills/thurbox-performance/SKILL.mdgit clone --depth 1 https://github.com/Thurbeen/thurboxWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/thurbeen/thurbox/thurbox-performance)<a href="https://agentmods.dev/skills/thurbeen/thurbox/thurbox-performance"><img src="https://agentmods.dev/badge/skills/thurbeen/thurbox/thurbox-performance/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/thurbeen/thurbox/thurbox-performance"><img src="https://agentmods.dev/badge/skills/thurbeen/thurbox/thurbox-performance.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.04365 |
| Opus 5.5 | $0.00000 | $0.01746 |
| Sonnet 5.5 | $0.00000 | $0.00873 |
| Haiku 4.5 | $0.00000 | $0.00436 |
Grade A, and why
thurbox-performance scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 7d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 253 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Thurbox render-loop performance
Working reference indexed by AGENTS.md. The rationale behind these decisions is owned by the docs under docs/; a change that invalidates what this says updates it in the same PR.
Performance (render loop)
Nothing on the loop waits on a network (ADR-P7/P12 for connecting,
ADR-P24 for a connection already open). The trap ADR-P24 closes is that an
open link can go bad without failing: it carries nothing, no ssh keepalive
fires, and a round trip that is sub-millisecond when healthy becomes
COMMAND_TIMEOUT plus a reconnect plus another COMMAND_TIMEOUT. So a command
issued from the loop is either detached (send_command_detached, for one
whose answer no frame reads — the pane resize behind a paint) or bounded
(ctrl_command_within, for one the loop must have an answer to — the
passthrough gate's is_dead), and the bound covers the control lock too, not
just the answer. Reproduced by the wedged-link scenarios in tests/tui_e2e.rs;
see the thurbox-testing skill for how the stand-in ssh builds the byte relay
a local tmux does not have.
The loop is demand-driven: it paints when something changed or when the 250 ms
forced-redraw floor (FORCE_REDRAW_INTERVAL) elapses, never on every iteration.
There are two floors between paints, because typing has to feel instant and
watching a log scroll does not: MIN_FRAME_INTERVAL (16 ms) when a person did
something — a key, a resize, a worker result they asked for, tracked by
input_dirty, which is set with dirty through the one App::note_input and
never alone — and OUTPUT_FRAME_INTERVAL (33 ms) when the only thing owing a
frame is agent output. Applying the tight floor to both made a chatty agent drive
60 paints a second to show 30 lines; the split is worth 30% of the loaded cost
(ADR-P17). A keystroke's echo is on neither floor (ADR-P28): a key sent to a
terminal owes an echo (EchoWait), the loop sleeps in poll(2) on the terminal
and on the backend::output_wake self-pipe (poked only by that pane's reader) until it comes, holds the key's own
frame for it (ECHO_HOLD), and paints it at once as the last full frame with
only that surface repainted (paint_echo_frame) — rapid keys queue successive
output sequences rather than replacing one pending wait; one such frame per
key, and declined whenever anything is drawn over the panes. What marks the screen dirty:
any input, a resize, a reload, a worker result, and new agent output —
Terminals::visible_output_generation sums only the surfaces painted last
frame, so visible output is responsive while hidden output owes no frame.
The all-pane output_generation still invalidates content search (ADR-P29). It sums each pane's output_seq, bumped
after the parse, never the millisecond last_output_at: that stamp was stored
before the parse and cannot tell two chunks in one millisecond apart. What does not: background housekeeping.
A command answering Command::is_housekeeping() (the 5-second deleted-session
sweep or a Codex status reset after delivered input) is dispatched to a worker
with no in-flight record, so it reaches neither thurbox.commands, nor the
message band, nor the animation clock — recorded like a command someone
pressed, the sweep reserved a
band row and gave it back every five seconds, and a band row appearing is a
reflow (ADR-P22). A reflow — the arrangement placing a
slot at a new rect, so a column opened or closed — additionally forces one full
repaint: the cell diff is only correct while ratatui and the terminal agree on a
glyph's width, and where they cannot (a flag, an emoji presentation sequence) the
pane that closed leaves characters behind.
kernel::paint::normalize_ambiguous_width strips the one such disagreement that
is strippable — U+FE0F — from every painted cell, panes and vt100 surfaces
alike, and kernel::paint::force_full_repaint covers the rest by marking every
cell of the reflowed frame as one the diff must print. It is deliberately not
Terminal::clear: erasing flushes a blank screen and leaves the repaint to the
next flush, so every pane toggle blinked the whole interface.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 7d ago Changed · +2 lines 3dd7c6a87570
- 16d ago Changed · +10 lines 1864d918016f
- 26d ago Changed · +18 lines 3994bf107cc3
- 1mo ago Changed 5fcafd9f7afc
- 1mo ago Changed · +1 lines af177d6daef1
- 1mo ago Changed · +7 lines c27f22888266
- 1mo ago Changed · +13 lines 8b55b382389f
- 1mo ago Changed ab7c8f11b82b
- 1mo ago Changed · +24 lines 814192ddce74
- 1mo ago First seen · 178 lines · 0 tokens per session scan A aadc2394ce46
thurbox-performance is a skill published in the GitHub repository Thurbeen/thurbox (115 stars, last pushed today), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 4,365 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
systematic-debugging
Use when debugging a failing test, build error, or runtime issue that isn't immediately obvious. Guides a 4-phase root cause analysis instead of random fix attempts.
log-error-digest
Analyze log files to troubleshoot errors, identify peak error periods, and produce error clustering, frequency statistics, and time distribution reports. Supports JSON, syslog, and Nginx formats with automatic detection. Use when a user uploads a .log file and asks to analyze errors, find patterns, debug issues, or…
cwv-optimizer
Diagnose and fix Core Web Vitals issues on AEM Edge Delivery Services pages. Goes deeper than generic CWV advice by understanding EDS-specific performance patterns including the 100KB LCP budget, E-L-D loading phases, block rendering behavior, and third-party script impact. Produces specific fixes for LCP, CLS, and…
ci-fixer
CI failures - read error, minimal fix, verify.
incident-response-incident-response
Coordinate production incident triage, mitigation, investigation, recovery, and follow-up. Use when responding to outages or other incidents that require structured operational coordination.
diagnosing-missing-recordings
Diagnoses why a session recording is missing or was not captured. Use when a user asks why a session has no replay, why recordings aren't appearing, or wants to troubleshoot session replay capture issues for a specific session ID or across their project. Covers SDK diagnostic signals, project settings, sampling…