forge-release

A release workflow for moving an approved Forge issue into production. It squash-merges the issue branch into the production branch, deploys it when configured, and closes the issue.

In plain words
What is it for?
Use it when an issue has passed staging approval and is ready to merge, deploy, and close.
Why use it?
It keeps a release limited to that issue's changes and verifies that the merge really happened before marking the issue released. This avoids falsely reporting code as live.

Skill for Claude CodeCodex

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 skills/sidcorp-co/forge/forge-release
Any agent
npx skills add SidCorp-co/forge --skill forge-release
Clone the repo
git clone --depth 1 https://github.com/SidCorp-co/forge

Made for: Claude Code, Codex.

Per session 89 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 5,066 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.00089 $0.05066
Opus 5 $0.00044 $0.02533
Sonnet 5 $0.00018 $0.01013
Haiku 4.5 $0.00009 $0.00507

Measured 2d ago against content hash 873c8ab64ce4, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

forge-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.

packages/core/skills/forge-release/SKILL.md · 274 lines

How it starts

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

Forge Release

The final step in the issue pipeline: released → closed. Lands the issue's own changes onto the production branch and triggers deployment. This is a lightweight skill — no codebase exploration, no review. Just land the diff, deploy, clean up.

The ISS-* branch holds this issue's changes. Release = get this issue's own changes — and only those — onto productionBranch, then deploy and close. The one non-obvious trap is called out in Step 6.

State-never-lies (VISION: state-never-lies): merged_at and the "Released" comment are promises other issues rely on — a blocks-gate/decompose child dispatches the moment merged_at is stamped, trusting the base branch now has this code. Never let branch-name equality or a push exit code stand in for verified git ancestry (see Step 4 and Step 8) — a wrongly-skipped merge or a silently-failed push must halt the release, not complete it.

Usage

/forge-release <documentId>

Tools

  • forge_issues — get issue data, update status
  • forge_comments — post release comment
  • forge_config — get baseBranch, productionBranch, Coolify config
  • forge_coolify_deploy — trigger production deploy (if configured)
  • Bash — git merge, push, branch cleanup

Terminal-exit invariant

This stage may end in exactly one of these states. There is no other legal exit:

Exit Requires
closed the verify-land gate returned LANDED, and the release comment is posted
reopen a comment naming what is missing (gate returned NOT LANDED, or an unlandable conflict)
waiting a comment naming the human decision needed

Exiting while the issue is still at released is forbidden, including on a partial or confused run. If you cannot determine the state, post what you observed and set waiting — a silent exit at released leaves the reconciler re-dispatching this stage forever while the run holds a concurrency slot.

Re-entrancy. A re-dispatch means a prior attempt may have done part of the work. Establish what already landed before doing anything:

Read the full file on GitHub · 274 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 · 274 lines · 89 tokens per session scan A 873c8ab64ce4

Subscribe to this mod's changes

forge-release is a skill published in the GitHub repository SidCorp-co/forge (5 stars, last pushed 2d ago), licensed Apache-2.0. It adds 89 tokens to every session and 5,066 once invoked, about $0.0004 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.