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/grinv/steam-games-mcp/releasenpx skills add Grinv/steam-games-mcp --skill releasegit clone --depth 1 https://github.com/Grinv/steam-games-mcpWrote 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/grinv/steam-games-mcp/release)<a href="https://agentmods.dev/skills/grinv/steam-games-mcp/release"><img src="https://agentmods.dev/badge/skills/grinv/steam-games-mcp/release.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.1 | $0.00047 | $0.01881 |
| Opus 5 | $0.00023 | $0.00941 |
| Sonnet 5 | $0.00009 | $0.00376 |
| Haiku 4.5 | $0.00005 | $0.00188 |
Grade A, and why
release scanned grade A with 0 findings 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 6d 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.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 118 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Releasing
package.json is the single source of truth for the version. The npm
version lifecycle hook runs scripts/sync-version.mjs, which propagates it to
src/version.ts, manifest.json and server.json (incl. the .mcpb release-asset
URL); version.test.ts guards that they never drift. The same script also dates
CHANGELOG.md's [Unreleased] section into this version's own heading (and
leaves a fresh empty [Unreleased] above it) — don't hand-retitle it yourself,
before or after npm version; that manual step was forgotten twice before this
automation existed. version.test.ts guards this too (the newest dated heading
must match package.json's version).
A preversion hook (scripts/preversion-check.mjs) runs first, with two checks:
- Unpushed-tag race: if the current
package.jsonversion already has a local git tag, it blocks unless that tag is also onorigin— this is the exact race that once orphaned a version in a sibling repo (npm versionrun twice within minutes, the first tag/commit never pushed, silently buried under the second). Push the dangling tag (git push origin vX.Y.Z) or delete it if it was a mistake (git tag -d vX.Y.Z), then retry. - Empty
[Unreleased]: presence-only safety net, not a substitute for actually running the skill below as a real judgment step. It blocksnpm versionifCHANGELOG.md's[Unreleased]section is empty: run thechangelog-styleskill against the commits since the last tag first — it's what actually makes the entries short, self-describing, free of implementation detail, and linked to their commits; the hook only confirms something is there, not that it follows that style. (Or re-run withCONFIRM_EMPTY_CHANGELOG=1if this release genuinely has no user-facing changes, e.g. a pure dependency bump.)
When invoked as this skill, run these as explicit steps, not optional —
don't rely on the preversion hook alone to catch a skipped one:
- Invoke the
changelog-styleskill against the commits since the last tag; write/fix the[Unreleased]entries per its style rules. - Run the
docs-consistency-checkskill. STEAM_API_KEY=... npm run check:apilocally with your own key, to also exercise the key-gated player endpoints (GetOwnedGames,GetFriendList,GetPlayerBans,ResolveVanityURL,GetSchemaForGame, …) against live Steam —release.ymlrunscheck:apiwith noSTEAM_API_KEYsecret configured, so its key-gated checks always skip there and only the keyless Storefront/Web API checks actually gate CI.- Commit everything from steps 1–2.
- Confirm every check the release was gated on actually finished and
reported. A verification that is still running, or that died partway (a
subagent lost to an API error, a tool outage), is not a pass — either re-run
it to completion or tell the user which surface is unverified and let them
decide. Your own narrower re-check is not a substitute: it is built from the
diff you just wrote, so it inherits the same blind spots, while the skill's
checklist is what covers the tools you did not touch.
discover_gamesshipped in v0.13.0 with no output cap this way — a relaunched sweep was mid- flight at tag time and reported that blocker half an hour after publish. npm version <patch|minor|major>— preversion gate, then bumps + syncs every file + commits"release: vX.Y.Z"+ tagsvX.Y.Z.git push --follow-tags— pushing the tag triggers.github/workflows/release.yml.
The tag push (v*) runs the Release workflow: check:api gate → build → test
→ pack .mcpb → extract CHANGELOG.md's section for this version (fails loudly,
not silently, if that section is empty — the workflow's own safety net for
whatever slipped past sync-version.mjs/preversion-check.mjs) → GitHub Release
→ npm publish (OIDC trusted publishing, with provenance, pinned to an exact
verified-good npm version — no token; skipped without failing the job if this
version is already on npm, so a re-run after a partial failure doesn't abort) →
inject the just-packed .mcpb's SHA-256 into server.json (fails loudly if the
injection didn't actually match a package, instead of silently leaving a stale
hash) → publish to the official MCP Registry (mcp-publisher, GitHub OIDC;
mcp-publisher itself is pinned to an exact version + verified SHA-256 rather
than latest, since this step runs with live OIDC publishing credentials).
Never hand-edit the version in the derived files; bump package.json via
npm version and let the hook sync the rest.
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.
- 6d ago First seen · 118 lines · 47 tokens per session scan A 4d2789e43613
release is a skill published in the GitHub repository Grinv/steam-games-mcp (4 stars, last pushed 12d ago), licensed MIT. It adds 47 tokens to every session and 1,881 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
release
Cut a release of tmdb-mcp — draft CHANGELOG entries, check docs/metadata consistency, then bump/tag/push. Use when asked to release, cut a version, or publish a new version of this package.
changelog-style
Turn a commit range into CHANGELOG.md entries following common-changelog style. Use when finishing a PR or cutting a release, to write/fix the [Unreleased] section's entries — moving [Unreleased] under a new dated version heading is a separate, automated step (see the release skill / scripts/sync-version.mjs), not…
release
Cut a release of mal-mcp — draft CHANGELOG entries, check docs/metadata consistency, then bump/tag/push. Use when asked to release, cut a version, or publish a new version of this package.
changelog-style
Turn a commit range into CHANGELOG.md entries following common-changelog style. Use when finishing a PR (adding to the [Unreleased] section) or cutting a release (moving [Unreleased] under a new version heading).
release
Use when the user asks to cut, tag, or ship an openings-mcp release (e.g. "release v0.8.0"), to run pre-release provider smoke tests, or to rewrite a fresh release's auto-generated notes.
hmem-release
Pre-publish checklist for hmem: skills synced, version bumped, tests green, nothing forgotten. Use before npm publish or when the user says 'release', 'publish', 'push a release', or 'neue Version'.