Use when reviewing code changes for adherence to Handsontable coding conventions, ESLint compliance, JSDoc requirements, naming standards, and code quality - produces numbered findings by severity with file:line references
Review staged or changed code for compliance with Handsontable coding conventions. Run git diff (or git diff --staged) to collect the changes, then check each item below.
ESLint rules (custom):
throwWithCause('...', cause) from src/helpers/errors.js -- never throw new Error().plugins/index, editors/index, renderers/index, validators/index, cellTypes/index, i18n/index). Import from the specific submodule path.it() callback in *.spec.js files must be async. HOT API calls inside tests must be await-ed.window, document, or console globals. Use this.hot.rootWindow, , and helpers from .this.hot.rootDocumentsrc/helpers/console.jsJSDoc:
@since tag.<br>.[[MY_LINK]] syntax for links, not {@link MY_LINK}. End every sentence with a full stop.Private fields:
# prefix for private class fields and methods. Do not use @private JSDoc tag unless # is avoided for documented performance reasons.Naming:
row and columns, not cols. Use Handsontable in text, never HOT.camelCase. Classes: PascalCase. Constants: UPPER_SNAKE_CASE.Cognitive complexity:
Optional chaining (?.):
Silent catch blocks:
catch must include a comment explaining why the error is ignored.Browser compatibility:
browser-targets.js at the repo root.Bundle size:
=== over verbose helpers, short-circuit evaluation over full if blocks).DRY:
src/helpers/. Extract shared code into utility functions.Core language boundary:
handsontable/src/. Core is JavaScript only. Type definitions go in handsontable/types/ as .d.ts files.Documentation and AGENTS.md updates:
AGENTS.md update.docs/content/.Public API naming:
List findings numbered by severity. Use these levels:
Each finding must include file:line reference and a short explanation.
If no issues are found, output exactly: No blocking issues found.
.ai/CONVENTIONS.md for the complete coding conventions..eslintrc.js (root) and handsontable/.eslintrc.js for ESLint configuration.browser-targets.js for supported browser list.