Why this plugin exists
Gadget’s official documentation covers action files, options exports, and the enqueue API thoroughly. But the rules it describes are not enforced at the code level. When you misformat an options export, exceed a timeout limit, or awaithandle.result() inside run, your code still passes linting - and the error only surfaces at deploy time or, worse, in production.
This is especially costly when AI coding agents generate Gadget action code. Agents follow documentation, but they drift. Without lint-time feedback, both humans and agents repeat the same avoidable mistakes.
This plugin encodes those rules as ESLint checks so mistakes surface in the editor, in CI, and in agent tool loops - before the code ships.
Community package
This is an opinionated, community-maintained package. It is not published or endorsed by Gadget. Gadget ships its own framework linter which covers a different set of concerns. This plugin complements it with additional static checks for action file patterns, options validation, and enqueue safety. It was built from hands-on experience shipping Gadget applications and watching the same classes of errors repeat across projects. The goal is to save other developers (and their agents) the time spent debugging issues that a linter can catch statically.What is coming
The@aurelienbbn/gadget monorepo is growing. More tools for the Gadget ecosystem are on the way - including a Gelly parser, formatter, language server, and editor extensions. Follow the GitHub repository for updates.
Get involved
This project improves with community input. If a rule misfires, a fixable case is missing, or a new pattern should be covered:- Open an issue to report bugs or request rules.
- Start a discussion for broader ideas or questions.
Pull requests are not accepted at this time. This is a personal project that happens to be open source. Contributions
may be accepted in the future as the project matures.