Borrowing it
Nothing to install: this file belongs to heidihelena/citevahti. 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/heidihelena/citevahti/main/.claude/skills/secure-release/SKILL.mdgit clone --depth 1 https://github.com/heidihelena/citevahtiWrote 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/heidihelena/citevahti/secure-release)<a href="https://agentmods.dev/skills/heidihelena/citevahti/secure-release"><img src="https://agentmods.dev/badge/skills/heidihelena/citevahti/secure-release/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/heidihelena/citevahti/secure-release"><img src="https://agentmods.dev/badge/skills/heidihelena/citevahti/secure-release.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.00194 | $0.03796 |
| Opus 5 | $0.00097 | $0.01898 |
| Sonnet 5 | $0.00039 | $0.00759 |
| Haiku 4.5 | $0.00019 | $0.00380 |
Grade A, and why
secure-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 9d 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 — 245 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Secure release & development — CiteVahti
CiteVahti is a local-first, single-user citation-integrity tool used in live pilots with real researchers, handling clinical-adjacent data. That changes the bar: a broken release or a weakened safety invariant doesn't just annoy a user, it can corrupt a research provenance trail. This skill is the disciplined path for changing, releasing, and updating it without breaking the guarantees the product is built on.
The repo already documents the mechanics in depth. This skill is the orchestration layer: it tells you the order, the gates that are easy to skip, and the security defaults — then points you at the canonical doc for each step. Read the referenced doc before doing that step; don't reconstruct it from memory.
| Topic | Canonical doc in the repo |
|---|---|
| Publishing the Python package + VS Code extension | docs/RELEASING.md |
Building/signing the desktop app, .mcpb, and binary |
desktop-extension/BUILD.md |
| The hard safety invariants (enforced in code + tests) | docs/SAFETY_INVARIANTS.md |
| The secure auto-update model (tufup key split, signing) | references/secure-updates.md (this skill) |
| Security practices derived from the threat-model research | references/security-checklist.md (this skill) |
The cardinal rule: gates before mechanics
Every release runs through three gates in order. Skipping a gate is the failure mode this skill exists to prevent.
- Safety gate — did this change weaken a guarantee? (§1)
- Build & test gate — does it pass offline, and do the artifacts actually contain what they should? (§2)
- Release & update gate — version lockstep, signed artifacts, the right trigger. (§3)
§1 — Safety gate (run this BEFORE you even think about releasing)
CiteVahti's value is its guarantees, not its features. docs/SAFETY_INVARIANTS.md lists 12
hard invariants (enforced in code, guarded by tests) plus supporting ones. The full suite is
the real enforcement — but these are the ones a change most often erodes silently, so check
them by hand when your change is anywhere near them:
What ships with it
2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 9d ago First seen · 245 lines · 194 tokens per session scan A e931fe13dc85
secure-release is a skill published in the GitHub repository heidihelena/citevahti (1 stars, last pushed 4d ago), licensed Apache-2.0. It adds 194 tokens to every session and 3,796 once invoked, about $0.0010 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-jetbrains
Use when releasing the Kilo JetBrains plugin -- resolve a version ("next rc" or explicit), run the prepare workflow, edit and commit a filtered human-readable changelog on the release PR, then watch publish to completion.
release-nyx
Ship a new nyx-local-ai release end to end — bump versions consistently, run the quality gates (typecheck, smoke tests, package), install locally, tag and push so CI publishes the installer artifacts. Use when the user asks to release, ship, publish, bump the version, or cut a new build of the extension.
refactor-research-code
Clean research code for public release while preserving reported results. Uses releaseaudit.py to separate safe mechanical cleanup from ask-first behavior risks and identity leaks. Use for release-ready repos, dead experiment branches, config extraction, documented entrypoints, and double-blind code cleanup.
finishing-a-development-branch
Presents options for merge, PR, or cleanup. Use when work is complete, tests pass, and you must decide how to integrate.
release-checklist
Walk the pre-release steps in order and stop at the first one that fails.
bump
Use when bumping Wheeler version after shipping features. Trigger when user says 'bump version', 'release', 'cut a release', 'version bump', 'update version', or after a set of features have been committed and the user wants to formalize a new version.