Skip to content
Agentmart
Submit a tool

release

Cut a new gflow-cli release — bump version, update CHANGELOG, tag, push, and back-merge.

Skill by ffroliva

IndexedMIT★ 332
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/ffroliva-release

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Cut a new gflow-cli release — bump version, update CHANGELOG, tag, push, and back-merge.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/release

What's inside

Skill name
release
Description
Cut a new gflow-cli release — bump version, update CHANGELOG, tag, push, and back-merge.
License
MIT
Instructions
400 lines in SKILL.md · view on GitHub

Agent Skills spec issues

  • files: referenced but missing: scripts/ci/check_release_artifacts.py

Files (1)

  • SKILL.md

SKILL.md (first lines)

# `/gflow:release` — Cut a new release

Follow this sequence verbatim. Every step matters.

> **Branch-protection note:** `main` blocks direct pushes. The release commit travels
> via a `chore/release-vX.Y.Z` branch PR. The signed tag is pushed independently
> (tag pushes bypass branch protection and trigger the CI release workflow immediately).
>
> **Source-branch note (read first):** `develop` is the integration branch — it carries
> ALL unreleased work and `main` usually lags it. The release branch is cut from
> **`develop`**, NOT `main`. The PR `chore/release-vX.Y.Z → main` then brings the full
> integration history onto `main`. Do not expect the work to already be on `main`.

## Inputs

Ask the user (if not already provided):

1. **Version** — the new version (e.g. `0.4.0`, `0.4.0a3`, `1.0.0rc1`). Use PEP 440 prerelease suffixes (`aN`, `bN`, `rcN`). If they don't know, run `/gflow:changelog` first and propose the next bump (PATCH for fixes only, MINOR for new features, MAJOR for breaks).
2. **Pre-release?** — prerelease versions stay marked as GitHub prereleases. Only the user can say when a release line is ready for the stable tag.

---

## Sequence

**1. Review what's queued.**

Run `/gflow:changelog` — confirm the `[Unreleased]` block is non-empty and accurate before proceeding.

**2. Verify (or triage) a clean working tree.**

```bash
git status --short
```

If empty, continue. If not, **triage before aborting** — do not blindly stop:

- **Auto-injected boilerplate** (e.g. a context-mode routing block appended to
  `CLAUDE.md` by an MCP plugin's SessionStart hook): this is plugin-injected, not
  project content — `git restore` it. Confirm with the user if unsure.
- **Build/temp artifacts** (e.g. a stray `tmp*.tar.gz` sdist at repo root): delete them.
- **Genuine uncommitted work:** STOP and tell the user to commit or stash on the
  appropriate branch (never commit straight to `develop`).

The tree must be clean before you create the release branch.

**3. Verify `develop` is the release source and up-to-date.**

The release is cut from `develop`, NOT `main` (see Source-branch note above).
Confirm direction explicitly — a backwards divergence means a prior back-merge was skipped.

```bash
git fetch origin
git rev-parse --abbrev-ref HEAD                      # expect "develop"
git rev-list --count HEAD..origin/develop            # local behind origin — expect 0
git rev-list --count origin/main..origin/develop     # develop AHEAD of main — expect > 0 (the work to release)
git rev-list --count origin/develop..origin/main     # main AHEAD of develop — expect 0
```

If not on `develop`: `git checkout develop && git pull origin develop`.
If local is behind origin: `git pull origin develop`.
**If `main` is AHEAD of `develop` (last count > 0): STOP.** A prior release skipped its
`main → develop` back-merge — recover first (see the `release-back-merge-gap-recovery`
memory) or the release branch will hit conflicts on `pyproject.toml` / `__init__.py` / `CHANGELOG.md`.

**4. Run quality gates.**

Run `/gflow:check` — all gates must pass. Abort if any fail.

**4b. Live-verify the release's user-facing features (REQUIRED gate).**

For every new/changed user-facing feature in this release, exercise it against
live Flow (credit-free wherever possible — image gen, entity attach, upscale, and
scene/timeline ops cost no Veo credits) and write the evidence to
`docs/LIVE_VERIFICATION_v<NEW_VERSION>.md` using the 5-layer ledger (file count +
magic bytes + dimensions/shape + structlog invariants + a user-confirmable
artifact). Add it to the "what was live-verified" entry in `docs/INDEX.md`. This
doc shipped for every release v0.7.0→v0.13.0, then lapsed for v0.14.0–v0.15.1 —
which is why it is now an explicit gate. If a feature genuinely cannot be verified
this cycle, record that and the reason in the doc; never silently omit it. Stage
the doc into the release-prep commit (step 11).

**5. Create a release branch off `develop` — in its own worktree, after telling every
other session.**

```bash
git worktree add -b chore/release-v<NEW_VERSION> .claude/worktrees/release-v<NEW_VERSION> origin/develop
cd .claude/worktrees/release-v<NEW_VERSION>
```

Before cutting, run `ListAgents` (or the equivalent in your harness) and message every
other session working on this repo: *"Cutting v<NEW_VERSION> from develop@<sha>; do not
push to develop until the back-merge lands."* Then cut in a **dedicated worktree** (the
repo convention is `.claude/worktrees/<slug>`), never in the shared checkout. The cut is
from `origin/develop`, which step 3 just verified local `develop` is not behind — a local
`develop` that goes stale later no longer matters (unpushed local commits on `develop`
are deliberately NOT in the release; push them first if they should be). Steps 6–13 run inside this worktree;
step 14 returns to the main checkout and removes it.

> **Why.** On 2026-09-05 the v0.68.0 release branch was cut in the shared checkout and
> then switched out from under the release runner by another session's `git checkout`,
> costing a recovery; separately, an unrelated PR landed on `develop` between the cut and
> the tag, so the signed tag had to be deleted and re-signed on a merged head (nothing
> had been pushed, so no public tag moved — step 12 now checks for this). A worktree
> makes the branch immune to sibling checkouts; the announcement makes the `develop`
> race visible instead of discovered at tag time.

This branch now contains all of `develop` (⊇ `main`) plus your release prep. All
release prep commits live here; the PR into `main` (step 14) carries the full
integration history forward.

**6. Bump the shared release version — SEVEN sites, and no single gate sees them all.**

This is the canonical list. It is the only one that spans all three gates; the previous
version of this step named four sites, `check_repo_hygiene.py`'s docstring named three,
and its own function checked five. A release engineer then met each omission as a gate
failure mid-release (#839). **If you add a version site, add it here.**

| # | Site | Caught by |
|---|---|---|

From ffroliva/gflow-cli, MIT.

More from ffroliva/gflow-cli

Signals

Stars
332
Forks
95
Open issues
30
Contributors
22
Last commit (this folder)
Oct 18, 2026 (10 days ago)
Last release
Oct 24, 2026 (4 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from ffroliva

Cite this page

release skill. Agent Mart. https://agentmart.dev/skills/ffroliva-release (last updated 2026-10-24)