Use when asked to review a MR/PR on GitHub or GitLab. Checks for XSS vulnerabilities, validates ARIA attributes and WCAG compliance, identifies render-blocking issues and race conditions, enforces semantic HTML. Produces actionable feedback.
93
93%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Advisory
Suggest reviewing before use
Reference standards for JS/TS review. Only enforce rules that match the target project's conventions.
package.json and existing imports. [Important]require and import in the same project. [Important]interface for types without inheritance; prefer type for declarations. [Suggestion].ts / .tsx when project has TypeScript. [Important]: void when returning nothing). [Important]Array<Element> instead of Element[]. [Minor]as assertions instead of type guards or narrowing. [Suggestion]any — use unknown + narrowing or proper generics. [Important]modules.d.ts. [Suggestion]console.log / console.info / console.debug containing PII or sensitive data. [Blocking]console.log / console.info / console.debug (no PII) when linter does not catch them. [Minor]const over let, never var — Suggestion if linter present, Important if no linter. [Suggestion]else blocks instead of early returns. [Suggestion]addEventListener with anonymous handler (named handler required for removeEventListener). [Important]getAttribute('data-*') over dataset in critical paths or loops. [Suggestion]setAttribute / getAttribute for attribute manipulation. [Suggestion][...nodeList] or Array.from(nodeList) when iteration or array methods needed. [Minor][data-bookmark-button], getAttribute('data-bookmark-id')). [Suggestion]&& for nested property access instead of optional chaining (?.). [Suggestion]|| when 0, "", false are valid values instead of nullish coalescing (??). [Suggestion]this context not bound in constructor. [Important]className (not class) for CSS classes in JSX. [Important]data, item, x, handle(), process()). [Important]Manager, Helper, Service). [Important]isXxx / hasXxx returning non-boolean). [Important]getXxx() / fetchXxx() with no return statement or explicitly returns undefined/void (outside reactive component context). [Important]validateXxx() that returns boolean — rename to isXxxValid. [Important]getXxx() / fetchXxx() returning wrong type (e.g. getUser() returns Car). [Important]fetchXxx() that does not make a network call. [Important]calculateXxx() / computeXxx() not returning derived value. [Important]updateXxx() / setXxx() not modifying object or returning void. [Important]getXxx() returning { user, metadata } instead of single value — flag as Suggestion. [Suggestion]toXxx() / asXxx() not returning converted type. [Suggestion]createXxx() / buildXxx() not returning new instance. [Suggestion]@param, @returns, @async tags with types. [Suggestion]@param {string}. [Minor]