Build1 distinct publisher3 min readPublished
A developer counted his own stop-hook log and found seven of eight agent definitions had no calls in 30 days. That is a routing result, not a housekeeping problem. The audit is cheap to reproduce if your hook fires on every call.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
Dropping a file into `~/.claude/agents/` gets you a definition, not a dispatcher. The tally in the dev.to post shows where the work went instead: 19 calls to `Explore`, 3 to `general-purpose`, 1 to `code-reviewer`, no errors [4]. Twenty-two of the twenty-three logged calls went to the two generic routes [1]. The author's own explanation is the load-bearing sentence: unless an agent is named, the model takes the generic route, and a description reading "MUST BE USED for all code changes" is text inside a file rather than routing logic [7]. Selection happens on the calling side, in the prompt or in hook code [8].
Then look at the file list. Eight files, and one of them is `INDEX.md` [2]. The zero-call report lists INDEX as an agent that was never invoked [3]. A table of contents that has never been called is behaving correctly. So the reported 87.5% [5] is really 6 of 7 plausible agent definitions, or 85.7% [2]. Same direction. But a counter that cannot distinguish a catalog file from an agent will also miscount the day someone adds a README.
The logging itself needs a second look. The log holds 682 records spanning May 28 to August 30, 2026 [6], and 23 of them fall in the audited 30 days [4]. That leaves 659 records across the preceding 65 days, about 10.1 per day, against 0.77 per day in the window under audit [3], a thirteen-fold gap. Either the author's usage collapsed, or the stop hook stopped catching some class of invocation, and the post does not separate the two. For "zero calls" to mean "never ran", the hook has to fire on every subagent completion, including the ones you triggered by name.
The token argument is the thinnest part of the case. The author asserts that definitions are injected into the system prompt on every request and points at `architect.md` running past 220 lines [9][10]. Lines are not tokens, and no measurement of the injected catalog appears in the post. The direction is plausible; the magnitude is unstated, which makes it a reason to measure rather than a reason to delete.
What I would copy is layer one: a stop hook that appends one JSONL record per invocation with timestamp, session id and subagent name [11]. That is the cheapest instrument in the stack, and almost nobody builds it, because agent definitions feel like configuration instead of code paths. He set out to measure what he already believed, and the log happened to back him up.
The 87.5% figure only transfers to your setup if the hook logs every subagent call, your prompts rarely name an agent explicitly, and you were expecting autonomous selection to happen in the first place. If your prompts do name agents, the counts measure your prompts, not the router [8].
Ranked by verification strength, evidence, and original report placement.
The author's ~/.claude/agents/ directory held eight custom agent definition files in Claude Code.
The eight files were architect.md, code-reviewer.md, database-reviewer.md, INDEX.md, planner.md, python-reviewer.md, security-reviewer.md and typescript-reviewer.md.
The 30-day report listed seven definitions with zero calls: INDEX, architect, database-reviewer, planner, python-reviewer, security-reviewer and typescript-reviewer.
Over the last 30 days the log showed 23 total invocations across 3 unique types: Explore 19 calls, general-purpose 3 calls, code-reviewer 1 call, with 0 errors recorded for each.
The log file ~/.claude/logs/agent-invocations.jsonl held 682 records spanning May 28 to August 30, 2026.
Layer 1 of the author's system is a Claude Code stop hook that writes agent invocations to ~/.claude/logs/agent-invocations.jsonl, one record per line, carrying fields including ts, session_id and subagent name.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · September 1, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
The $559M-versus-$12.3B quarter matters more than the $65B run rate4 distinct publishers
build
Anthropic's federal ban falls on a record that failed the supply-chain statute1 distinct publisher
invest
The retail route into Anthropic is mostly a fee on everything that is not Anthropic1 distinct publisher
product
Claude's memory now writes while you talk, and it crosses products by default4 distinct publishers
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Raw output, one terminal
The best thing about this reporting is that it shows its work: two pasted tally blocks, a named log file, a sample record, a file listing. The worst thing is that all of it comes from one developer's machine and dev.to published it as received. The method is reproducible by any reader whose hook fires on every call; the numbers themselves are unverifiable, and the claim doing the most argumentative work — that idle definitions burn tokens and quietly degrade inference on every request — arrives with no measurement behind it.
Sample of one, pointing down
The only usage anywhere in this story is the author's own log, and it argues the opposite of adoption: 23 sub-agent calls in a month, exactly one of them to something he wrote himself, and none in the final week. No teammate, no second environment, no vendor telemetry. As a read on how often hand-written Claude Code agents actually fire in the wild, this is n=1 — informative as an existence proof, useless as a rate.
Headline outruns its own file listing
Two overstatements, both visible inside the post. INDEX.md is a catalog, not an agent, so the comparable dead share is six of seven — 85.7%, not the tidier 87.5% in the headline arithmetic. Larger: the audited month is the quietest stretch of the log by a wide margin, roughly 0.77 records a day against about 10.1 a day across the preceding sixty-five. Dead agents may still be the right diagnosis, but a near-idle month explains the same output block, and dev.to never weighs that reading.
The audit doubles as the pitch
The measurement looks honest — nobody fabricates a zero-call list that includes their own favourite reviewer — but it is shelved beside a ¥1.2M/month automation business invoked twice, and the lesson drawn, invest in the environment rather than the task, is exactly what the author is selling. That pull shows up in small choices rather than big ones: a round 87.5% survives where 85.7% would have required explaining the catalog file, and the quietest month in the log becomes evidence about routing instead of a caveat.
Mechanism checkable, counts are not
Two kinds of claim are stacked here and they merit different trust. That calls default to Explore or general-purpose unless an agent is named, and that a 'MUST BE USED' line in a definition compels nothing, any reader with the tool installed can test in minutes. The 682 records, the 220-line architect file, the per-agent counts are one person's word — and the slip on the denominator suggests the figures were reported rather than audited. We are confident about what this teaches, much less about how common it is.