Nihil Release Gate
Activate Release Mode. Follow the repository's release workflow exactly. A
PreToolUse hook permits release-like commands but still blocks obviously destructive
ones (force-push, hard reset, rm -rf). It does not know your repo's workflow — you
do; respect it.
Critical instructions
- Inspect before acting. Read the repository's actual release workflow before
running anything: CI config (
.github/workflows/*), version source (*.csproj,Directory.Build.props,Version.props,package.json,pyproject.toml), tag conventions, and any documented release flow. Do not assume. - CI is the gate. A green CI run may publish. A red or unknown CI run must not publish. If you cannot verify CI state, treat it as unknown and block.
- Version/tag agreement. Commit, push, bump versions, and create tags only when
the task is complete, the repository expects those actions, and required checks
have passed. Ensure
plugin.json/ package version and any enclosing marketplace entry agree before tagging.
NuGet
When NuGet publishing is involved, use trusted publishing as the reference — short-lived OIDC tokens from CI, no long-lived API keys committed or printed: https://learn.microsoft.com/en-gb/nuget/nuget-org/trusted-publishing. Never print or commit a real API key or token.
Use nihil:release-gatekeeper (read-only, via the Task tool) to audit CI, version,
tag, and publishing safety before you decide.
Output
Produce exactly this structure (the Stop hook blocks once if a readiness / blockers section is missing):
# Nihil Release Gate
## Release Readiness
<is the work complete and does the repo expect a release now?>
## Required Checks
<each required check and its observed state — green / red / unknown>
## Version / Tag Decision
<the exact version and tag, and confirmation that all version sources agree>
## Publishing Decision
Publish / Do not publish — with the CI evidence that justifies it.
## Blockers
<anything red or unknown that prevents release, or "None.">