Softcover: Skill for Claude Code

.claude/skills/release/SKILL.md

release is a skill for Claude Code from CinqueIzumi/Softcover. It costs 60 tokens per session (1,176 once invoked), scanned A, original, MIT.

A release-preparation workflow for an app. It updates the README, runs checks, changes the release version across Android, iOS, and desktop, and updates the public roadmap.

In plain words
What is it for?
Use it to prepare a release for review, with all edits left unstaged and without committing or tagging.
Why use it?
It gathers the repetitive release tasks in one process and stops before version changes if verification fails.

Skill for Claude Code

Written for Claude Code: installed under .claude/.

This is CinqueIzumi/Softcover's own configuration. It tells Claude Code how to work on Softcover 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 Softcover configures →

Reuse

Borrowing it

Nothing to install: this file belongs to CinqueIzumi/Softcover. 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/CinqueIzumi/Softcover/main/.claude/skills/release/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/CinqueIzumi/Softcover

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

README.md
[![agentmods](https://agentmods.dev/badge/skills/cinqueizumi/softcover/release/github.svg)](https://agentmods.dev/skills/cinqueizumi/softcover/release)
Your own site
<a href="https://agentmods.dev/skills/cinqueizumi/softcover/release"><img src="https://agentmods.dev/badge/skills/cinqueizumi/softcover/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.

agentmods 80×15 button for release

Your own site · 80×15
<a href="https://agentmods.dev/skills/cinqueizumi/softcover/release"><img src="https://agentmods.dev/badge/skills/cinqueizumi/softcover/release.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 60 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,176 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. 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.00060 $0.01176
Opus 5.5 $0.00024 $0.00470
Sonnet 5.5 $0.00012 $0.00235
Haiku 4.5 $0.00006 $0.00118

Measured 12d ago against content hash 1440de729c23, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

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 12d 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.

.claude/skills/release/SKILL.md · 51 lines

How it starts

The opening of the file, as written. The whole thing — 51 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Orchestrate a release-prep pass by composing the existing skills. Never commit or tag; leave all changes unstaged for the user to review.

Steps:

  1. Invoke the update-readme skill via the Skill tool to bring the README current with the latest features.

  2. Invoke the style-check skill via the Skill tool to auto-fix style and run the full gate. If the gate is not green, stop and report — do not bump the version on a red build.

  3. Read the current versionCode and versionName from app/build.gradle.kts and show them to the user. Ask for the new versionName (suggest the next semantic version). If the user provided one as an argument, use that.

  4. Invoke the set-version-name skill via the Skill tool with the new version name. It sets the version name across all platforms (Android versionName, iOS MARKETING_VERSION, desktop packageVersion) and bumps the build number together — do not edit any of those fields yourself.

  5. Write the CHANGELOG.md entry. Read the commits since the previous tag (git log --no-merges --format=%s $(git describe --tags --abbrev=0)..HEAD) and add the entry at the top of the entries, directly below the intro line (anything above the first entry is never shown in the app; anything below it is, so keep notes and comments out of the file):

    ## <version>: <headline>
    
    *<today, YYYY-MM-DD>*
    
    <optional one-sentence lede>
    
    - <bullet per reader-visible change>
    

    Write in the public editorial voice: what a reader gets, not what changed internally. No em-dashes or other AI tells. Then run python3 scripts/changelog/extract_release_notes.py <version>; if it errors, fix the entry or stop and report — do not continue.

    Why it belongs here: releases tag the merge commit on main, so the entry must be part of the release PR before the tag exists. The app fetches CHANGELOG.md from main, and the release workflow publishes this same entry as the GitHub Release body (and fails the release if it is missing).

  6. Close the shipped milestone. If a GitHub milestone matches the version being released, ask the user to confirm, then close it (gh api -X PATCH repos/{owner}/{repo}/milestones/{n} -f state=closed). This is the one live GitHub write in an otherwise local skill, so confirm first; it is trivially reversible by reopening.

    Why it belongs here: the public roadmap is built from open milestones, so leaving it open makes ROADMAP.md name the new version as the current release and list it as a future release in the same file. Skipping this ships a self-contradictory roadmap to the in-app Roadmap screen.

  7. Update the "what shipped" sentence in scripts/roadmap/header.md. This is the only line in the public roadmap that no machine can derive, and release time is the only moment it can be written.

    • Read the commits since the previous tag (git log --no-merges --format=%s $(git describe --tags --abbrev=0)..HEAD) and summarise the release in the public, editorial voice already used in that file — what a reader gets, not what changed internally.
    • Lead with the new version and prune older detail rather than letting the sentence accumulate every patch forever. One or two sentences total.
    • Leave {{CURRENT_VERSION}} alone — it is substituted from Gradle at generation time.
  8. Regenerate the public roadmap: python3 scripts/roadmap/generate_roadmap.py --write.

    This is mandatory, not optional. ROADMAP.md is a generated file, and the Roadmap workflow runs --check on any pull request touching ROADMAP.md or scripts/roadmap/**. Editing header.md in step 7 without regenerating leaves the file stale and fails CI on the release PR. Verify with --check before reporting.

  9. Remind the user to verify R8 after the tag is pushed. On the tag run, the R8 release smoke job must have passed, the Softcover-<tag>-mapping.txt file must be attached to the GitHub release, and the mapping must be visible under the release in Play Console. Details in docs/reference/r8.md.

Read the full file on GitHub · 51 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. 12d ago Changed · +18 lines · +6 tokens per session 1440de729c23
  2. 2mo ago First seen · 33 lines · 54 tokens per session scan A 4dfead892b16

Subscribe to this mod's changes

release is a skill published in the GitHub repository CinqueIzumi/Softcover (16 stars, last pushed yesterday), licensed MIT. It adds 60 tokens to every session and 1,176 once invoked, about $0.0002 per session on Opus 5.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-30.