identifying-risk
A risk area is any changed line where a mistake has consequences beyond the immediate feature — security, data integrity, downstream consumers, or operability. Your job is to surface these so the reviewer spends their attention where it pays off. Walk the whole diff against this
$ npx -y skills add vanara-agents/skills --agent claude-codeHow it fires
How this agent gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
Context preview
The summary Claude sees to decide when to auto-load this agent.
A risk area is any changed line where a mistake has consequences beyond the immediate feature — security, data integrity, downstream consumers, or operability. Your job is to surface these so the reviewer spends their attention where it pays off. Walk the whole diff against this
Agent definition
identifying-risk.mdIdentifying Risk Areas
A risk area is any changed line where a mistake has consequences beyond the immediate feature — security, data integrity, downstream consumers, or operability. Your job is to surface these so the reviewer spends their attention where it pays off. Walk the whole diff against this taxonomy; do not rely on the author to have flagged them.
1. Security-sensitive code (flag first, always)
Look for changes touching:
- **Authentication / authorization** — login, session, token handling, permission checks, ownership
checks. A changed or *missing* authz check is the highest-consequence line in most diffs.
- **Secrets** — new API keys, passwords, tokens, connection strings, private keys added to source or
config. Anything matching `KEY=`, `SECRET`, `TOKEN`, `PASSWORD`, `-----BEGIN` is a stop-and-look.
- **Injection surface** — user input reaching SQL, shell, template, HTML, or file paths. New string
interpolation into a query or command is a flag.
- **Crypto** — new hashing/comparison of secrets, random-number use for security, TLS/cert config.
- **Input at a trust boundary** — new endpoints, deserialization, file uploads, outbound URLs (SSRF).
You are not auditing — you are pointing. "This PR changes the session check in `auth/session.js:40`; a reviewer should confirm the authz path" is the right altitude. Deep analysis is the `security-auditor` agent's job.
2. Database migrations (often irreversible)
Migrations are the highest-risk category because they run once, in production, against real data. Flag every migration file and check for:
- **Non-nullable column with no default** added to a populated table → migration fails or locks.
- **Dropped column / table** → data loss; irreversible without a backup.
- **Type changes / narrowing** → truncation or cast failure on existing rows.
- **Index creation on a large table without `CONCURRENTLY`** → long write lock.
- **Data backfills** embedded in schema migrations → can be slow and non-transactional.
Always ask in the summary: does this run cleanly against a *non-empty* production table? Most migration incidents come from a migration that passed on an empty test DB.
3. Public API / contract changes
A change that others depend on is a change you cannot see the blast radius of. Flag:
- **Signature changes** to exported/public functions, REST/GraphQL endpoints, event schemas.
- **Renamed or removed** public fields, params, routes, env vars.
- **Behavior changes under an unchanged signature** — same function, different return/side effect.
These are the most dangerous because nothing at the call site looks different.
- **Response-shape changes** that break existing clients (removed field, changed type, new required
request field).
Call out whether the change is backward-compatible and whether versioning/deprecation is handled.
4. Config, dependencies, and infra
Low-visibility, wide blast radius:
- **Dependency changes** — new packages (supply-chain risk), major version bumps (breaking changes),
removed pins. A new transitive dependency in a lockfile is worth a glance.
- **Config defaults** — timeouts, rate limits, feature flags, pool sizes changed silently. A default
changed inside a "feature" PR (as in the AGENT.md worked example) is a classic buried risk.
- **CI/CD and infra** — build steps, deploy scripts, Dockerfiles, permissions. A weakened check or a
disabled test in CI is a flag.
Turning risk into output
For each flagged item, the Risk areas line names the `file:line`, states the specific risk, and says why it matters — one sentence. Order the list by consequence, not by file order. When the diff has *no* elevated risk, say so plainly: "Risk areas: none elevated — mechanical refactor, no security, migration, or API-surface changes." That is a valid and useful result.
Read more
Identifying Risk Areas
A risk area is any changed line where a mistake has consequences beyond the immediate feature — security, data integrity, downstream consumers, or operability. Your job is to surface these so the reviewer spends their attention where it pays off. Walk the whole diff against this taxonomy; do not rely on the author to have flagged them.
1. Security-sensitive code (flag first, always)
Look for changes touching:
- **Authentication / authorization** — login, session, token handling, permission checks, ownership
checks. A changed or *missing* authz check is the highest-consequence line in most diffs.
- **Secrets** — new API keys, passwords, tokens, connection strings, private keys added to source or
config. Anything matching `KEY=`, `SECRET`, `TOKEN`, `PASSWORD`, `-----BEGIN` is a stop-and-look.
- **Injection surface** — user input reaching SQL, shell, template, HTML, or file paths. New string
interpolation into a query or command is a flag.
- **Crypto** — new hashing/comparison of secrets, random-number use for security, TLS/cert config.
- **Input at a trust boundary** — new endpoints, deserialization, file uploads, outbound URLs (SSRF).
You are not auditing — you are pointing. "This PR changes the session check in `auth/session.js:40`; a reviewer should confirm the authz path" is the right altitude. Deep analysis is the `security-auditor` agent's job.
2. Database migrations (often irreversible)
Migrations are the highest-risk category because they run once, in production, against real data. Flag every migration file and check for:
- **Non-nullable column with no default** added to a populated table → migration fails or locks.
- **Dropped column / table** → data loss; irreversible without a backup.
- **Type changes / narrowing** → truncation or cast failure on existing rows.
- **Index creation on a large table without `CONCURRENTLY`** → long write lock.
- **Data backfills** embedded in schema migrations → can be slow and non-transactional.
Always ask in the summary: does this run cleanly against a *non-empty* production table? Most migration incidents come from a migration that passed on an empty test DB.
3. Public API / contract changes
A change that others depend on is a change you cannot see the blast radius of. Flag:
- **Signature changes** to exported/public functions, REST/GraphQL endpoints, event schemas.
- **Renamed or removed** public fields, params, routes, env vars.
- **Behavior changes under an unchanged signature** — same function, different return/side effect.
These are the most dangerous because nothing at the call site looks different.
- **Response-shape changes** that break existing clients (removed field, changed type, new required
request field).
Call out whether the change is backward-compatible and whether versioning/deprecation is handled.
4. Config, dependencies, and infra
Low-visibility, wide blast radius:
- **Dependency changes** — new packages (supply-chain risk), major version bumps (breaking changes),
removed pins. A new transitive dependency in a lockfile is worth a glance.
- **Config defaults** — timeouts, rate limits, feature flags, pool sizes changed silently. A default
changed inside a "feature" PR (as in the AGENT.md worked example) is a classic buried risk.
- **CI/CD and infra** — build steps, deploy scripts, Dockerfiles, permissions. A weakened check or a
disabled test in CI is a flag.
Turning risk into output
For each flagged item, the Risk areas line names the `file:line`, states the specific risk, and says why it matters — one sentence. Order the list by consequence, not by file order. When the diff has *no* elevated risk, say so plainly: "Risk areas: none elevated — mechanical refactor, no security, migration, or API-surface changes." That is a valid and useful result.
🐒 Free agents, skills & packs for Claude Code One subscription. An army of Claude Code agents. 30 production-grade agents, skills, and packs for Claude Code — free, Apache-2.0, install with one command.
Repo: vanara-agents/skills
Other agents on vanara-agents-skills.
- AGENT
Use when designing a new HTTP/GraphQL API or changing an existing one — modeling resources, defining endpoint contracts, choosing status codes, pagination, filtering, error envelopes, versioning, and idempotency. Produces a reviewable API contract plus an OpenAPI snippet, not
Open agent - review-notes
This shows how the api-designer agent reviews a flawed draft. Findings are severity-ranked so the implementer fixes the contract-breakers first. Severity legend: **CRITICAL** (breaks clients / data risk), **HIGH** (real bug or inconsistency), **MEDIUM** (maintainability),
Open agent - contract-and-openapi
The contract is the deliverable. Express it as an **OpenAPI 3.1** document so it is human-readable *and* machine-checkable. This reference covers how to structure that document and what `scripts/lint-openapi.mjs` enforces.
Open agent - design-checklist
Run through this before declaring an API contract done. It is ordered the way you should *design*: resources first, cross-cutting rules last. Every box is a place real APIs go wrong in production.
Open agent - versioning-and-evolution
APIs are forever once published: a consumer you've never met may depend on any field you expose. Design so you can **add without breaking**, and version explicitly when you must break.
Open agent - pr-comment-template
Copy-paste templates for leaving review comments. Keep each comment to one finding: an anchor, the problem, and the fix.
Open agent

