FORGE Ship
Use this skill to reconcile and release FORGE-governed work. Task-level closeout
(critique/security/evaluation, task state) happens in forge-execute-task; ship
handles integration, the release, and closeout evidence.
Reads
docs/forge/CONTEXT.md (if present), docs/forge/AI.md, the task(s) being
shipped, and TEAM.md only in team mode or when branch policy requires it.
Release behavior is configured: release_management, version_source,
changelog, the release topology (below), and application_docs/export config.
Release is two stages
A tag is too late to gate an invalid changelog or stale docs, so validation is
authoritative in Prepare, before any tag exists.
Prepare (authoritative, pre-tag)
- Confirm each shipped task's gates are complete and it is integrated.
- Select the next version from
release_management + version_source; update
that source (never invent a VERSION file when the project carries its
version elsewhere).
- Curate
CHANGELOG.md: move Unreleased entries under the new version
(references/release-management.md; commit types suggest sections, a human
curates).
- Validate docs and changelog:
forge_release_check.py --version <v> [--docs-root <docs_root> --changelog <file>]. It fails on a missing
changelog entry or docs past their review window (forge_docs_staleness.py).
- If
application_docs and export targets are configured, regenerate exports to
an in-repo staging path with forge_docs_export.py (fail-closed on
classification). Never write outside the repo during Prepare.
- Run project checks. Record a release manifest (version, previous_version,
content_commit, included_tasks) as evidence.
- Commit release content, then generated evidence (keep the manifest's
content_commit acyclic — it names the content commit, not the evidence
commit).
Publish
- Release per the configured topology:
- normal repo: merge/tag per project policy
- clean-main (
dev_only_paths set): <skill-root>/assets/scripts/forge-promote.sh -m "release: <v>" --tag v<v> from the integration branch — never merge into release_branch directly
- tool project:
forge-tool-workflow / publish scripts
- multi-package monorepo: not yet supported — stop and ask
- Push branch/tag with explicit authorization; publish provider release notes
from the changelog; publish or hand off the wiki/vault export (external-vault
writes require authorization).
- Record release evidence and move shipped tasks to
complete.
Hard Stops
Stop when a shipped task's gates are incomplete, forge_release_check.py fails,
release acceptance is not observable, the merge/promotion violates branch policy,
multiple independent version sources are detected (multi-package unsupported), or
a doc export fails classification.
Evidence Required
- release manifest (version, previous_version, content_commit, included_tasks)
- updated changelog entry and bumped version source
- release check result; export manifest when docs are published
- merged PR/MR, release commit/tag, or explicit human acceptance
- claim release metadata in team mode
1---2name: forge-ship3description: Use when the user asks to merge, release, promote, reconcile, or close out work in a repo containing `docs/forge/` or governed by FORGE. Not for per-task commits; those complete inside forge-execute-task.4---56# FORGE Ship78Use this skill to reconcile and release FORGE-governed work. Task-level closeout9(critique/security/evaluation, task state) happens in `forge-execute-task`; ship10handles integration, the release, and closeout evidence.1112## Reads1314`docs/forge/CONTEXT.md` (if present), `docs/forge/AI.md`, the task(s) being15shipped, and `TEAM.md` only in team mode or when branch policy requires it.16Release behavior is configured: `release_management`, `version_source`,17`changelog`, the release topology (below), and `application_docs`/export config.1819## Release is two stages2021A tag is too late to gate an invalid changelog or stale docs, so validation is22authoritative in Prepare, before any tag exists.2324### Prepare (authoritative, pre-tag)25261. Confirm each shipped task's gates are complete and it is integrated.272. Select the next version from `release_management` + `version_source`; update28 that source (never invent a `VERSION` file when the project carries its29 version elsewhere).303. Curate `CHANGELOG.md`: move `Unreleased` entries under the new version31 (`references/release-management.md`; commit types suggest sections, a human32 curates).334. Validate docs and changelog: `forge_release_check.py --version <v>34 [--docs-root <docs_root> --changelog <file>]`. It fails on a missing35 changelog entry or docs past their review window (`forge_docs_staleness.py`).365. If `application_docs` and export targets are configured, regenerate exports to37 an in-repo staging path with `forge_docs_export.py` (fail-closed on38 classification). Never write outside the repo during Prepare.396. Run project checks. Record a release manifest (version, previous_version,40 content_commit, included_tasks) as evidence.417. Commit release content, then generated evidence (keep the manifest's42 `content_commit` acyclic — it names the content commit, not the evidence43 commit).4445### Publish46478. Release per the configured topology:48 - normal repo: merge/tag per project policy49 - clean-main (`dev_only_paths` set): `<skill-root>/assets/scripts/forge-promote.sh -m "release: <v>" --tag v<v>` from the integration branch — never merge into `release_branch` directly50 - tool project: `forge-tool-workflow` / publish scripts51 - multi-package monorepo: not yet supported — stop and ask529. Push branch/tag with explicit authorization; publish provider release notes53 from the changelog; publish or hand off the wiki/vault export (external-vault54 writes require authorization).5510. Record release evidence and move shipped tasks to `complete`.5657## Hard Stops5859Stop when a shipped task's gates are incomplete, `forge_release_check.py` fails,60release acceptance is not observable, the merge/promotion violates branch policy,61multiple independent version sources are detected (multi-package unsupported), or62a doc export fails classification.6364## Evidence Required6566- release manifest (version, previous_version, content_commit, included_tasks)67- updated changelog entry and bumped version source68- release check result; export manifest when docs are published69- merged PR/MR, release commit/tag, or explicit human acceptance70- claim release metadata in team mode