Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/thurbeen/thurbox/thurbox-extensionsnpx skills add Thurbeen/thurbox --skill thurbox-extensionsgit 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-extensions)<a href="https://agentmods.dev/skills/thurbeen/thurbox/thurbox-extensions"><img src="https://agentmods.dev/badge/skills/thurbeen/thurbox/thurbox-extensions.svg" alt="Measured on agentmods" height="20"></a>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 | $0.00101 | $0.03409 |
| Opus 5 | $0.00051 | $0.01705 |
| Sonnet 5 | $0.00020 | $0.00682 |
| Haiku 4.5 | $0.00010 | $0.00341 |
Grade A, and why
thurbox-extensions scanned grade A with 1 finding 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 4d 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.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
<name>` (with a thin curl-able `install.sh` shim over it). How it starts
The opening of the file, as written. The whole thing — 185 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Thurbox extensions
Working reference extracted from CLAUDE.md, which indexes it. 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.
Extensions
extensions/ holds opt-in, agent-agnostic add-ons that build on
thurbox-cli without touching the core binary. Each ships an
extension.toml manifest installed via thurbox-cli extension install <name> (with a thin curl-able install.sh shim over it).
extensions/flow/(experimental — new and under active testing) — a focus-protecting triage agent: brain-dumps become thurbox tasks, dispatchable ones spawn worker sessions (onflow/<slug>worktree branches, agentsflow-worker/flow-worker-heavymapped inagents.tomlto any CLI), a dedicatedflowsession monitors them, and every reply ends with the single next thing to focus on. Dispatch is plan-first:scripts/create-task.showns the worker prompt and injects a mandatory clarify → plan → build phase (≥3 clarifying questions, then a written plan gated on user approval, then implement; seeded from--accept) so each worker plans before it codes. A dump spanning severalrepos.mdrepos becomes one multi-repo task:create-task.shforwards--add-repo PATH@origin/<base>(own isolated worktree per repo) /--add-dir PATHtotask create, and the worker opens a separate PR per repo it changes (itsresultcarriespr_urls). Worker↔flow coordination is event-driven over the inter-session message queue: a worker pushesmessage send --to flow --kind questions|plan|result(waking flow) with no ids (thurbox stamps sender + task from the injectedTHURBOX_SESSION/THURBOX_TASK); flow drains its inbox (message inbox --claim), surfaces the questions/plan under "Needs you", and relays the user's answer withmessage reply <message_id>— routed to that message's sender, so flow never maps a task to a session id (flow-snapshot.shname-parsing is now human-board only). The worker drains its own inbox on the resultinginboxwake. Flow ships no scheduled automation — a manualtickis the janitor/safety-net (drain missed wakes, reset stale tasks, dispatch). The behavior spec isFLOW.md, surfaced to whichever CLI runs it via context-file symlinks (CLAUDE.md/AGENTS.md/GEMINI.md→FLOW.md). Seeextensions/flow/README.md.extensions/forge/(experimental) — a workflow analyst that mines your tasks/sessions/automations (and their run history) for recurring patterns and writes ready-to-applythurbox-cli automationproposals. It proposes, never imposes: a scan (driven by a weeklyforge-scanautomation on theforgesession) only reads state and writesproposals.jsonl(rendered toproposals.md); nothing is created until youapply <slug>— andproposals.sh applyrefuses any command not starting withthurbox-cli. Spec:FORGE.md.extensions/ci-shepherd/(experimental) — watches your open change requests (GitHub PRs / GitLab MRs / Bitbucket PRs; repos inrepos.md) and dispatches ashepherd-workerfixer for each one with failing CI, a changes-requested review, or a branch that is behind its target (needs rebase — the normalizedrebasesignal fromprovider.sh, surfaced as theREBASEaction flag byscripts/classify.sh;dispatch-fix.sh --rebasemakes the worker rebase onto the base and force-push before fixing). When several PRs in one repo are all REBASE-only,classify.shserializes them — only the lowest-numbered keeps the liveREBASEflag, the rest becomeREBASE-QUEUED (behind #n)— so the shepherd rebases one at a time (each merge advances the base for the next), clearing the stack in O(n) rebases instead of the O(n²) of force-pushing N mutually-invalidating branches. Ashepherdsession monitors via ashepherd-tickautomation; fixers are thurbox tasks (fix #<n>: …) that self-report with the same===RESULT===sentinel as flow. It is forge-agnostic: only git is baked in; how to talk to a repo's host is decided by the shepherd agent each tick — built-in fast paths (githubgh/gitlabglab/bitbucket REST viascripts/provider.sh) plus an agent-driven path for any other forge (provider.sh describehands the agent the remote + installed clients; it lists the repo itself and passes--branch/--checkout-cmd/--feedback-cmd/--comment-cmdtodispatch-fix.sh). Because thurbox's--worktreealways runsgit worktree add -b(which fails on an existing branch),dispatch-fix.shadopts the request branch itself into a shepherd-owned worktree. It is also session-aware: the snapshot joins each request's head branch against the livethurbox-cli session list(scripts/link-sessions.sh, pure + bats-tested). A request whose branch already has a non-fixer thurbox session (someone working it by hand) is not dispatched (two worktrees would force-push the same branch) but is monitored and folded into the merge ordering — that live session counts as the repo's active worker, so the other same-repo requests queue behind it. While such a request stays actionable the shepherd nudges the live session over the message queue (thurbox-cli message send) to do the rebase/merge — once per pending ask (guarded by peeking its unread inbox), not every tick — so the slot actually clears. Spec:SHEPHERD.md.extensions/renovate/(experimental) — keeps local repos on up-to-date dependencies. Arenovatesession sweeps arepos.mdwatch list on a weeklyrenovate-tickautomation and dispatches arenovate-workerper eligible repo; the worker runs Renovate'slocalplatform only (scripts/renovate-run.shhard-codes--platform=local— no hosted bot, no token, no Renovate-opened PR), tests the result, commits to a freshrenovate/updates-<ts>branch, and opens a review PR. Updaters are thurbox tasks (update <repo> deps …) that self-report with the same===RESULT===sentinel as flow. Unlike ci-shepherd it starts a new branch, soscripts/dispatch-update.shuses thurbox's native--worktree(no branch adoption). Version strategy is per-repo (strategycolumn:patch/minor/major/all, layered as aRENOVATE_CONFIGoverlay) plus a globalrenovate-config.json. Spec:RENOVATE.md.extensions/ui-skill/(built-in, on by default) — the odd one out: it ships no session, no automation and no agent. It installs a single agent skill,thurbox-ui, into each coding CLI's personal skill directory (~/.claude/skills/,~/.codex/skills/,~/.config/opencode/skills/,~/.copilot/skills/,~/.agents/skills/— each guarded byrequires_dir, so a CLI the user does not have is skipped), so an agent in any session knows how to change thurbox's own interface. It replaces the workaround of attaching the interface directory to every session as an extra repo: a skill loads only when the request is about the TUI, where an extra repo is in front of the agent always. Likehooksit is embedded + auto-activated (see below) — for the same reason: someone who does not already know the interface is editable will not go looking for the extension that says so. Opt out withthurbox-cli extension deactivate ui-skill. The payload is oneSKILL.md— the short form ofui/AGENTS.md+ui/README.md— and it hard-codes no paths, opening withthurbox-cli plugin dirso one file is correct for a release build, a dev build and aTHURBOX_UI_DIRoverride alike. Delivery is the ordinary[[external_files]]machinery, marker-guarded:install/update/uninstallact on thurbox's own copies and leave one the user has taken ownership of alone (drop theManaged byline and it is theirs), whilereinstallandinstall --forceoverwrite as they do everywhere else.
Removed. Four per-provider task-integration extensions (
github-issues,gitlab-issues,linear,jira) lived here and were deleted: four near-identical trees, each carrying a provider's API shape, for a job that is acurland anupsert. What made them possible is still in the binary and is deliberately provider-neutral (ADR-20 — no provider name in the binary): thetask --source/--external-id/--external-urlflags,get_task_by_external_id, theidx_tasks_externalindex, and theExecautomation action. A scheduledExecrunning a script of your own does what they did.
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.
- 4d ago First seen · 185 lines · 0 tokens per session scan A 9af0519705a6
thurbox-extensions is a skill published in the GitHub repository Thurbeen/thurbox (57 stars, last pushed 4d ago), licensed MIT. It adds 101 tokens to every session and 3,409 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). 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 encountering any bug, test failure, or unexpected behavior, before proposing fixes.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
auto-perf-optimize
Run agent-driven VS Code performance or memory investigations. Use when asked to launch Code OSS, automate a VS Code scenario, run the Chat memory smoke runner, capture renderer heap snapshots, take workflow screenshots, compare run summaries, or drive a repeatable scenario before heap-snapshot analysis.
chat-perf
Run chat perf benchmarks and memory leak checks against the local dev build or any published VS Code version. Use when investigating chat rendering regressions, validating perf-sensitive changes to chat UI, or checking for memory leaks in the chat response pipeline.
chat-pet-sprite-creation
Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.
cpu-profile-analysis
Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…