mcpField
E
expo-design-system

expo-design-system

github.com/pproenca设计与 UI220144 次安装11 周前更新
代码仓库

关于 expo-design-system

面向 Expo 和 React Native 应用的设计系统工程技能,基于 Unistyles v3,指导构建和维护 Web 与 iOS 共用组件,并遵循 clinic 应用架构。

主要功能

  1. 01在 Unistyles 主题中组织设计令牌
  2. 02围绕变体和插槽设计组件 API
  3. 03保持 Web 与 iOS 行为一致
  4. 04规范 UI 线程动画与手势
  5. 05管理共享组件并促进复用

适用场景

  1. 01为 Expo 应用搭建设计系统
  2. 02将零散样式迁移为设计令牌
  3. 03检查组件样式与 API 一致性
  4. 04构建 Web 与 iOS 共用组件

安装

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

$npx skills add https://github.com/pproenca/dot-skills --skill expo-design-system

安装后在 Claude Code 中输入/expo-design-system确认已加载。

包含的文件

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

AGENTS.md
metadata.json
assets/templates/
_template.md
references/
_sections.md
api-accessibility-in-contract.md
api-aschild-polymorphism.md
api-compound-variants.md
api-controlled-uncontrolled.md
api-forward-ref.md
api-no-style-escape-hatch.md
api-slots-for-composition.md
api-variants-over-style-prop.md
domain-bodychart-gesture-paths.md
domain-bodychart-skia-canvas.md
domain-calendar-virtualization.md
domain-compose-from-primitives.md
domain-note-editor-autosave.md
domain-optimistic-writes.md
govern-design-system-package.md
govern-incremental-migration.md
govern-lint-no-raw-values.md
govern-naming-conventions.md
govern-prevent-local-tokens.md
govern-storybook-catalog.md
perf-defer-offscreen-work.md
perf-expo-image.md
perf-flashlist-for-lists.md
perf-gesture-handler.md
perf-haptics-key-actions.md
perf-memoize-list-items.md

详细介绍

Airbnb DLS Expo React Native 设计系统最佳实践

面向 Expo / React Native 应用的严格设计系统工程实践,适用于新架构,并同时支持 Web 和原生 iOS。包含 11 个类别中的 63 条规则,并按影响程度排序。内容源自 Airbnb 的 Design Language System(DLS)、Unistyles v3 文档和 React Native 生态系统(Reanimated、Gesture Handler、Skia、FlashList、Expo SDK)。样式引擎为 Unistyles v3;组件 API 遵循 Airbnb DLS 模式,优先使用变体属性,而非样式逃生口。

强制架构约束

此技能属于基础设施层——它讲解如何构建设计系统本身,是 React Native 版的 ios-design-system。所有代码示例均遵循以下不可协商的约束:

  • 功能模块只导入 @clinic/design-system 和 domain;绝不导入其他功能模块的内部实现
  • 设计系统负责 Unistyles 主题(令牌、断点),并导出经过精心筛选的公共接口
  • 先复用再构建:先阅读索引,扩展变体,在第二次使用时提升为公共组件——绝不创建并行的本地组件
  • 组件通过变体属性和插槽属性公开功能(Airbnb DLS);不提供原始 style 逃生口
  • 动画和手势在 UI 线程运行(Reanimated worklet + Gesture Handler)
  • 列表使用 FlashList;身体图表绘制区域使用 React Native Skia
  • 同一份代码在 Web 和 iOS 上都应呈现原生体验:使用 Unistyles _web 伪状态和 Platform 分流,绝不拆分为独立的 Web 样式表
  • 目标平台为新架构(Fabric/JSI)、Expo SDK 53+ / React Native 0.81+

范围及与相关技能的关系

相关技能其关注点本技能的关注点
ios-design-system同一款诊所应用的 SwiftUI 设计系统Expo / React Native 对应方案
expo-react-native-coder功能开发(屏幕、导航、数据获取)设计系统基础设施(令牌、组件、主题)
expo-react-native-performance全应用范围的性能优化设计系统内部的原生体验性能
react通用 React 模式Expo / React Native 设计系统专项内容
expo-ios-hig原生 iOS 体验相关决策(导航、系统控件、Liquid Glass)跨平台令牌/组件架构 + Web/iOS 一致性

诊所架构约定(Expo / React Native)

本技能中的所有指导均基于诊所的模块化架构:

  • 功能模块仅依赖 @clinic/design-system 和 domain;应用目标负责接入导航(Expo Router)和依赖注入
  • 设计系统是一个本地包,只有一个公共入口;原始令牌层保持私有
  • 令牌的唯一事实来源是 Unistyles 主题;功能模块绝不定义本地令牌
  • 服务端状态使用 TanStack Query:读取操作默认采用 stale-while-revalidate,写入操作采用乐观更新,并排队等待离线同步
  • Unistyles v3、Reanimated worklet、Skia 和 FlashList v2 均要求使用新架构

适用场景

在以下情况下,请参考这些指南:

  • 为新的 Expo / React Native 应用搭建设计系统
  • 在 Unistyles 主题中构建令牌架构(颜色、排版、间距、圆角、层级)
  • 设计组件 API——变体、插槽、受控/非受控状态、引用、无障碍支持
  • 使用 Unistyles StyleSheet、变体和动态函数编写组件样式
  • 构建日历、治疗记录编辑器或基于 Skia 的身体图表绘制界面
  • 将临时样式迁移到受治理的令牌系统
  • 审查 PR,检查原始颜色、内联样式、泄露的 style 属性或功能本地令牌
  • 调整原生体验——列表虚拟化、UI 线程动画、手势、触觉反馈、安全区域
  • 让组件在 Web 和 iOS 上都能呈现原生体验——悬停/焦点/光标、Platform 分支,以及安全区域/触觉反馈差异
  • 判断是新建还是复用——检查设计系统索引、扩展还是分叉,或使用原生/@expo/ui 控件,而不是重新实现

按优先级划分的规则类别

优先级类别影响前缀规则数
1令牌架构CRITICALtoken-6
2主题与自适应CRITICALtheme-5
3组件 API 契约CRITICALapi-8
4跨平台一致性CRITICALplatform-5
5复用与系统适配HIGHreuse-4
6样式引擎(Unistyles)HIGHstyle-6
7排版与图标HIGHtype-5
8间距、布局与安全区域HIGHspace-5
9原生体验与性能HIGHperf-7
10复杂领域组件MEDIUM-HIGHdomain-6
11治理与一致性MEDIUMgovern-6

快速参考

1. 令牌架构(CRITICAL)
2. 主题与自适应(CRITICAL)
3. 组件 API 契约(关键)
4. 跨平台一致性(关键)
5. 复用与系统集成(高)
6. 样式引擎(Unistyles)(高)
7. 排版与图标(高)
8. 间距、布局与安全区域(HIGH)
9. 原生体验与性能(HIGH)
10. 复杂领域组件(MEDIUM-HIGH)
11. 治理与一致性(MEDIUM)

使用方法

阅读各个参考文件,了解详细说明和代码示例:

参考文件

文件描述
references/_sections.md分类定义和排序
assets/templates/_template.md新规则模板
metadata.json版本和参考信息

评论

支持 Markdown