What problem does it solve? Flutter teams building Odova screens can drift from the Calm design system by reaching for Material widgets, hand-rolled BoxDecorations, ripples, or borders, producing inconsistent UI that fails review late. This Skill defines exactly what each of the 22 Calm widgets is, which states and tokens it reads, and how to keep feature code compliant. ## Core Features & Use Cases - Component contract: Documents all 22 Calm widgets (CalmButton, CalmCard, CalmRowGroup, CalmField, CalmSheet, CalmNumberPad, and more) with variants, states, constructor signatures, and the exact CalmColors/CalmType/CalmSpace/CalmShapes/CalmMotion tokens each state reads. - Interaction rules: Specifies the 90ms scale-and-tint press via CalmPressable, NoSplash enforcement, the additive 3pt focus ring, the 52pt hit-area floor, and reduced-motion collapse to Duration.zero. - Automated hygiene gate: Ships scripts/check_component_hygiene.sh, which fails a PR on BoxDecoration outside lib/ui/calm/, live ink splashes, borders outside the two allowlisted files, Material widget substitutes, and ColorScheme/TextTheme reads in lib/ui/. - Use Case: When building a new Odova screen or reviewing a PR, consult the component inventory to pick the right Calm widget instead of ListTile or Card, then run the hygiene script before merging. ## Quick Start Ask the assistant to build or review an Odova screen widget using the Calm component rules and then run the component hygiene check over lib/.