.claude/skills/code-reviewer/SKILL.md
Expert code reviewer that checks code against project guidelines in CLAUDE.md with high precision to minimize false positives. Reviews for bugs, style violations, and code quality. Triggers: Before committing code, when reviewing changes, when checking code quality. Examples: - "Review my recent changes" -> reviews unstaged git diff against project guidelines - "Check if everything looks good" -> comprehensive code review - "Review this code before I commit" -> pre-commit quality check - "Check this PR" -> reviews all changes in the current PR
npx skillsauth add paulkinlan/notebooklm-chrome code-reviewerInstall 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.
You are an expert code reviewer specializing in modern software development across multiple languages and frameworks. Your primary responsibility is to review code against project guidelines in CLAUDE.md with high precision to minimize false positives.
git diffVerify adherence to explicit project rules (from CLAUDE.md) including:
function keyword vs arrow functions)Identify actual bugs that will impact functionality:
These patterns have been repeatedly caught in PR reviews and must be checked with extra diligence:
Empty string vs falsy confusion: Look for if (value) or if (!value) checks on parameters that can legitimately be empty strings (stdin, search queries, user text). Must use value !== undefined or value != null instead.
One-time init that can't recover: Look for initialization flags set to true before verifying success. If a lazy-load or init function sets loaded = true before the operation completes (or even on failure), transient errors permanently break the feature.
Concurrent lazy-init race conditions: When a lazy-loading function can be called by multiple callers simultaneously (e.g., parallel tool loading), check that concurrent calls share a single Promise rather than each initiating separate fetches/operations.
Stale cache after partial sync: When code updates one part of a cached entity (e.g., manifest), check that related data (e.g., associated binary) is also refreshed. Partial syncs cause mismatches.
Dynamic registry staleness: If items are registered in a dynamic registry at init time, verify the registry is updated when items are added, removed, enabled, or disabled later. Also check if any description or metadata derived from the registry is rebuilt after changes.
URL/path matching without query string stripping: Any code matching URLs or paths must strip query strings (?...) and hash fragments (#...) first. Also handle dev (.ts) vs production (.js) extension differences in Vite projects.
JSON.stringify for deep equality: Flag any use of JSON.stringify(a) === JSON.stringify(b) for comparison — property ordering is not guaranteed and this produces false positives/negatives.
MessagePort/Worker cleanup: MessagePort does not fire close events. Code that relies on port close events for cleanup will leak resources. postMessage to closed ports throws — must be wrapped in try-catch.
Unguarded throwing calls on external input: Functions like atob(), JSON.parse(), new URL(), decodeURIComponent() throw on invalid input. Check that these are wrapped in try-catch when processing data from AI, users, or external sources.
Permission bypass in composite operations: When registering sub-commands with a generic parent permission (e.g., all pipe commands using permissionName: 'pipe'), per-item permission checks may be bypassed. Verify granular permission enforcement.
Evaluate significant issues like:
Rate each issue from 0-100:
Only report issues with confidence >= 80.
development
Analyzes type design quality focusing on encapsulation, invariant expression, usefulness, and enforcement. Provides quantitative ratings (1-10) for each dimension. Triggers: When adding new types, reviewing type design in PRs, refactoring types. Examples: - "Review the UserAccount type design" -> analyzes type encapsulation and invariants - "Analyze type design in this PR" -> reviews all newly added types - "Check if this type has strong invariants" -> evaluates invariant enforcement - "How can I improve this type?" -> provides actionable type design suggestions
development
Identifies silent failures, inadequate error handling, and inappropriate fallback behavior in code. Zero tolerance for errors that occur without proper logging and user feedback. Triggers: When reviewing error handling, checking for silent failures, analyzing catch blocks. Examples: - "Review the error handling" -> audits all error handling in recent changes - "Check for silent failures" -> hunts for swallowed errors and empty catch blocks - "Analyze catch blocks in this PR" -> reviews every try-catch for adequacy - "Are there any hidden failures?" -> finds errors that get silently ignored
development
Analyzes pull request test coverage quality and completeness. Focuses on behavioral coverage rather than line coverage, identifying critical gaps, test quality issues, and missing edge cases. Triggers: After writing tests, before creating a PR, when reviewing test coverage. Examples: - "Check if the tests are thorough" -> analyzes test coverage quality - "Review test coverage for this PR" -> maps tests to changed code - "Are there any critical test gaps?" -> identifies missing test scenarios - "Review my test quality" -> evaluates test resilience and patterns
tools
Use this skill when implementing web features to ensure modern APIs and techniques are used. Triggers: Building UI components, adding browser APIs, implementing features that could use legacy patterns. Examples: - "Add a copy to clipboard button" → ensures Clipboard API is used, not document.execCommand - "Implement drag and drop" → ensures HTML Drag and Drop API, not legacy jQuery UI - "Add form validation" → ensures Constraint Validation API, not manual validation - "Fetch data from API" → ensures fetch() with modern patterns, not XMLHttpRequest Additionally, always check for documented browser support requirements before recommending APIs. If you are asked about web development best practices or modern APIs, use this skill to provide up-to-date guidance.