signals-lint

star 783

Standardized compiler diagnostics, static analysis lints, and automated IDE quick-fixes.

rodydavis By rodydavis schedule Updated 5/26/2026

name: signals-lint description: Standardized compiler diagnostics, static analysis lints, and automated IDE quick-fixes.

signals_lint Tooling & Rules

This skill covers working with static code analysis, custom compiler warning diagnostics, and automated quick-fixes in the signals.dart ecosystem.


🚀 Activation & Setup

Ensure the plugin is active in your project to enable real-time IDE diagnostics and fixes:

# pubspec.yaml
dev_dependencies:
  custom_lint: ^0.8.1
  signals_lint: ^7.0.0
# analysis_options.yaml
analyzer:
  plugins:
    - custom_lint

🛡️ Lint Rules Reference

1. signals_avoid_create_in_build_method

Flags instances where a signal or computed variable is created inside a Flutter build method.

  • Problem: Creating state during build causes state to reset on every rebuild.
  • Solution: Move the creation to the class fields or initialize inside a state lifecycle hook.

2. signals_avoid_deprecated_watch_extension

Flags uses of deprecated BuildContext.watch() and BuildContext.unwatch() extensions.

  • Problem: Watch extensions can cause broad stateful widget lifecycle overhead.
  • Solution: Use localized SignalBuilder or inherit from SignalWidget/SignalStatefulWidget.

3. signals_avoid_deprecated_signals_mixin

Flags usage of deprecated with SignalsMixin mixins on StatefulWidget states.

  • Problem: Inherits stateful widget tracking hooks unnecessarily.
  • Solution: Inherit from SignalStatefulWidget instead.

4. signals_prefer_named_builder

Enforces named builder: callbacks in SignalBuilder and Watch elements instead of positional arguments.

  • Reason: Guarantees standard API parameters and readability.

5. signals_prefer_unified_options

Flags direct creator configuration arguments (e.g. autoDispose: true).

  • Solution: Bundle configuration properties under unified options classes (e.g., options: SignalOptions(autoDispose: true)).

💡 Automated IDE Code Assists (Quick-fixes)

Place your cursor on the relevant class name or widget instantiation inside your IDE to reveal these automatic assists via the quick-fix menu (Cmd+. or Alt+Enter):

  1. WrapWithSignalBuilder: Wraps any widget expression inside SignalBuilder(builder: (context) => ...).
  2. ConvertStatelessToSignalWidget: Refactors a standard StatelessWidget into a SignalWidget instantly.
  3. ConvertStatefulToSignalStatefulWidget: Refactors a standard StatefulWidget to a SignalStatefulWidget.
  4. MigrateSignalsMixinToSignalStatefulWidget: Strips the legacy SignalsMixin and converts the class structure to SignalStatefulWidget.
  5. MigrateWatchToSignalBuilder: Converts legacy Watch(...) instances into clean SignalBuilder widgets.
Install via CLI
npx skills add https://github.com/rodydavis/signals.dart --skill signals-lint
Repository Details
star Stars 783
call_split Forks 82
navigation Branch main
article Path SKILL.md
More from Creator