中级
阅读时长 25 分钟
前置要求:Node.js、React 基础
AI 驱动产品设计的
操作系统
通过结构化的 AI 工作流,将模糊的产品想法转化为生产就绪的 React 组件。Design OS 通过 Claude Code 斜杠命令,引导你完成从愿景到导出的每一步。
#
学习目标
-
✓
使用 Node.js 与 Claude Code 在本地搭建并配置 Design OS 环境
-
✓
按顺序执行 5 个核心规划指令,完成产品愿景、路线图与设计系统定义
-
✓
生成带 TypeScript 类型与样例数据的可投产 React 组件
-
✓
诊断并修复常见的 AI 生成错误
-
✓
导出完整交付包,支持渐进式或一站式落地
#
TL;DR
30 秒核心概念
Design OS 通过结构化的三阶段指令工作流消除“空白页综合症”。你提供产品愿景并回答交互式提问,它会自动生成设计系统、数据模型、应用壳以及 React 组件。按顺序运行斜杠命令、审阅输出并迭代,最后导出可投产的代码包与实现提示词。
#
工作流总览
Design OS 是一个线性流程,每个阶段都基于前一阶段的成果。在进入第二阶段前务必完成第一阶段的全部步骤。
阶段一:规划
建立基础
/product-vision
/product-roadmap
/data-model
/design-tokens
/design-shell
→
阶段二:设计
迭代完成各分区的界面
/shape-section
/sample-data
/design-screen
/screenshot-design
→
阶段三:导出
生成交付包
/export-product
重要:第二阶段是循环的——路线图中的每个分区都要重复这一套步骤。
#
基础
前置条件
开始使用 Design OS 前,请确保你具备:
- 已安装 Node.js v18+ 与 npm
- 一款 AI 编码代理 —— 推荐 Claude Code(Design OS 自带定制斜杠命令)
- 对 React 与组件化架构有基本了解
关键概念
Section(分区)
核心工作单元。通常由 3-5 个分区组成,可独立设计。
Design Tokens(设计令牌)
以 CSS 自定义属性与 Tailwind 配置形式定义视觉语言。
Data Model(数据模型)
系统中的“名词”——用户创建、查看、管理的各类实体。
Application Shell(应用壳)
侧边栏、顶部导航或极简页头,为产品提供一致的导航结构。
常见误区
❌ “Design OS 会生成后端代码”
Design OS 只覆盖前端设计层。后端可任意选择(Rails、Laravel、Next.js API Routes、Python、Go 等)。导出的组件通过 props 接收数据与回调。
❌ “步骤可以跳过或任意顺序执行”
每个命令都依赖前一步的产物。未先运行 /shape-section 就执行 /design-screen 会导致输出混乱。
#
阶段一:产品规划
在动手设计界面前先打好基础。这 5 个命令必须按顺序执行。
1. 产品愿景(Product Vision)
WHY:AI 需要上下文。本命令会创建产品概览文件,作为后续生成的锚点;没有它,AI 无法理解你要做什么。
HOW:运行命令并按提示回答产品名称、描述、要解决的问题、核心特性等问题。越具体越好,模糊输入只会产生模糊输出。
WHEN:永远第一步——所有 Design OS 项目的 0 号步骤。
生成:
product/product-overview.md
2. 产品路线图(Product Roadmap)
WHY:把产品拆分为 3-5 个可管理的分区。每个分区都会成为导航项,并可独立设计。
HOW:AI 会依据产品概览给出分区建议。一起讨论顺序——首个分区应覆盖核心功能,其余在此基础上递进。
WHEN:在完成产品愿景后立刻进行。
生成:
product/product-roadmap.md
3. 数据模型(Data Model)
WHY:定义系统里的“名词”——如 User、Device、Reading、Report,保证各分区的数据结构一致。
HOW:关注概念而非数据库表。用自然语言描述实体,AI 会追问关系(1 对多、多对多)。
WHEN:在路线图之后、设计令牌之前完成。
生成:
product/data-model/data-model.md
4. 设计令牌(Design Tokens)
WHY:在编写组件前先确定视觉身份(色彩与字体),确保全局一致性。
HOW:从 Tailwind 调色板(blue、indigo、emerald 等)与 Google Fonts 中选择。AI 会根据产品类型给出组合建议。
5. 应用壳(Application Shell)
WHY:创建包裹所有分区的持久导航与布局,让用户在全局拥有一致的导航体验。
HOW:选择壳模式:侧边栏导航(仪表盘类)、顶部导航(简易应用)或极简页头(单一用途工具)。
#
阶段二:分区设计
此阶段是循环的,对路线图中的每个分区重复执行这些命令。
分区设计循环
Shape Section → Sample Data → Design Screen → (可选:Screenshot)→ 继续下一个分区
1. Shape Section(分区定型)
WHY:在写任何代码前先定义该分区的功能需求,相当于分区的规格文档。
HOW:回答分区用途、主要用户流程(关键动作)以及 UI 要求。还需说明该分区是否使用应用壳或是独立页面。
WHEN:设计每个分区的起点。
生成:
product/sections/[section-id]/spec.md
2. Sample Data(样例数据)
WHY:生成逼真的模拟数据,使 UI 在无后端情况下也能开发与测试,同时生成 TypeScript 接口确保类型安全。
HOW:AI 读取分区规格,提出数据结构,并生成 5-10 条真实且包含边界情况的样例记录。
WHEN:在 Shape Section 之后、Design Screen 之前。
生成:
product/sections/[section-id]/data.json
product/sections/[section-id]/types.ts
3. Design Screen(界面设计)
WHY:让规格与样例数据落地为可运行的 React UI,AI 会生成具备完整样式的投产组件。
HOW:AI 读取规格,创建通过 props 接收数据与回调的组件。若分区存在多视图(列表/详情/表单),可多次运行。
WHEN:生成样例数据之后。
会生成什么
- 可导出的组件 —— 基于 Props,可移植到任意 React 项目
- 预览封装 —— 在 Design OS 中导入样例数据便于测试
- 完整 Tailwind 样式与响应式断点
- 通过
dark: 变体支持深浅色模式
⚠️ 提醒:生成界面后请重启开发服务器(npm run dev)以便在浏览器中看到更新。
#
阶段三:导出
当所有分区设计完成(或你准备交付时),生成完整的实现包。
何时导出
符合以下条件即可导出:
- 已完成产品愿景与路线图
- 至少有一个分区生成了界面
- 对当前设计方向满意
导出并非一次性的——后续添加分区后可再次导出。
导出内容
- 可直接使用的提示词 — 复制/粘贴到你的编码代理
- 实现说明 — 支持一站式或渐进式两种模式
- 设计系统文件 — tokens.css、fonts.md 等
- 全部组件 — 携带类型与样例数据
- 测试指引 — 每个分区的 TDD 规格
#
最佳实践 vs 反模式
✓ 请务必:先检查类型
运行 /sample-data 后先看 types.ts。数据结构错了,UI 必然跟着错;尽早发现问题。
// Verify entity shapes match your expectations
interface Device {
id: string;
status: 'active' | 'offline' | 'error';
}
✗ 避免:手改临时生成文件
不要手动修改 .design-os/temp 下的组件,下一次命令会覆盖。用斜杠命令来迭代。
// Bad: Manual edits in temp folder = lost work
// Good: Run /design-screen again with feedback
✓ 请务必:遵循顺序
命令彼此依赖。先完成阶段一再进入阶段二;先 /shape-section 再 /sample-data。
✗ 避免:模糊输入
AI 会映射你的具体程度。“一个做点东西的仪表盘”只会得到泛化输出;“用于实时监控太阳能板效率并提供设备级告警的仪表盘”才能得到贴合的组件。
#
完整示例 ⭐
这是最重要的部分,展示 Design OS 在真实场景中的端到端使用方式。
场景:构建完整的 “Settings” 分区
目标:打造包含密码修改与通知偏好的用户设置页。
前置条件
- 已完成阶段一(愿景、路线图、设计令牌、应用壳)
- 产品路线图中已有 “Settings” 分区
操作步骤
/shape-section
? 分区名称:Settings
? 目的:允许用户修改密码与通知偏好
? 用户流程:
1. 更新邮箱/密码
2. 切换通知渠道
3. 删除账号
✔ 已创建 product/sections/settings/spec.md
/sample-data
✔ 已创建包含 UserSettings 接口的 types.ts
✔ 已创建带样例偏好的 data.json
/design-screen
? 哪个视图:Settings Main
✔ 生成 SettingsView.tsx
✔ 生成 ProfileForm.tsx
✔ 生成 NotificationToggle.tsx
npm run dev
服务器已运行于 localhost:3000
预期结果
一个完整样式的 Settings 页面组件,接受 currentUser、onUpdateProfile、onUpdateNotifications、onDeleteAccount 等 props,包含表单校验与响应式布局。
可选变体
- 多标签设置:在 /shape-section 指定 Settings 包含 Profile、Notifications、Security 标签
- 团队设置:如果应用有团队功能,在范围中加入团队管理流程
场景:复杂数据可视化
问题:仪表盘需要图表,但 AI 可能生成与所用图表库不兼容的代码。
解决方案
在 /product-vision 中声明你的图表库,这样生成的组件都会保持兼容。
/product-vision
? 技术要求或约束:
"Use Recharts for all data visualization. Use date-fns for date formatting."
/design-screen
AI 会生成兼容 Recharts 的组件:
✔ 生成 EnergyChart.tsx(使用 Recharts)
关键洞察
产品概览会被后续所有命令读取。越早声明库偏好,越能确保生成代码一致。
其他边界情况
- 空状态:在 /shape-section 指明“需优雅处理空数据”
- 超长列表:在需求中写明“为 1000+ 条记录使用虚拟列表”
- 无障碍:在愿景中写明“必须符合 WCAG 2.1 AA”
场景:渐进式实现策略
目标:利用导出包按分区受控落地,在每个里程碑间进行代码评审。
前置条件
- 已通过
/export-product 完成导出
- 已将
product-plan/ 复制到目标代码库
操作步骤
打开:product-plan/prompts/section-prompt.md
设置 SECTION_NAME = "Foundation"
设置 NN = "01"
以 Plan Mode 递交提示词
"认证方式?OAuth、JWT 还是 session?"
"单租户还是多租户?"
✔ 安装设计令牌
✔ 创建数据模型类型
✔ 配置路由
渐进式的好处
- 更易评审——在问题积累前就被发现
- 节奏灵活——分区之间可暂停
- 掌控力强——由你决定每个里程碑何时就绪
场景:AI 生成了无效代码
问题:生成的组件存在 TypeScript 错误或引用了未定义变量。
修复步骤
/design-screen
✔ 生成 DashboardView.tsx
npm run dev
✖ Error: Cannot find name 'UserData'
✖ Error: Property 'status' does not exist
/design-screen
? 额外上下文:
“请修复这些错误:Cannot find name 'UserData'。Property 'status' does not exist on type Device.”
✔ 重新生成 DashboardView.tsx
✔ 补充缺失的 types.ts 引用
✔ 修正属性引用
预防建议
- 在运行 /design-screen 前先审查 types.ts
- 在 /shape-section 明确数据结构
- 每次生成后都运行 dev server,尽早暴露错误
若仍无法解决
删除生成文件,带更详细的上下文重跑命令。AI 在命令之间不保留记忆,提供完整错误信息有助于纠偏。
#
术语速览
Slash Command(斜杠命令)
以 “/” 开头的 Claude Code 命令,用于触发 Design OS 工作流。
Handoff Package(交付包)
包含全部资源、提示词与实施说明的导出包。
Section Spec(分区规格)
定义分区用途、用户流程与 UI 需求的 Markdown 文档。
Design Tokens(设计令牌)
以 CSS 变量与 Tailwind 配置存储的原子化视觉值(颜色、字体、间距)。
Application Shell(应用壳)
包裹分区内容的持久化导航/布局层(侧边栏、顶部导航等)。
Preview Wrapper(预览封装)
在 Design OS 开发服务器中导入样例数据以渲染 UI 的封装组件。
One-Shot Implementation(一站式实现)
在单次 AI 会话中用合并指令完成整个产品的构建。
Incremental Implementation(渐进式实现)
按里程碑逐段构建,并在各分区之间进行评审。
#
故障排除
原因: Tailwind 配置未更新,或开发服务器未重启。
解决方案:
- Re-run
/design-tokens and verify tailwind.config.js was updated
- Restart the dev server:
npm run dev
- Hard refresh the browser (Cmd+Shift+R / Ctrl+Shift+R)
原因: 不在 Design OS 项目目录或 Claude Code 未启动。
解决方案:
- Verify you're in the project root:
ls .claude/commands
- Start Claude Code:
claude
- Try the command again
原因: types.ts 与组件不匹配,或缺少导入。
解决方案:
- Check
types.ts in the section folder—are interfaces correct?
- Re-run
/design-screen with error context: "Fix error: [paste error message]"
- If persistent, re-run
/sample-data first to regenerate types
原因: 某些分区未完成(缺少规格、数据或界面)。
解决方案:
- Check
product/sections/ — each section should have spec.md, types.ts, and data.json
- Check
src/sections/ — each section should have component files
- Complete missing steps, then re-run
/export-product
#
命令速查表
| 命令 |
阶段 |
生成 |
|
/product-vision |
1. 规划 |
product-overview.md |
|
/product-roadmap |
1. 规划 |
product-roadmap.md |
|
/data-model |
1. 规划 |
data-model.md |
|
/design-tokens |
1. 规划 |
colors.json, typography.json |
|
/design-shell |
1. 规划 |
AppShell.tsx, MainNav.tsx, UserMenu.tsx |
|
/shape-section |
2. 设计 |
sections/[id]/spec.md |
|
/sample-data |
2. 设计 |
data.json, types.ts |
|
/design-screen |
2. 设计 |
[Component].tsx files |
|
/screenshot-design |
2. 设计 |
[screen-name].png |
|
/export-product |
3. 导出 |
product-plan/ folder + .zip |
|
#
自我测评
在真实项目中使用前先检验你的理解。
Q1:何时定义 Design Tokens?
Q2:若在 /sample-data 之前运行 /design-screen 会怎样?
Q3:“Preview Wrapper” 组件的作用是什么?
Q4:复杂的大型产品应采用哪种实现方式?
#
后续步骤
准备好动手了吗?
- 安装 Node.js v18+(如未安装)
- 克隆仓库:
git clone https://github.com/buildermethods/design-os.git my-project
- 运行
npm install 与 npm run dev
- 启动 Claude Code:
claude
- 运行你的第一个命令:
/product-vision
前往 GitHub 开始
延伸阅读