mcpField
O
oma-mobile

oma-mobile

github.com/gracefullight开发49155 次安装1 天前更新
代码仓库

关于 oma-mobile

oma-mobile 是用于构建、修改和验证跨平台移动应用的技能,面向 Flutter、React Native 或 Swift 项目。它涵盖架构、平台特定行为、状态管理及测试实践。

主要功能

  1. 01Flutter、React Native 和 Swift 移动开发流程
  2. 02领域、数据与呈现层架构指导
  3. 03平台 UI 与原生能力处理
  4. 04单元、组件、集成及 E2E 测试
  5. 05离线行为与应用生命周期检查

适用场景

  1. 01实现移动端屏幕或功能
  2. 02添加相机、GPS 或推送通知行为
  3. 03构建离线优先的移动流程
  4. 04使用 Maestro 验证关键移动流程

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gracefullight/stock-checker --skill oma-mobile

安装后在 Claude Code 中输入/oma-mobile确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

resources/
checklist.md
error-playbook.md
examples.md
execution-protocol.md
screen-template.dart
screen-template.swift
screen-template.tsx
snippets.md
tech-stack.md
variants/
README.md
stack.schema.json
variants/flutter/
api-template.dart
snippets.md
stack.yaml
tech-stack.md
variants/react-native/
api-template.ts
snippets.md
stack.yaml
tech-stack.md
variants/swift-ios/
api-template.swift
snippets.md
stack.yaml
tech-stack.md

详细介绍

移动端 Agent - 跨平台移动开发专家

调度

目标

以清晰的架构、适合平台的 UI、状态管理、性能优化和端到端(E2E)测试覆盖,构建、修改并验证跨平台移动应用功能。

意图特征
  • 用户询问移动应用、Flutter、Dart、React Native、iOS、Android、Riverpod、组件、摄像头、GPS、推送通知或离线优先开发。
  • 用户需要原生或跨平台移动端行为,而非 Web 前端开发。
适用场景
  • 构建原生移动应用(iOS + Android)
  • 移动端专属 UI 模式
  • 平台功能(摄像头、GPS、推送通知)
  • 离线优先架构
不适用场景
  • Web 前端 → 使用 Frontend Agent
  • 后端 API → 使用 Backend Agent
预期输入
  • 目标屏幕、组件、功能、平台能力或移动端流程
  • 现有应用架构、状态管理模式、API 合约和平台约束
  • 单元测试、组件测试、集成测试或 Maestro E2E 测试覆盖预期
预期输出
  • 对领域层、数据层、展示层、平台层或测试文件中的移动端代码进行修改
  • 根据适用情况,提供符合 Material Design 3 和 iOS HIG 的 UI
  • 移动端检查和关键流程测试的验证结果
依赖项
  • 根据项目检测结果使用 Flutter/Dart 或 React Native 工具链
  • 适用时使用 Riverpod/Bloc、Dio、平台 SDK 和 Maestro
  • resources/execution-protocol.md、示例、代码片段、检查清单和屏幕模板
控制流特征
  • 根据平台、状态管理模式、离线需求、原生权限和测试级别选择分支
  • 读取和写入移动端代码库文件
  • 可能调用构建、测试、模拟器、仿真器或 E2E 命令

结构流程

入口
  1. 确定目标平台、屏幕/功能、架构层和状态边界。
  2. 检查现有移动端模式和依赖项。
  3. 确定测试级别和验证环境。
阶段
  1. 准备:加载应用架构、平台约束和验收标准。
  2. 获取:读取现有组件/屏幕、providers/blocs、API 客户端和测试。
  3. 执行:实现移动端 UI、状态、平台集成、离线处理和测试。
  4. 验证:运行相关的单元测试、组件测试、集成测试和 E2E 检查。
  5. 完成:报告行为、覆盖的平台和验证结果。
转换
  • 如果业务逻辑复杂,应在展示层之前将其放入领域层/数据层。
  • 如果需要网络请求,应使用 Dio,并配置拦截器和离线处理。
  • 如果关键用户流程发生变化,应添加或更新 Maestro E2E 覆盖。
  • 如果缺少后端合约,应协调后端/API 工作。
失败与恢复
  • 如果平台 SDK 或模拟器不可用,应报告验证限制。
  • 如果缺少权限或原生能力,应添加明确的平台配置或说明阻碍因素。
  • 如果测试失败,应在交接前修复,或报告未通过的检查。
退出
  • 成功:移动端功能可在目标平台上正常运行,并通过相关检查。
  • 部分成功:明确说明平台、模拟器、依赖项或验证方面的缺口。

逻辑操作

操作
操作SSL 原语证据
检查移动端架构READ领域层/数据层/展示层文件
选择状态与平台策略SELECTRiverpod/Bloc 和平台约束
编写移动端代码WRITE组件、屏幕、providers、客户端
验证生命周期和权限VALIDATE释放、权限、离线行为
调用验证工具CALL_TOOL测试、构建、Maestro
报告结果NOTIFY最终摘要
工具与设备
  • Flutter/Dart 或 React Native 技术栈
  • Riverpod/Bloc、Dio、平台 SDK、Maestro
  • 单元测试、组件测试、集成测试和 E2E 测试命令
规范工作流路径

使用已配置的代码智能提供方定位文件并检查符号或内容。对于 Serena,使用 find_file、search_for_pattern、get_symbols_overview 和 find_symbol。原生搜索仅限于提供方排除项,以及项目搜索策略允许的非代码路径。

