thurbox: Skill for Claude Code

.agents/skills/thurbox-performance/SKILL.md

thurbox-performance is a skill for Claude Code, Codex from Thurbeen/thurbox. It costs 0 tokens per session (4,365 once invoked), scanned A, original, MIT.

A guide to how Thurbox decides when to redraw its terminal interface. It covers redraw timing, screen-change signals, caching, resizing, and performance measurements.

In plain words
What is it for?
Use it when changing the render loop, diagnosing sluggish or overly busy screens, adding caches, or reviewing performance metrics.
Why use it?
It prevents unnecessary screen updates while keeping typing and agent output responsive, which reduces processor work.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: installed under .agents/ (shared by several agents); mentions AGENTS.md; mentions Codex.

This is Thurbeen/thurbox's own configuration. It tells Claude Code and Codex how to work on thurbox itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything thurbox configures →

Reuse

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.

Copy the file
curl -O https://raw.githubusercontent.com/Thurbeen/thurbox/main/.agents/skills/thurbox-performance/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/Thurbeen/thurbox

Made for: Claude Code, Codex.

Wrote 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.

agentmods badge for thurbox-performance

README.md
[![agentmods](https://agentmods.dev/badge/skills/thurbeen/thurbox/thurbox-performance/github.svg)](https://agentmods.dev/skills/thurbeen/thurbox/thurbox-performance)
Your own site
<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.

agentmods 80×15 button for thurbox-performance

Your own site · 80×15
<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>
Per session 0 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 4,365 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce 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

Measured 7d ago against content hash 3dd7c6a87570, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

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.

.agents/skills/thurbox-performance/SKILL.md · 253 lines

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.

Read the full file on GitHub · 253 lines

Changes

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.

  1. 7d ago Changed · +2 lines 3dd7c6a87570
  2. 16d ago Changed · +10 lines 1864d918016f
  3. 26d ago Changed · +18 lines 3994bf107cc3
  4. 1mo ago Changed 5fcafd9f7afc
  5. 1mo ago Changed · +1 lines af177d6daef1
  6. 1mo ago Changed · +7 lines c27f22888266
  7. 1mo ago Changed · +13 lines 8b55b382389f
  8. 1mo ago Changed ab7c8f11b82b
  9. 1mo ago Changed · +24 lines 814192ddce74
  10. 1mo ago First seen · 178 lines · 0 tokens per session scan A aadc2394ce46

Subscribe to this mod's changes

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.

Related

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.

open-metadata/OpenMetadata · 37 tokens

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…

zebbern/claude-code-guide · 71 tokens

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…

adobe/skills · 112 tokens

ci-fixer

CI failures - read error, minimal fix, verify.

sipyourdrink-ltd/bernstein · 15 tokens

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.

rmyndharis/antigravity-skills · 36 tokens

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…

PostHog/posthog · 76 tokens