Borrowing it
Nothing to install: this file belongs to Pseudogiant-xr/Pseudolife-MCP. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/Pseudogiant-xr/Pseudolife-MCP/master/.claude/skills/release-procedure/SKILL.mdgit clone --depth 1 https://github.com/Pseudogiant-xr/Pseudolife-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/pseudogiant-xr/pseudolife-mcp/release-procedure)<a href="https://agentmods.dev/skills/pseudogiant-xr/pseudolife-mcp/release-procedure"><img src="https://agentmods.dev/badge/skills/pseudogiant-xr/pseudolife-mcp/release-procedure/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/pseudogiant-xr/pseudolife-mcp/release-procedure"><img src="https://agentmods.dev/badge/skills/pseudogiant-xr/pseudolife-mcp/release-procedure.svg" alt="Reviewed on agentmods" width="80" 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.00069 | $0.01868 |
| Opus 5 | $0.00034 | $0.00934 |
| Sonnet 5 | $0.00014 | $0.00374 |
| Haiku 4.5 | $0.00007 | $0.00187 |
Grade A, and why
release-procedure scanned grade A with 1 finding 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 10d 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.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
`curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=pseudolife"`. How it starts
The opening of the file, as written. The whole thing — 112 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Release / publish procedure (five public surfaces)
GitHub releases, PyPI, the MCP registry, the GHCR container images, and the
Claude Code plugin marketplace (.claude-plugin/marketplace.json +
plugin/ — served straight from master, no publish step; users pull via
/plugin marketplace update) all serve from this repo; a release touches
them in this order (first done 2026-07-16, v0.8.0; GHCR images added
2026-08-14).
-
Docs currency pass before the cut — two checks, and (a) is the one that gets skipped because nothing fails when you miss it.
(a) Absence — is the new behavior documented at all? List the behavior changes since the last tag (
git log vN.N.N..HEAD, the CHANGELOG's[Unreleased]) and ask of each: which user-facing page describes this? A capability with no guide entry contradicts nothing, so no guard test and no re-verify pass will ever surface it — only this question will. Schema v16–v18 shipped undocumented exactly this way, and 0.10.0's headline extraction change lived in the CHANGELOG alone until it was caught by hand at the release gate. A CHANGELOG entry is a record of a change, not documentation of a behavior. Corollary: never exclude a file from this pass on the strength of an earlier read that was looking for something else — a narrow check does not justify a broad exclusion.(b) Contradiction — do the existing claims still hold? The guard tests pin numbers (schema, identifiers), but framing drifts silently: the 2026-07-16 pass found 15 stale claims the guards can't see. Re-verify the drift-prone claim classes against code before any release: what's bundled/default (extractor model + size, embedding weights), the transport story (HTTP-first; shim = host-process only), lifecycle ownership (episodes are daemon-owned; briefing is the only hook), tool count/tiers and the hidden-tools-need-expand rule, shipped config defaults (surprise gate is permissive), image/install sizes, and any "can't / doesn't / no X" absolute — those age worst. Translated front doors (
docs/i18n/README.{zh,ja,ko,pt-br,es}.md): if the narrative or quickstart indocs/i18n/README.source.mdchanged, bump itsi18n-sourceversion and re-run the translation subagents — the guard (tests/test_i18n_readme.py) pins code blocks + sync markers but cannot read prose. Surfaces: README, docs/guide/*.md (the user-facing guide pages the 2026-07-16 restructure moved the README's deep material into — configuration, retrieval, dreaming, episodes, memory-model, benchmarks; they carry the same drift-prone claims the README used to), CONTRIBUTING, SECURITY, evals/README, examples/ (CLAUDE.memory.md is injected into user CLAUDE.mds — its tool surface must match exactly), docs/runbooks, ops/.env.example comments. The README is the PyPI description, so its fixes only reach PyPI at the next version. -
Version cut touches six files together: the CHANGELOG (
## [N.N.N]header over[Unreleased]— one fragile line; the tag↔section guard test exists because an adjacent edit once deleted it silently),pyproject.toml, the compose daemon image tag, both version fields inserver.json,plugin/.claude-plugin/plugin.json(pinned to pyproject bytests/test_plugin_packaging.py; the plugin marketplace serves from this repo, so bumping it is also what ships plugin updates), anddocs/atlas/atlas.jsonmeta(pinned bytests/test_atlas_currency.py; re-verify the map's claims, don't just renumber it — updatemeta.verifiedto the date you actually checked).server.json(both fields) and the compose daemon image tag are also pinned locally bytests/test_plugin_packaging.py::test_server_json_versions_match_pyproject(issue #185) — run it as part of the cut, before tagging, so a missed field fails in the suite rather than mid-CI. TagvN.N.Nat the exact commit the artifacts build from. -
Build + inspect before upload:
python -m build,twine check dist/*, then open the wheel — Console static assets present (33 files underweb/static/), no stray top-level dirs, themcp-namemarker in METADATA, no identifiers (grep the METADATA for the guard list). -
PyPI: publishing the GitHub release triggers
.github/workflows/release.yml(Trusted Publishing — OIDC, no token): thebuildjob guards tag == pyproject version and bothserver.jsonversion fields == tag (issue #185 moved the server.json guard here, from theregistryjob below, so a mismatch fails before anything builds or uploads — it used to run after the irreversible PyPI publish and burn a release number), then builds, twine-checks, and waits for the user's one-click approval on thepypienvironment. Manualtwine upload dist/*remains the fallback. PyPI never accepts a same-version re-upload — metadata-only fixes are a.postN. -
MCP registry — automated. The
registryjob inrelease.ymlruns after the PyPI job and authenticates withmcp-publisher login github-oidc(same trust model as Trusted Publishing: a short-lived token minted per run, nothing stored, nothing to expire between cuts). It waits for PyPI to actually serve the new version, checks the marker survived into the published description, publishes, then confirms the registry serves it as latest — theserver.jsonversion check itself already happened inbuild, above. Publishing the GitHub release is now the single action that lands all four surfaces. Manual fallback (mcp-publisher login githubthenpublish, from the repo root) if the job is ever broken — note the binary is often not onPATH; resolve it withGet-Command mcp-publisherrather than assuming. Either way: the README marker must read exactlymcp-name: io.github.Pseudogiant-xr/pseudolife-mcp— the namespace is matched case-sensitively against the GitHub username (capital P), and validation reads the latest PyPI release's description. The registrydescriptionfield caps at 100 chars. Verify:curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=pseudolife". -
GHCR images — automated. The
imagesjob inrelease.yml(also downstream of the human-approvedpublishgate) builds and pushesghcr.io/pseudogiant-xr/pseudolife-daemon:{<version>,latest}andghcr.io/pseudogiant-xr/pseudolife-pg:{18,18-<version>}with the repo-scopedGITHUB_TOKEN— no stored secret. The compose overlayops/docker-compose.ghcr.ymlis the consumer (pull-not-build installs); the base compose file andops/update.ps1's local-build deploy flow are untouched. One-time after the FIRST release that runs the job: flip both packages to public in their GHCR package settings, or pulls fail with "denied". Verify:docker manifest inspect ghcr.io/pseudogiant-xr/pseudolife-daemon:<version>.
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.
- 10d ago First seen · 112 lines · 69 tokens per session scan A 619e2e353cad
release-procedure is a skill published in the GitHub repository Pseudogiant-xr/Pseudolife-MCP (4 stars, last pushed today), licensed Apache-2.0. It adds 69 tokens to every session and 1,868 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
another-brain
Use the another-brain MCP tools (remember, search, recent, get, reinforce, forget) as shared long-term memory. Activates at the start of a task that may continue previous work, when recalling past decisions/fixes/preferences, when learning something worth remembering across sessions or agents, or after using a…
hypermnesic-memory
Use when Hermes needs durable project or personal memory through the local hypermnesic CLI: retrieve prior context, think through related notes, resolve entities, inspect writable folders, capture notes, or preview guarded writes.
syncing-memory-filesystem
Diagnose and repair MemFS repository setup, remote sync, authentication failures, optional backup remotes, or merge/rebase conflicts. Do not load for routine memory reads or edits.
install-openviking-memory
Install and configure the OpenViking long-term memory plugin for OpenClaw via natural conversation. Once installed, the plugin automatically captures facts from chats and recalls relevant context before each reply (auto-capture + auto-recall, cross-session). Covers prerequisites, install through OpenClaw's plugin…
reminder
Set reminders and manage todos with natural language. Uses built-in cron scheduling, no external service needed.
daily-briefing
Daily briefing aggregating weather, reminders, news, and calendar. Delivered on schedule via any channel.