han-release

A release skill for Han projects that updates the changelog, versions and tags changed plugins, and publishes a GitHub release. GitHub is a platform for hosting code and project history.

In plain words
What is it for?
Use it when preparing a Han release: verify required command-line tools and the Git repository, document changes, create plugin version tags, and publish the release.
Why use it?
It organizes the steps needed to publish a release and records which pull requests and issues contributed to it.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/testdouble/han/han-release
Any agent
npx skills add testdouble/han --skill han-release
Clone the repo
git clone --depth 1 https://github.com/testdouble/han

Made for: Claude Code, Codex.

Per session 172 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 8,495 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
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 $0.00172 $0.08495
Opus 5 $0.00086 $0.04248
Sonnet 5 $0.00034 $0.01699
Haiku 4.5 $0.00017 $0.00850

Measured 2d ago against content hash 115392abf435, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

han-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 2d ago.

The scan reads SKILL.md. This mod also ships 1 executable file (scripts/remote-tag-state.sh), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

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/han-release/SKILL.md · 495 lines

How it starts

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

Pre-requisites

  • gh CLI: !which gh 2>/dev/null || echo "not installed"
  • jq: !which jq 2>/dev/null || echo "not installed"
  • claude CLI: !which claude 2>/dev/null || echo "not installed"
  • git repo: !git rev-parse --is-inside-work-tree 2>/dev/null || echo NO

If gh, jq, or claude reads not installed, or this is not a git repo: tell the operator which prerequisite is missing and that it must be installed/configured before /han-release can run, then immediately stop. The skill cannot proceed without all four.

The claude CLI is what creates the per-plugin tags in Step 10. Every invocation of it in this skill goes through the shell's command builtin (command claude ...), never a bare claude, because an operator's shell commonly wraps claude in a function or alias that blocks waiting for terminal input. The which probe above resolves the same way a bare call would, so it reports the wrapper's presence rather than the executable's; treat a non-empty result as "the tool is reachable" and let Step 10's first invocation be what proves it runs.

Project Context

  • repo: !gh repo view --json nameWithOwner -q .nameWithOwner 2>/dev/null || git config --get remote.origin.url
  • current branch: !git branch --show-current 2>/dev/null || echo unknown
  • default branch: !git symbolic-ref --short refs/remotes/origin/HEAD 2>/dev/null | sed 's#^origin/##' || echo unknown
  • working tree: !git status --porcelain 2>/dev/null || echo NO
  • parent plugin name: !jq -r .name .claude-plugin/marketplace.json 2>/dev/null
  • plugins (name source version): !jq -r '.plugins[] | "\(.name)\t\(.source)\t\(.version)"' .claude-plugin/marketplace.json 2>/dev/null
  • latest parent tag: !git fetch --tags --quiet >/dev/null 2>&1; git tag -l 'han--v*' --sort=-v:refname | head -n1
  • latest suite tag: !git tag -l 'v*.*.*' --sort=-v:refname | head -n1
  • changelog head: !grep -m1 '^## v' CHANGELOG.md 2>/dev/null

Read the full file on GitHub · 495 lines

Files

What ships with it

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

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. 2d ago First seen · 495 lines · 172 tokens per session scan A 115392abf435

Subscribe to this mod's changes

han-release is a skill published in the GitHub repository testdouble/han (247 stars, last pushed 4d ago), licensed MIT. It adds 172 tokens to every session and 8,495 once invoked, about $0.0009 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-30.