release
Skill4 starsChanged 28 days agoMITView on GitHub
Cut a release of steam-games-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.
- Reads credentials
- Commits and pushes
We split this skill into the rules it gives an agent
5 rules. 0 are common, 1 is distinctive, and 4 are very specific to this project.
0
Common
Most of the 183 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 20
Unpushed-tag race: if the _current_ package.json version already has a local git tag, it blocks unless that tag is also on origin — this is …
- Very specific: line 41
Run the docs-consistency-check skill.
- Distinctive: line 48
Commit everything from steps 1–2.
- Very specific: line 74
Never hand-edit the version in the derived files.
- Very specific: line 79
If something's wrong after npm version but before step 7 (e.g.
“Common” is measured: kept by at least 6 in 10 of the 183 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
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.
Fixing a mistake before pushing
If something's wrong after npm version but before step 7 (e.g. a fixup commit
needs to land under the same release), it's safe to amend history and move the
tag — nothing's been pushed yet. One footgun when moving a tag:
git tag -f <name> without -a/-m silently downgrades an existing
annotated tag to a lightweight one, and git push --follow-tags silently skips
lightweight tags — the push reports success but the tag never leaves your
machine. Always move a tag with git tag -f -a <name> -m "<name>" (matching
what npm version itself creates), then verify before pushing:
git cat-file -t <name> must print tag, not commit. If you already
force-pushed a lightweight tag, push it explicitly: git push origin <name>.
MCP Registry
The server is listed at registry.modelcontextprotocol.io as
io.github.Grinv/steam-games-mcp (server.json), exposing both packages:
the npm package (steam-games-mcp, run via npx) and the .mcpb GitHub-release
bundle. Ownership is verified per package type:
- npm → the
mcpNamefield inpackage.jsonmust equalserver.json'sname(guarded byversion.test.ts). It ships in the published package, so it is set once and every release just works. - mcpb →
server.jsonneeds the artifact'sfileSha256. Because.mcpb(a zip) isn't byte-reproducible, the release workflow recomputes it from the just-packed bundle and injects it beforemcp-publisher publish— the committed value is only a placeholder. The asset URL must contain "mcp" (it does).
The namespace io.github.Grinv/* is authorized by GitHub OIDC from this repo, so
no registry token/secret is needed. To publish manually instead:
mcp-publisher login github && mcp-publisher publish.
Keep config in three places in sync. A user-facing env var is declared in
config.ts (the source of truth), manifest.json user_config (the .mcpb
install form), and server.json packages[].environmentVariables (the registry
entry). When you add/rename/remove one in config.ts, update the other two —
version.test.ts guards that manifest.json and server.json agree, but it
can't see config.ts, so the config.ts → descriptors step is on you. Keep
server.json descriptions ≤ 100 chars (registry schema cap). Purely internal
tunables (timeouts, cache, rate limits, LOG_LEVEL) stay env-only — they don't
belong in the install form or registry entry.
Other versions194 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 194
- paperclipai/paperclip★ 107ksame name
- modelcontextprotocol/servers★ 92ksame name
- remotion-dev/remotion★ 67ksame name
- traefik/traefik★ 65ksame name
- usememos/memos★ 64ksame name
- tw93/Pake★ 62ksame name
- Yeachan-Heo/oh-my-claudecode★ 40ksame name
- Yeachan-Heo/oh-my-claude-sisyphus★ 40ksame name
- tobi/qmd★ 30ksame name
- jlowin/fastmcp★ 28ksame name
184 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use create-agent-adapter, pr-report and 5 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
MicrosoftSkillcreate-agent-adapter
Technical guide for creating a new Paperclip agent adapter. Use when building a new adapter package, adding support for a new AI coding tool (e.g. a new CLI agent, API-based agent, or custom process), or when modifying the adapter system. Covers the required interfaces, module structure, registration points, and conventions derived from the existing claude-local and codex-local adapters.
Also in 5 projects that use this
MicrosoftSkillpr-report
Review a pull request or contribution deeply, explain it tutorial-style for a maintainer, and produce a polished report artifact such as HTML or Markdown. Use when asked to analyze a PR, explain a contributor's design decisions, compare it with similar systems, or prepare a merge recommendation.
Also in 5 projects that use this
Microsoft AzureSkilldocumentation-consistency
Keeps GPT-RAG MCP service and umbrella documentation aligned with shipped behavior. Use for capabilities, configuration keys, deployment steps, endpoints, defaults, operations, or breaking changes.
Also in 6 projects that use this
parcadeiSkillagent-context-isolation
Agent Context Isolation
Also in 3 projects that use this
parcadeiSkillagentica-infrastructure
Reference guide for Agentica multi-agent infrastructure APIs
Also in 3 projects that use this
- +2 more from parcadei
In this repository8 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- changelog-styleSkill
- docs-consistency-checkSkill
- live-auditSkill
- prompt-checkSkill
- self-learningSkill
- tool-description-checkSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

