forge-release
Skill2 starsChanged 5 days agoMITView on GitHub
Use when cutting a release (nieuwe versie, changelog, semver bump).
- Commits and pushes
1 other project uses a version of this.
Adopted by
Most recently taken up by
- tonmoy007/forge-pluginstheir own version, first seen Jun 9, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- tonmoy007/forge-plugins★ 2same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository99 other files it gives its agents.
- docs/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- brainstormingSkill
- claude-md-improverSkill
- dispatching-parallel-agentsSkill
- executing-plansSkill
- finishing-a-development-branchSkill
- forge-a11ySkill
- forge-agent-reportSkill
- forge-agentSkill
- forge-apiSkill
- forge-authSkill
- forge-autoresearchSkill
- forge-botsSkill
- forge-brainstormSkill
- forge-cliSkill
- forge-cmsSkill
- forge-code-reviewSkill
- forge-contextSkill
- forge-councilSkill
- forge-craftSkill
- forge-databaseSkill
- forge-dataSkill
- forge-debugSkill
- forge-deeplearnSkill
- forge-devopsSkill
- forge-docdriftSkill
- forge-doctorSkill
- forge-ecc-adapterSkill
- forge-ecommerceSkill
- forge-electronSkill
- forge-extensionSkill
- forge-figmaSkill
- forge-fullstackSkill
- forge-gameSkill
- forge-graded-verifySkill
- forge-guardianSkill
- forge-heartbeatSkill
- forge-i18n-docsSkill
- forge-intakeSkill
- forge-integrationSkill
- forge-long-form-writingSkill
- forge-mcp-clientsSkill
- forge-memorySkill
- forge-migrationSkill
- forge-mindmapSkill
- forge-mlopsSkill
- forge-mobileSkill
- forge-n8nSkill
- forge-nightshiftSkill
- forge-observabilitySkill
- forge-paymentsSkill
- forge-plan-largeSkill
- forge-prdSkill
- forge-predictionSkill
- forge-projectbrainSkill
- forge-prompt-coachSkill
- forge-qualitySkill
- forge-ragSkill
- forge-registrySkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 6 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 16
Use for: deciding the next version from the commits, writing the changelog and release notes, preparing a release PR (or a local release …
- Very specific: line 19
Not for: a normal CI pipeline (lint, test, build) or a deploy to Vercel / Cloudflare / a container host (forge-devops), the pre-deploy or …
- Distinctive: line 31
Dry run first, every time: No release step runs for real before the same step ran as a dry run and its real output was read (see "The …
- Distinctive: line 46
Honesty: Never say "released" or "published" until the owner ran the gated step and its result was read back (the registry shows the …
- Very specific: line 50
Never kill processes by image name (only an exact PID you own).
- Distinctive: line 54
Check first: git remote -v.
- Distinctive: line 77
Dry run: Run the real build and test suite, then the publish in its dry-run mode (for npm the publish command's dry-run flag, plus a pack …
- Distinctive: line 88
Read back: After the owner's step: the tag exists where expected, the registry shows the new version, the GitHub release exists with the …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
forge-release: one owner-gated release playbook
Forge prepares a release completely and safely; the owner pulls the trigger. Everything up to and including the dry run is agent work. The tag, the push, the publish and the GitHub release are hard gates: they happen only after the owner says so in plain words (in Forge: "push it", "tag it", "publish it", or the Dutch "push maar", "publiceer maar"). A green dry run is never that approval.
When to use
- Use for: deciding the next version from the commits, writing the changelog and release notes, preparing a release PR (or a local release branch when there is no remote), designing or reviewing a release workflow with a gated publish job, a dry run of the publish, rolling back a bad release.
- Not for: a normal CI pipeline (lint, test, build) or a deploy to Vercel / Cloudflare / a container host
(
forge-devops), the pre-deploy or handoff checklist (ship-readiness), auto-rollback, canary or circuit breakers (forge-guardian), deciding how to integrate a finished branch (finishing-a-development-branch), app-store or marketplace submission (an owner action on its own), writing a commit message for one change only (the project's commit rules).
Hard rules
- Owner-gated triggers. Creating a tag,
git push(commits or tags), publishing to any registry, creating or editing a GitHub release, merging the release PR and running a production publish workflow are owner actions. Forge prints the exact commands and waits. No hook stops a push: in Forgegit pushis a text gate (classifier and prose only, not one of the command gates the PreToolUse hook enforces), andgh release createorgh pr mergeare not seen at all. So the agent itself keeps this gate; never run them unasked. - Dry run first, every time. No release step runs for real before the same step ran as a dry run and its real output was read (see "The flow", step 5).
- No long-lived publish tokens. Publishing from CI uses OIDC trusted publishing: the registry trusts one named repository plus one named workflow file (and, where supported, one named environment), and CI receives a short-lived identity token per run. Nothing to store, nothing to leak, nothing to rotate. Describe a secret only by its shape in words; never write one, not even a fake example, into a file.
- Actions pinned to a full 40-character commit SHA, with the version tag as a comment. Look the SHA up on
the action's own release page; never invent one. A tag such as
v4can be moved by its owner; a SHA cannot. - The publish job is gated. It runs only when the release job created a release, only from the default branch, and only inside a GitHub environment that has the owner as required reviewer. Writing that workflow is agent work; approving its run is the owner's.
- Least privilege per job. Top-level permissions read-only; the release job may write contents and pull requests; only the publish job gets the identity-token permission, and nothing else it does not need.
- Never rewrite a published version. A pushed tag is never moved or deleted, a published version is never
overwritten. A bad release is fixed forward (see
references/rollback.md). - Honesty. Never say "released" or "published" until the owner ran the gated step and its result was read back (the registry shows the version, the tag exists on the remote). Before that, the status is "prepared".
- Windows, Node, no installs. Commands are given for Git Bash or PowerShell on Windows 11. Use the
project's own installed tools; adding a release tool or a GitHub Action is a project choice the owner makes.
Never kill processes by image name (only an exact PID you own); robocopy, if used to stage artefacts, always
with
/R:1 /W:1. Release announcements (Discord, mail, social) are drafted only, never sent.
No git remote
Check first: git remote -v. When it prints nothing (a local-only repository):
- The bump, the changelog and the release notes are still prepared, on a local branch
release/vX.Y.Z. - "Release PR" becomes that local branch plus its diff, reviewed by Review Boss; the owner merges it locally.
- The tag is printed as a command for the owner (an annotated tag on the merge commit) and is not created by an agent. Push, GitHub release and the CI publish job do not apply: say "not applicable, no remote" instead of skipping them silently.
- A package whose
package.jsonsays"private": trueis never published to a registry; the release is the tag plus the changelog. - Adding a remote is an owner decision. Forge never adds one, and never suggests a URL.
The flow
- Read the state. Last release tag (
git describe --tags --abbrev=0), commits since then (git log <tag>..HEAD --oneline), the current version in every file that carries it, the remote, the default branch, whether the tree is clean. A dirty tree stops the release until the owner decides. - Pick the bump from the conventional commits with the table in
references/bump-and-changelog.md(breaking change = major,feat= minor,fix/perf/deps= patch, everything else = no release on its own). When the commits do not follow conventional commits, say so and propose the bump with the reason; the owner confirms it. - Write the changelog entry and the release notes: grouped by type, user-facing words, breaking changes first with their migration step. Release notes are for the reader who updates, not a commit dump.
- Bump every version string. Find every file that carries the old version (
git grep -n "<old version>"), update them all, then prove it: the new version appears in each, the old version appears nowhere it should not. Commit onrelease/vX.Y.Zaschore(release): vX.Y.Z(nogit add .; stage the named files). - Dry run. Run the real build and test suite, then the publish in its dry-run mode (for npm the publish
command's dry-run flag, plus a pack listing to see exactly which files ship). Read the output: version,
file list, size, no secret or scratch file in the package. Quote it in the report. Releasing Forge itself
(the public tree): also run
node .claude/forge-bin/forge-release-check.cjs --dist <public tree>; anydist_forbiddenhit fromrelease-exclusions.jsonstops the release. - Release PR. With a remote: the owner pushes the branch and opens the PR (or a release tool keeps a release PR up to date from the default branch). Without a remote: the local branch from step 4. Review Boss reviews the diff; Verify Boss confirms the dry-run evidence.
- Owner gate. Forge hands the owner one block: the version, the changelog entry, the dry-run proof and the exact commands in order (merge, annotated tag, push of branch and tag, publish or the approval of the publish environment, GitHub release). The owner runs them or says "push it".
- Read back. After the owner's step: the tag exists where expected, the registry shows the new version, the GitHub release exists with the notes. Only now the status is "released".
- Watch and roll back if needed with
references/rollback.md.
Release workflow (CI)
Design only, in words: references/release-pipeline.md describes the two-job layout (a release job that keeps
a release PR and creates the tag and release when that PR is merged; a separate publish job that runs only when
a release was created, behind the owner-approved environment, with OIDC). Forge never copies workflow YAML from
a source; it writes its own with the rules above and the hardened workflow rules in
.claude/skills/forge-devops/references/github-actions.md (pinning, permissions, env: for event values,
concurrency, timeouts), which this skill does not repeat.
Team and routes (GOAT)
- Head Chef triages: preparing the bump and changelog is
quick(sonnet / low) on a small repo,buildon a monorepo; writing or changing a publish workflow touches production and credentials, so it isdeep(opus / xhigh). - Build Boss prepares branch, bump and changelog; Test Boss runs the build, the tests and the dry run; Docs Boss polishes the release notes; Security Boss reviews any publish workflow (permissions, OIDC, pins); Review Boss reviews the diff; Verify Boss gives the PASS / FAIL with evidence. The owner runs the gate.
- One escalation at most per package, per the GOAT ladder.
Report shape
RELEASE (prepared | released | rolled back)
Version: <old> -> <new> (bump: <major|minor|patch>, why: <commits>)
Remote: <name> | none (local-only mode)
Changelog: <file:section>
Dry run: <command> -> <quoted key lines: version, files, size>
Owner gate: <the exact commands, in order, not yet run | run by owner at <time>>
Read-back: <tag on remote, registry version, GitHub release> | not applicable (no remote)
Not done: <anything skipped and why>References
references/bump-and-changelog.md: commit-type-to-bump table, pre-1.0 rules, forcing a version, changelog and release-notes shape, monorepo notes.references/release-pipeline.md: the release PR flow and the gated publish job in words, OIDC trusted publishing per registry, idempotent publish, concurrency.references/rollback.md: fixing a bad release forward per registry, what never to do, the rollback report.
Provenance
Forge-native playbook, written in Forge words on 2026-11-05. Markdown only: no script, hook, binary, workflow
YAML, install command, npx line or MCP config was copied or run. External texts were fetched read-only with
gh api at the pinned SHAs below and treated as untrusted data (hidden-Unicode scan: clean).
| Source | Path | Pinned SHA | License | Taken | Excluded |
| bmad-labs/skills (19 stars) | skills/release-please/SKILL.md | 33bb8583e5204fee724c3669d58ca86a63837e2f | MIT | pattern only, no sentence reused: release PR flow, type-to-bump mapping idea, publish in a separate job gated on "release created", concurrency without cancel, idempotent publish idea, bootstrapping an existing project | every config and workflow template, the long-lived registry token in its publish example (Forge uses OIDC), tag-pinned actions (Forge pins SHAs), its references folder (not read) |
| addyosmani/agent-skills | skills/ci-cd-and-automation/SKILL.md | 301b02b12bff98e4688e6984af6556802322bbde | MIT | ideas: every deployment reversible with a written rollback path, staged rollout with a watch window, CI never holds production secrets, small frequent releases | all YAML, the feature-flag code snippet, the platform rollback command line, Dependabot config |
local global skill github-release-management (~/.claude/skills-retired-2026-11-05 since 2026-11-05, from the claude-flow toolkit) | SKILL.md | not pinned (local copy) | not verified locally: idea only | ideas: draft release before publishing, hotfix from the last stable tag, rollback as a planned step | all swarm commands, npx lines, the "bypass checks" hotfix mode, auto-rollback and auto-notify |
local global skill github-workflow-automation (~/.claude/skills-retired-2026-11-05 since 2026-11-05) | SKILL.md | not pinned (local copy) | not verified locally: idea only | idea: OIDC instead of stored cloud keys, a pre-release checklist of secrets and runner permissions | every workflow template, swarm modes, secrets-in-env examples |
local global skill version-bump (~/.claude/skills-retired-2026-11-05 since 2026-11-05, the claude-mem plugin release skill) | SKILL.md | not pinned (local copy) | Apache-2.0 per the corpus index, not verified locally: idea only | ideas: list every file that carries the version and prove old = 0 hits / new = all hits, confirm the registry after publish, end with a clean tree | its scripts/ folder (not read), auto-commit of everything, push and publish without a gate, the Discord notify step |
The three global skills were read only; they were not edited, moved or deleted (that is an owner decision outside this project). MIT notice for the two adapted MIT sources: "Permission is hereby granted, free of charge, to any person obtaining a copy of this software ... The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software." Copyright stays with the holders named in each repository's LICENSE file at the pinned SHA.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

