Pull Request Security Gate (A01:2025–A10:2025 + LLM01:2025–LLM10:2025)
SkillFiles & storageLightweight per-PR security gate that detects Critical and High severity OWASP/LLM issues in changed files only. Use when scanning a small git diff in CI for blocking findings. Single-pass; does not dispatch subagents and does not perform threat modeling or attack-chain analysis.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Pull Request Security Gate (A01:2025–A10:2025 + LLM01:2025–LLM10:2025) skill
What this skill tells your AI
The instructions your AI receives, as published by thejefflarson/soundcheck in .claude/skills/pr-review/SKILL.md and read by ahel’s review.
What this checks
Fast single-pass review of the files in a pull request diff. Reports
only Critical and High severity findings. Designed for CI: completes
in seconds-to-minutes on haiku, well under the time a developer
expects to wait on a PR check. This is the per-PR gate. For nightly
or deep audits, reach for security-review or contract-review.
Vulnerable patterns
Soundcheck's per-category skills (injection, csrf, ssrf,
broken-access-control, authentication-failures,
hardcoded-secrets, path-traversal, prompt-injection, …)
auto-invoke when their description matches code in the diff. Examples
this gate is expected to catch on a routine PR:
- SQL or shell string built from request data —
injection - Path opened from a URL parameter without normalization —
path-traversal - A new credential string-literal in a config file —
hardcoded-secrets - A new state-changing endpoint without
csrfProtection—csrf - A new fetch to a caller-supplied URL with no host allowlist —
ssrf
Procedure
This skill is the coordinator — it does the reading; per-category skills supply the patterns. No subagents.
- [ ] Read every file in the supplied changed-file list once
- [ ] Apply soundcheck's per-category skills as their descriptions match
- [ ] Filter findings to severity Critical or High
- [ ] Emit findings table only (no chains, no design review)
- [ ] Append the machine-readable <soundcheck-findings>[...] block
For each finding, the table row contains:
| Severity | File:Line | Skill | Finding | Fix |
- Severity is Critical or High; drop Medium and Low.
- File:Line must be inside the supplied changed-file list.
- Skill names the auto-invoking soundcheck skill the pattern matched.
- Finding is one short sentence a non-security developer can act on.
- Fix is one short sentence; link or quote the secure pattern from
the relevant skill's
Fix immediatelyblock.
If a pattern requires cross-file tracing or threat modeling to classify, do not emit it — that's mode 2's job. Better a clean miss in CI than a noisy false positive that trains developers to ignore the gate.
Finish with one summary line: N findings (M Critical/High) or
No Critical or High findings. Suggest /security-review for a
deeper manual scan.
Verification
- Every emitted finding is severity Critical or High
- Every emitted finding's file:line is inside the changed-file list
- No Agent tool invocations (single-pass, no subagent dispatch)
- Response ends with a one-line summary
- Machine-readable
<soundcheck-findings>block appended
References
Signals
- GitHub stars
- 20
- Last commit
- Jul 2026
Advanced
- Catalog kind
- skill
- Gateway key
pr-review-thejefflarson- Source
- github.com/thejefflarson/soundcheck