# @aurelienbbn/gadget > Documentation for @aurelienbbn/gadget - ESLint plugin and developer tools for Gadget applications. ## Docs - [About this project](https://gadget.aurelienbbn.com/about.md): Why this ESLint plugin exists, who maintains it, and how to get involved. - [Quick start](https://gadget.aurelienbbn.com/eslint-plugin/getting-started/configuration.md): Choose a preset and configure the Gadget ESLint plugin in your flat config. - [Installation](https://gadget.aurelienbbn.com/eslint-plugin/getting-started/installation.md): Add the Gadget ESLint plugin to your project. - [How rules apply](https://gadget.aurelienbbn.com/eslint-plugin/guides/how-rules-apply.md): Which files the Gadget ESLint plugin inspects and how rule scope is determined by file path. - [Introduction](https://gadget.aurelienbbn.com/eslint-plugin/index.md): An opinionated, community-built ESLint plugin that catches common mistakes in Gadget action files. It ships 16 rules across three categories, auto-fixes where possible, and offers recommended and strict presets. - [Configurations](https://gadget.aurelienbbn.com/eslint-plugin/reference/configurations.md): Severity matrix for the recommended and strict presets. - [action-no-await-handle-result-in-action](https://gadget.aurelienbbn.com/eslint-plugin/reference/rules/action-no-await-handle-result-in-action.md): Disallow awaiting handle.result() inside run or onSuccess exports in Gadget actions. - [action-no-empty-on-success](https://gadget.aurelienbbn.com/eslint-plugin/reference/rules/action-no-empty-on-success.md): Disallow empty onSuccess exports in Gadget actions. - [action-no-enqueue-max-concurrency-exceeded](https://gadget.aurelienbbn.com/eslint-plugin/reference/rules/action-no-enqueue-max-concurrency-exceeded.md): Disallow maxConcurrency values exceeding Gadget's hard limit of 100 in api.enqueue queue options. - [action-no-implicit-enqueue-retries](https://gadget.aurelienbbn.com/eslint-plugin/reference/rules/action-no-implicit-enqueue-retries.md): Require explicit retries option on api.enqueue calls to avoid unintended retry behavior. - [action-no-invalid-options](https://gadget.aurelienbbn.com/eslint-plugin/reference/rules/action-no-invalid-options.md): Enforce that the Gadget action options export contains only valid JSON-serializable literals. - [action-no-invalid-params](https://gadget.aurelienbbn.com/eslint-plugin/reference/rules/action-no-invalid-params.md): Enforce that Gadget action params export only uses supported JSON schema types and properties. - [action-no-invalid-timeout-ms](https://gadget.aurelienbbn.com/eslint-plugin/reference/rules/action-no-invalid-timeout-ms.md): Enforce that timeoutMS in Gadget action options does not exceed 900000ms (15 minutes). - [action-no-return-value-in-on-success](https://gadget.aurelienbbn.com/eslint-plugin/reference/rules/action-no-return-value-in-on-success.md): Disallow returning a value from onSuccess in Gadget actions. - [action-require-action-run-type](https://gadget.aurelienbbn.com/eslint-plugin/reference/rules/action-require-action-run-type.md): Require Gadget action run and onSuccess exports to use generated type annotations. - [action-require-explicit-return-type](https://gadget.aurelienbbn.com/eslint-plugin/reference/rules/action-require-explicit-return-type.md): Require returnType to be explicitly set in the options export of Gadget actions. - [action-require-run-with-on-success](https://gadget.aurelienbbn.com/eslint-plugin/reference/rules/action-require-run-with-on-success.md): Require a run export when onSuccess is exported in Gadget actions. - [action-require-timeout-ms-comment](https://gadget.aurelienbbn.com/eslint-plugin/reference/rules/action-require-timeout-ms-comment.md): Require a trailing inline comment describing the duration on the timeoutMS property in Gadget action options. - [global-action-no-action-type](https://gadget.aurelienbbn.com/eslint-plugin/reference/rules/global-action-no-action-type.md): Disallow actionType in global action options. - [Rules](https://gadget.aurelienbbn.com/eslint-plugin/reference/rules/index.md): All 16 rules organized by category with severity, type, and fixability. - [model-action-invalid-action-type](https://gadget.aurelienbbn.com/eslint-plugin/reference/rules/model-action-invalid-action-type.md): Disallow invalid actionType values in model action options. - [model-action-no-invalid-trigger](https://gadget.aurelienbbn.com/eslint-plugin/reference/rules/model-action-no-invalid-trigger.md): Disallow scheduler triggers in model action options. - [model-action-no-transactional-timeout-mismatch](https://gadget.aurelienbbn.com/eslint-plugin/reference/rules/model-action-no-transactional-timeout-mismatch.md): Disallow timeoutMS above 5000ms on model actions without explicitly setting transactional: false. - [@aurelienbbn/gadget](https://gadget.aurelienbbn.com/index.md): Community tools for the Gadget ecosystem. ESLint rules, Gelly language support, and more.