# code-reviewer > Use when reviewing implementation changes against an approved plan or task (especially before merging or between Hive tasks) to catch missing requirements, YAGNI, dead code, and risky patterns - Author: Minnie - Repository: mintea3/agent-hive - Version: 20260208154425 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-08 - Source: https://github.com/mintea3/agent-hive - Web: https://mule.run/skillshub/@@mintea3/agent-hive~code-reviewer:20260208154425 --- --- name: code-reviewer description: Use when reviewing implementation changes against an approved plan or task (especially before merging or between Hive tasks) to catch missing requirements, YAGNI, dead code, and risky patterns --- # Code Reviewer ## Overview This skill teaches a reviewer to evaluate implementation changes for: - Adherence to the approved plan/task (did we build what we said?) - Correctness (does it work, including edge cases?) - Simplicity (YAGNI, dead code, over-abstraction) - Risk (security, performance, maintainability) **Core principle:** The best change is the smallest correct change that satisfies the plan. ## Iron Laws - Review against the task/plan first. Code quality comes second. - Bias toward deletion and simplification. Every extra line is a liability. - Prefer changes that leverage existing patterns and dependencies. - Be specific: cite file paths and (when available) line numbers. - Do not invent requirements. If the plan/task is ambiguous, mark it and request clarification. ## What Inputs You Need Minimum: - The task intent (1-3 sentences) - The plan/task requirements (or a link/path to plan section) - The code changes (diff or list of changed files) If available (recommended): - Acceptance criteria / verification steps from the plan - Test output or proof the change was verified - Any relevant context files (design decisions, constraints) ## Review Process (In Order) ### 1) Identify Scope 1. List all files changed. 2. For each file, state why it changed (what requirement it serves). 3. Flag any changes that do not map to the task/plan. **Rule:** If you cannot map a change to a requirement, treat it as suspicious until justified. ### 2) Plan/Task Adherence (Non-Negotiable) Create a simple checklist: - What the task says must happen - Evidence in code/tests that it happens Flag as issues: - Missing requirements (implemented behavior does not match intent) - Partial implementation with no follow-up task (TODO-driven shipping) - Behavior changes that are not in the plan/task ### 3) Correctness Layer Review for: - Edge cases and error paths - Incorrect assumptions about inputs/types - Inconsistent behavior across platforms/environments - Broken invariants (e.g., state can become invalid) Prefer "fail fast, fail loud": invalid states should become clear errors, not silent fallbacks. ### 4) Simplicity / YAGNI Layer Be ruthless and concrete: - Remove dead branches, unused flags/options, unreachable code - Remove speculative TODOs and "reserved for future" scaffolding - Remove comments that restate the code or narrate obvious steps - Inline one-off abstractions (helpers/classes/interfaces used once) - Replace cleverness with obvious code - Reduce nesting with guard clauses / early returns Prefer clarity over brevity: - Avoid nested ternary operators; use `if/else` or `switch` when branches matter - Avoid dense one-liners that hide intent or make debugging harder ### 4b) De-Slop Pass (AI Artifacts / Style Drift) Scan the diff (not just the final code) for AI-generated slop introduced in this branch: - Extra comments that a human would not add, or that do not match the file's tone - Defensive checks or try/catch blocks that are abnormal for that area of the codebase - Especially swallowed errors ("ignore and continue") and silent fallbacks - Especially redundant validation in trusted internal codepaths - TypeScript escape hatches used to dodge type errors (`as any`, `as unknown as X`) without necessity - Style drift: naming, error handling patterns, logging style, and structure inconsistent with nearby code Default stance: - Prefer deletion over justification. - If validation is needed, do it at boundaries; keep internals trusting parsed inputs. - If a cast is truly unavoidable, localize it and keep the justification to a single short note. When recommending simplifications, do not accidentally change behavior. If the current behavior is unclear, request clarification or ask for a test that pins it down. **Default stance:** Do not add extensibility points without an explicit current requirement. ### 5) Risk Layer (Security / Performance / Maintainability) Only report what you are confident about. Security checks (examples): - No secrets in code/logs - No injection vectors (shell/SQL/HTML) introduced - Authz/authn checks preserved - Sensitive data not leaked Performance checks (examples): - Avoid unnecessary repeated work (N+1 queries, repeated parsing, repeated filesystem hits) - Avoid obvious hot-path allocations or large sync operations Maintainability checks: - Clear naming and intent - Consistent error handling - API boundaries not blurred - Consistent with local file patterns (imports, export style, function style) ### 6) Make One Primary Recommendation Provide one clear path to reach approval. Mention alternatives only when they have materially different trade-offs. ### 7) Signal the Investment Tag the required follow-up effort using: - Quick (<1h) - Short (1-4h) - Medium (1-2d) - Large (3d+) ## Confidence Filter Only report findings you believe are >=80% likely to be correct. If you are unsure, explicitly label it as "Uncertain" and explain what evidence would confirm it. ## Output Format (Use This Exactly) --- **Files Reviewed:** [list] **Plan/Task Reference:** [task name + link/path to plan section if known] **Overall Assessment:** [APPROVE | REQUEST_CHANGES | NEEDS_DISCUSSION] **Bottom Line:** 2-3 sentences describing whether it matches the task/plan and what must change. ### Critical Issues - None | [file:line] - [issue] (why it blocks approval) + (recommended fix) ### Major Issues - None | [file:line] - [issue] + (recommended fix) ### Minor Issues - None | [file:line] - [issue] + (suggested fix) ### YAGNI / Dead Code - None | [file:line] - [what to remove/simplify] + (why it is unnecessary) ### Positive Observations - [at least one concrete good thing] ### Action Plan 1. [highest priority change] 2. [next] 3. [next] ### Effort Estimate [Quick | Short | Medium | Large] --- ## Common Review Smells (Fast Scan) Task/plan adherence: - Adds features not mentioned in the plan/task - Leaves TODOs as the mechanism for correctness - Introduces new configuration modes/flags "for future" YAGNI / dead code: - Options/config that are parsed but not used - Branches that do the same thing on both sides - Comments like "reserved for future" or "we might need this" AI slop / inconsistency: - Commentary that restates code, narrates obvious steps, or adds process noise - try/catch that swallows errors or returns defaults without a requirement - `as any` used to silence type errors instead of fixing types - New helpers/abstractions with a single call site Correctness: - Silent fallbacks to defaults on error when the task expects a hard failure - Unhandled error paths, missing cleanup, missing returns Maintainability: - Abstractions used once - Unclear naming, "utility" grab-bags ## When to Escalate Use NEEDS_DISCUSSION (instead of REQUEST_CHANGES) when: - The plan/task is ambiguous and multiple implementations could be correct - The change implies a product/architecture decision not documented - Fixing issues requires changing scope, dependencies, or public API