Borrowing it
Nothing to install: this file belongs to cardstack/boxel. 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/cardstack/boxel/main/.claude/skills/host-test-memory-leak-hunting/SKILL.mdgit clone --depth 1 https://github.com/cardstack/boxelWrote 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/cardstack/boxel/host-test-memory-leak-hunting)<a href="https://agentmods.dev/skills/cardstack/boxel/host-test-memory-leak-hunting"><img src="https://agentmods.dev/badge/skills/cardstack/boxel/host-test-memory-leak-hunting/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/cardstack/boxel/host-test-memory-leak-hunting"><img src="https://agentmods.dev/badge/skills/cardstack/boxel/host-test-memory-leak-hunting.svg" alt="Reviewed on agentmods" width="80" 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.1 | $0.00089 | $0.02587 |
| Opus 5.5 | $0.00036 | $0.01035 |
| Sonnet 5.5 | $0.00018 | $0.00517 |
| Haiku 4.5 | $0.00009 | $0.00259 |
Grade A, and why
host-test-memory-leak-hunting 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 5d 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.
curl -sX PUT "http://localhost:9333/json/new?${ENCODED}" How it starts
The opening of the file, as written. The whole thing — 136 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Host test memory leak hunting
The host test suite is large enough that a per-test leak as small as 5 MB will OOM a CI shard before the suite finishes. This skill is the playbook for finding and validating fixes. It exists because a single leak hunt can take days if you don't have the loop tightened — Chrome heap snapshots are slow, big, and ambiguous unless you reduce them to retainer paths.
See known-leaks.md for the catalog of leaks found so far and the patterns that cause them. Read it first — most "new" leaks rhyme with one of those.
When to use
- CI host-test shard OOMs (V8
Reached heap limit Allocation failedin the test log). - Local
pnpm testshowsMEMPROBE used=climbing every 10 tests. - New feature added a service, modifier, or globalThis closure that captures the test's
owner. - After landing a fix that is supposed to flatten the slope — verify before declaring victory.
What's already in the suite
Two pieces of permanent instrumentation in packages/host/tests/helpers/setup-qunit.js:
- Forced GC every test (requires Chrome
--js-flags="--expose-gc"). Without this V8's opportunistic GC can't keep up and the heap drifts toward the 4GB ceiling regardless of leak size. MEMPROBElog line every 10 tests withused=/total=/app_instances=/alive=/destroying=/destroyed=— visible in CI output and used by the snapshot runner to trigger snaps.
Three diagnostic scripts in packages/host/scripts/ (only used during a hunt):
heap-snapshot-runner.js— CDP client. Watches Chrome console forPROBE t=N; at configured indices, takes a heap snapshot and streams chunks to disk (joining blows V8's max string length past ~300MB).snapshot-diff.js— top-N constructor counts/retained-sizes that grew between two snapshots.snapshot-retainers.js— backward BFS from target nodes to GC roots. Flags:--type=<native|object|closure|string>,--min-size=N,--strong(skipsweak/shortcutAND WeakMap "part of key" internal edges; use this — it's the difference between a misleading WeakMap path and the real strong retainer).snapshot-by-class.js— like snapshot-diff but truncates long names so output is scannable.snapshot-diff-stream.js/snapshot-retainers-stream.js— use these when a snapshot file is >500 MB. Same flags and output as the non-streaming versions; they usestream-jsonto avoidfs.readFileSync('utf8')(which throwsERR_STRING_TOO_LONGabove V8's ~512 MB cap). The retainers-stream variant also buffers nodes/edges into a growableFloat64Arrayso huge snapshots don't hitInvalid array lengtharound 100M+ items. Just swap the script name; all arguments are identical.
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 5d ago First seen · 136 lines · 89 tokens per session scan A f12524be8af5
host-test-memory-leak-hunting is a skill published in the GitHub repository cardstack/boxel (27 stars, last pushed today), licensed MIT. It adds 89 tokens to every session and 2,587 once invoked, about $0.0004 per session on Opus 5.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-10-21.
Other skills, from other repositories
systematic-debugging
4-phase root cause debugging: understand bugs before fixing.
langsmith-observability
LLM observability platform for tracing, evaluation, and monitoring. Use when debugging LLM applications, evaluating model outputs against datasets, monitoring production systems, or building systematic testing pipelines for AI applications.
experimental-code-coverage-local-debugger
Runs code coverage locally via Universal Test Runner (UTR) or helper scripts, mimicking LUCI trybots. Activate when CQ tryjobs fail or underreport coverage, to test local GN/recipe repairs before uploading, or to debug hermetic crashes.
verify-omnigent
Drive Omnigent the way a user does and prove a behavior with recorded evidence, using an isolated server, runner, and mock model plus a feature map of every user entry point. Load before reproducing a user-facing bug, before claiming a fix works, or when reviewing whether a change covered every surface (session vs.…
cli-e2e
Write, modify, or debug Docker-based Composio CLI end-to-end tests under ts/e2e-tests/cli, including binary invocation, fixture isolation, output assertions, and package manifests. Use for CLI E2E test suites only; use cli-command for CLI source implementation.
adversarial-reviewer
Stress-test a code change for concrete correctness defects, unsafe assumptions, and failure modes. Use when the user explicitly asks for an adversarial review, a deep bug hunt, or to tear a change apart, or to check your own change before submitting it. Do not use for ordinary review, style feedback, or general…