Public Release Gate
Treat a Release as a separate deliverable. Repository commit checks do not
constitute a Release review; inspect the source, final artifacts, release page,
and deployment state together. The sibling public-repo-git-gate skill owns
the public-content and branch gates for commit, push, and PR operations. Do not
repeat this skill's artifact checks for an ordinary commit.
This skill is a manual review workflow. A passing script or CI job alone does
not prove every Release condition. Reuse the project's existing automated
checks first, then manually verify final artifacts, the hosting platform, and
production. Mark the gate as passed only when the required evidence exists.
Keep the review read-only by default. Creating a tag or GitHub Release,
uploading attachments, changing production configuration, or deploying each
requires explicit user authorization. Passing this gate does not authorize
any of those actions.
Inputs and output
Before starting, identify the repository root, target version and tag, final
artifact paths, third-party resource inventory, production URL, and
project-specific configuration.
Return a structured record containing at least:
Release gate: PASS | BLOCKED | FAILED
Repository:
Version / tag:
Build and artifacts:
Publicity and sensitive-data scan:
Third-party notices:
Deployment and response headers:
Release page and attachments:
Evidence:
Skipped checks / residual risks:
PASS means that all required evidence was checked. BLOCKED means that an
external state, permission, or user decision is missing. FAILED means that
the review found a problem. Neither non-passing state permits creating a tag,
GitHub Release, or continuing deployment.
Workflow
- Identify repository visibility, technology stack, build commands, artifact
directories, version sources, third-party resources, and deployment entry
points.
- Check that
package.json and lockfiles, or the project's version files,
agree with the README, CHANGELOG, Release Notes, and tag.
- Build the final artifacts from a clean state. Scan both the artifact
directories and final archives; do not scan only the source tree.
- Check for secrets, personal or customer data, internal business or legal
material, private model or service configuration, and files that do not need
to be public.
- For vendored code, models, WASM, fonts, and media, verify the source,
version or commit, license, redistribution terms, and SHA-256 individually.
The license inventory must match the final resources.
- After deployment, check HTTPS, HTTP status, key static entry points, CSP,
HSTS, X-Frame-Options, and other project-required response headers.
- Before creating a GitHub Release, verify the tag, Release page, and every
attachment. Attachments must come from scanned final artifacts; calculate
and record their SHA-256 values.
- When database migrations, edge functions, or external configuration are
involved, confirm production state separately. Passing CI does not prove
that a production migration ran.
Reuse project checks
Prefer the project's existing release:check. If none exists, create
release-gate.config.json in the project root with at least:
{
"versionFiles": ["package.json"],
"artifactPaths": ["dist"],
"vendoredPaths": [],
"noticeFiles": ["THIRD_PARTY_NOTICES.md"],
"requireDeploymentChecklist": true,
"deploymentChecklist": "docs/release-checklist.md",
"production": {
"requiredHeaders": [],
"forbiddenHeaderValues": [],
"paths": ["/"]
}
}
This is a cross-project convention example, not a universal validation
schema. The project's own release:check must validate its actual fields and
paths.
Keep project-specific details in the configuration, such as Supabase
migrations, a Vercel production URL, Piper resources, and required headers.
Do not copy one project's assumptions into another.
Prefer to provide these commands or equivalent entry points:
npm run verify # Source, tests, and build
npm run release:check # Release metadata, artifacts, licenses, and deployment checks
When no automated entry point exists, perform the same checks manually and
record the evidence in the PR or Release Notes. Stop the release on any failed
check; do not create the Release first and explain afterward.
Failure, blocking, and recovery
- If you find a secret, personal data, internal material, a missing license,
or an artifact mismatch, stop the release and record the exact path,
attachment, or check item.
- If the production URL, GitHub Release permission, deployment state, or
external configuration is unavailable, mark the gate
BLOCKED. Do not use
a successful local build as a substitute for external evidence.
- After a fix, rerun the failed check and recheck affected versions, artifact
hashes, and attachments. Do not reuse an old
PASS record unchanged.
- Treat exposed secrets or personal data as a security incident, rotate the
credentials, and retain an incident record. Merely deleting a file or
rewriting history does not prove that the risk is gone.
Platform boundaries
Version, build, artifact, and license checks apply across languages and build
systems, but use the commands defined by the project. GitHub Release, HTTP
header, and production-deployment checks depend on the relevant hosting
platform. Do not describe an untested platform CLI, Preview environment, or
local server result as production verification.
Trigger phrases
Treat the following requests as full triggers:
- "Check this Release against the complete public-repository gate."
- "Can this tag be released?"
- "Review the final installer/archive and GitHub Release."
- "Verify this version after launch."
An ordinary request to "check a commit" covers only the commit/PR gate. When
the user mentions a Release, tag, installer, store package, deployment, or
launch, use this skill's complete workflow.
1---2name: public-release-gate3description: Review a public repository release across version and tag consistency, final build artifacts, archives, secrets and internal material, third-party licenses, production response headers, and GitHub Release attachments. Use when the user asks to publish, create a tag or Release, verify a launch, or run the complete public-release gate, adapting checks to the project's configuration.4---56# Public Release Gate78Treat a Release as a separate deliverable. Repository commit checks do not9constitute a Release review; inspect the source, final artifacts, release page,10and deployment state together. The sibling `public-repo-git-gate` skill owns11the public-content and branch gates for commit, push, and PR operations. Do not12repeat this skill's artifact checks for an ordinary commit.1314This skill is a manual review workflow. A passing script or CI job alone does15not prove every Release condition. Reuse the project's existing automated16checks first, then manually verify final artifacts, the hosting platform, and17production. Mark the gate as passed only when the required evidence exists.1819Keep the review read-only by default. Creating a tag or GitHub Release,20uploading attachments, changing production configuration, or deploying each21requires explicit user authorization. Passing this gate does not authorize22any of those actions.2324## Inputs and output2526Before starting, identify the repository root, target version and tag, final27artifact paths, third-party resource inventory, production URL, and28project-specific configuration.2930Return a structured record containing at least:3132```text33Release gate: PASS | BLOCKED | FAILED34Repository:35Version / tag:36Build and artifacts:37Publicity and sensitive-data scan:38Third-party notices:39Deployment and response headers:40Release page and attachments:41Evidence:42Skipped checks / residual risks:43```4445`PASS` means that all required evidence was checked. `BLOCKED` means that an46external state, permission, or user decision is missing. `FAILED` means that47the review found a problem. Neither non-passing state permits creating a tag,48GitHub Release, or continuing deployment.4950## Workflow51521. Identify repository visibility, technology stack, build commands, artifact53 directories, version sources, third-party resources, and deployment entry54 points.552. Check that `package.json` and lockfiles, or the project's version files,56 agree with the README, CHANGELOG, Release Notes, and tag.573. Build the final artifacts from a clean state. Scan both the artifact58 directories and final archives; do not scan only the source tree.594. Check for secrets, personal or customer data, internal business or legal60 material, private model or service configuration, and files that do not need61 to be public.625. For vendored code, models, WASM, fonts, and media, verify the source,63 version or commit, license, redistribution terms, and SHA-256 individually.64 The license inventory must match the final resources.656. After deployment, check HTTPS, HTTP status, key static entry points, CSP,66 HSTS, X-Frame-Options, and other project-required response headers.677. Before creating a GitHub Release, verify the tag, Release page, and every68 attachment. Attachments must come from scanned final artifacts; calculate69 and record their SHA-256 values.708. When database migrations, edge functions, or external configuration are71 involved, confirm production state separately. Passing CI does not prove72 that a production migration ran.7374## Reuse project checks7576Prefer the project's existing `release:check`. If none exists, create77`release-gate.config.json` in the project root with at least:7879```json80{81 "versionFiles": ["package.json"],82 "artifactPaths": ["dist"],83 "vendoredPaths": [],84 "noticeFiles": ["THIRD_PARTY_NOTICES.md"],85 "requireDeploymentChecklist": true,86 "deploymentChecklist": "docs/release-checklist.md",87 "production": {88 "requiredHeaders": [],89 "forbiddenHeaderValues": [],90 "paths": ["/"]91 }92}93```9495This is a cross-project convention example, not a universal validation96schema. The project's own `release:check` must validate its actual fields and97paths.9899Keep project-specific details in the configuration, such as Supabase100migrations, a Vercel production URL, Piper resources, and required headers.101Do not copy one project's assumptions into another.102103Prefer to provide these commands or equivalent entry points:104105```text106npm run verify # Source, tests, and build107npm run release:check # Release metadata, artifacts, licenses, and deployment checks108```109110When no automated entry point exists, perform the same checks manually and111record the evidence in the PR or Release Notes. Stop the release on any failed112check; do not create the Release first and explain afterward.113114## Failure, blocking, and recovery1151161. If you find a secret, personal data, internal material, a missing license,117 or an artifact mismatch, stop the release and record the exact path,118 attachment, or check item.1192. If the production URL, GitHub Release permission, deployment state, or120 external configuration is unavailable, mark the gate `BLOCKED`. Do not use121 a successful local build as a substitute for external evidence.1223. After a fix, rerun the failed check and recheck affected versions, artifact123 hashes, and attachments. Do not reuse an old `PASS` record unchanged.1244. Treat exposed secrets or personal data as a security incident, rotate the125 credentials, and retain an incident record. Merely deleting a file or126 rewriting history does not prove that the risk is gone.127128## Platform boundaries129130Version, build, artifact, and license checks apply across languages and build131systems, but use the commands defined by the project. GitHub Release, HTTP132header, and production-deployment checks depend on the relevant hosting133platform. Do not describe an untested platform CLI, Preview environment, or134local server result as production verification.135136## Trigger phrases137138Treat the following requests as full triggers:139140- "Check this Release against the complete public-repository gate."141- "Can this tag be released?"142- "Review the final installer/archive and GitHub Release."143- "Verify this version after launch."144145An ordinary request to "check a commit" covers only the commit/PR gate. When146the user mentions a Release, tag, installer, store package, deployment, or147launch, use this skill's complete workflow.