| ํญ๋ชฉ | ๋ด์ฉ |
| Invoke | /flutter:ui |
| Aliases | /ui, /21, /coui |
| Category | petmedi-development |
| Complexity | moderate |
| MCP Servers | magic, figma, serena |
/flutter-ui#
Context Framework Note: Activates when converting Figma designs to Flutter UI.
Triggers#
- When converting Figma frames/components to Flutter
- CoUI design system based UI development
- When using
/ui, /21 keywords
Context Trigger Pattern#
/flutter-ui {component_type} [--options]
Parameters#
| Parameter | Required | Description | Example |
component_type |
โ
|
Component type |
button, card, form, page |
--figma-node | โ | Figma node ID | 12:345 |
--name | โ | Component name | ProductCard |
--feature |
โ |
Feature module |
home, store |
Execution Flow#
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 1. Figma ๋
ธ๋ ๋ถ์ (MCP: figma) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โข get_selection / get_node_info โ
โ โข extract_tailwind โ
โ โข scan_text_nodes โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 2. CoUI ์ปดํฌ๋ํธ ๋งคํ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โข Figma ํด๋์ค โ CoUI ์์ ฏ โ
โ โข ์์ ๋ณ์ โ AppColors โ
โ โข ํ์ดํฌ๊ทธ๋ํผ โ AppTextStyles โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 3. Flutter ์ฝ๋ ์์ฑ (MCP: magic) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โข 21st_magic_component_builder โ
โ โข Widget ๊ตฌ์กฐ ์์ฑ โ
โ โข ๋ฐ์ํ ๋ ์ด์์ ์ ์ฉ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 4. ํ๋ก์ ํธ ํตํฉ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โข Feature ์์ ฏ ๋๋ ํ ๋ฆฌ์ ๋ฐฐ์น โ
โ โข Generate Widgetbook UseCase โ
โ โข ํ
์คํธ ํ์ผ ์์ฑ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
CoUI Design System#
Color Mapping#
// Figma Variable โ Flutter
base-100 โ AppColors.background
base-200 โ AppColors.surface
base-300 โ AppColors.surfaceVariant
primary โ AppColors.primary
secondary โ AppColors.secondary
accent โ AppColors.accent
neutral โ AppColors.neutral
Component Mapping#
| Figma | Flutter/CoUI |
| btn | CoButton |
| card | CoCard |
| input | CoTextField |
| modal | CoDialog |
| drawer | CoDrawer |
| navbar | CoAppBar |
| avatar | CoAvatar |
| badge | CoBadge |
| tabs | CoTabBar |
Typography#
// Text Styles
headline-lg โ AppTextStyles.headlineLarge
headline-md โ AppTextStyles.headlineMedium
body-lg โ AppTextStyles.bodyLarge
body-md โ AppTextStyles.bodyMedium
label-lg โ AppTextStyles.labelLarge
Output Template#
import 'package:flutter/material.dart';
import 'package:resources/resources.dart';
/// {component_name} widget
///
/// Figma: {figma_node_link}
class {ComponentName} extends StatelessWidget {
const {ComponentName}({
required this.title,
this.onTap,
super.key,
});
final String title;
final VoidCallback? onTap;
@override
Widget build(BuildContext context) {
return Container(
// CoUI ๋์์ธ ์์คํ
์ ์ฉ
);
}
}
@UseCase(name: 'Default', type: {ComponentName})
Widget buildDefault(BuildContext context) {
return const {ComponentName}(
title: 'Sample Title',
);
}
MCP Integration#
| Phase | MCP Server | Tool |
| Figma analysis | figma | get_node_info, extract_tailwind |
| UI generation | magic | 21st_magic_component_builder |
| Code search | serena | find_symbol, search_for_pattern |
Core Rules#
- Prefer
const constructor
super.key always last parameter
- Break into small reusable units
Styling#
- No hardcoded colors -> use
AppColors.*
withOpacity() prohibited -> use withValues(alpha:)
- No magic numbers -> use design tokens
Responsive#
- Utilize
LayoutBuilder or MediaQuery
- Minimum touch target 48x48
Examples#
/flutter-ui button --name PrimaryButton --feature common
Figma Card Conversion#
/flutter-ui card --figma-node 12:345 --name ProductCard --feature store
Full Page Conversion#
/flutter-ui page --figma-node 1:100 --name HomePage --feature home
References#
- Detailed implementation:
.claude/agents/flutter-ui.md
- CoUI components:
package/coui/
- Color system:
package/resources/lib/src/core/theme/