/SKILL.md
A master-level Flutter UI/UX design skill that equips AI coding assistants with curated design intelligence, colour palettes, typography pairings, animation patterns, component blueprints and actionable checklists for building beautiful, accessible, production-ready Flutter applications. Covers Material 3, Cupertino, adaptive layouts, animations, theming, state management integration, accessibility and performance optimization.
npx skillsauth add rantlieu-blip/flutter-ai-ui-skill flutter-ai-ui-skillInstall 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.
Design intelligence for Flutter — turn any AI coding assistant into a Flutter UI expert.
This skill provides comprehensive design intelligence for building and refining Flutter applications. It combines curated Flutter-specific best practices with professional UI/UX heuristics to produce beautiful, accessible, performant, and maintainable mobile interfaces.
The skill activates automatically when you:
/flutter-ai-ui slash command (Kiro, Copilot, Roo Code)Before writing a single line of code, understand:
Use data/flutter_colors.csv to choose your primary, secondary, surface and
error palette based on category. Use data/flutter_typography.csv to pick a
font-pairing that matches the app mood. Then generate a AppTheme class:
// Example — do NOT hardcode colours across widgets
final theme = ThemeData(
useMaterial3: true,
colorScheme: ColorScheme.fromSeed(
seedColor: const Color(0xFF2563EB),
brightness: Brightness.light,
),
textTheme: GoogleFonts.poppinsTextTheme(),
);
Consult data/stacks/flutter_guidelines.csv before implementing any component.
Run the keyword search tool to find relevant dos & don'ts:
python scripts/search_guidelines.py --keyword "animation"
python scripts/search_guidelines.py --category "accessibility"
python scripts/search_guidelines.py --severity "critical"
New project:
python scripts/create_flutter_project.py --name my_app --template material3
python scripts/create_flutter_project.py --name my_app --template cupertino
python scripts/create_flutter_project.py --name my_app --template adaptive
Existing project:
python scripts/analyse_flutter_project.py --path path/to/project
python scripts/analyse_flutter_project.py --path path/to/project --fix-suggestions
Before handing off any UI work, verify:
semantic labels or excludeFromSemantics: true for decorative onesTooltip or Semantics(label: ...)MediaQuery.textScalerOfFocusTraversalGroup and onKey keyboard navigation for desktop/webLayoutBuilder or AdaptiveLayout used for breakpointsSafeArea widgetThemeData with ColorScheme — no hardcoded hex colors in widgetsdarkTheme provided in MaterialAppDynamicColorBuilder) supported where possiblepubspec.yaml or google_fontsconst constructors everywhere possibleListView.builder / GridView.builder for long listsRepaintBoundary around heavy or animated widgetscached_network_imageGoRouter (preferred) or Navigator 2.0PopScope handles Android predictive back gesturesetState called inside build()BuildContext stored across async gaps without checking mountedAlways use useMaterial3: true. Leverage ColorScheme, Typography,
NavigationBar, Card, FilledButton, ElevatedButton, InputDecoration
with Material 3 defaults. Avoid overriding M3 tokens unnecessarily.
Flutter runs on mobile, tablet, web, and desktop. Use AdaptiveLayout or
LayoutBuilder with breakpoints:
Animations should communicate state changes, not just look pretty.
AnimatedContainer, AnimatedOpacity, AnimatedSwitcher for implicit animationsAnimationController + Tween for explicit controlHero for shared element transitionsCurves.easeInOut by default; Curves.elasticOut for playful UIsMaterial 3 uses tonal elevation (color-based), not shadow-based by default.
Use elevation with surfaceTintColor for cards. Use BoxShadow sparingly
and consistently — define shadow tokens in your theme.
Always define a complete TextTheme:
displayLarge/Medium/Small — Hero sections, splash screensheadlineLarge/Medium/Small — Page and section titlestitleLarge/Medium/Small — Card titles, list items, dialogsbodyLarge/Medium/Small — Body copy, descriptionslabelLarge/Medium/Small — Buttons, tabs, chipsUse an 8-point spacing grid. Define constants:
class AppSpacing {
static const double xs = 4;
static const double sm = 8;
static const double md = 16;
static const double lg = 24;
static const double xl = 32;
static const double xxl = 48;
}
Never use raw hex in widgets. Use semantic tokens:
// ✅ Correct
color: Theme.of(context).colorScheme.primary
// ❌ Wrong
color: const Color(0xFF2563EB)
The following Flutter-specific UI styles are supported. Reference these when asked to build in a particular aesthetic:
| Style | Description | Key Widgets & Techniques |
|-------|-------------|--------------------------|
| Material 3 Clean | Google's latest design language, tonal color, gentle curves | FilledButton, Card, NavigationBar, ColorScheme.fromSeed |
| Cupertino Native | iOS-native look and feel | CupertinoApp, CupertinoNavigationBar, CupertinoButton |
| Glassmorphism | Frosted glass, blur, translucency | BackdropFilter, ImageFilter.blur, gradient overlays |
| Neumorphism | Soft embossed shadows, monochromatic depth | Layered BoxShadow with light/dark offset |
| Dark Neon | Dark background with glowing neon accents | Custom ColorScheme, BoxShadow with colored spread |
| Minimal Flat | Ultra-clean, plenty of whitespace, subtle borders | Container, Divider, precise typography |
| Claymorphism | Soft, pillowy 3D-like components | Large border radius, colored shadow, pastel palette |
| Brutalist | Raw, high-contrast, bold typography | Borders, monochrome, loud text, tight spacing |
| Gradient Premium | Layered gradients, depth and richness | LinearGradient, RadialGradient, ShaderMask |
| Organic Biophilic | Natural forms, earthy colors, soft curves | Custom clip paths, earth tones, organic shapes |
| Retro/Y2K | Nostalgic, pixel-inspired, bold colors | Custom painters, chunky UI, high saturation |
| Enterprise Dark | Professional dark dashboard aesthetic | Dark surface colors, data-dense layout, subtle dividers |
// Prefer NavigationBar (M3) over BottomNavigationBar
NavigationBar(
destinations: const [
NavigationDestination(icon: Icon(Icons.home), label: 'Home'),
NavigationDestination(icon: Icon(Icons.search), label: 'Search'),
],
selectedIndex: _selectedIndex,
onDestinationSelected: (i) => setState(() => _selectedIndex = i),
)
// Use Shimmer loading — never show empty containers
Shimmer.fromColors(
baseColor: Colors.grey.shade300,
highlightColor: Colors.grey.shade100,
child: Container(height: 80, color: Colors.white),
)
// Always handle error states visually
ErrorStateWidget(
icon: Icons.cloud_off,
title: 'Something went wrong',
subtitle: error.toString(),
onRetry: () => ref.refresh(myProvider),
)
RefreshIndicator.adaptive( // Use adaptive for iOS/Android
onRefresh: () async => ref.refresh(myProvider),
child: ListView.builder(...),
)
This skill works with all major AI coding assistants:
| Platform | Activation Mode | Setup Location |
|----------|----------------|----------------|
| Antigravity | Skill auto-activation | .agents/skills/ |
| Claude Code | CLAUDE.md / skill | .claude/ |
| Cursor | Rules file | .cursor/rules/ |
| Windsurf | Rules file | .windsurf/rules/ |
| GitHub Copilot | Slash command | .github/copilot-instructions.md |
| Gemini CLI | GEMINI.md | GEMINI.md |
| Kiro | Spec/hook | .kiro/ |
| Roo Code | Rules | .roo/ |
| OpenCode | Rules | opencode.json |
| Continue | Config | .continue/rules/ |
| Zed | Rules | .zed/settings.json |
flutter-ai-ui-skill/
├── SKILL.md ← You are here (AI reads this)
├── README.md ← Human-facing documentation
├── data/
│ ├── flutter_colors.csv ← 30+ Flutter app-type palettes
│ ├── flutter_typography.csv ← 15 Google Fonts pairings
│ └── stacks/
│ └── flutter_guidelines.csv ← 120+ Flutter UI guidelines
├── scripts/
│ ├── analyse_flutter_project.py ← Project audit tool
│ ├── search_guidelines.py ← Guideline keyword search
│ └── create_flutter_project.py ← Project scaffolder
└── templates/
├── material3/ ← Material 3 starter
├── cupertino/ ← Cupertino/iOS starter
└── adaptive/ ← Adaptive multi-platform starter
| # | Rule | Severity |
|---|------|----------|
| 1 | Use const constructors for immutable widgets | 🔴 Critical |
| 2 | Never hardcode colors — use Theme.of(context).colorScheme | 🔴 Critical |
| 3 | Keep build() methods under 50 lines | 🔴 Critical |
| 4 | Use ListView.builder for any list > 10 items | 🔴 Critical |
| 5 | Provide darkTheme in MaterialApp | 🟠 High |
| 6 | Add Semantics labels to all interactive/image widgets | 🟠 High |
| 7 | Use RepaintBoundary around animated widgets | 🟠 High |
| 8 | Check mounted before using BuildContext after async | 🟠 High |
| 9 | Use cached_network_image for all network images | 🟠 High |
| 10 | Use GoRouter for declarative routing | 🟡 Medium |
| 11 | Prefer AnimatedContainer over explicit animations for simple transitions | 🟡 Medium |
| 12 | Use LayoutBuilder for responsive breakpoints | 🟡 Medium |
| 13 | Extract reusable widgets into separate files | 🟡 Medium |
| 14 | Use SafeArea for content near edges | 🟡 Medium |
| 15 | Prefer Flexible/Expanded over fixed sizes in rows/columns | 🟡 Medium |
| 16 | Use Hero widget for page transition shared elements | 🟢 Low |
| 17 | Apply TextScaler support for accessibility | 🟢 Low |
| 18 | Use PopScope for Android back gesture | 🟢 Low |
| 19 | Prefer SelectableText for copyable content | 🟢 Low |
| 20 | Use AdaptiveLayout from flutter_adaptive_scaffold for multi-platform | 🟢 Low |
Flutter AI UI Skill — Built with ❤️ for the Flutter community. See README.md for installation instructions and full documentation.
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.
development
End-to-end Parallels smoke, upgrade, and rerun workflow for OpenClaw across macOS, Windows, and Linux guests. Use when Codex needs to run, rerun, debug, or interpret VM-based install, onboarding, gateway smoke tests, latest-release-to-main upgrade checks, fresh snapshot retests, or optional Discord roundtrip verification under Parallels.