Pseudolife-MCP: Skill for Claude Code

.claude/skills/release-procedure/SKILL.md

release-procedure is a skill for Claude Code from Pseudogiant-xr/Pseudolife-MCP. It costs 69 tokens per session (1,868 once invoked), scanned A, original, Apache-2.0.

A release checklist for publishing software or plugins to public services such as GitHub, PyPI, container registries, the MCP registry, and the Claude Code plugin marketplace.

In plain words
What is it for?
Use it when preparing a software release or publishing a package, container image, MCP server, or Claude Code plugin.
Why use it?
It coordinates documentation, version changes, builds, inspections, and publishing steps that can otherwise be missed.

Skill for Claude Code

Written for Claude Code: Claude Code plugin machinery. Also seen: mentions subagents; mentions Claude Code.

This is Pseudogiant-xr/Pseudolife-MCP's own configuration. It tells Claude Code how to work on Pseudolife-MCP itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything Pseudolife-MCP configures →

Reuse

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.

Copy the file
curl -O https://raw.githubusercontent.com/Pseudogiant-xr/Pseudolife-MCP/master/.claude/skills/release-procedure/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/Pseudogiant-xr/Pseudolife-MCP

Made for: Claude Code.

Wrote 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.

agentmods badge for release-procedure

README.md
[![agentmods](https://agentmods.dev/badge/skills/pseudogiant-xr/pseudolife-mcp/release-procedure/github.svg)](https://agentmods.dev/skills/pseudogiant-xr/pseudolife-mcp/release-procedure)
Your own site
<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.

agentmods 80×15 button for release-procedure

Your own site · 80×15
<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>
Per session 69 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,868 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce 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

Measured 10d ago against content hash 619e2e353cad, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-10, from the pricing page.

Security

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"`.
.claude/skills/release-procedure/SKILL.md · 112 lines

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).

  1. 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 in docs/i18n/README.source.md changed, bump its i18n-source version 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.

  2. 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 in server.json, plugin/.claude-plugin/plugin.json (pinned to pyproject by tests/test_plugin_packaging.py; the plugin marketplace serves from this repo, so bumping it is also what ships plugin updates), and docs/atlas/atlas.json meta (pinned by tests/test_atlas_currency.py; re-verify the map's claims, don't just renumber it — update meta.verified to the date you actually checked). server.json (both fields) and the compose daemon image tag are also pinned locally by tests/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. Tag vN.N.N at the exact commit the artifacts build from.

  3. Build + inspect before upload: python -m build, twine check dist/*, then open the wheel — Console static assets present (33 files under web/static/), no stray top-level dirs, the mcp-name marker in METADATA, no identifiers (grep the METADATA for the guard list).

  4. PyPI: publishing the GitHub release triggers .github/workflows/release.yml (Trusted Publishing — OIDC, no token): the build job guards tag == pyproject version and both server.json version fields == tag (issue #185 moved the server.json guard here, from the registry job 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 the pypi environment. Manual twine upload dist/* remains the fallback. PyPI never accepts a same-version re-upload — metadata-only fixes are a .postN.

  5. MCP registry — automated. The registry job in release.yml runs after the PyPI job and authenticates with mcp-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 — the server.json version check itself already happened in build, above. Publishing the GitHub release is now the single action that lands all four surfaces. Manual fallback (mcp-publisher login github then publish, from the repo root) if the job is ever broken — note the binary is often not on PATH; resolve it with Get-Command mcp-publisher rather than assuming. Either way: the README marker must read exactly mcp-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 registry description field caps at 100 chars. Verify: curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=pseudolife".

  6. GHCR images — automated. The images job in release.yml (also downstream of the human-approved publish gate) builds and pushes ghcr.io/pseudogiant-xr/pseudolife-daemon:{<version>,latest} and ghcr.io/pseudogiant-xr/pseudolife-pg:{18,18-<version>} with the repo-scoped GITHUB_TOKEN — no stored secret. The compose overlay ops/docker-compose.ghcr.yml is the consumer (pull-not-build installs); the base compose file and ops/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>.

Read the full file on GitHub · 112 lines

Changes

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.

  1. 10d ago First seen · 112 lines · 69 tokens per session scan A 619e2e353cad

Subscribe to this mod's changes

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.

Related

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…

Flowerf19/another-brain · 69 tokens

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.

leonardsellem/hypermnesic · 0 tokens

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.

letta-ai/letta-code · 42 tokens

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…

volcengine/OpenViking · 191 tokens

reminder

Set reminders and manage todos with natural language. Uses built-in cron scheduling, no external service needed.

fuyuxiang/echo-agent · 23 tokens

daily-briefing

Daily briefing aggregating weather, reminders, news, and calendar. Delivered on schedule via any channel.

fuyuxiang/echo-agent · 25 tokens