Add Release Highlights
ArcReel/ArcReel
起草指定版本的版本亮点;确认后同步到 Changelog 与 GitHub Release,并推送 main. An agent skill from ArcReel/ArcReel.
Cut a new gflow-cli release — bump version, update CHANGELOG, tag, push, and back-merge.
$ npx skills add ffroliva/gflow-cli --skill release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ffroliva/gflow-cli release --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ffroliva/gflow-cli.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/release .claude/skills/release && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "release" agent skill from https://github.com/ffroliva/gflow-cli/tree/develop/skills/release into .claude/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ffroliva/gflow-cli/tree/develop/skills/releaseType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ffroliva/gflow-cli --skill release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ffroliva/gflow-cli release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ffroliva/gflow-cli.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/release .agents/skills/release && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "release" agent skill from https://github.com/ffroliva/gflow-cli/tree/develop/skills/release into .agents/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ffroliva/gflow-cli --skill release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ffroliva/gflow-cli release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ffroliva/gflow-cli.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/release .cursor/skills/release && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "release" agent skill from https://github.com/ffroliva/gflow-cli/tree/develop/skills/release into .cursor/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ffroliva/gflow-cli.git --path skills/release--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ffroliva/gflow-cli --skill release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ffroliva/gflow-cli release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ffroliva/gflow-cli.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/release .gemini/skills/release && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "release" agent skill from https://github.com/ffroliva/gflow-cli/tree/develop/skills/release into .gemini/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ffroliva/gflow-cli releaseInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ffroliva/gflow-cli --skill release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ffroliva/gflow-cli.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/release .github/skills/release && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "release" agent skill from https://github.com/ffroliva/gflow-cli/tree/develop/skills/release into .github/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ffroliva/gflow-cli --skill release -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ffroliva/gflow-cli release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ffroliva/gflow-cli.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/release .opencode/skills/release && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "release" agent skill from https://github.com/ffroliva/gflow-cli/tree/develop/skills/release into .opencode/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
releaseCut a new gflow-cli release — bump version, update CHANGELOG, tag, push, and back-merge.
Release is an agent skill from ffroliva/gflow-cli. Cut a new gflow-cli release — bump version, update CHANGELOG, tag, push, and back-merge.
Its SKILL.md is about 5.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Changelog and release notes and AI video generation. The repository describes itself as: Drive Google Flow from the command line: Veo video and Imagen images, scripted, batched and pipeline-ready. Ships an MCP server so coding agents can drive it too, giving you and… The licence is MIT.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit cb6d501. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitghuvrgFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
pypi.orgFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Release loads about 5.1k tokens when it runs. Until then it costs about 24 tokens; SKILL.md has 2,461 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from ffroliva/gflow-cli at commit cb6d501, republished under its MIT licence (© ffroliva). 2,461 words, ~5,108 tokens.
.claude/skills/release/SKILL.md (or your agent's skills folder)./gflow:release — Cut a new releaseFollow this sequence verbatim. Every step matters.
Branch-protection note:
mainblocks direct pushes. The release commit travels via achore/release-vX.Y.Zbranch PR. The signed tag is pushed independently (tag pushes bypass branch protection and trigger the CI release workflow immediately).Source-branch note (read first):
developis the integration branch — it carries ALL unreleased work andmainusually lags it. The release branch is cut fromdevelop, NOTmain. The PRchore/release-vX.Y.Z → mainthen brings the full integration history ontomain. Do not expect the work to already be onmain.
Ask the user (if not already provided):
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).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.
git status --shortIf empty, continue. If not, triage before aborting — do not blindly stop:
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.tmp*.tar.gz sdist at repo root): delete them.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.
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 0If 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.
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 ondevelopbetween 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 thedeveloprace 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 |
|---|---|---|
| 1 | pyproject.toml [project].version | check_repo_hygiene._check_version_agreement |
| 2 | src/gflow_cli/__init__.py __version__ | same |
| 3 | .codex-plugin/plugin.json "version" | same |
| 4 | uv.lock (the gflow-cli package block) | same — re-resolved by uv lock |
| 5 | server.json .version and .packages[*].version (twice) | same |
| 6 | plugins/gflow/.claude-plugin/plugin.json "version" | tests/test_plugin_manifests.py::test_plugin_version_tracks_pyproject |
| 7 | docker/Dockerfile ARG GFLOW_VERSION | tests/test_dockerfile_version_pin.py |
server.json is the one that bites quietly: it is the MCP Registry's copy of our
metadata, and the registry publish carries whatever the ref says. Forget it and the
listing points at a superseded version with nothing downstream noticing.
Do not bulk-replace the old version across the repo. docker/README.md quotes
measured results (gflow_cli : <version>, ✅ measured); rewriting those turns a
record of what was tested into a false claim. Bump declaration sites only — the seven
above — and leave measurement records alone unless the measurement was re-run.
Sites 1–3 and 6:
[project]
version = "<NEW_VERSION>"{
"version": "<NEW_VERSION>"
}7. Bump package version in src/gflow_cli/__init__.py:
__version__ = "<NEW_VERSION>"8. Update version assertion tests if present:
rg -n "__version__|<OLD_VERSION>|version assertion" tests src pyproject.toml .codex-plugin/plugin.json plugins/gflow/.claude-plugin/plugin.json9. Migrate CHANGELOG.
## [Unreleased] to a new ## [<NEW_VERSION>] — YYYY-MM-DD section.## [Unreleased] empty.compare/vPREV...vNEW form, so use that for the new version too (NOT the
releases/tag/ form), or /gflow:doc-review will flag the inconsistency:[Unreleased]: https://github.com/ffroliva/gflow-cli/compare/v<NEW_VERSION>...HEAD
[<NEW_VERSION>]: https://github.com/ffroliva/gflow-cli/compare/v<PREV_VERSION>...v<NEW_VERSION>9b. Update docs/PROJECT_STATUS.md — this is an ACTION, not a review finding.
Rewrite the ## Current release section to describe the release being cut, and add a
milestone-history row for its headline change. Demote the previous release into a
<details><summary>vPREV — …</summary> block rather than deleting it.
The file's own header says "Updated on every signed tag" — a promise that went unkept for
five consecutive releases, and again in v0.64.0, where the section still announced v0.63.0 as
current at tag time. It was caught only because a human council happened to read the file.
scripts/ci/check_release_artifacts.py now enforces it (violation 6): the version being cut
must appear in that section specifically, not merely somewhere in the file — every past
release is still named further down, so a whole-file search would pass on a fully stale
header. Run it before committing:
uv run python scripts/ci/check_release_artifacts.pyDoing this at step 9b rather than discovering it at step 10 is the point: doc-review is a detector, and a gate that only detects still costs a round trip every release.
10. Run the documentation review gate.
Run /gflow:doc-review — audit all version refs, INDEX completeness, evidence files, the published website/docs/ mirror (PII gate + content-drift check, §4b), code↔docs parity via git log (§4c), skill files, CHANGELOG footer, and memory files. Fix every FAIL before continuing. Fold all discovered fixes into the release prep commit — including any website/docs/ re-sync (the mirror is anonymized and hand-synced; a canonical doc change this release must be mirrored, and CHANGELOG.md must never appear under website/docs/).
Also consolidate shipped planning artifacts here: extract any durable patterns
into auto-memory, then remove the now-shipped docs/superpowers/ plan / spec /
verification files (keep only in-flight work). check_repo_hygiene.py enforces the
root-doc allowlist, so a stray review doc or session marker left at the repo root
will fail the gate.
11. Commit the release prep.
# All seven version sites from step 6 — a bumped-but-unstaged site fails the gate
# on the release branch, after the tag is already in your fingers.
git add pyproject.toml .codex-plugin/plugin.json plugins/gflow/.claude-plugin/plugin.json
git add src/gflow_cli/__init__.py uv.lock server.json docker/Dockerfile CHANGELOG.md
git add docs/PROJECT_STATUS.md # step 9b — enforced by check_release_artifacts
git add docs/ website/docs/ skills/ .claude/commands/gflow/ # include any doc-review + mirror fixes
# doc-review version-currency fixes often also touch ROOT docs — stage them too:
git add README.md PLAN.md KNOWN_ISSUES.md AGENTS.md llms.txt 2>/dev/null || true
git status --short # review EVERYTHING staged before committing
git commit -m "chore(release): v<NEW_VERSION>"uv.lock changes on every version bump (the editable package version is
pinned in the lockfile) — it is easy to forget and must ship in this commit..codex-plugin/plugin.json tracks the package version so marketplace installs
receive a new cache path for every release.server.json carries the version TWICE — top level and inside the PyPI package
entry. _check_version_agreement checks both; a half-bump fails the gate.Co-Authored-By trailer (see reminders).12. Tag the release commit. Use -s for a signed annotated tag so GitHub shows "Verified" AND .github/workflows/release.yml passes the signed-tag gate (unsigned or lightweight tags are rejected by CI).
First confirm develop has not moved since step 5 — anything merged there in the
meantime is not in this branch and would ship in the next release while its
CHANGELOG entry sits under a heading that no longer exists:
git fetch origin
git rev-list --count HEAD..origin/develop # expect 0If it is non-zero: git merge origin/develop, move the newcomers' [Unreleased]
entries under ## [<NEW_VERSION>], re-run steps 4, 4b and 10 — 4b because the
newcomers are user-facing features that just entered this release and each needs its
LIVE_VERIFICATION_v<NEW_VERSION>.md row (v0.68.0 shipped #672 this way and the ledger
had no row until a reviewer supplied one) — amend or add to the step 11 commit, and only
then tag. Exception: if the only newcomers are docs(sponsors): refresh hall of fame
commits from .github/workflows/sponsors.yml (a daily bot that cannot see a release
freeze), git merge origin/develop and move on — they carry no [Unreleased] entry, no
4b row and nothing to re-verify. If a tag was already created locally, git tag -d v<NEW_VERSION> and re-sign
it on the merged head — this is safe only while the tag is unpushed (see the NEVER
force-push a release tag reminder below). develop can still move between this check
and the step 13 push; that cannot corrupt the tag, it only means a late commit ships in
the next release — re-run the rev-list immediately before pushing if you care.
git tag -s v<NEW_VERSION> -m "v<NEW_VERSION>"Signing requirements:
git config --global gpg.format ssh + user.signingkey pointing at your public key.git config --global user.signingkey to confirm a key is configured.Confirm the tag actually carries a signature (this is what CI checks):
git cat-file -p v<NEW_VERSION> | grep -c "BEGIN SSH SIGNATURE" # expect 1 (or "BEGIN PGP SIGNATURE" for GPG)Benign local-verify error:
git tag -v v<NEW_VERSION>may fail withgpg.ssh.allowedSignersFile needs to be configured. This is a local verification-config gap only — the tag IS validly signed and CI still passes (CI greps for the signature header, above). To make local verify work once and for all, create an allowed-signers file (<your-email> ssh-rsa AAAA...) and rungit config --global gpg.ssh.allowedSignersFile <path>. See therelease-signingmemory for the exact recipe. Do NOT treat this error as a signing failure.
13. Push the tag first (bypasses branch protection; triggers the CI release workflow immediately):
⚠ POINT OF NO RETURN — confirm with the user before this push. Pushing the tag immediately triggers
.github/workflows/release.yml→ PyPI publish + public GitHub Release. A pushed release tag must NOT be force-replaced (ship a PATCH instead). Get an explicit go-ahead, then push.
git push origin v<NEW_VERSION>CI will start building the release. Watch https://github.com/ffroliva/gflow-cli/actions.
Wait for the Release run to report completed / success and confirm the GitHub
Release published before continuing (gh release view v<NEW_VERSION>).
14. Push the release branch and open the PR.
git push -u origin chore/release-v<NEW_VERSION>
gh pr create --base main --head chore/release-v<NEW_VERSION> \
--title "chore(release): v<NEW_VERSION>"Wait for PR CI to go green (gh pr checks <N> --watch). The SonarCloud analysis
check must be green (gate passed) — not just the test matrix. If it is red or you
want the verdict, run /gflow:sonar <N> and drive it to zero before merging.
Before merging, leave the release worktree and remove it — --delete-branch deletes the
local branch too, and git refuses to delete a branch a worktree has checked out
(error: cannot delete branch … used by worktree). The branch is pushed, so nothing is
lost:
cd <main checkout> # e.g. C:/development/github/gflow-cli
git worktree remove --force .claude/worktrees/release-v<NEW_VERSION>
git worktree pruneThen merge with a merge commit — never squash:
gh pr merge <N> --merge --delete-branchOn Windows the removal can fail on the worktree's .venv file lock. git worktree prune
does not help — it only forgets worktrees whose directory is already gone, so the
branch stays held and --delete-branch still fails. In that case merge without it and
delete the remote ref explicitly; remove the directory and the local branch later
(CLAUDE.md § Worktrees):
gh pr merge <N> --merge
git push origin --delete chore/release-v<NEW_VERSION>NEVER
--squashthis PR. Because the branch was cut fromdevelop, the PR carries the entire batch of unreleased integration commits. A squash collapses them into one opaque commit onmainand destroys that history.--mergepreserves it. (The release workflow already ran from the tag push in step 13 — this PR is to bring the bump commit + integration history ontomain.)
15. Back-merge main into develop.
After the release PR is merged, bring the bump commit back to develop so branches stay aligned.
This runs in the main checkout (step 14 already returned you there) — develop is
checked out there, and git refuses git checkout develop from any other worktree
(fatal: 'develop' is already used by worktree at …):
cd <main checkout>
git checkout develop
git pull origin develop
git fetch origin main
git merge origin/main --no-ff -m "chore: back-merge main (v<NEW_VERSION>) into develop"
git push origin developIf there are conflicts (rare — only if develop has commits that touched the same lines as the bump), resolve them, keeping develop's unreleased work and main's version bump.
16. Report.
Tell the user:
.github/workflows/release.yml.develop is now synced with main (back-merge done in step 15)..venv, name the directory
that still needs a manual delete.develop is
open again.develop — open ## [Unreleased] in CHANGELOG is ready.Upon completing a Release:
/gflow:issue-assessment <N>) for the next development cycle."develop, not main — develop carries the work.--squash the release PR into main — it destroys the integration history the branch carries. Use --merge.main → develop back-merge (step 15) — skipping it guarantees conflicts at the next release.Co-Authored-By: Claude (or any AI co-author) to the release commit.--no-verify past hooks. Fix the underlying issue.main — branch protection will reject it. Always use a PR.git tag -v allowedSignersFile error is benign (verify-only) — the tag is still signed and CI passes. Don't treat it as a failure.© ffroliva, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/release of ffroliva/gflow-cli.
Open the folder on GitHubat commit cb6d501
Release next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Release this skillffroliva/gflow-cli | 264 | — | ~5.1k | Automated safety check: Pass | MIT | |
| Add Release HighlightsArcReel/ArcReel | 5.4k | — | ~194 | Automated safety check: Pass | AGPL-3.0 | |
| Simple Englishmoeru-ai/airi | 50k | 2 repos | ~4.6k | Automated safety check: Pass | MIT | |
| StarRocks Release NotesStarRocks/starrocks | 12k | — | ~1.9k | Automated safety check: Notes | Apache-2.0 | |
| Cutting A ReleaseTriliumNext/Trilium | 38k | — | ~3.2k | Automated safety check: Pass | AGPL-3.0 | |
| React Router Release Notes Prepremix-run/react-router | 57k | — | ~1.1k | Automated safety check: Pass | MIT |
ArcReel/ArcReel
起草指定版本的版本亮点;确认后同步到 Changelog 与 GitHub Release,并推送 main. An agent skill from ArcReel/ArcReel.
moeru-ai/airi
Write or rewrite technical text with the rules of ASD-STE100 Simplified Technical English so it is clear, unambiguous, and free of AI slop.
StarRocks/starrocks
Drafts English release notes for a StarRocks patch release from the PRs merged into its release branch, then opens a documentation PR and hands translation to /translate.
TriliumNext/Trilium
A skill your agent uses when cutting, preparing, or debugging a Trilium release — bumping the monorepo version, tagging, or diagnosing a failed "Release" workflow run.
remix-run/react-router
Polishes pending React Router change files before the versioning scripts run, and decides whether a long-form What's Changed section is warranted.
tw93/Mole
Runbook for assessing and executing a Mole CLI release: distribution channels, pre-flight checks, capital-V tags, build artifacts and the handoff to curated release notes.
ffroliva/gflow-cli
A skill your agent uses when the user wants to drive Google Flow (Veo image-to-video, Veo text-to-video, Imagen / Nano Banana image generation) from the terminal or a script — including…
ffroliva/gflow-cli
A skill your agent uses when triaging a GitHub issue for gflow-cli — a reporter's bug claim, a freshly-filed issue, or deciding whether and how to act on one.
ffroliva/gflow-cli
A skill your agent uses when an assessed gflow-cli issue (verdict CONFIRMED-BUG or LIKELY-BUG) has localized, verifiable scope and should be driven to a fix.
ffroliva/gflow-cli
Two-part gate for gflow-cli feature/fix work. An agent skill from ffroliva/gflow-cli.
ffroliva/gflow-cli
A skill your agent uses when the user wants a finished video out of gflow rather than a single clip — a scripted scene, a talking-head or dialogue piece, an explainer, a product montage, a story…
ffroliva/gflow-cli
Auto-fix lint and formatting, then report types and tests. An agent skill from ffroliva/gflow-cli.
Categories
Cut a new gflow-cli release — bump version, update CHANGELOG, tag, push, and back-merge. Release is an agent skill from ffroliva/gflow-cli. Cut a new gflow-cli release — bump version, update CHANGELOG, tag, push, and back-merge.
Release fits situations like: tasks that involve Changelog and release notes; tasks that involve AI video generation.
Run `npx skills add ffroliva/gflow-cli --skill release -a claude-code`. Or copy the skill folder (skills/release in ffroliva/gflow-cli) into .claude/skills/release in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ffroliva/gflow-cli --skill release -a codex`. Or copy the skill folder (skills/release in ffroliva/gflow-cli) into .agents/skills/release in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ffroliva/gflow-cli --skill release -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/release, .gemini/skills/release, .github/skills/release and .opencode/skills/release in your project.
Going by SKILL.md and its folder, Release needs the command-line tools its instructions call (git, gh, uv and rg). Our summary lists: Python 3; Docker.
SKILL.md names 1 domain. As links in the text: pypi.org. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Release is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.1k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Release: Add Release Highlights (ArcReel/ArcReel, 5.4k stars), Simple English (moeru-ai/airi, 50k stars), StarRocks Release Notes (StarRocks/starrocks, 12k stars) and Cutting A Release (TriliumNext/Trilium, 38k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ffroliva (a GitHub user) maintains it in ffroliva/gflow-cli, which has 264 GitHub stars. The repository holds 17 skills in this directory. The repository was last updated on October 7, 2026.
Source: ffroliva/gflow-cli on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.