Code review
Skill event4u-app/agent-config/dist/agent-src/skills/code-review
Use when the user says "review this", "check my code", or wants feedback on changes. Reviews for correctness, quality, security, and coding standards.From its SKILL.md
npx -y skills add event4u-app/agent-config --skill code-reviewAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
11.7 KB, ~2.8k tokens by cl100k_base, as published. Nobody here has run it
code-review
When to use
Use this skill when:
- Reviewing a PR (own or someone else's)
- Self-reviewing local changes before creating a PR
- Responding to review feedback on your PR
- The user asks to "review", "check", or "look at" code changes
Procedure: Review code
Mindset
- Be thorough but pragmatic — catch real bugs, not style nitpicks tools handle.
- Understand intent first — read PR description, linked ticket, commit messages before code.
- Check the full picture — a service change may require test / migration / doc changes.
- Assume good intent — suggest improvements, don't criticize.
Review order
- Understand the goal — what is this change trying to achieve?
- Detect the change-type + depth — route to the right checklist, pick review depth (below).
- Architecture — approach sound? Right layer? Right pattern?
- Correctness — does it work? Edge cases? Error handling?
- Quality — types, naming, readability, DRY, SOLID?
- Security — input validation, authorization, injection?
- Performance — N+1 queries, missing indexes, unbounded queries?
- Tests — are new paths covered? Are existing tests still valid?
- Conventions — does it follow project standards?
Change-type routing — load only the checklist the diff needs
Per-domain checklists live in checklists/, loaded on demand — a review
carries only the depth the change needs (progressive disclosure; a dependency
bump does not pay for the backend security table). Detect the change-type from
the diff's file paths, then read the matching file:
| Change-type | File-pattern signal (any match) | Checklist |
|---|---|---|
| dependency (expedited) | ONLY composer.json/*.lock, package.json/lockfiles, pyproject.toml, go.mod/go.sum, Cargo.toml/*.lock | checklists/dependency.md |
| migration / database | **/migrations/**, **/*migration*, schema files, query-heavy data-access code | checklists/database.md |
| frontend / UI | *.tsx, *.jsx, *.vue, *.blade.php, *.css, components/**, resources/views/** | checklists/frontend.md |
| infra / IaC / CI | *.tf, Dockerfile*, k8s/**, *.yaml under .github/workflows/, Pulumi/Ansible | checklists/infra.md |
| test-only | ONLY tests/**, *.test.*, *.spec.*, *Test.php | checklists/test-only.md |
| docs-only | ONLY *.md, docs/** | checklists/docs.md |
| backend / default | anything else (server-side logic) | checklists/backend.md |
A diff spanning several types loads each matching checklist; a mixed diff is never downgraded to the expedited path (a lockfile bump plus code is backend
- dependency). Every
checklists/*.mdfile MUST be reachable from a row above.
Framework-specific conventions defer to the carve-outs: PHP / Laravel →
laravel, laravel-validation,
eloquent, pest-testing,
blade-ui, php-coder;
Symfony → symfony-workflow; Next.js / TS →
nextjs-patterns, react-shadcn-ui.
Metadata gates — verdict ❓ until satisfied
Some changes are unverifiable from source; when a gate fires the verdict is
❓, not approval — ask for the missing evidence:
- UI diff without a screenshot / visual check →
❓(rendered result unverifiable from source). - New module / feature without a test plan →
❓(behaviour coverage unconfirmable). - Optional cross-cutting gate (per-project): a new state-changing op without a telemetry OR authz touch →
❓.
Adaptive review depth
Pick depth from diff size, override upward on risk:
| Diff / surface size | Depth | What it means |
|---|---|---|
| SMALL (single file / few lines) | DEEP | Read every line; trace each branch. |
| MEDIUM (a feature, several files) | FOCUSED | Deep on changed logic + its callers; skim the rest. |
| LARGE (sweeping / many files) | SURGICAL | Deep on the risk-bearing files; explicitly bound the rest as un-deep-reviewed. |
Risk triggers force HIGH depth regardless of diff size: auth / crypto,
external calls / SSRF, removal of a validation or authz check, money /
tenant-boundary code. blast-radius-analyzer
is one input to sizing; the depth policy + coverage-honesty line are this
skill's addition. Every review ends with a Coverage & confidence line
(deep-reviewed vs skimmed/bounded-out files + confidence) — silent partial
coverage reads as full coverage.
Re-review scoping + parallel-review de-biasing
- Re-review scoping — on a follow-up push, scope to the changed lines
only; never flag new issues in untouched code (note pre-existing issues
separately, never in the blocking set). Same discipline
fix-pr-commentsreply rounds apply. - Ordering-bias — when N reviewers/lenses get the same file set
(
parallelizable: files; council lenses), give each an independently shuffled file order (deterministic seed per session, logged for replay) so a fixed order does not correlate their blind spots. Single-reviewer → no shuffle.
Before creating a PR
- When
quality.local_auto_run: true: run the project's quality pipeline (see the stack carve-out for the exact commands — PHP:quality-tools) and tests via the project's runner (make test,npm test,pytest,go test ./..., or the project's wrapper script). Under the default (false/ missing): skip both — remote CI on the PR is the gate. - Ensure CI passes on the branch (remote CI is authoritative).
- Self-review the diff:
git diff origin/main..HEAD.
Receiving feedback
The response pattern
Constraint: understand each comment fully before touching code, verify it against codebase reality, and implement one item at a time (test each). Restate anything ambiguous in your own words — or ask. Push back with technical reasoning when a suggestion is unsound for this codebase rather than complying reflexively.
If any item is unclear, STOP — do not implement anything yet. Items may be related; partial understanding leads to wrong implementation.
No performative agreement
- Do NOT reply with "Great point!", "You're absolutely right!", "Excellent catch!" or similar.
- Instead: Just fix it. "Fixed." or "Updated — [brief description of what changed]."
- Actions speak louder than words — the code itself shows you heard the feedback.
Source-specific handling
Internal team feedback (trusted colleagues):
- Implement after understanding — no need for deep skepticism.
- Still ask if scope is unclear.
- Skip to action or technical acknowledgment.
External / Copilot / bot feedback (less context):
- Check: Technically correct for THIS codebase?
- Check: Does it break existing functionality?
- Check: Is there a reason for the current implementation?
- Check: Does the reviewer understand the full context?
- YAGNI check: If the reviewer suggests "implementing properly", grep the codebase for actual usage. If unused → suggest removing (YAGNI).
- If it conflicts with existing architectural decisions → discuss with the team first.
When to push back
Push back when:
- Suggestion breaks existing functionality.
- Reviewer lacks full context.
- Violates YAGNI (unused feature).
- Technically incorrect for this stack.
- Legacy/compatibility reasons exist.
- Conflicts with architectural decisions.
How: Use technical reasoning, not defensiveness. Reference working tests/code.
Addressing PR comments systematically
Constraint: clarify anything unclear before implementing, fix one item at a time (test each), and reply in each review thread — not as a top-level PR comment. Triage first (blocking → simple → complex) so blockers land first; gh pr view --comments lists the threads.
# Reply to a specific review comment thread
gh api repos/{owner}/{repo}/pulls/comments/{comment_id}/replies \
-f body="Fixed in latest commit."
Rubric pass (optional, surfacing-only)
After completing a review, run
judge-artifact-completeness
with rubric pr-review-score to verify evidence-fit, risk/blast-radius
coverage, and migration/rollback completeness. Invoke when the review is
high-risk or the user asks for a completeness check — not by default.
Output format
Validate, then emit these parts in order:
- Reasoned validation first — group candidates by file + line range, disposition each CONFIRMED / adjusted / DROPPED with a one-line reason (not vote-counting).
- Tier 1 — Mechanical — enumerated, fix-ready findings by severity blocks, never mixed.
- Tier 2 — Alignment — each flag names the principle/ADR at stake + the concern (from the governance-conflict scan); not fix-ready by construction.
- Dropped false positives — collapsible; each DROPPED candidate + reason. Empty is fine, but the section is mandatory (its presence proves validation ran).
- Verdict line —
YES/NOT-SURE(❓, a metadata gate fired or coverage bounded) /NO, plus Tier-1 blocker/suggestion counts. - Coverage & confidence line — deep vs skimmed/bounded-out files + confidence.
Full template, governance-conflict scan (status-aware over docs/decisions/,
incl. draft ADRs; guarded git blame reviewer hint), and the security-class
deep-verify path → checklists/producing-the-review.md.
Tally-vs-reasoned boundary. Finding-level review uses reasoned validation (each finding stands on its own traced reason); option-level decisions use the council stance tally (
ai-council). Never cross-apply — no resolving a bug finding by counting votes, no resolving a design option by reasoned-validating one take. Mirrored inai-councilso the boundary is grep-checkable from both sides.
Group related findings; skip what the linter / type-checker already catches.
Adversarial review
Before creating a PR or presenting code changes, run the adversarial-review skill.
Focus on the "Code changes / Refactoring" attack questions.
Auto-trigger keywords
- code review
- PR review
- pull request
- review checklist
- review feedback
- review changes
- check my code
Gotcha
- Don't rewrite code that works and is tested just because you'd write it differently.
- The model tends to suggest changes that are out of scope — stay focused on the PR's intent.
- "I would prefer X" is not a valid review comment unless X prevents a bug or violates a rule.
- Always check if the PR has tests — missing tests is always worth flagging.
Do NOT
- Do NOT approve without actually reading the code.
- Do NOT agree with review comments without verifying them against the codebase.
- Do NOT use performative language when responding to feedback ("Great point!", "Excellent catch!").
- Do NOT nitpick style issues the project's formatter / auto-refactor (ECS, Prettier, Ruff, gofmt) handles automatically.
- Do NOT merge without CI passing and quality checks green.
What ships with it: 9 files
15.3 KB alongside SKILL.md
checklists/
- backend.md3.4 KB
- database.md1.4 KB
- dependency.md1.2 KB
- docs.md774 B
- frontend.md1.3 KB
- infra.md1.2 KB
- producing-the-review.md2.8 KB
- test-only.md970 B
evals/
- evals.json2.2 KB