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.
npx agentmods add skills/apokamo/kaji/releasenpx skills add apokamo/kaji --skill releasegit clone --depth 1 https://github.com/apokamo/kajiWrote 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/apokamo/kaji/release)<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>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.00039 | $0.06090 |
| Opus 5 | $0.00019 | $0.03045 |
| Sonnet 5 | $0.00008 | $0.01218 |
| Haiku 4.5 | $0.00004 | $0.00609 |
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.
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 する運用)
ghCLI を使う(GitHub 運用)- GitHub を指す git remote が 1 つ存在すること。Step 1 で
git remote -vの URL から動的に抽出する。.kaji/config.tomlのprovider.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
- owner:
Note: 現状 skill は
git remote -vの URL grep でのみ remote を解決し、.kaji/config.tomlのprovider.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" 表示
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.
- yesterday Changed · +35 lines 81a3c4d960be
- 5d ago First seen · 407 lines · 39 tokens per session scan A 6e923e6e748e
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.
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…
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.
finishing-a-development-branch
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work.
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…
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"…
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…