Use when reviewing code changes for architectural quality - SOLID principles, Law of Demeter, plugin decoupling, coordinate system correctness, breaking changes policy, and design patterns. Reference implementation is the Pagination plugin.
Review staged or changed code for architectural correctness within the Handsontable codebase. Verify that changes follow established design patterns, maintain plugin isolation, and do not introduce breaking changes.
isEnabled, enablePlugin, disablePlugin, destroy) and declare static properties (PLUGIN_KEY, PLUGIN_PRIORITY, SETTING_KEYS).hot.getPlugin('Name') when direct API access is unavoidable.No deep property chains like this.hot.view.wt.wtTable. Each architectural layer has its own API surface -- use it. If you need data from Walkontable, go through TableView or the public Core API.
import from another plugin's files.hot.getPlugin('PluginName').The plugin that introduces an incompatibility owns the blocking logic. Other plugins must NOT contain awareness checks like if (dataProviderEnabled) return; -- that logic belongs in the conflicting plugin. Compatibility tests also belong with the owning plugin, not the affected one. For hard conflicts, use registerConflict() from src/plugins/base/conflictRegistry.js at module load time.
New options should support Handsontable's cascading configuration model (cell -> column -> global) when applicable. Some options are intentionally table-level only (e.g., data, colHeaders) -- document this limitation in JSDoc when so.
Verify the correct coordinate type at every usage site:
Translate between systems using hot.rowIndexMapper / hot.columnIndexMapper. Mixing coordinate types is a common source of bugs, especially with manualColumnMove and filters.
Review every change against these rules:
New features should work correctly with zero configuration for the common case. Configuration should only be required when the user explicitly wants to deviate from the established convention.
Red flags -- fail the review if present:
The Pagination plugin (src/plugins/pagination/) demonstrates the expected patterns for plugin structure, lifecycle management, settings validation, and conflict registration. Use it as a reference when reviewing new or modified plugins.
.ai/ARCHITECTURE.md for full system architecture details..ai/CONCERNS.md for known issues and technical debt.src/plugins/base/base.js for the BasePlugin contract.src/plugins/base/conflictRegistry.js for conflict registration API.