Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/hummer98/nanobanana-adcnpx agentmods add commands/hummer98/nanobanana-adc/releaseWrote 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/commands/hummer98/nanobanana-adc/release)<a href="https://agentmods.dev/commands/hummer98/nanobanana-adc/release"><img src="https://agentmods.dev/badge/commands/hummer98/nanobanana-adc/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/commands/hummer98/nanobanana-adc/release"><img src="https://agentmods.dev/badge/commands/hummer98/nanobanana-adc/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.00031 | $0.01488 |
| Opus 5 | $0.00015 | $0.00744 |
| Sonnet 5 | $0.00006 | $0.00298 |
| Haiku 4.5 | $0.00003 | $0.00149 |
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 10d 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 — 134 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/release
nanobanana-adc のリリースをこのセッションで直接実行する。引数 $ARGUMENTS で
バージョンを指定できる:
/release— コミット履歴から自動判定/release 0.9.0— 指定バージョンで固定
コード変更や設計判断を伴わない運用作業なので、サブエージェントは spawn せず Bash で順に実行する。失敗したステップだけをやり直せばよい。
0. Preflight
claude plugin validate . || { echo "plugin validate failed; aborting" >&2; exit 1; }
PKG=$(node -p "require('./package.json').version")
PLUGIN=$(node -p "require('./.claude-plugin/plugin.json').version")
MARKET=$(node -p "require('./.claude-plugin/marketplace.json').plugins.find(p => p.name === 'nanobanana-adc').version")
CLI=$(grep -oE "CLI_VERSION = '[^']+'" src/cli.ts)
echo "versions — package=$PKG plugin=$PLUGIN marketplace=$MARKET cli=$CLI"
npm run typecheck && npm test && npm run build
4 つのバージョンが揃っていない場合は、後続のバンプで 4 箇所すべてを更新すること。
CI の validate-plugin ジョブでも同じ整合性チェックが走る。
作業ツリーに未コミットの変更が残っていないことも確認する。リリースコミットは CHANGELOG とバージョンファイルしか含めないため、機能変更が未コミットのままだと そのタグには入らない。
1. バージョンを判定
CURRENT=$(node -p "require('./package.json').version")
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
git log ${LAST_TAG:+${LAST_TAG}..}HEAD --oneline
引数指定があればそれを採用。無ければ Conventional Commits で判定する:
| キーワード | 変更レベル |
|---|---|
BREAKING CHANGE, !: |
major |
feat:, feat( |
minor |
fix: / chore: / docs: のみ |
patch |
最も大きい変更レベルを採用する。
2. CHANGELOG.md を更新
## [Unreleased] ブロックがあれば ## [X.Y.Z] - YYYY-MM-DD(実行日)に書き換える。
無ければタイトル直下に新しいブロックを追加する:
## [X.Y.Z] - YYYY-MM-DD
### Added / ### Changed / ### Fixed
分類は feat: → Added / fix: → Fixed / それ以外 → Changed。コミットメッセージを
そのままコピーせず、ユーザーが読んで意味がわかる説明に書き直す。
3. バージョンを 4 箇所に反映
NEW_VERSION=X.Y.Z
node -e "const p=require('./package.json'); p.version='${NEW_VERSION}'; require('fs').writeFileSync('package.json', JSON.stringify(p,null,2)+'\n')"
node -e "const p=require('./.claude-plugin/plugin.json'); p.version='${NEW_VERSION}'; require('fs').writeFileSync('.claude-plugin/plugin.json', JSON.stringify(p,null,2)+'\n')"
node -e "const m=require('./.claude-plugin/marketplace.json'); m.plugins.find(p=>p.name==='nanobanana-adc').version='${NEW_VERSION}'; require('fs').writeFileSync('.claude-plugin/marketplace.json', JSON.stringify(m,null,2)+'\n')"
sed -i '' "s/^const CLI_VERSION = '.*';/const CLI_VERSION = '${NEW_VERSION}';/" src/cli.ts
npm run typecheck && npm test && npm run build && ./bin/nanobanana-adc --version
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.
- 10d ago First seen · 134 lines · 31 tokens per session scan A a7a179dd96f6
release is a command published in the GitHub repository hummer98/nanobanana-adc (4 stars, last pushed 22d ago), licensed MIT. It adds 31 tokens to every session and 1,488 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-31.
Other commands, from other repositories
agy-review
Send the current change set to Antigravity (agy) for a senior-reviewer code review.
lifecycle
Complete milestone lifecycle: audit, archive, and next version.
release
Release manager for frontend and mobile. Writes App Store notes, user-facing changelog, flags stale docs and landing copy. Actions: notes | changelog | docs | sync.
done
Finish a task - document, create PR or merge, close.
post-release.en
Read and execute the post-release skill from .agents/skills/post-release/SKILL.md.
release
Generate changelog, bump version, and create git tag.