plugins/essentials/skills/final-review/SKILL.md
# Final Review - Comprehensive PR Review & Testing ## Step 0: Determine Review Pass Before starting, check the git history to determine if this is a follow-up review: ```bash git log --oneline -10 | grep -iE "(final-review|review pass|code review fixes)" ``` - **First pass**: No recent commits mention review-related changes. - **Follow-up pass**: Recent commits reference `/final-review` or contain review-related fixes. If this is a follow-up pass: - Note this in the summary as "Review Pass
npx skillsauth add nicknisi/claude-plugins plugins/essentials/skills/final-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Before starting, check the git history to determine if this is a follow-up review:
git log --oneline -10 | grep -iE "(final-review|review pass|code review fixes)"
/final-review or contain review-related fixes.If this is a follow-up pass:
First, check which branch you're on:
main: Create a new feature branch with a descriptive name based on the changes (e.g., feature/add-user-metrics, fix/dashboard-loading), then commit the changes to that branch.Then handle the PR:
Use the Task tool to launch these three agents simultaneously.
Important context for all agents: If this is a follow-up pass, include in each agent's prompt:
Review the code changes with these focuses:
Review the code changes through the lens of Uncle Bob's Clean Code principles:
Review for overly defensive code that could hide real issues:
except:, rescue => e without logging)?., &., ??)|| [], || {}, ?? [])When the three agents return their recommendations:
Apply most recommendations - If you're on the fence, do it. This is a single-developer repo so "out of scope" doesn't apply.
Handle conflicts intelligently - If Agent 1 says "use existing method X" and Agent 2 says "extract to new method Y", prefer using existing code (Agent 1) to keep the codebase DRY.
Track what you skip - Only skip if you're genuinely confident it's wrong for this codebase. Note these for the summary.
On follow-up passes, aim for convergence - If agents are only finding minor issues or suggesting stylistic preferences, note this in the summary. The goal is to converge, not to endlessly refactor. If changes from this pass are minimal, recommend that the user proceed without another review pass.
Detect the project stack and run appropriate tests. Look for these indicators:
| File | Stack |
| ------------------------------------ | --------------------------------- |
| package.json | Node.js / JavaScript / TypeScript |
| Gemfile | Ruby |
| pyproject.toml, requirements.txt | Python |
| go.mod | Go |
| Cargo.toml | Rust |
| pom.xml, build.gradle | Java |
| *.csproj, *.sln | .NET |
Run the project's configured linter and type checker on changed files:
eslint.config.js, .rubocop.yml, pyproject.toml, etc.)Run tests related to the changed code:
If CLAUDE.md defines test accounts, fixtures, or verification scripts:
Skip this step if no integration test infrastructure is defined.
If changes affect UI and the project has browser automation configured:
Check CLAUDE.md for:
List each manual smoke test needed based on the diff
If browser automation is available, run the tests programmatically
If not, document what manual verification is needed in the summary
After all fixes and tests pass, commit and push the changes to the PR.
Provide a summary with these sections:
/final-review againtools
Generate a /goal command to execute an ideation project's specs autonomously. Reads the contract, builds a goal prompt with phase ordering and spec paths, copies it to clipboard, and prints it. The user pastes the /goal command to start autonomous execution. Use when the user says 'goal', 'run as goal', 'get goal prompt', 'goal prompt', or wants to execute specs via /goal instead of /ideation:autopilot.
development
Go up a layer of abstraction and map the surrounding architecture. Use when the user is unfamiliar with an area of code, asks "how does this fit in", "what calls this", "give me the big picture", "where am I", "map this out", "I'm lost", "explain this area", or needs to understand how a file, module, or function connects to the rest of the system. Also use when the user says /zoom-out or "zoom out" mid-conversation — even without a specific file reference, orient them based on whatever code is currently in context.
development
Build a throwaway prototype to answer a design question before committing to real implementation. Generates either a runnable terminal app (for state machines, data models, business logic) or several radically different UI variations on one route (for visual/layout decisions). Use when the user wants to prototype, spike, POC, sanity-check a data model, mock up a UI, explore design options, or says "prototype this", "spike this out", "let me play with it", "try a few designs", "sketch this in code", "I want to try something before building it for real", "quick and dirty version", or "validate this approach" — even if they don't use the word "prototype."
development
Comprehensive, codebase-wide quality sweep that dispatches parallel subagents to find and fix structural issues. Covers deduplication, type consolidation, dead code removal, circular dependencies, weak types, defensive try/catch, deprecated paths, and AI slop. Primary support for JS/TS projects (knip, madge, TypeScript types); other languages get grep-based analysis. Use when the user asks to "deep clean the whole repo", "run a full codebase audit", "nuclear cleanup", "deslop everything", or "sweep the entire codebase for quality issues". Do NOT use for single-file fixes, branch-scoped diffs (use de-slopify instead), or targeted refactors.