agentleFS
ai-agent-assemblyai-agent-assembly/agent-assembly/.claude/skills/release-security-gate/SKILL.md

release-security-gate

Skill4 starsChanged 3 months agoApache-2.0View on GitHub

Run the release-gate security review for an agent-assembly release, scaled by release type (patch / minor / major). This gate WRAPS Claude Code's native /security-review diff scanner (and, at major tier, the official anthropics/claude-code-security-review GitHub Action) rather than performing its own diff-scanning — it composes their findings with a dependency/advisory audit and trust-boundary review into a single PASS/BLOCK sign-off. Patch = dependency/advisory audit + native /security-review on the release diff; minor = + changed-attack-surface review via the trust-boundary delta checklist; major = + full threat-model refresh + pen-test checklist + the claude-code-security-review Action. Emits a PASS/BLOCK sign-off artifact and BLOCKS on any unaddressed High/Critical finding. Use as the stage-0 pre-cut gate before /release-tag-cut. NOTE: this is /release-security-gate — distinct from the built-in /security-review it invokes.

The file

We split this skill into the rules it gives an agent

4 rules. About 0 are common, 2 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    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
  1. Distinctive:

    BLOCK: if any Critical or High finding is unaddressed (not fixed, not accepted-with-owner-justification recorded in the artifact).

    line 102
  2. Distinctive:

    PASS: only when no Critical/High remains unaddressed and the tier's required sections are all completed.

    line 104
  3. Very specific:

    Commit it (📝 (release): Security sign-off for v<version>) so the release has an auditable, blocking record.

    line 138
  4. Very specific:

    Run from the agent-assembly/ checkout (or a worktree) with remote fetched.

    line 147

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

release-security-gate

The release-gate security review. It runs before a release tag is cut, scales the depth of review to the release type, and produces a committed sign-off artifact that the release-readiness check enforces. A release with an unaddressed High or Critical finding cannot proceed.

This gate does not reimplement diff vulnerability scanning. It wraps Claude Code's built-in /security-review (Anthropic's diff scanner) on the release delta, and at major tier additionally wires the official anthropics/claude-code-security-review GitHub Action on the release branch — folding their findings into this gate's PASS/BLOCK sign-off alongside the dependency/advisory audit and trust-boundary review. This skill is invoked as /release-security-gate; the native scanner it calls remains reachable as /security-review.

This SKILL.md is a lean overview; the per-tier checklist detail lives in REFERENCE.md. The threat model it refreshes is docs/src/security/release-threat-model.md; the per-release delta form it fills is docs/src/security/trust-boundary-review-checklist.md.

Where this sits in the release relay

A full release is a relay (see release-tag-cut/SKILL.md). This skill is stage 0 — the pre-cut gate, run before release-tag-cut:

  1. /release-security-gate <version> (this skill) — review scaled by release type; write the sign-off artifact under docs/release/security-signoff/. A BLOCK verdict, or any unaddressed High/Critical, stops the release here.
  2. /release-tag-cut <version> — bump + tag + push. Its pre-conditions now require a Verdict: PASS sign-off for <version> (enforced by scripts/release-readiness.sh).
  3. fan-out (automatic, release.yml).
  4. /release-validate-channels v<version> (read-only).
  5. /homebrew-tap-merge <PR> (write, tap repo).

When to use

  • The operator is preparing to cut a release tag and needs the mandatory pre-cut security sign-off (every patch / minor / major).
  • Re-running after addressing findings, to flip a prior BLOCK to PASS.

Triggering phrasing: "Release security gate beta.4", "Run the release security gate for 0.0.1-beta.4", "Sign off the security review before we tag".

