release

A release workflow that prepares a project release pull request, a proposed set of changes for merging into the main code branch. It detects the previous version tag, generates release notes, updates version files, and refreshes the lock file.

In plain words
What is it for?
Use it to prepare release notes, choose the next version, update project metadata, regenerate dependencies, create a branch, and open a release pull request.
Why use it?
It gathers the release steps into one repeatable process and keeps the changelog, package version, and dependency lock data aligned. It also checks that the work starts from a clean main branch.

Command for Claude Code

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 commands/existential-birds/amelia/release
Clone the repo
git clone --depth 1 https://github.com/existential-birds/amelia

Made for: Claude Code.

Per session 12 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 861 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.00012 $0.00861
Opus 5 $0.00006 $0.00430
Sonnet 5 $0.00002 $0.00172
Haiku 4.5 $0.00001 $0.00086

Measured 2d ago against content hash 38e03dd825ab, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, 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 2d 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/commands/release.md · 125 lines

How it starts

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

Release Automation

Automate the full release process: generate notes, update files, create branch, and open PR.

No arguments required - automatically detects the previous tag.


Prerequisites

Verify we're on main and it's clean:

git checkout main
git pull
git status --short

If there are uncommitted changes, abort and ask the user to resolve them first.

Detect the previous tag:

PREV_TAG=$(git describe --tags --abbrev=0 2>/dev/null)
if [ -z "$PREV_TAG" ]; then
  echo "No previous tags found. This appears to be the first release."
  PREV_TAG="HEAD~100"  # Fallback to analyze recent history
fi
echo "Previous tag: $PREV_TAG"

Step 1: Generate Release Notes

Run /gen-release-notes ${PREV_TAG} to:

  1. Analyze commits since the previous tag
  2. Categorize changes (Added, Changed, Fixed, Security, etc.)
  3. Determine the next version number
  4. Update CHANGELOG.md with the new version section
  5. Update pyproject.toml with the new version
  6. Regenerate uv.lock (uv lock) so its editable-root amelia entry tracks the new version

Bumping pyproject.toml invalidates uv.lock's own entry (name = "amelia", source = { editable = "." }), whose version still points at the previous release. uv lock --check runs first in make check, the pre-push hook, and CI (before any uv run/uv sync can silently re-lock), and FAILS on a drifted lock — so a stale lock can never merge.

Do not proceed until CHANGELOG.md, pyproject.toml, and uv.lock are updated.

Step 2: Create Release Branch

After the files are updated, extract the version and create a branch:

# Extract version from pyproject.toml
VERSION=$(grep '^version = ' pyproject.toml | sed 's/version = "\(.*\)"/\1/')
echo "Creating release branch for version $VERSION"

# Create and checkout release branch
git checkout -b "chore/release-${VERSION}"

Step 3: Commit Changes

Commit all updated version files:

git add CHANGELOG.md pyproject.toml amelia/__init__.py dashboard/package.json uv.lock
git commit -m "chore(release): bump version to ${VERSION}"

Read the full file on GitHub · 125 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. 2d ago First seen · 125 lines · 12 tokens per session scan A 38e03dd825ab

Subscribe to this mod's changes

release is a command published in the GitHub repository existential-birds/amelia (21 stars, last pushed 22d ago), licensed Apache-2.0. It adds 12 tokens to every session and 861 once invoked, about $0.0001 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 commands, from other repositories

review-pr

PR review using parallel specialized agents for code quality, security, testing, architecture, and performance analysis. Synthesizes findings into a review report with conventional comments (praise/issue/suggestion/nitpick) and approve or request-changes verdict. Use when reviewing pull requests, conducting security…

yonatangross/orchestkit · 69 tokens

expect

Diff-aware AI browser testing — reads the git diff, maps changes to affected pages via the route map, generates a targeted test plan, and executes it via agent-browser (Rust daemon + CDP, ARIA-tree-first) with pass/fail reporting. Use when testing UI changes, verifying PRs before merge, or running regression checks on…

yonatangross/orchestkit · 73 tokens

design-context-extract

Extract design DNA from app screenshots, live URLs, or screen recordings using Google Stitch — color palettes, typography, spacing tokens, component patterns, and motion specs as design-tokens.json or Tailwind config. Use when the user points to a screenshot, URL, or video and asks to extract or audit the design…

yonatangross/orchestkit · 84 tokens

explore

Multi-angle codebase exploration spawning 3-5 parallel agents for code structure, data flow, architecture patterns, and health assessment. Generates ASCII visualizations, import graphs, and design pattern detection with cross-session memory storage. Use when exploring a repo, discovering architecture, onboarding to a…

yonatangross/orchestkit · 68 tokens

design-import

Scaffolds React components from a Claude Design handoff bundle and stops at files on disk: no stories, no tests, no pull request. Use when handed a claude.ai/design URL or a local bundle file; when that same scaffold should carry on through test generation, browser verification and an opened PR, run /ork:design-ship…

yonatangross/orchestkit · 74 tokens

design-ship

One-shot pipeline turning a claude.ai/design link into a pull request: scaffold via /ork:design-import, stories and specs via /ork:cover, browser verification via /ork:expect, then open the PR. Use when a design link should come back as a PR with no intermediate steps; if all you need is the components written to…

yonatangross/orchestkit · 84 tokens