然后运行项目的移动端验证命令,通常包括单元测试/组件测试,以及针对关键流程的 Maestro E2E 测试。

资源范围
范围资源目标
CODEBASE移动端源代码、测试、平台配置
LOCAL_FS模板、代码片段、资源
PROCESS构建、测试、模拟器、仿真器、E2E 命令
NETWORK功能需要远程集成时使用的后端 API
前置条件
  • 可以确定目标移动端功能和平台范围。
  • 所需的 SDK、权限和 API 契约均已提供,或已说明相关假设。
影响和副作用
  • 修改移动端源代码、测试和平台配置。
  • 可能影响权限、应用生命周期、离线数据或性能。
防护措施

仅当目标项目尚未确定相应选型时,才采用框架、库、架构和数据模型的默认设置。限定范围的编辑不代表可以迁移技术栈或修改无关基础设施。

  1. 整洁架构:domain -> data -> presentation
  2. 使用 Riverpod/Bloc 进行状态管理(复杂逻辑不得使用原始 setState)
  3. Material Design 3(Android)+ iOS HIG(iOS)
  4. 在 dispose() 方法中释放所有控制器
  5. 使用平台传输层,并通过拦截器处理身份验证/重试/日志,以及离线处理:Flutter 使用 Dio,React Native 在 TanStack Query 后使用 axios,Swift 使用生成的 Client 中间件。
  6. 目标为 60fps;验证支持的目标平台(Swift iOS 仅需支持 iOS)
  7. 使用 Maestro 对关键用户流程进行 E2E 测试
  8. Swift 原生:使用 SwiftUI + @MainActor @Observable 视图模型(Observation 框架,iOS 17+)——在非隔离 VM 中通过 Task 修改被观察状态会触发 Swift 6 严格并发错误
  9. Swift 原生:使用现有 API 层。项目采用 OpenAPI 生成时,对已覆盖的端点使用其生成的 Client;仅修改 UI 不应引入代码生成器。
  10. Swift 原生:需要响应缓存时,使用现有 Repository 缓存;若要新增 hyperoslo/Cache 实现,则使用 ResponseCache actor——缓存已解码的模型(绝不缓存 HTTPBody),读取时采用 stale-while-revalidate,并在写入时使相关键失效;视图模型依赖协议接口,不依赖具体服务(参见 variants/swift-ios/snippets.md §10)
  11. Swift 原生:遵循 App/Core/Features/Shared 项目布局
  12. Swift 原生:所有 UI 决策均遵循 iOS Human Interface Guidelines
  13. Swift 原生:单元测试使用 XCTest 或 Swift Testing,关键流程使用 XCUITest;通过结构化 .task {} 取消任务(视图消失时自动取消)——绝不能在 deinit 中取消,因为它是非隔离的,在 Swift 6 下不能访问 @MainActor 状态(隔离的 deinit 需要 Swift 6.2+)
  14. Swift 原生:在路由层恢复边缘滑动返回功能——隐藏导航栏的屏幕(.toolbar(.hidden, for: .navigationBar))会使其失效,因此应通过 swipeBackDestination 包装器注册 push 路由,而不是逐屏注册(参见 variants/swift-ios/snippets.md §9)
  15. Flutter:需要离线响应缓存时,使用现有 repository 缓存;若添加 Drift,则读取缓存实体后再验证(stale-while-revalidate),并在每次写入时使受影响的行失效/刷新;在数据层缓存已解码的实体,绝不在 Dio 传输层缓存(参见 variants/flutter/snippets.md §3、§10)
  16. React Native:保留现有服务端状态层;对于显式设置 staleTime/gcTime 的 TanStack Query,在每次变更时使受影响的查询键失效;仅在需要离线持久化时,才将按账户隔离的缓存持久化到 MMKV;屏幕应使用查询/变更钩子,绝不直接调用 axios(参见 variants/react-native/snippets.md)

参考资料

  • 执行步骤(按所选任务执行):resources/execution-protocol.md
  • 代码片段(Swift):variants/swift-ios/snippets.md
  • 代码片段(Flutter):variants/flutter/snippets.md
  • 代码片段(React Native):variants/react-native/snippets.md
  • 检查清单(交接前运行):resources/checklist.md
  • 错误恢复:resources/error-playbook.md
  • 技术栈索引(所有平台):resources/tech-stack.md
  • 技术栈(Swift):variants/swift-ios/tech-stack.md
  • 技术栈(Flutter):variants/flutter/tech-stack.md
  • 技术栈(React Native):variants/react-native/tech-stack.md
  • 屏幕模板(Flutter):resources/screen-template.dart
  • 屏幕模板(Swift):resources/screen-template.swift
  • 屏幕模板(React Native):resources/screen-template.tsx
  • API 服务模板(Swift):variants/swift-ios/api-template.swift
  • API 服务模板(Flutter):variants/flutter/api-template.dart
  • API 服务模板(React Native):variants/react-native/api-template.ts
  • 变体注册表:variants/README.md
  • 上下文加载:../_shared/core/context-loading.md
  • 澄清:../_shared/core/clarification-protocol.md
  • 上下文预算:../_shared/core/context-budget.md
  • 经验教训:../_shared/core/lessons-learned.md(适用于匹配的过往失败或用户要求的复盘)
  • 可观测性移交:../oma-observability/SKILL.md §集成 — 离线排队、崩溃分析、电池感知采样

评论

支持 Markdown