📦 deps(thirdparty): update snapshots
This commit is contained in:
@@ -0,0 +1,198 @@
|
||||
---
|
||||
name: pre-release-review
|
||||
description: "Run a read-only pre-release review for deploy readiness, migrations, config, secrets, rollout order, rollback risk, and launch blockers."
|
||||
category: operations
|
||||
risk: safe
|
||||
source: community
|
||||
source_repo: chaunsin/agent-skills
|
||||
source_type: community
|
||||
date_added: "2026-06-29"
|
||||
author: chaunsin
|
||||
tags: [release, deploy-readiness, ci-cd, rollback, production]
|
||||
tools: [git, gh, rg]
|
||||
license: "Apache-2.0"
|
||||
license_source: "https://github.com/chaunsin/agent-skills/blob/master/LICENSE"
|
||||
---
|
||||
# Pre-release Review
|
||||
|
||||
Use this skill to run a read-only production release readiness review. The goal is to reduce
|
||||
release time and coordination failures by finding missing deploy materials, unsafe ordering,
|
||||
configuration gaps, data migration gaps, and ambiguous production risks before CI/CD or manual
|
||||
release steps begin.
|
||||
|
||||
## When to Use This Skill
|
||||
|
||||
- Use when the user asks for a release audit, pre-release review, go-live review, or deploy readiness check.
|
||||
- Use before publishing a tag, deploying production services, or merging a release branch.
|
||||
- Use when a PR or git range may include migrations, environment changes, queues, cache behavior, object storage assets, or service contract changes.
|
||||
- Use when the user asks whether a change is safe to ship and needs a read-only risk report.
|
||||
|
||||
## Non-negotiable rules
|
||||
|
||||
- Do not modify source code, configs, migrations, secrets, deployment files, or generated files.
|
||||
- Do not execute migrations, clear or warm caches, upload assets, trigger CI/CD, deploy services,
|
||||
publish tags, rotate secrets, or change remote infrastructure.
|
||||
- Produce a concise report that lists only confirmed problems and plausible risks needing
|
||||
confirmation. Do not bury the reader in clean checklist items.
|
||||
- Sort findings from highest to lowest priority.
|
||||
- Include module, finding, evidence, inferred owner, risk, and recommended action for each item.
|
||||
- Never reveal private keys, account passwords, tokens, certificates, cookies, or full secret
|
||||
values. Report only file path, line number, variable name, secret type, and a redacted hint.
|
||||
- If evidence is incomplete but the risk could block production, list it as a confirmation item.
|
||||
|
||||
## Required references
|
||||
|
||||
- Read `references/checklist.md` before analyzing findings so important release domains are not
|
||||
skipped.
|
||||
- Read `references/report-template.md` before writing the final report so priorities, owner
|
||||
inference, secret redaction, and output shape stay consistent.
|
||||
|
||||
## Project guidance discovery
|
||||
|
||||
Before interpreting the release diff, look for project-local guidance files such as `AGENTS.md` and
|
||||
`CLAUDE.md` in the repository root and relevant service directories. Read them when present so the
|
||||
review respects the user's project-specific conventions, service boundaries, release rules,
|
||||
validation expectations, ownership hints, and known operational constraints.
|
||||
|
||||
- Treat project guidance as context for how to interpret risks, not as permission to perform
|
||||
mutating release actions.
|
||||
- If project guidance conflicts with this skill's non-negotiable safety rules, the read-only,
|
||||
no-secret-disclosure rules in this skill win.
|
||||
- If a relevant guidance file cannot be read, note the limitation in "Unable To Verify" only when it
|
||||
affects the release review.
|
||||
|
||||
## Scope selection
|
||||
|
||||
Determine the review range before judging risk. State the chosen range in the report.
|
||||
|
||||
1. If the user provides a pull request URL or PR number, review that PR diff first.
|
||||
- If `gh` is available and authenticated, use read-only commands such as `gh pr view` and
|
||||
`gh pr diff`.
|
||||
- If the PR cannot be fetched due to missing tooling, auth, or network limits, say so and ask
|
||||
for a local branch, patch, or explicit git range. Do not invent the PR contents.
|
||||
2. If the user provides an explicit `base..head` range, use it directly.
|
||||
3. If the user provides only a head commit, compare the previous usable release tag reachable from
|
||||
that commit to the head commit.
|
||||
4. If the user provides no scope, compare the previous usable release tag to `HEAD`.
|
||||
5. Choose the previous usable release tag carefully:
|
||||
- Prefer the repository's visible release-tag convention when one is obvious, such as semantic
|
||||
versions, `v*`, or `release-*`. If tag naming is mixed, state the assumption.
|
||||
- If `HEAD` is exactly at one or more tags, treat those as the current release point and compare
|
||||
against the earlier reachable release tag, not `HEAD`'s own tag.
|
||||
- If no usable previous release tag exists, review the latest 5 commits and explicitly warn that
|
||||
this is a fallback: there is no usable previous release tag, so the audit only covers the
|
||||
latest 5 commits; recommend a PR or tag-based range for future reviews.
|
||||
|
||||
## Read-only evidence collection
|
||||
|
||||
Run only safe inspection commands, adjusted to the repository and current permissions. Useful
|
||||
commands include:
|
||||
|
||||
```bash
|
||||
git status --short
|
||||
git rev-parse --show-toplevel
|
||||
git rev-parse --abbrev-ref HEAD
|
||||
git rev-parse HEAD
|
||||
rg --files -g 'AGENTS.md' -g 'CLAUDE.md'
|
||||
git tag --merged HEAD --sort=-creatordate
|
||||
git tag --points-at HEAD
|
||||
git for-each-ref --sort=-creatordate --format="%(refname:short) %(objectname:short)" refs/tags
|
||||
git describe --tags --abbrev=0 HEAD
|
||||
git diff --name-status <base>..<head>
|
||||
git diff --stat <base>..<head>
|
||||
git log --oneline --decorate --no-merges <base>..<head>
|
||||
git diff -U3 <base>..<head> -- <path>
|
||||
git blame -L <start>,<end> -- <path>
|
||||
git log --format="%h %an %s" -- <path>
|
||||
rg -n "<pattern>" .
|
||||
```
|
||||
|
||||
For PRs, use `gh pr view` and `gh pr diff` only when they are available and allowed. Do not bypass
|
||||
network, auth, sandbox, or approval restrictions. If a command cannot run, record the limitation in
|
||||
the report's "Unable to verify" section.
|
||||
|
||||
## Review workflow
|
||||
|
||||
1. Confirm the git repository root, current branch, dirty state, and selected comparison range.
|
||||
2. Collect changed file names, file status, diff stats, commit summaries, and touched services.
|
||||
3. Inspect relevant diffs rather than relying on filenames alone.
|
||||
4. Use the checklist to map changed code to production requirements:
|
||||
- schema changes to migrations, indexes, seeds, and backfills
|
||||
- config reads to env examples, deploy secrets, flags, and runtime config
|
||||
- cache key or TTL changes to invalidation, prewarm, and compatibility work
|
||||
- queue producers/consumers to topic setup, DLQ, idempotency, and deploy order
|
||||
- asset references to object storage, CDN, templates, certificates, and permissions
|
||||
- service contract changes to deploy sequence, backward compatibility, and rollback risk
|
||||
5. Infer owners with `git blame` on changed lines when possible; otherwise use recent `git log`
|
||||
authors for the file or commit. Label them as inferred owners, and do not include email
|
||||
addresses.
|
||||
6. Classify each finding as P0, P1, or P2 using `references/report-template.md`.
|
||||
7. Write the final report in the user's language when practical. Keep conclusion values exactly as
|
||||
`BLOCKED`, `NEEDS_CONFIRMATION`, or `NO_BLOCKER_FOUND`.
|
||||
|
||||
## Dirty worktree handling
|
||||
|
||||
By default, review only the selected committed range. Do not silently mix uncommitted or untracked
|
||||
changes into the release diff unless the user explicitly asks to include worktree changes.
|
||||
|
||||
- Always report whether the worktree is dirty.
|
||||
- If dirty or untracked files touch release-relevant areas such as migrations, deployment config,
|
||||
env examples, CI/CD, secrets, cache, queues, assets, or service contracts, add a P2 confirmation
|
||||
item saying those changes are excluded from the committed-range review and must be committed,
|
||||
discarded, or reviewed separately before release.
|
||||
- If the user explicitly asks to include dirty worktree changes, inspect them with read-only
|
||||
commands such as `git diff` and `git diff --name-status`, and clearly label them as uncommitted
|
||||
evidence.
|
||||
|
||||
## Evidence expectations
|
||||
|
||||
Every finding should cite concrete evidence:
|
||||
|
||||
- file path and line number when available
|
||||
- commit hash or PR reference when line evidence is not enough
|
||||
- command limitation when evidence could not be collected
|
||||
- diff relationship, such as "schema changed but no migration file changed"
|
||||
|
||||
Do not state that something is safe just because no file matched a pattern. Use "not verified" for
|
||||
areas that cannot be confirmed from local repository evidence.
|
||||
|
||||
## Findings versus verification limits
|
||||
|
||||
Separate release confirmation items from neutral tool limits:
|
||||
|
||||
- A release confirmation item is a diff-linked production risk, such as a new env var whose
|
||||
production secret cannot be verified, a schema change with unclear migration status, or a new queue
|
||||
whose infrastructure cannot be confirmed. Classify it as P1 or P2 and set the conclusion to
|
||||
`NEEDS_CONFIRMATION` unless a P0 also exists.
|
||||
- An "Unable To Verify" entry is a neutral limitation, such as missing remote access or deployment
|
||||
platform credentials when the diff does not introduce a specific release requirement. Neutral
|
||||
limitations do not change the conclusion by themselves.
|
||||
- If a limitation blocks confirmation of a release-critical diff change, promote it to a P1/P2
|
||||
finding rather than leaving it only in "Unable To Verify".
|
||||
- Use `NO_BLOCKER_FOUND` only when no P0-P2 findings or release confirmation items were found from
|
||||
available evidence. The report may still include neutral verification limits.
|
||||
|
||||
## Output rules
|
||||
|
||||
- Show P0 and P1 findings first, then P2 confirmation items.
|
||||
- Do not list clean checklist categories.
|
||||
- Include a service deployment order section only when the diff touches multiple services,
|
||||
asynchronous workers, migrations, queues, cache, or public contracts.
|
||||
- If no P0 blocker is found but P1/P2 confirmation items remain, use `NEEDS_CONFIRMATION`.
|
||||
- If no P0-P2 findings exist, include the reviewed range and any neutral verification limits.
|
||||
- Keep the report short enough for a release manager to act on immediately.
|
||||
|
||||
## Limitations
|
||||
|
||||
- This skill is read-only and does not deploy, tag, publish, run migrations, rotate secrets, or change infrastructure.
|
||||
- It can identify release risks from available evidence, but it cannot prove production state without access to the relevant deployment, secrets, database, queue, cache, or observability systems.
|
||||
- It should not replace service-owner signoff for high-risk production changes.
|
||||
|
||||
## Test prompts
|
||||
|
||||
Use these prompts to validate the skill behavior:
|
||||
|
||||
- "Run a pre-release review and tell me if this production deploy has risks."
|
||||
- "Review PR #123 before release. Check migrations, configs, and cache work."
|
||||
- "This repo has no tags. Use the default strategy and audit release readiness."
|
||||
- "Check `v1.2.3..HEAD` for backend go-live blockers."
|
||||
@@ -0,0 +1,104 @@
|
||||
# Pre-release Review Checklist
|
||||
|
||||
Use this checklist to find production release risks from a PR or git diff. Report only categories
|
||||
with confirmed problems or plausible risks that need confirmation.
|
||||
|
||||
## Database and data changes
|
||||
|
||||
- Schema or ORM model changes without corresponding migration files.
|
||||
- New columns, enums, constraints, indexes, partitions, triggers, functions, or extensions that need
|
||||
deploy-time DDL.
|
||||
- Destructive migrations, column renames, type changes, constraint tightening, or data rewrites
|
||||
without backward-compatible rollout or rollback notes.
|
||||
- New required data without seed, backfill, admin setup, or one-time SQL.
|
||||
- Index changes that may lock large tables or need concurrent/online creation.
|
||||
- Query changes that depend on data shape not guaranteed in production.
|
||||
- Migration files present but not referenced by the deploy system or migration runner.
|
||||
|
||||
## Environment and configuration
|
||||
|
||||
- New env var, config key, feature flag, secret name, or runtime option without example/default,
|
||||
deployment platform update, or CI/CD secret update.
|
||||
- Config key rename/removal that may break existing production variables.
|
||||
- Code that reads production-only values without validation or safe failure behavior.
|
||||
- Feature flags without documented default state, owner, rollout plan, or kill switch.
|
||||
- Docker, Kubernetes, Helm, Terraform, Railway, Vercel, GitHub Actions, or similar deploy config
|
||||
changes that require manual environment changes.
|
||||
|
||||
## Security and sensitive material
|
||||
|
||||
- Private keys, tokens, passwords, certificates, cookies, `.pem`, `.key`, `.p12`, `.env`, service
|
||||
account JSON, or cloud credentials added to the diff.
|
||||
- Logs, errors, analytics, webhooks, or traces that may expose PII, tokens, session IDs, or payment
|
||||
data.
|
||||
- Debug endpoints, admin bypasses, permissive CORS, disabled auth, relaxed TLS, or temporary
|
||||
development flags.
|
||||
- IAM, ACL, bucket policy, database role, queue permission, webhook signature, or API key scope
|
||||
changes without release coordination.
|
||||
- Dependency or container changes with known security-sensitive behavior, native binaries, or
|
||||
postinstall scripts.
|
||||
|
||||
## Cache, CDN, and derived state
|
||||
|
||||
- Redis key format, namespace, TTL, serialization, or value shape changes without invalidation or
|
||||
backward compatibility.
|
||||
- Code that assumes warmed cache, precomputed data, materialized views, search indexes, or derived
|
||||
tables exist.
|
||||
- CDN/static asset paths, cache headers, ETags, versioning, or purge requirements changed.
|
||||
- Rollout can serve mixed old/new cache values during a partial deploy.
|
||||
- Feature removal leaves stale cache keys that can revive old behavior.
|
||||
|
||||
## Queues, events, and schedulers
|
||||
|
||||
- New topic, queue, routing key, exchange, subscription, event type, cron job, or scheduled worker.
|
||||
- Producer and consumer contract changes without compatible deployment order.
|
||||
- Missing DLQ, retry policy, idempotency, dedupe key, or poison-message handling.
|
||||
- Worker concurrency, timeout, rate limit, or backpressure changes that may overload dependencies.
|
||||
- Event payload shape changes without versioning or old-consumer compatibility.
|
||||
|
||||
## External services and assets
|
||||
|
||||
- New object storage, CDN, S3, OSS, GCS, or static asset references without upload or permissions
|
||||
confirmation.
|
||||
- Email, SMS, push, PDF, image, translation, or notification templates changed without production
|
||||
material update.
|
||||
- Webhook URL, callback domain, redirect URI, CORS origin, OAuth app, payment provider, or third
|
||||
party whitelist changes.
|
||||
- New cloud resource, bucket, DNS record, certificate, API product, SaaS setting, or quota need.
|
||||
- Frontend build assets depend on backend routes or config that are not deployed yet.
|
||||
|
||||
## Service dependencies and deployment order
|
||||
|
||||
- API contract changes affecting web, mobile, workers, indexers, schedulers, or third parties.
|
||||
- Database migration must run before or after specific service versions.
|
||||
- Worker should be paused, drained, or deployed after producers.
|
||||
- Read/write compatibility risks during rolling deploys.
|
||||
- New background jobs, queues, or cache consumers need infrastructure before application deploy.
|
||||
- Rollback would be unsafe because schema, data, cache, or queue payloads are not backward
|
||||
compatible.
|
||||
|
||||
## CI/CD and release automation
|
||||
|
||||
- Workflow, Dockerfile, build script, deploy script, package manager, lockfile, or artifact path
|
||||
changed.
|
||||
- Required build-time env var, secret, binary, system package, or runtime version changed.
|
||||
- Tag/release workflow depends on files or outputs not updated in the diff.
|
||||
- Migration, seed, asset upload, or cache purge step is manual but not documented.
|
||||
- Tests, linters, or type checks disabled or narrowed for release-critical code.
|
||||
|
||||
## Observability and operations
|
||||
|
||||
- New critical path without logs, metrics, traces, health checks, dashboards, or alerts.
|
||||
- Error handling changed without actionable logs or rollback signal.
|
||||
- Runbook, release checklist, incident response, or support notes missing for operational changes.
|
||||
- Kill switch, feature flag, or emergency disable path absent for risky functionality.
|
||||
- SLO, rate limit, quota, or capacity implication not addressed.
|
||||
|
||||
## Reportable "unable to verify" cases
|
||||
|
||||
- Remote PR diff cannot be fetched.
|
||||
- Release tag cannot be found and the audit fell back to recent commits.
|
||||
- Deployment platform config, production secrets, cloud buckets, queues, or external SaaS settings
|
||||
are not accessible from the local repository.
|
||||
- Owner cannot be inferred from blame/log evidence.
|
||||
- Diff is too large to inspect fully within the available time or tool limits.
|
||||
@@ -0,0 +1,91 @@
|
||||
# Pre-release Review Report Template
|
||||
|
||||
Use this template for the final report. Translate headings to the user's language if useful, but
|
||||
keep the same sections, priority labels, conclusion values, and finding fields.
|
||||
|
||||
## Priority definitions
|
||||
|
||||
- `P0` - Block release. A production deploy is likely to fail, corrupt data, expose secrets, break
|
||||
compatibility, or require a missing manual action.
|
||||
- `P1` - High risk, must confirm before release. Evidence suggests a production dependency,
|
||||
migration, config, cache, queue, asset, or service-order risk.
|
||||
- `P2` - Medium risk or ambiguous gap. Not clearly blocking, but should be checked before release
|
||||
because the diff introduces uncertainty.
|
||||
- `P3` - Low-risk note. Do not include P3 in the main report unless the user asks for a complete
|
||||
audit log.
|
||||
|
||||
## Conclusion values
|
||||
|
||||
- `BLOCKED` - At least one P0 finding exists.
|
||||
- `NEEDS_CONFIRMATION` - No P0 was found, but one or more P1/P2 items need confirmation.
|
||||
- `NO_BLOCKER_FOUND` - No P0-P2 finding or release confirmation item was found from available
|
||||
evidence. Neutral verification limits may still be listed separately.
|
||||
|
||||
## Findings versus Unable To Verify
|
||||
|
||||
- Put diff-linked production risks in `Findings`. Examples: a new env var whose production value
|
||||
cannot be verified, a schema change with unclear migration execution, or a new queue whose
|
||||
infrastructure is not confirmed.
|
||||
- Any P1 or P2 finding means the conclusion is `NEEDS_CONFIRMATION` unless a P0 makes it `BLOCKED`.
|
||||
- Put only neutral tool or access limits in `Unable To Verify`. Examples: remote PR access is
|
||||
unavailable, deployment platform access is unavailable, or owner inference failed without a
|
||||
specific release-critical change.
|
||||
- If an access/tool limitation prevents confirmation of a release-critical diff change, promote it
|
||||
to a P1/P2 finding instead of leaving it only in `Unable To Verify`.
|
||||
|
||||
## Owner inference
|
||||
|
||||
- Prefer `git blame` on changed lines for the file and line that caused the finding.
|
||||
- If blame is unavailable or misleading, use `git log --format="%h %an %s" -- <path>`.
|
||||
- If several commits contributed to the same release risk, list all relevant author names.
|
||||
- Mark owners as "inferred" and do not expose email addresses.
|
||||
- If no owner can be inferred, write `Unknown (not inferable from local git evidence)`.
|
||||
|
||||
## Secret redaction
|
||||
|
||||
- Never print secret values, even partially, unless the value is already a harmless placeholder such
|
||||
as `example`, `changeme`, or `REDACTED`.
|
||||
- Report secrets as: path, line, variable/key name, type, and redacted hint.
|
||||
- Example: `config/prod.env:12` - `PAYMENT_API_KEY`, suspected API key, value redacted.
|
||||
- Do not paste PEM blocks, JWTs, cookies, session IDs, private keys, passwords, certificates, or
|
||||
cloud credentials into the report.
|
||||
|
||||
## Final report shape
|
||||
|
||||
```markdown
|
||||
# Production Release Readiness Review
|
||||
|
||||
## Scope
|
||||
- Range: <base>..<head> | PR <number> | latest 5 commits fallback
|
||||
- Current branch: <branch>
|
||||
- Head commit: <hash>
|
||||
- Compared from: <tag/hash/pr-base>
|
||||
- Commit count: <count>
|
||||
- Dirty worktree: <yes/no and short note>
|
||||
- Commands used: <short list of read-only commands>
|
||||
|
||||
## Conclusion
|
||||
`BLOCKED` | `NEEDS_CONFIRMATION` | `NO_BLOCKER_FOUND`
|
||||
|
||||
## Findings
|
||||
| Priority | Module | Finding | Evidence | Inferred owner | Risk | Recommended action |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| P0/P1/P2 | <area/service> | <short issue> | <file:line or commit/range> | <name(s) or unknown> | <why it matters> | <release action> |
|
||||
|
||||
## Deployment Order / Release Actions
|
||||
- <Only include when relevant. State service order, migrations, queue/cache/resource actions, and compatibility constraints.>
|
||||
|
||||
## Unable To Verify
|
||||
- <Tooling, auth, remote, production-config, or repository limits that prevent confirmation.>
|
||||
```
|
||||
|
||||
## Finding writing rules
|
||||
|
||||
- Keep each finding actionable and short.
|
||||
- Include only P0-P2 or explicit confirmation risks.
|
||||
- Do not include clean categories like "database OK" or "security OK".
|
||||
- Use evidence-driven wording: "schema changed but no migration file changed" is better than
|
||||
"maybe migration missing".
|
||||
- If risk is ambiguous, say exactly what must be confirmed before release.
|
||||
- If no findings exist, omit the `Findings` table and write:
|
||||
`No P0-P2 release blockers or confirmation items were found from the available repository evidence.`
|
||||
Reference in New Issue
Block a user