A skill pack with more than 244,000 GitHub stars is the one a CTO gets asked about, and this week that pack is Matt Pocock's. Three sources describe its contents as 53 skills, 37, and 25 - and only the last number is what the plugin actually installs. Gritt has the sizing verdict, with its limits stated in the open: every token figure here is an estimate, and the bench ran no agent against live code. Read it for the method. There will be another pack. – Muximus
The pack is worth installing. The plugin route is the one to take. And a handful of its 25 skills will fire in any given repository, not 25.
That is the verdict on mattpocock/skills, and the reason it needs a column is that the two documented ways in do not hand an operator the same software. The Claude Code plugin ships 25 skills. The repository holds 37. The thing most teams are hesitating over - context bloat - measures about half a percent of a 200,000-token window.
What it is
One of the most-starred agent skill packs on GitHub. GitHub's API puts it above 244,000 stars and 20,000 forks, MIT-licensed, created on 2026-02-03 and last pushed on 2026-08-24, with the description "Skills for Real Engineers. Straight from my .agents directory." It is the pack an operator is most likely to be asked about this week, which is why we cloned it and measured what an install actually costs.
What the bench did, and what it cannot tell anyone
On 2026-09-02 the VarOps bench shallow-cloned the repo at main, read .claude-plugin/plugin.json and diffed its skills array against every SKILL.md on disk, parsed the frontmatter of all 25 shipped skills, measured the supporting files inside those directories, read the repo's CONTEXT.md, CLAUDE.md and .out-of-scope/, and confirmed repo metadata against the GitHub API rather than the rendered page.
Two limits go on the table before any number does.
The token figures are estimates. tiktoken installed cleanly but could not download its vocabulary from the sandbox, so every count below is characters divided by four rather than an exact tokenization. Each figure carries "about" or "approximately" for that reason, and none of them should be treated as a precise count.
The second limit is larger: the bench did not run a coding agent with these skills against a live codebase. Nothing here supports a claim about whether grill-me produces better specs, whether tdd holds an agent to red-green-refactor, or whether any skill in the pack improves an agent's output at all. This is a sizing verdict - what gets installed, what it costs, and which parts to take. A reader who wants a quality verdict should know this piece does not contain one.
The routes ship different sets, and only one file says so
There are 37 SKILL.md files in the repo. The plugin manifest lists exactly 25, and no entry points at a missing file. The 12 that never reach a plugin install are the 8 under skills/in-progress/ and the 4 under skills/misc/.
The excluded bucket is no scrap heap. misc/ holds git-guardrails-claude-code, which installs a hook that blocks git push, reset --hard and similar before an agent can run them, and setup-pre-commit, which wires up Husky and lint-staged. Both are the kind of thing a cautious operator would put in first. They are excluded because the author's own rule excludes the bucket, not because of anything wrong with them - which is the trade-off the route choice actually presents.
The README describes the choice as a matter of philosophy: "Two ways in, two philosophies." The plugin is "a managed, read-only bundle that updates when I ship"; the skills.sh route "writes the skills into your repo as ordinary files you own and can edit." Both descriptions are accurate. That paragraph closes on "Pick one: installing both leaves you with every skill twice", a fair warning about duplication and the only inventory question the README raises. That the two routes cover different inventories in the first place goes unmentioned.
The split is deliberate, and it is written down - in CLAUDE.md, the file the agent reads: "the Claude Code plugin ships exactly the promoted set," with misc/, in-progress/ and deprecated/ barred from the manifest, and in-progress/ defined as "beta: public on purpose, feedback wanted, not shipped in the plugin." A curation rule, honestly stated. It simply is not stated in the document a human reads before typing an install command.
So the plugin route is a curated set of 25 promoted skills. The file-copy route reads the repo tree, and no configuration file in the repo restricts what it can offer - the plugin manifest is the only curated list present. The bench did not execute npx skills@latest add, so what its picker displays on screen is inferred rather than observed. The inference is not safely "37 minus your choices" either. The skills.sh index publicly lists 53 skills for this repo, 16 more than exist on disk, including to-prd, write-a-skill and decision-mapping - none of which have a directory in the repository. The repo explains how that is possible without meaning to: its deprecated/ bucket is empty, and its README states that "a retired skill is deleted, and the changeset that removes it names whatever replaced it." Skills leave this repo by deletion, and the index is still listing some of them. A shallow clone cannot prove which, and it does not need to. The operator's version is narrower: three sources describe this pack's contents as 53, 37 and 25, and only the last one is what the plugin installs.
Either way, the choice between the routes is not editable-versus-managed alone. It is also curated-versus-everything, and the author's unfinished work sits in the second bucket by design.
The bloat argument is over, and the number ends it
The cost that is always present is the name and description of each installed skill, which sit in every session whether or not a skill fires. Across all 25 shipped skills, the bench measured that at approximately 1,030 tokens, on a mean description length of about 150 characters.
On a 200,000-token window, approximately 1,030 tokens is roughly half a percent. "Twenty-five skills will eat my context window" is not a reason to skip this pack, and it is not a reason to skip any comparably sized pack. Retire the argument with the number rather than debating it.
The cost that does bite is lumpy, and that is the method
Full SKILL.md bodies load on invocation. All 25 together run to approximately 28,800 tokens - a mean of about 1,150 each. The median is about 880, and the gap between those two figures is the finding.
A handful of skills carry most of the weight. wayfinder is approximately 2,970 tokens, ask-matt approximately 2,850, writing-for-agents approximately 2,720. Those three alone are about 8,500. Add approximately 21,500 tokens of supporting files sitting inside the 25 shipped skill directories, which load when a skill reaches for them. Everything firing at once - every body plus every supporting file - is approximately 50,000 tokens, roughly a quarter of a 200k window. That is a ceiling rather than a forecast: it assumes a single session invokes all 25 skills and opens every file they reference, which is why the total is the wrong number to size against.
So the sizing question is not how many skills a pack contains. It is which handful will actually fire in a given repository, and how heavy those specific ones are. A team that will live in wayfinder and diagnosing-bugs is buying a different context bill from a team that will only ever run to-tickets.
Setup is a per-repo commitment, not a command
The README heading reads "Installation (30-second setup)". Whatever the install commands take, the step after them is not a 30-second job.
/setup-matt-pocock-skills runs once per repository. The README says it asks which issue tracker to use, what labels the team applies when triaging, and where to save docs. The skill's own file is more involved than that summary: it is explicitly "a prompt-driven skill, not a deterministic script" that explores the repo, presents findings, confirms, and then writes docs/agents/issue-tracker.md, docs/agents/domain.md and docs/agents/triage-labels.md, and edits CLAUDE.md or AGENTS.md to add an ## Agent skills block. Its tracker list differs from the README's, too - the README says GitHub, Linear or local files; the skill offers GitHub, GitLab, local markdown under .scratch/, or a freeform description of anything else.
Skills including to-tickets, to-spec and triage then read and write against those answers. Naming a triage vocabulary that the team does not actually use produces an agent that files work into labels nobody looks at. That decision determines whether the pack pays off, and it is not a 30-second decision.
The repo's argument, stated fairly
The README's opening claim is that "Approaches like GSD, BMAD, and Spec-Kit try to help by owning the process. But while doing so, they take away your control and make bugs in the process hard to resolve," and that these skills are instead "small, easy to adapt, and composable."
The bench found a real process underneath the composable pieces. CONTEXT.md is a controlled vocabulary defining Issue tracker, Issue, Decision ticket and Triage role, two of them with an explicit list of banned synonyms, and it records that "backlog" was retired as a domain term. wayfinder introduces its own decision-ticket taxonomy. The setup skill emits per-repo configuration that other skills depend on. A .out-of-scope/ directory records three ideas the author ruled out.
The fair reading here is not hypocrisy. Composable pieces still add up to a process, and the difference being claimed is that each piece can be read and edited rather than being opaque. Whether that difference holds in practice is a legitimate open question - and one this bench, which ran no agent, cannot answer.
Worth your afternoon?
Yes. Take the pack, and take the plugin route unless there is a specific reason to fork: it installs a set the author has explicitly curated and, per the README, updates when he ships, where the file-copy route reads a tree that carries no curation rule of its own. Fork deliberately, when something in misc/ is the reason for installing at all. Either way, expect a handful of the 25 to fire.
The method transfers to the next pack, and there will be a next pack. It takes about a minute. Open .claude-plugin/plugin.json, read its skills array, and compare it against the SKILL.md files actually on disk - if the two lists differ, the install route is a decision about inventory and not just about philosophy. Then separate the always-on cost from the on-invocation cost, because the first is negligible and the second is not. Find the heavy skills, and ask which of those this specific repository will actually trigger. The answer to that last question is the real size of the install, and it is a smaller number than the count of skills in the box.