What problem does it solve? Dart 3 offers many overlapping constructs (sealed classes, records, enums, class modifiers, codegen packages), and choosing the wrong one silently discards compile-time safety. This Skill gives a single verdict for every declaration so runtime failures become compile errors instead. ## Core Features & Use Cases - Construct verdicts: Rules for when to use sealed classes, enums, records, final/abstract interface class, and when to skip base, extension type, equatable, and fpdart/dartz. - Immutability and identity standards: Hand-rolled value types with copyWith and ==/hashCode, freezed for non-trivial types, and stable id-based identity. - Enforcement script: scripts/check-dart3-idioms.sh greps a codebase for hard bans (banned packages, experiment flags) and advisories (default:, late, Map<String, dynamic>, SCREAMING_CAPS). - Use Case: When adding a new variant to a sealed Payment type, the Skill ensures every switch is exhaustive with no default:, so the compiler flags every unhandled site. ## Quick Start Review my Dart file and tell me whether each declaration should be a sealed class, enum, record, or final class under these standards.