release

release is a skill for Claude Code, Codex from apokamo/kaji. It costs 39 tokens per session (6,090 once invoked), scanned A, original, Apache-2.0.

A maintainer workflow for releasing the kaji project. It updates the version and changelog, creates a Git tag and GitHub Release, and hands PyPI publishing to GitHub Actions after approval.

In plain words
What is it for?
Use it from kaji’s main worktree for a normal release or with --dry-run to prepare and inspect the release locally.
Why use it?
It coordinates the release steps and checks the repository state before pushing changes. A dry-run lets maintainers inspect local updates without pushing or creating the GitHub Release.

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/apokamo/kaji/release
Any agent
npx skills add apokamo/kaji --skill release
Clone the repo
git clone --depth 1 https://github.com/apokamo/kaji

Made for: Claude Code, Codex.

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/apokamo/kaji/release.svg)](https://agentmods.dev/skills/apokamo/kaji/release)
Your own site
<a href="https://agentmods.dev/skills/apokamo/kaji/release"><img src="https://agentmods.dev/badge/skills/apokamo/kaji/release.svg" alt="Measured on agentmods" height="20"></a>
Per session 39 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 6,090 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.1 $0.00039 $0.06090
Opus 5 $0.00019 $0.03045
Sonnet 5 $0.00008 $0.01218
Haiku 4.5 $0.00004 $0.00609

Measured yesterday against content hash 81a3c4d960be, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-05, 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 yesterday.

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 · 442 lines

How it starts

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

Release

kaji の release を maintainer の手元で進める skill。 各 step で user 承認を挟みながら version bump → CHANGELOG → tag → GitHub Release ページ作成まで進める。 PyPI publish は GitHub Release 公開後に .github/workflows/publish-pypi.yml が GitHub Actions + PyPI Trusted Publisher で実行する。

いつ使うか

タイミング このスキル
kaji の release(version bump + tag + Release ページ)を切る ✅ 必須
dry-run(push / Release ページ作成手前まで確認したい) --dry-run 経路
PyPI publish ✅ GitHub Release 公開後、publish-pypi.yml へ引き継ぐ
.github/workflows/release-please.yml の再有効化 ❌ 対象外(本 skill は maintainer 手元実行前提)

入力

/release            # 通常実行(push と Release ページ作成まで進める)
/release --dry-run  # ローカル状態のみ更新(push / gh release create はスキップ)

引数なしで起動し、skill 側で git / pyproject の状態を読んで判定する。

前提

  • 実行場所: kaji 本体の main worktree で実行する(release branch は切らない、main 直接 update する運用)
  • gh CLI を使う(GitHub 運用)
  • GitHub を指す git remote が 1 つ存在すること。Step 1 で git remote -v の URL から動的に抽出する。.kaji/config.tomlprovider.github.git_remote 値と整合する remote 名であることが前提
  • 解決した GitHub remote に対して git push できる権限を maintainer が持っていること
  • uv / make check が走る環境(kaji 開発環境セットアップ済み)
  • PyPI publish を行う場合、GitHub environment pypi が作成済みで approval rule が設定されていること
  • PyPI 側で project kaji の Trusted Publisher(初回は Pending Trusted Publisher)が設定済みであること
    • owner: apokamo
    • repository: kaji
    • workflow filename: publish-pypi.yml
    • environment: pypi

Note: 現状 skill は git remote -v の URL grep でのみ remote を解決し、.kaji/config.tomlprovider.github.git_remote は直接読まない。config 値を変えただけでは動作は変わらない点に注意。将来 kaji config git-remote 相当の CLI を追加する余地あり。

実行手順

Step 1: Pre-flight check

以下を順に確認する。1 つでも失敗した時点で停止し、user に復旧手順を提示する。

# 1-0. GitHub remote 名を解決
#      `git remote -v` から URL に github.com を含む push remote を動的抽出する。
#      `.kaji/config.toml` の `provider.github.git_remote` 値と整合する
#      remote 名であることが前提(skill は config を直接読まない)。
GITHUB_REMOTE=$(git remote -v | awk '/github\.com.*\(push\)/{print $1; exit}')
# 上記で見つからない場合、`origin` が GitHub を指していれば fallback
if [ -z "$GITHUB_REMOTE" ]; then
    if git remote get-url origin 2>/dev/null | grep -q github; then
        GITHUB_REMOTE=origin
    else
        echo "ABORT: no git remote pointing to github.com found"
        exit 1
    fi
fi
echo "Resolved GitHub remote: $GITHUB_REMOTE"

# 1-1. main checkout 状態
git rev-parse --abbrev-ref HEAD   # → "main" であること

# 1-2. working tree clean
git status --porcelain            # → 空であること

# 1-3. 上流 sync
git fetch "$GITHUB_REMOTE"
git rev-list --left-right --count "$GITHUB_REMOTE/main"...HEAD
# → "0\t0"(ahead/behind ともに 0)であること

# 1-4. 解決した remote が GitHub を指していることを再確認
git remote get-url "$GITHUB_REMOTE"   # → github.* を含むこと

# 1-5. gh CLI 認証済み
gh auth status                        # → "Logged in" 表示

Read the full file on GitHub · 442 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. yesterday Changed · +35 lines 81a3c4d960be
  2. 5d ago First seen · 407 lines · 39 tokens per session scan A 6e923e6e748e

Subscribe to this mod's changes

release is a skill published in the GitHub repository apokamo/kaji (12 stars, last pushed 5d ago), licensed Apache-2.0. It adds 39 tokens to every session and 6,090 once invoked, about $0.0002 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.

Related

Other skills, from other repositories

tutti-app-release

Set up, review, run, or debug external repositories that publish a Tutti workspace app through the reusable Tutti App Release GitHub Actions workflow. Use for caller workflows, tutti.app.json manifests, @tutti-os/app-release-tools, S3/CloudFront release hosting, latest.json, versions.json, catalog.json, catalog-only…

tutti-os/tutti · 80 tokens

git-integration

Git commit patterns, formats, and conventions for GSD methodology. Provides atomic commits per task, structured commit messages, planning file commits, branch management, and milestone tag operations.

a5c-ai/babysitter · 39 tokens

finishing-a-development-branch

Use when implementation is complete, all tests pass, and you need to decide how to integrate the work.

a5c-ai/babysitter · 28 tokens

release-docs

Generate a combined release blog post for ai-platform-engineering. Produces a single docs/releases/YYYY-MM-DD-release-X-Y-Z.md file containing release notes and the upgrade guide (migration guide) inline. Use when cutting a release, when a user asks "what changed in 0.4.x", or when upgrading their values.yaml to a new…

caipe-io/ai-platform-engineering · 76 tokens

release-cut

Cut a new pi-agent-dashboard release: promote ## [Unreleased] in CHANGELOG.md, bump every workspace package.json per SemVer, commit, tag v , and push — triggering the Release workflow that publishes every non-private workspace, builds the Electron artifacts, and creates a GitHub Release. Use on "cut a release"…

BlackBeltTechnology/pi-agent-dashboard · 93 tokens

release-revoke

Revoke or rollback a pi-agent-dashboard release: delete the GitHub Release, remove the git tag locally and on origin, deprecate the npm version (npm unpublish is blocked after 72h), and optionally revert the release commit. Use when the user says "revoke release", "rollback release", "delete release", "unpublish…

BlackBeltTechnology/pi-agent-dashboard · 85 tokens