初始化项目版本

This commit is contained in:
Axhub Make
2026-07-29 16:04:39 +08:00
commit 4305a1082b
2629 changed files with 760590 additions and 0 deletions

162
rules/theme-guide.md Normal file
View File

@@ -0,0 +1,162 @@
# 主题创建与验收指南
本文档约束 `make-client` 中主题资源的创建、更新、派生与验收。主题只面向当前标准结构。
## 核心原则
- `DESIGN.md` 是主题事实源:品牌定位、设计原则、色彩、字体、圆角、间距、边框、阴影、组件规则和禁用做法,均优先按它判断。
- `theme.json` 是运行时与管理端消费的结构化摘要;`assets/tokens.json` 是轻量 token 快照;`style.css` 是演示页可见样式。三者必须与 `DESIGN.md` 保持一致。
- 用户当前消息或附件的优先级高于已有文件;若用户要求与 `DESIGN.md` 冲突,先更新 `DESIGN.md`,再同步派生文件。
- 不根据截图、元数据或自动推断结果覆盖明确写在 `DESIGN.md` 中的规则;只能在 `DESIGN.md` 缺失信息时补充合理假设,并在文档或交付说明中写清楚。
- 主题代码、CSS 和 `theme.json` 中的本地资源引用必须使用主题内相对路径,禁止根路径、本机绝对路径或 `../` 逃逸到其他目录。
- 主题演示页不得引入与该主题无关的 UI 库,避免污染视觉表达。
## 标准参考主题
当前标准参考主题是 `src/themes/linear/`。新建或重做主题时,参考它的目录结构、`theme.json` 字段组织、`index.tsx` 接入方式和预览资源引用方式。
参考范围:
- `index.tsx`:引入 `./style.css`、读取 `./theme.json`、将 `display` 映射为 `DesignMdBatchShowcase` 配置,并静态 import 本地预览资源。
- `theme.json`:包含 `schemaVersion``source``identity``tags``assets``tokens``previewImages``display`
- `style.css`:以 `@import "tailwindcss";` 开头,在 `.dmb-page` 中写入 `--dmb-*` CSS Variables。
- `assets/`:至少包含 `tokens.json` 和一个稳定预览图,例如 `official-homepage.webp``cover.webp``source-preview.webp`
不要复制参考主题的品牌内容、视觉风格、文案或临时生成注释。新主题必须用自己的 `DESIGN.md` 派生真实 token、展示字段和预览资源。
## 推荐来源与导入路径
用户查找和导入主题时,优先走这两类来源:
- `getdesign.md`:主流 Design.md 主题的优先来源,适合先找品牌主线和标准主题。
- `styles.refero.design`:补缺优先来源,适合找行业、场景、字体、颜色和 token 更丰富的主题。
当前只推荐这两类 active source旧来源不作为默认导入入口。
推荐的导入路径按这个顺序走:
```bash
node scripts/collect-design-md-batch.mjs
node scripts/generate-design-md-theme-pages.mjs
node scripts/review-design-md-theme-pages.mjs
```
对应的本地产物和主题落点分别是:
- `.local/design-md-batch/manifest.json`
- `client/src/themes/<slug>/`
如果用户已经提供了 Design.md 线索、品牌名或详情页链接,就先按上面两类来源定位,再进入采集、生成和复查。
## 网页采集分流
当用户提供官网、产品页、落地页或其他网页地址,并要求“参考这个网站”“提取主题”“生成主题”“分析设计风格”时,先读取 `rules/theme-source-capture-guide.md`完成必要的截图、token、响应式和资源证据采集再回到本文档生成标准主题。
采集只是补充来源证据,不替代主题工作流。若用户已经提供明确的 `DESIGN.md`、设计规范、品牌手册或当前主题事实源充分,则不要默认重新采集网页;只有证据不足、用户指定 URL、预览图缺失或需要校准视觉风格时才进入采集分文档。
## 标准交付物
每个主题目录使用 `kebab-case` 命名,例如 `stripe``longcipher-design`
```text
src/themes/<theme-key>/
├── DESIGN.md # 必需,主题事实依据
├── theme.json # 必需,结构化主题元数据与展示配置
├── assets/
│ ├── tokens.json # 必需,轻量 token 快照
│ └── ... # 预览图、官网截图、字体、preview.html 等主题私有资源
├── style.css # 必需,主题演示页样式变量
├── tw.css # 必需Tailwind v4 主题片段或最小可用片段
└── index.tsx # 必需,主题演示页入口,必须 export default Component
```
## `DESIGN.md` 编写规范
`DESIGN.md` 应写成可执行的设计规范,而不是氛围描述。它需要同时面向人类和代码生成 agent可直接指导后续 UI 生成、审查和派生文件同步。
信息充分时必须采用接近 getdesign.md 的 9 段式结构:
1. 视觉主题与氛围:品牌/产品背景、适用场景、不适用场景、关键词、页面气质、信息密度和品牌表达边界。
2. 色彩系统主色、背景、表面、文本、边框、状态色、CTA 或限制色;每个重要颜色写清 hex 值、语义角色、使用边界和禁用场景。
3. 字体系统display/body/mono 角色、字体族、字号层级、行高、字重、字距和 fallback。
4. 组件规范按钮、输入框、卡片、导航、表格、标签、弹窗等基础组件写清尺寸、圆角、边框、状态、hover/focus/active 行为和可复用类名或 token。
5. 布局与间距容器宽度、栅格、section 节奏、密度、断点前的默认布局、间距标尺和页面级留白。
6. 深度、阴影与边框:阴影层级、边框/分割线、ring、elevation、表面叠放规则以及不允许使用的过重阴影或装饰。
7. 动效时长、缓动、transform 模式、出现/退出/hover 规则,明确哪些动效可用、哪些必须避免。
8. 响应式行为desktop/tablet/mobile 下的布局变化、导航折叠、元素显隐、图片/表格/卡片重排策略。
9. Prompt guide给 LLM 的现成生成指令,包含 3-5 条推荐写法、3-5 条禁止写法和可直接复用的界面生成提示。
每一段都应尽量包含可落地数值、语义 token、组件状态或 Do/Don't。缺少来源证据时可以写明“未采集到明确规则按保守默认处理”但不要伪造来源、品牌规则或组件细节。
生成或更新 `DESIGN.md` 时,优先使用用户提供的规范、原始 Design.md、官方设计资料和当前主题已有内容。截图和元数据只能用于补缺不能覆盖明确规则。
## 派生文件规范
`theme.json` 必须承载管理端和演示页需要的结构化信息:
- `identity.slug` 必须与主题目录名一致;`titleZh``descriptionZh` 面向管理端展示。
- `tokens.palette``tokens.typography``tokens.radius``tokens.spacing` 等必须从 `DESIGN.md` 抽取或由用户确认。
- `display.palette``display.typography``display.radius``display.spacing``display.borders``display.shadows``display.usageGuidance` 应服务于演示页展示,并与 `tokens` 同源。
- `assets``previewImages` 只引用当前主题目录内资源,不引用本机绝对路径或其他主题资源。
`assets/tokens.json` 只保存轻量 token 快照:
- 至少包含 `palette``typography`;若 `DESIGN.md` 提供圆角、间距、边框或阴影,也应保留对应字段。
-`theme.json.tokens` 保持一致,不额外发明另一套命名或语义。
`style.css` 用于让演示页真实体现主题:
- 必须 `@import "tailwindcss";`
- 使用 `.dmb-page` 写入 `--dmb-*` CSS Variables包括 accent、link、muted、background、font、radius、spacing、border 等可见变量。
- 变量值必须来自 `DESIGN.md``theme.json.tokens`,不能为了好看临时换色。
`tw.css` 用于保留 Tailwind v4 主题片段:
- 若来源提供 Tailwind/CSS 变量,应尽量原样保留并补齐 `@import "tailwindcss";`
- 若暂无可用内容,可保持最小可用片段,但不得替代 `DESIGN.md` 成为事实源。
## 演示页规范
`index.tsx` 是主题预览入口,必须:
- `export default Component`
- 引入 `./style.css`,读取 `./theme.json`,并把 `display` 配置传入 `DesignMdBatchShowcase`
- 通过静态 import 引入本地预览资源,例如 `./assets/official-homepage.webp?url`
- 展示颜色、字体、圆角、间距、边框/阴影、使用建议和典型场景。
- 不展示内部采集过程、脚本状态、TODO、占位文案或无关营销内容。
可以复用 `DesignMdBatchShowcase` 的结构,但主题内容、标签、色板、使用建议和预览图必须来自当前 `DESIGN.md`
## 更新工作流
1. 先读用户要求、当前主题 `DESIGN.md``theme.json``assets/tokens.json``style.css``tw.css``index.tsx` 和相关资源。
2. 判断冲突:用户明确修改意图优先;否则以 `DESIGN.md` 为准,修正派生文件。
3. 修改事实源:新增或修正设计规则时先改 `DESIGN.md`
4. 同步派生:更新 `theme.json.tokens/display``assets/tokens.json``style.css``tw.css` 和预览资源引用。
5. 检查一致性:主色是否来自 `DESIGN.md`,字体角色是否完整,圆角/间距/边框/阴影是否没有丢失,使用建议是否非泛化。
6. 查找和导入:优先从 `getdesign.md``styles.refero.design` 定位主题,再用 `collect``generate``review` 三个脚本串起导入流程。
7. 网页采集:仅在用户提供网页地址或现有证据不足时读取 `rules/theme-source-capture-guide.md`,把采集结果作为 `DESIGN.md` 的证据来源。
8. 验收预览:运行主题 ready 检查并打开目标页面做视觉回归,确认字体、颜色、间距、建议项和预览图都能完整渲染。
输入来源优先级:
1. 用户当前明确要求、附件、截图和链接。
2. 当前主题 `DESIGN.md`
3. 当前主题 `theme.json``assets/tokens.json``style.css``tw.css``index.tsx`
4. 官方设计资料或原始 Design.md 来源。
5. 标准参考主题 `src/themes/linear/` 和同类主题。
## 验收流程
基础检查:
```bash
node scripts/check-app-ready.mjs /themes/[主题名]
```
验收重点:
- `READY` 后访问目标页面,检查预览图、色板、字体、圆角、间距、边框、阴影和使用建议是否与 `DESIGN.md` 一致。
- 若出现 `ERROR`优先修复入口、资源路径、JSON 结构和 CSS 导入。
- 若出现 `TIMEOUT`,排查 dev server、依赖安装、构建缓存或长任务。
- 视觉问题按 `DESIGN.md`、用户要求、`rules/requirements-alignment-guide.md` 的顺序判断,不以自动生成结果为准。