flutter-pro-ux-review
Skill1 starsChanged 3 months agoMITView on GitHub
Production Flutter UX audit: ranked polish findings (dead taps, null text, a11y, keyboard, haptics, layout shift, async/offline honesty, motion, empty states, destructive confirm, permission priming, RTL, charts/number consistency) with optional PLAN.md per pick. Use for Flutter app polish, "feels off", release UX pass, /flutter-pro-ux-review, /flutter. Complements official Flutter architecture/test skills — does not replace them. Not for greenfield layering, RenderFlex-only fixes, React/web craft, or CI setup.
In this repository47 other files it gives its agents.
- data-apache-lakehouseSkill
- data-apiSkill
- dataSkill
- data-duckdbSkill
- data-identity-resolutionSkill
- data-pipeline-operationsSkill
- data-pokemon-tcg-foundationsSkill
- data-product-evalSkill
- data-reelsSkill
- data-semantic-qualitySkill
- data-table-lifecycleSkill
- html-designSkill
- ebay-listingSkill
- flutterSkill
- browser-testing-with-devtoolsSkill
- browser-verifySkill
- design-systemSkill
- frontend-designSkill
- mobile-app-echarts-visualSkill
- mobile-blog-chart-visualSkill
- mobile-chart-visualSkill
- mobile-product-uxSkill
- mockup-implementSkill
- product-designSkill
- product-ui-craftSkill
- prototypeSkill
- react-performanceSkill
- ui-exploreSkill
- visual-verifySkill
- web-qualitySkill
- high-retention-insight-reels-instagramSkill
- instagramSkill
- instagram-virality-insightsSkill
- marketing-cashvertisingSkill
- marketing-contagiousSkill
- marketing-going-viralSkill
- marketingSkill
- marketing-offersSkill
- marketing-storybrandSkill
- quality-checkSkill
- elements-of-styleSkill
- style-clarity-graceSkill
- writer-styleSkill
- writing-docsSkill
- writing-proseSkill
- writingSkill
- writing-technicalSkill
The file
We split this skill into the rules it gives an agent
9 rules. About 0 are common, 5 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 18
Do not redesign brand, refactor architecture, or restate framework tutorials.
- Distinctive: line 30
If the message is clearly one of the above, do not run a full UX catalog pass.
- Very specific: line 34
Read the user message; default review.
- Distinctive: line 53
Primary path first: prefer home, auth, checkout, pay, search, core tabs over settings chrome.
- Distinctive: line 76
If a rule lists two severities: Critical on primary path / core widget.
- Very specific: line 119
Read references/surfaces.md, then only the pass files for this run.
- Distinctive: line 129
Prefer existing project helpers.
- Very specific: line 140
Anti-clustering: if one Hunt yields many hits of the same slug, report one systemic finding — state the count and give 2–3 representative …
- Very specific: line 141
Cross-slug dedupe: if two different slugs both flag the same widget instance, keep the higher-severity finding and cross-reference the …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Flutter pro UX review
Version: 1.1
Job: Find user-visible Flutter polish failures with grep-backed evidence. Do not redesign brand, refactor architecture, or restate framework tutorials.
Hard stops (other skills own these)
| User ask | Do this instead |
| Project structure / MVVM / layers | Official flutter-apply-architecture-best-practices |
| RenderFlex / unbounded height only | flutter-fix-layout-issues |
| Widget/integration tests only | flutter-add-widget-test / integration skills |
| React/web density / sticky CSS | product-ui-craft / mobile-product-ux |
| Full e2e device farm | quality-check |
If the message is clearly one of the above, do not run a full UX catalog pass.
Modes
Read the user message; default review.
| Mode | Do | Stop when |
review | Hunt → ranked findings | After report; do not implement unless asked |
plan | Selected finding(s) → PLAN.md | Plans written |
fix | One plan or one slug | Diff done + re-Detect that rule |
Say the mode in the first line of your reply: Mode: review | scope: lib/… | budget: 12.
Scope & budget (required defaults)
| Knob | Default | Notes |
| scope | User paths, else primary product UI under lib/ (prefer features/, ui/, screens/, pages/ over generated/test) | Never require boiling the whole monorepo |
| budget | 12 findings (Critical+Noticeable first) | Subtle only if budget remains or user asked taste / strictness: taste |
| passes | See default pass set below | User may name passes: touch,a11y,forms |
| strictness | release | release = Critical+Noticeable; taste = include Subtle |
Primary path first: prefer home, auth, checkout, pay, search, core tabs over settings chrome.
Decision principles
- User cost — flag taps, trust, and time lost; not style nits without effect
- Primary path first — core journeys before admin/settings
- Prevent ≤ punish — block bad input; don’t only error on submit
- Stable layout — images, numbers, async must not jump under the finger
- Acknowledge intent — press / success / error get feedback
- Platform expectations — back, swipe-dismiss, keyboard, status bar
- Honesty under failure — empty, offline, error, retry
- A11y is polish — unusable for some users → Critical
- Budget attention — top N by severity then effort; stop at budget
- One fix, one verify — no drive-by architecture in
fixmode
Severity (with decision rules)
| Severity | When |
| Critical | Broken primary interaction, trust failure, or blocker for some users (dead primary tap, “null” on primary UI, stuck modal, missing Semantics on primary icon button, no error/retry on primary async) |
| Noticeable | Every-session friction on common paths (layout jump, raw phones/dates, weak keyboard flow, missing haptics on primary actions, no bottom inset) |
| Subtle | Taste / secondary (exit timing, changelog, list edge fade) — omit under strictness: release unless budget allows and user wants taste |
If a rule lists two severities: Critical on primary path / core widget; else Noticeable (or Subtle when the rule says so).
| Effort | Meaning |
| S | Local one-liner / small helper |
| M | Cross-widget or shared util |
| L | Product surface (analytics, changelog, design-system) |
Progressive disclosure (load only what you need)
| File | Load when |
references/surfaces.md | Always in review (index + pass order) |
references/touch.md | Pass touch |
references/data-display.md | Pass data |
references/forms-keyboard.md | Pass forms |
references/scroll-layout.md | Pass scroll |
references/feedback-async.md | Pass feedback |
references/a11y.md | Pass a11y (default on) |
references/motion.md | Pass motion (default off in release unless user asks) |
references/platform-chrome.md | Pass platform |
references/performance-feel.md | Pass perf (default off; on for taste or user asks jank) |
references/trust-safety.md | Pass trust (default on — empty states, destructive confirm, permission priming) |
references/charts-numbers.md | Pass charts (on when scope has charts/tables/signed numbers) |
assets/findings-template.md | Emitting the report — see references/example-run.md for a good-vs-bad worked example |
assets/plan-template.md | plan mode |
references/vs-official.md | Only if tempted to refactor architecture |
references/experts.md | Never during audit (attribution only) |
references/rule-catalog.md | Legacy monolith — prefer surface files; load only if you need one-file search |
Default passes
strictness: release:touch→a11y→data→forms→scroll→feedback→platform→trust→charts(if scope has charts/tables/signed numbers)strictness: taste: above +motion+perf- Skip
platformanalytics/changelog noise if no analytics SDK and budget is tight. - Skip
chartsentirely if scope has no data-viz/numeric surfaces.
Workflow
Mode review
- Confirm Flutter app (
pubspec.yamlwithflutter:). - Set scope, budget, passes (defaults above).
- Read
references/surfaces.md, then only the pass files for this run. - Hunt primary-path files first; record
slug, severity, effort,file:line, evidence, why. - Dedupe (see rules below); sort Critical → Noticeable → Subtle, then effort S → L.
- Cap at budget.
- Self-validate report (below).
- Emit findings. Stop.
Mode plan
- For each selected ID/slug: use
assets/plan-template.md. - Prefer existing project helpers; no new state-management library.
- One plan per finding.
Mode fix
- Implement one plan or slug.
- Small diff; match ThemeData / tokens.
- Re-run that rule’s Detect; note residual risk.
Dedupe rules
- Anti-clustering: if one Hunt yields many hits of the same
slug, report one systemic finding — state the count and give 2–3 representativefile:linesamples. Don't spend the findings budget listing every hit. - Cross-slug dedupe: if two different slugs both flag the same widget instance, keep the higher-severity finding and cross-reference the dropped slug in that finding's evidence line (e.g. "also matches
min-touch-target").
Report self-validation (before sending)
- Every finding has existing
file:line(or honest “project-wide absence” for opportunity rules) - Every
slugcomes from a loaded surface file - Every finding has Evidence + Why
- Count ≤ budget
- Subtle count is 0 under
releaseunless user asked taste - Did not implement in
reviewmode - Did not recommend architecture rewrites
Out of scope (explicit)
- Flutter web / desktop chrome (browser tab titles, OG tags, web-only transitions) unless user opts in with
passes: web - Brand redesign, new design system, package upgrades for their own sake
Hand off
| Need | Skill |
| Layers / feature structure | flutter-apply-architecture-best-practices |
| Overflow / constraints | flutter-fix-layout-issues |
| Tests for a fixed widget | flutter-add-widget-test |
| Flutter work routing | flutter hub (if installed) |
| Browser proof (Flutter web) | browser-verify / quality-check |
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

