plugins/eden-ui-flutter/skills/frontend-design/SKILL.md
Build, review, or visually inspect Flutter UI using eden-ui-flutter widgets and design tokens. Use when the user wants to create new screens, design widgets, audit existing UI, review Flutter code, or test rendered app output via flutter-skill. Triggers on: "build the UI", "design this screen", "create a view", "review the frontend", "audit the UI", "check UI consistency", "make it look good", "frontend review", "visual review", "check how it looks", "inspect the app"
npx skillsauth add ao-cyber-systems/devflow-claude eden-flutter:frontend-designInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Three modes:
Build mode — Generate Flutter screens and widgets using eden-ui-flutter components. Compose from the eden-ui-flutter widget catalog rather than writing raw Material/Cupertino widgets. Produces production-grade Dart files that match the eden-ui-flutter design system (configured brand theme, dark mode, responsive layout).
Review mode — Audit existing Dart widget files for eden-ui-flutter compliance. Check for: raw Material widgets that should use eden-ui-flutter equivalents, missing dark mode support, hardcoded colors instead of design tokens, incorrect widget composition, accessibility gaps (missing Semantics), missing state management patterns.
Visual mode — Connect to a running Flutter app via flutter-skill MCP server and inspect the rendered output. Analyze the accessibility tree, take screenshots, test interactive flows, and verify design token compliance in the live widget tree. Catches issues that static code review misses: layout overflow, theme inconsistencies, gesture conflicts, animation jank.
Output: Working Dart files (build), actionable code findings with fixes (review), or visual audit report with screenshots (visual). </objective>
<execution_context> @plugins/eden-ui-flutter/references/eden-ui-flutter-conventions.md </execution_context>
<context> Mode + target: $ARGUMENTS - `build <description>` — Generate new screens/widgets (e.g., "build user settings screen") - `review [paths]` — Audit existing files (e.g., "review lib/features/dashboard/") - `visual [connection]` — Live app inspection (e.g., "visual ws://127.0.0.1:50000/xxx/ws") - If no mode specified, infer from contextLive reference — read from eden-ui-flutter source when needed:
../eden-ui-flutter/lib/src/components/../eden-ui-flutter/lib/src/theme/../eden-ui-flutter/lib/src/tokens/../eden-ui-flutter/lib/src/brand/../eden-ui-flutter/example/Flutter-skill MCP integration (Visual mode): When flutter-skill MCP is available, use its tools for live inspection:
connect_app / scan_and_connect — Connect to a running Flutter appinspect / snapshot — Get the accessibility tree (87-99% more token-efficient than screenshots)screenshot — Capture visual output for design reviewtap / enter_text / swipe — Test interactive flowsassert_visible / assert_text — Verify UI stateget_logs — Check for rendering errors, overflow warnings
</context>
Read project theme — Check the app's lib/config/theme.dart or equivalent for EdenTheme configuration: brand preset, color overrides, font preset, dark mode settings. This determines how EdenColors.primary resolves. Use semantic color tokens — never hardcode hex values.
Understand the request — What screen/widget is needed? What data does it display? What user interactions does it support? What navigation pattern does it use?
Check eden-ui-flutter for matching widgets — Read ../eden-ui-flutter/lib/src/components/ to find matching widget APIs. Check constructor parameters, required vs optional fields, available variants.
Plan the composition — List which eden-ui-flutter widgets will compose the screen. Identify:
Generate Dart files — Write the screen/widget files using eden-ui-flutter widgets:
EdenScaffold for screen structure with app bar, sidebar, FABEdenCard for content containers with proper elevation and paddingEdenDataTable for tabular data with sorting, pagination, selectionEdenForm + EdenTextField / EdenDropdown / etc. for formsEdenDialog / EdenBottomSheet for overlay interactionsEdenEmptyState for zero-data scenariosEdenSnackBar / EdenToast for notificationsEdenButton with correct variant (primary, secondary, outline, ghost, danger)Semantics widgets for accessibility where eden-ui-flutter doesn't handle it internallyEdenResponsive / LayoutBuilder for adaptive layoutsVerify — Confirm all widget constructors use valid parameters by cross-referencing eden-ui-flutter source. Check that state management follows project conventions. Verify imports are correct.
Read project theme — Check theme configuration to understand which brand preset is active. When reviewing color usage, ensure widgets use EdenColors.primary and semantic tokens, not raw Colors.blue or hardcoded values.
Discover target files — Glob for *.dart in the specified paths. If no path given, scan lib/ excluding generated files (*.g.dart, *.freezed.dart).
Read eden-ui-flutter widget inventory — Load the component catalog to know what's available.
Audit each file for these categories:
Widget usage:
ElevatedButton instead of EdenButton)Card instead of EdenCard)Design token compliance:
Colors.blue, Color(0xFF...)) instead of EdenColors.primaryTextStyle instead of EdenTypography.bodyMd)EdenSpacing.mdAccessibility:
Semantics on interactive custom widgetsexcludeSemantics on decorative elementsState management:
const constructors where possibleComposition:
EdenForm wrapper with validationEdenListTile or EdenDataTableEdenEmptyStateReport findings — Group by severity:
Generate fixes — For each must-fix and should-fix finding, provide the corrected Dart code. Apply fixes directly if the user approves.
Uses flutter-skill MCP server to connect to a running Flutter app and inspect the live widget tree.
Read project theme — Check theme configuration to know what colors and typography to expect in the live app.
Connect to the app — Use scan_and_connect to discover running Flutter apps, or connect_app with a specific VM service URL. Verify the connection succeeds before proceeding.
Determine scope — What screens/flows to inspect:
For each screen, run this sequence:
Snapshot the accessibility tree — Use snapshot to get the semantic structure. This is the primary inspection tool — it reveals the widget hierarchy, semantics labels, roles, and states. Far more useful than screenshots for design system compliance checking.
Screenshot for visual context — Use screenshot to see the rendered visual output. Evaluate layout, spacing, color usage, and overall design quality.
Design token audit — Analyze the accessibility tree for:
EdenTypography tokensEdenSpacing scaleWidget structure check — Use the snapshot to verify:
Responsive check — If testing on different form factors:
At each size: take a screenshot, snapshot the tree, check for overflow warnings in logs.
Dark mode check — If the app supports theme switching:
Interactive testing — For screens with interactive elements:
Check logs — After interactions, use get_logs to check for:
Compile visual audit report — Organize findings:
Layout & Spacing:
Theme & Tokens:
Responsive:
Accessibility:
Interactivity:
Cross-reference with code — For each visual finding, trace back to the responsible Dart file using the widget tree structure. Provide the file path and specific widget that needs to change. Offer to apply fixes.
development
Resolve a parked decision and resume autonomous execution. Use when you see a pending DECISION-NNN.md in .planning/decisions/pending/, when the user wants to choose an option for a blocked checkpoint:decision, or when you need to tell the executor which option to take. Triggers on: "resolve decision", "decide DECISION-", "pick option for DECISION-", "unblock DECISION-", "answer DECISION-", "choose option for decision", "I want option-a", "go with option-b", "my answer is".
development
Orchestrate a multi-step DevFlow workflow by chaining skills. Use when the user wants to invoke a sequence of skills as one ask (e.g., "build and sync to github", "research, plan, then build", "ship and announce"). Triggers on: "ship X to Y", "build and X", "plan and X", "X then Y", "in one go", "as a chain", "all in sequence", "chain", "ship-and-sync", "research-plan-build"
testing
Stamp a new polyglot monorepo using the AO Cyber Systems scaffold — root CLAUDE.md with Layout table, per-area CLAUDE.md, path-filtered CI workflows, comprehensive .gitignore, and the no-binaries pre-commit hook config. Use this for new product monorepos (the 5-monorepo architecture: aodex, aosentry, eden-biz, politihub, aohealth, plus future ones). Triggers on: "new monorepo", "scaffold a monorepo", "set up a monorepo", "create a new product monorepo".
development
Validate that a monorepo follows the AO Cyber Systems layout convention — root CLAUDE.md declares every area, every area has its own CLAUDE.md, no compiled binaries are tracked in git. Reads the root `CLAUDE.md` Layout table, walks the working tree, and reports drift in a single Markdown summary. Standalone — works on any repo. Triggers on: "audit monorepo layout", "monorepo doctor", "is this monorepo healthy?", "check the layout", "find binaries in the repo".