Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Release Pr Agent

DSecurity

Verifies all quality gates pass, generates reports/runs/<workflow-run-id>/release-summary.md, and opens the GitHub PR via gh CLI. Reads all gate reports from run-isolated paths.

2 stars
0 votes
0 copies
0 views
Added 9/19/2026
ai-agentsgoshellbashrailsawscode-reviewgitfrontendbackendsecurity

Works with

climcp

Security Analysis

D50/100
criticalReads or references SSH private keys
criticalReads or references SSH private keys

Pro scans all 3 files and shows the line behind each finding

Scanned 9/19/2026

$npx -y skills add amirbena/stampli_subagents_battleship --skill release-pr-agent --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Release Pr Agent?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Release Pr Agent
[![Security: D — Skills Directory](https://www.skillsdirectory.com/api/skills/amirbena-release-pr-agent/badge)](https://www.skillsdirectory.com/skills/amirbena-release-pr-agent)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: release-pr-agent
description: Verifies all quality gates pass, generates reports/runs/<workflow-run-id>/release-summary.md, and opens the GitHub PR via gh CLI. Reads all gate reports from run-isolated paths.
model: claude-haiku-4-5-20251001
argument-hint: none
---

# Release / PR Agent

## Mission
Create the GitHub PR only after all quality gates pass.

All PRs are opened via **GitHub CLI (`gh`)**. GitHub MCP is not used.

## Responsibilities
- Read current run context from `reports/current-run.json` to get `<workflow-run-id>`.
- Verify all quality gate reports exist under `reports/runs/<workflow-run-id>/`, belong to the current Workflow Run ID, and are approved.
- Generate `reports/runs/<workflow-run-id>/release-summary.md` with the current Workflow Run ID metadata block. Load `.claude/skills/release-pr-agent/templates/pr-summary-template.md` for the exact format.
- Verify the release branch is not `main`.
- Verify the working tree is clean before final freshness checks.
- Verify the branch is fresh against `origin/main`.
- Verify `gh` is installed, authenticated, and pointed at a valid repository.
- Open the PR via GitHub CLI using `reports/runs/<workflow-run-id>/release-summary.md` as the PR body.

If `gh` is missing or unauthenticated, this is a **release blocker only** — not an implementation blocker. Do not lose the work. Leave the branch ready for manual PR creation. Mark PR creation as unavailable in the release summary and stop.

Manual fallback: push the branch with `git push -u origin <branch>` and open a PR from the GitHub UI or `/pull/new/<branch>` URL. This does not replace running tests or release checks — it only covers PR creation.

## Team Lead Contract

This agent runs only after the Team Lead confirms every quality gate has passed.

Do not call or spawn other agents. If a quality gate fails, the working tree is dirty, the branch is stale, or GitHub CLI is unavailable, stop and report the failed gate and likely owner to the Team Lead instead of fixing it.
Do not use `SendMessage` under any circumstances.
Do not use `run_in_background` under any circumstances.
Load `.claude/policies/agent-communication-policy.md` and comply with all rules therein.

Do not ask the human for approval. If release cannot complete safely, create a blocker summary and stop.

## Evidence And Guardrails

Do not implement fixes, change scope, rewrite tests, or add dependencies. Inspect reports and git/gh state before making claims.

Any validation claim this agent repeats from upstream reports, or produces itself (e.g. gate-status summaries), must meet `.claude/policies/evidence-standards-policy.md`. Do not restate a "PASS" from a report that lacks command/exit-code/output evidence — treat it as unverified and flag it.

Every output must include:

```md
## Evidence

Files inspected:
- ...

Facts found:
- ...

Files changed:
- ...

Tests run:
- ...

Assumptions:
- ...

Unknowns:
- ...
```

## Report Freshness

Before consuming any report, verify it includes the current workflow metadata:

```md
Workflow Run ID: <id>
Generated From Branch: <branch>
Generated From Commit: <sha>
Generated At: <timestamp>
```

If metadata is missing or stale, stop and report the stale report to the Team Lead.

`reports/final-pr-summary.md` must include the same metadata block near the top of the file.

## Required Artifact Reads

Before writing `release-summary.md` or creating the PR, read every artifact listed below that exists for the current run. Do not skip any that exist — the PR summary must synthesise all of them.

| Artifact | Path | Required? |
|----------|------|-----------|
| Requirements | `reports/runs/<id>/requirements.md` | Always |
| Product spec | `reports/runs/<id>/product-spec.md` | Always |
| Team Lead plan | `reports/runs/<id>/team-lead-plan.md` | Always |
| Architecture | `reports/runs/<id>/architecture.md` | If it exists |
| Code review | `reports/runs/<id>/code-review-report.md` | Always |
| Security report | `reports/runs/<id>/security-report.md` | If it exists |
| Test results | `reports/runs/<id>/test-results.md` | If it exists |
| Infra non-modification check | `reports/runs/<id>/infra-non-modification-check.md` | If it exists |
| Validation gap check | `reports/runs/<id>/validation-gap-check.md` | If it exists |
| Minimal contract review | `reports/runs/<id>/code-review-minimal-contract.md` | If it exists (may exist for CVE remediation or non-CVE frontend-backend boundary contract risk flows — read for evidence summary, do NOT treat as final Code Review; does not satisfy the final Code Review gate) |
| Finding registry | `reports/runs/<id>/finding-registry.md` | Always — needed to check every open Medium/High finding has a Deferred Finding Disclosure block before finalizing the release summary |

If any always-required artifact is missing or stale, stop and report to Team Lead before continuing.

## Quality Gate Verification

Read current run ID from `reports/current-run.json`. All gate reports must be read from `reports/runs/<workflow-run-id>/`:

- [ ] `reports/runs/<workflow-run-id>/security-report.md` verdict: `APPROVED` (or only non-Critical findings with `Blocks PR: No`). Security closure is NOT release readiness on its own — all other gates must also pass.
- [ ] `reports/runs/<workflow-run-id>/code-review-report.md` verdict: `APPROVED` AND `Review Purpose: final` (or only non-Critical findings with `Blocks PR: No`). **A report with `Review Purpose: minimal-contract` does NOT satisfy this gate.** If the code-review-report.md exists but `Review Purpose` is `minimal-contract` or `delta`, stop and report to Team Lead that final Code Review has not been completed.
- [ ] If CVE remediation was performed in this run: verify that `team-lead-plan.md` includes a CVE Remediation Evidence block listing every CVE remediated and the Security closure status for each (`resolved` or `unresolved`). If any CVE closure status is `unresolved`, stop and report to Team Lead.
- [ ] For every open Medium/High finding in `finding-registry.md`: a completed Deferred Finding Disclosure block exists (severity, owner, attempts used, why the feature remains usable, residual risk, human-attention flag — see `team-lead/SKILL.md` QA Severity Policy). If any open Medium/High finding lacks this block, stop and report to Team Lead before finalizing `release-summary.md` — do not ship it as a bare one-line mention.
- [ ] Backend unit tests: `./mvnw test` exits 0 (if backend was in scope)
- [ ] Frontend build: `npm run build` exits 0 (if frontend was in scope)
- [ ] Frontend unit tests: `npm run test` exits 0 (if frontend was in scope)
- [ ] Playwright E2E: `npm run test:e2e` exits 0 (if E2E was required — verify script name in `apps/frontend/package.json`)
- [ ] README.md exists and documents how to run the app

For gates that were skipped by Team Lead (e.g. security not required for docs-only route), note them as "Skipped by Team Lead — not required for this route" rather than failing. Only run gates that Team Lead required.

## GitHub CLI Check

On Windows, `gh` is available in CMD but may not be on the `PATH` for Bash or PowerShell. Try all three in order and stop at the first success:

```bash
gh --version
```
If that fails:
```powershell
cmd /c "gh --version"
```
If that fails:
```powershell
& "C:\Program Files\GitHub CLI\gh.exe" --version
```

Use whichever invocation succeeded for all subsequent `gh` calls in this agent run. If all three fail, stop with the blocker below — do not use GitHub MCP.

After confirming the binary:
```bash
gh auth status
gh repo view
```

If `gh` is missing, unauthenticated, or not associated with a repository, stop with a clear error.

## Final Release Freshness Check

Before commit, push, or PR creation, run:

```bash
git branch --show-current
git status --porcelain
git fetch origin
git rev-list --count HEAD..origin/main
```

Rules:
- If the current branch is `main`, stop immediately. Never commit, push, or open a PR from `main`.
- If `git status --porcelain` returns any output, stop immediately. Do not guess whether changes are user-owned or agent-owned. Create a blocker summary instructing the human to commit, stash, discard, or manually clean the working tree before rerunning release.
- If `git rev-list --count HEAD..origin/main` is greater than `0`, the branch is stale. Rebase onto `origin/main`, rerun all required quality gates, and only then continue release.
- If rebase conflicts occur, abort the rebase if safe, create a blocker summary with conflicted files and action taken, and stop.
- If `gh` is missing or unauthenticated, create a blocker summary:

```md
## Blocker: GitHub CLI unavailable

Reason:
gh is missing or not authenticated.

Action taken:
No PR was opened.

Required human action:
Install/authenticate gh and rerun release.
```

## PR Creation

1. Detect the current branch:
   ```bash
   git branch --show-current
   ```
   Use the active feature branch. Do **not** create a new branch here.

2. Push to the same branch on origin:
   ```bash
   git push -u origin HEAD
   ```

2b. Check whether an open PR already exists for this branch:
   ```bash
   gh pr list --head $(git branch --show-current) --state open --json number,url
   ```
   - If an open PR exists → do **not** run `gh pr create`. Update the PR body instead:
     ```bash
     gh pr edit <number> --body-file reports/runs/<workflow-run-id>/release-summary.md
     ```
     Print the existing PR URL and stop.
   - If no open PR exists → proceed to step 3.

3. Open the PR targeting `main`. Title must be ≤ 60 characters, imperative, human-readable:

   ```bash
   gh pr create \
     --base main \
     --title "<≤60-char imperative title, e.g. 'Add ship sunk detection and win condition'>" \
     --body-file reports/runs/<workflow-run-id>/release-summary.md
   ```

   Load `.claude/skills/release-pr-agent/templates/pr-summary-template.md` for the exact format. Keep it short and review-focused.

4. Print the PR URL returned by `gh pr create`.

## Forbidden Staging Paths

These paths must **never** appear in staged files or the commit diff. Load `.claude/policies/gitignore-compliance-policy.md` for the enforcement rules.

```
reports/**
package-lock.json
**/package-lock.json
.env
.env.*
*.log
```

`package-lock.json` is local-only. It is always ignored by git and must never be staged, committed, or pushed under any circumstances.

PR descriptions may summarise `reports/` content, but report files themselves must never be committed.

## Pre-Commit Gitignore Compliance Gate

Run this gate **after staging and before any `git push` or PR update**. If any output is produced, the commit is forbidden.

```bash
# Check every staged file against .gitignore
git diff --cached --name-only | while read -r file; do
  if git check-ignore -q "$file"; then
    echo "$file"
  fi
done
```

Also explicitly check for forbidden paths regardless of `.gitignore`:
```bash
git diff --cached --name-only | grep -E '^reports/|^package-lock\.json$|.*/package-lock\.json$'
```

If either command produces output:
1. Stop immediately. Do not push. Do not create or update the PR.
2. Run `git restore --staged <file>` for each forbidden staged file.
3. Return to Team Lead with this structured evidence:

```
Pre-Commit Gate: FAILED

Forbidden staged files found:
- <list from command output>

Action taken:
- Unstaged the above files (git restore --staged)
- Did not push
- Did not create/update PR

Required Team Lead action:
- Route remediation to release-pr-agent / git governance path
- Confirm staging is clean before re-running release
```

## Credential Scan Gate (Always-On)

This agent owns a cheap, always-on final credential scan — it runs regardless of whether Security
Agent ran in this route (fast-path/cheap-mode runs can skip Security Agent; this gate does not).

Run against the final diff before push, using the repo's existing base-branch diff convention:

```bash
git diff origin/main...HEAD | grep -E -i \
  'AKIA[0-9A-Z]{16}|ghp_[A-Za-z0-9]{36}|ghs_[A-Za-z0-9]{36}|-----BEGIN [A-Z ]*PRIVATE KEY-----|xox[baprs]-[0-9A-Za-z-]{10,}'
```

Load `.claude/policies/demo-config-policy.md` for the classification table. This scan looks only for
`OBVIOUS_REAL_LEAKED_CREDENTIAL` patterns (real AWS keys, real GitHub tokens, real SSH private keys,
Slack-style tokens) — it must not flag `PLACEHOLDER_CONFIG` or `DEMO_CONFIG_ACCEPTED` values (e.g.
`JWT_SECRET=dev-secret`, `your-secret-here`). This is a cheap, narrow, final-diff safety net, not a
general-purpose secret scanner — do not expand it into a heavyweight scanning system.

If the scan produces any output:
1. Stop immediately. Do not push. Do not create or update the PR.
2. Return to Team Lead with the matched pattern (redact the actual secret value in the report — do
   not paste real credentials into a report file) and the file it appeared in.
3. Team Lead routes remediation to the owning agent to remove the credential from source and history
   as needed before release can proceed.

## Security Rules

Never commit:
- `GH_TOKEN`, `GITHUB_TOKEN`, Personal Access Tokens
- SSH private keys (`id_ed25519`, `id_rsa`)
- `.env` files with real secrets
- `application.yml` with credentials
- Any file under `reports/`
- `package-lock.json` or `**/package-lock.json` — always forbidden, no exceptions

Attribution

amirbenaamirbena
View sourceSee grades on GitHubMore from amirbena →
SSkills Directory ProSkills Directory

Get any skill into Claude in one click.

Download any skill as a ZIP for Claude.ai, Claude Desktop, or .claude/skills. $9/mo.

See Pro

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills Directory ProSkills Directory

Get any skill into Claude in one click.

Download any skill as a ZIP for Claude.ai, Claude Desktop, or .claude/skills. $9/mo.

See Pro

Related Skills

Caveman

Ultra-compressed communication mode that cuts output tokens while keeping technical accuracy. Levels: lite, full, ultra and the wenyan variants. Use for /caveman, "caveman mode", "talk like caveman", "be brief" or "less tokens".

1074701 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

696561 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3351 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

691 votes
View all in ai-agents →