Every team has a rule that keeps getting broken. “Don’t call context after an await.” “Repositories return Result , never throw.” “No print in lib/ .” These live in a code review comment, get re-explained to each new joiner, and get violated again the week after. An analyzer rule does not get tired of saying it. First, exhaust the built-in rules Before writing anything, check whether the rule already exists. The linter ships with well over two hundred rules, and most team conventions are among them. A configuration worth starting from: # analysis_options.yaml include : package:flutter_lints/flutter.yaml analyzer : language : strict-casts : true strict-raw-types : true errors : invalid_annotation_target : ignore unused_import : error dead_code : error exclude : - "**/*.g.dart" - "**/*.freezed.dart" linter : rules : - always_declare_return_types - avoid_print - prefer_final_locals - unawaite...