Build1 distinct publisher3 min readPublished
A skill installs with one command and runs with your own privileges, and while it is installed its description sits in every session's context so the model can decide to pick it up unasked. The opt-out is one line nobody set.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
The description field is the part that works without you doing anything. While a skill is installed, that line sits in the context of every session, and it is what the model reads when it decides on its own whether to pick the skill up [4]. The opt-out is a single frontmatter key, `disable-model-invocation: true`, and the author has to set it explicitly [5]. Across the 364 skills in the largest repository the write-up examined, it was set zero times [3].
Then the body. A line like `` !`git diff` `` is not a proposal the model evaluates. Claude Code runs the command first, puts the output into the text where the command sat, and by the time inference starts, the shell has already run [6].
`allowed-tools` is the field most likely to be misread. It does not constrain a skill; it grants, and the tools listed run for that turn with no confirmation prompt [7]. The documentation is direct about the consequence: workspace trust does not gate the field, and "a skill can grant itself broad tool access, so review the `allowed-tools` of skills checked into a repository before you run Claude Code there" [8]. In a curated marketplace from a well-known audit firm, all 31 skills set the field, and 24 of them list a bare `Bash` with no pattern [9]. That is 77% of the marketplace where invoking a skill buys a turn of unconfirmed shell [16]. The author's reading, which I share, is convenience rather than malice: a fuzzing skill has to run the fuzzer [10].
Now the scope, because these counts are claims about someone else's tree. The checks were done on Claude Code 2.1.223 against five cloned popular repositories, none of them malicious [14]. These numbers only tell you something about your own machine if a few conditions hold. You install by name and star count without opening the folder, which is how the author says people do it on registries where the top skill reports three million installs [2]. You run `claude -p` or the SDK, where there is no trust dialog and no permission prompt, the folder counts as trusted, and hooks from a cloned `.claude/settings.json` execute [12]. And nobody reads the diff when a skill updates. In an interactive session without `allowed-tools`, that same body command would have stopped and asked [17]. Install counts describe popularity, not what is actually in the folder.
The honest row is the fourth one in the author's own test. Four skills, an empty project, `claude -p` in the default permission mode; the marker each skill leaves is a line with the author's username and a timestamp, which is how you know the command ran as the user [13]. The fourth did not fire, because auto-invocation stays the model's decision and this time the model passed on the skill [13].
In my context the workable rule is vendoring: copy the skill folder into the repository, review `allowed-tools` in the pull request that adds it, and update it deliberately. That costs real reviewer time. It is the same cost we already accept for anything else that runs with our own credentials in CI.
Ranked by verification strength, evidence, and original report placement.
A Claude Code skill is a folder containing a SKILL.md file, installed with one command such as `npx skills add owner/repo` or `/plugin install name@marketplace`.
Skill registries already count installs in the millions; on Vercel's skills.sh the top skill reports three million installs, and people install skills the way they install npm packages, by name and star count, without opening them.
Of the 364 skills in the largest repository the author examined, not one set `disable-model-invocation: true`.
The `description` field in a skill's frontmatter sits in the context of every session while the skill is installed, and is what the model uses to decide whether to pick the skill up on its own, without the user asking.
To keep a skill's description out of session context, the author has to set `disable-model-invocation: true` explicitly.
A skill body can contain commands such as !`git diff`; Claude Code runs them before the model sees the text and substitutes the output where the command was, so the command has already run rather than being offered to the model.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · September 2, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
product
A 2x LLM bill is not a bug report: token spend is an observability problem1 distinct publisher
build
255 tools, 71,929 tokens: the standing charge hidden in your MCP config1 distinct publisher
leadership
Anthropic's own telemetry: 93% of permission prompts approved. Budget for blast radius, not reviewers1 distinct publisher
build
When the changelog reaches for your README's word: MCP memory and the price of filling a gap1 distinct publisher
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.
First-hand and version-pinned, but nobody named and nobody checked
The mechanics are the strong half: each behavioural claim is either quoted from Anthropic's documentation or reproduced on a stated client build, 2.1.223, and the trial's marker line carries a username and timestamp rather than a screenshot of vibes. The census half is weaker for one avoidable reason — the audit firm's 31-skill marketplace and the 24,000-star collection of 364 skills are described but never named, so the two counts that carry the headline are the two a reader cannot re-run.
Package-manager scale already reached
Three million installs on one skill, 99,000 stars on another, 24,000 on the largest collection, 286 plugins in Anthropic's own marketplace: distribution is not speculative, it is running. What is not measured anywhere in this reporting is the share of those installs that execute headless in CI, which is precisely where the missing prompt would matter — so the exposure surface is large and its shape is unknown.
A census of defaults reads as a breach
Nothing here has been exploited, and the author says so plainly — none of the five cloned repositories is malicious, and his fourth trial simply failed because the model declined to pick the skill up. The headline number counts a default nobody changed, not an incident, yet the accumulation of hooks, unpinned HEADs and silent auto-updates invites the reader to hear one. Small overstatement, and mostly in framing rather than in the facts, which are hedged carefully wherever they are weak.
Attention, not a product to sell
The only voice here is an individual publishing on dev.to, and the payoff for a 364-of-364 headline is reach — no vendor, no scanner, no consultancy is being sold in the copy. Two tells point the other way: he reports the trial that did not fire and he clears every repository he inspected of malice, which is what documenting looks like rather than pitching. The unnamed targets are the residual concern; anonymity protects the maintainers but also protects the counts from scrutiny.
Mechanism solid, arithmetic unaudited
Split the story in two and confidence splits with it. That `allowed-tools` grants a prompt-free turn, that hooks run with full user permissions outside the sandbox, that headless mode assumes trust — those are documented and reproducible, and I would rely on them. The proportions, 364 of 364 and 24 of 31, come from one snapshot of repositories taken on one machine at one moment, in an ecosystem where the author himself shows plugins updating overnight without being asked.