SuperAPI AI 工具集

flutter-brainstorming

编程与开发

查看项目

更新于 10-16 02:21

技能介绍

概述

flutter-brainstorming 用于将想法转化为完整的 Flutter 设计与规格说明,通过自然的协作式对话完成。在进行任何创造性工作(创建功能、构建组件、添加功能或修改行为)之前,必须先使用本技能。

开始时应理解当前项目上下文(pubspec.yaml、lib/ 结构、已有功能),然后一次只问一个问题来细化想法。一旦理解要构建的内容,就以小段落(200-300 字)呈现设计,并在每段之后检查是否符合预期。

开始时需声明:“I'm using the flutter-brainstorming skill to design this feature.”

使用方式

阶段 1:理解想法

先检查项目上下文:

# Check pubspec.yaml for dependencies
cat pubspec.yaml

# Check existing lib/ structure
ls -la lib/

# Check existing features
ls -la lib/features/ 2>/dev/null || echo "No features folder yet"

一次只问一个问题,尽量使用多选题,每条消息只问一个问题,聚焦理解:目的、约束、成功标准。

需要探索的关键问题:

  1. 该功能解决什么用户问题?
  2. 该功能需要什么数据?
  3. 需要哪些 UI 交互?
  4. 需要管理什么状态?
  5. 是否有外部依赖(API、数据库)?

阶段 2:探索方案

提出 2-3 种不同方案并说明权衡。例如状态管理:

  • 方案 A:Riverpod + Freezed(推荐用于新项目)
  • 方案 B:BLoC Pattern
  • 方案 C:Provider + ChangeNotifier

以 Riverpod + Freezed 模式为例:

// State with freezed (3.x: union classes must be sealed; use Dart 3
// switch patterns instead of the removed .when()/.map())
@freezed
sealed class AuthState with _$AuthState {
  const factory AuthState.initial() = AuthInitial;
  const factory AuthState.loading() = AuthLoading;
  const factory AuthState.authenticated(User user) = AuthAuthenticated;
  const factory AuthState.error(String message) = AuthError;
}

// Notifier with riverpod_generator
@riverpod
class Auth extends _$Auth {
  @override
  AuthState build() => const AuthState.initial();

  Future<void> login(String email, String password) async {
    state = const AuthState.loading();
    try {
      final user = await ref.read(authRepositoryProvider).login(email, password);
      state = AuthState.authenticated(user);
    } catch (e) {
      state = AuthState.error(e.toString());
    }
  }
}

应先给出推荐并解释原因。

阶段 3:呈现设计

以 200-300 字的段落呈现设计,包括:功能概览(目的与范围、用户故事)、Clean Architecture 结构、数据流、API 契约、本地存储模式、状态转换、UI/UX 设计(Widget 层级、导航流程、错误状态)、基于优先级的测试策略:

  • 优先级 1:Repository、DataSource 单元测试
  • 优先级 2:状态管理(BLoC/Provider)单元测试
  • 优先级 3:Widget 测试(可选)
  • 优先级 4:Golden 测试(可选,视觉回归)

每段之后询问:“Does this look right so far?”

设计之后

将验证过的设计写入 docs/plans/YYYY-MM-DD-<feature>-design.md,模板包含:概述、用户故事、Clean Architecture(Domain/Data/Presentation 层)、数据流、API 契约、测试计划、依赖。

提交设计文档到 git:

git add docs/plans/
git commit -m "docs: add <feature> design document"

实现(如继续)

询问:“Ready to create an implementation plan?”

如果同意:

  • 使用 flutter-craft:flutter-planning 创建详细实现计划
  • 如需要隔离工作区,使用 flutter-craft:flutter-worktrees

必需的子技能

完成头脑风暴并记录设计后,必须调用: → Skill tool: flutter-craft:flutter-planning

这不是可选项。没有详细实现计划,工作流就是不完整的。

关键原则

  • 一次只问一个问题
  • 优先使用多选题
  • 始终采用 Clean Architecture:Domain → Data → Presentation 层顺序
  • 严格遵循 YAGNI,移除所有不必要功能
  • 探索替代方案,在确定前始终提出 2-3 种方案
  • 增量验证,分段呈现设计并逐段确认
  • 测试优先级:Repository/DataSource → 状态 → Widget

警示信号

不要因为以下理由跳过头脑风暴:

  • “这只是一个简单小组件” → 组件需要架构上下文
  • “我已经知道要构建什么” → 用户可能有不同预期
  • “时间紧张” → 糟糕的设计日后会花费更多时间
  • “这很明显” → 假设会导致 bug