When NOT to use

  • Not a release. This is a release gate (/release-security-gate), not an ad-hoc audit. For a standalone diff review, use the built-in /security-review directly (Anthropic's diff vulnerability scanner — which this gate wraps but does not replace) or open a security ticket.
  • SDK-only release — the SDK repos run their own quality gates; this skill is agent-assembly-monorepo scoped.
  • The sign-off already PASSes for this exact version and nothing changed since — do not regenerate; the artifact is the record.

How to use

Invocation:

/release-security-gate <version>

where <version> is the target literal exactly as it will appear in the tag (e.g. 0.0.1-beta.4, NOT v0.0.1-beta.4).

Release-type detection. Derive patch / minor / major from <version> vs the previous tag (operator may override):

  • patch — within the same pre-release series, the trailing counter advances (e.g. 0.0.1-beta.3 → 0.0.1-beta.4), or the SemVer patch advances.
  • minor — the SemVer minor advances (0.0.1 → 0.1.0), or a pre-release channel is promoted (…beta.N → …rc.1).
  • major — the SemVer major advances (0.x → 1.0.0).

The tiers are additive — minor does everything patch does plus more; major does everything minor does plus more.

The tiers (additive)

TierScope (each tier ADDS to the one above)
patchDependency/advisory audit (cargo deny check advisories, open Dependabot + CodeQL alerts) + release-diff review: invoke the built-in /security-review (Anthropic's diff scanner) on the release delta <prev-tag>..HEAD and fold its findings into the sign-off.
minorpatch + changed-attack-surface review: fill the trust-boundary review checklist against the diff (new endpoints, loosened policy defaults, new egress/IPC surface).
majorminor + full release threat-model refresh (advance the version field + revision table) + the pen-test checklist (REFERENCE.md) + run the official anthropics/claude-code-security-review GitHub Action on the release branch, folding its findings into the sign-off.

Per-tier step detail, the exact commands, and the pen-test checklist are in REFERENCE.md.

Verdict rule (BLOCK on unaddressed High/Critical)

Classify every finding Critical / High / Medium / Low / Info. Then:

  • BLOCK if any Critical or High finding is unaddressed (not fixed, not accepted-with-owner-justification recorded in the artifact).
  • PASS only when no Critical/High remains unaddressed and the tier's required sections are all completed.

A BLOCK verdict stops the release: release-readiness.sh fails the readiness run unless the artifact for <version> contains Verdict: PASS.

The sign-off artifact (output)

The review writes one Markdown file:

docs/release/security-signoff/v<version>.md

It is produced from the template at docs/release/security-signoff/TEMPLATE.md and MUST contain, at minimum:

  • Reviewer and Date.
  • Release type (patch / minor / major) and previous tag.
  • Candidate SHA — the commit this review actually covers (usually git rev-parse HEAD at review time). Must be an ancestor of, or equal to, the QA evidence's candidate.candidate_sha — never a sibling/unrelated commit, and never a commit QA hadn't reached yet. check-release-evidence.py's R11 rule BLOCKs release-tag-guard if this is missing or fails that check (AAASM-6017) — the release-identity invariant is that QA and security verified the same revision, not merely that both happened to say PASS.
  • The findings table (severity · finding · status).
  • The completed trust-boundary review checklist (minor+).
  • A single Verdict: PASS or Verdict: BLOCK line — the exact token Verdict: PASS is what release-readiness.sh greps for. The security gate has no pending state: CANDIDATE_VERIFIED (a QA-only verdict, Core ADR 0042) in a security sign-off is a checker BLOCK.

Commit it (📝 (release): Security sign-off for v<version>) so the release has an auditable, blocking record.

Pre-conditions

  1. Target <version> provided; previous tag resolvable (git describe --tags or operator-supplied).
  2. cargo deny available (or note its absence in the artifact as an Info item + fall back to deny.toml review).
  3. Run from the agent-assembly/ checkout (or a worktree) with remote fetched.

What this skill does NOT do

  • It does not cut the tag (that is /release-tag-cut).
  • It does not fix findings — it classifies and gates; fixes are separate commits/PRs reviewed on their own.
  • It does not touch repos other than ai-agent-assembly/agent-assembly.

Detailed references

  • Per-tier checklist + commands + pen-test list → REFERENCE.md
  • Release relay → release-tag-cut/SKILL.md
  • Gate enforcement → scripts/release-readiness.sh (the sign-off check) and docs/release/RUNBOOK.md.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.