Commit b3977095aa7be50552e70076e8930a3f17760951

Authored by zichun
1 parent 62e69e34

feat(skeleton-gen): 前端样式标准化为 Design Tokens

- docs-04 模板新增 § 2.5 样式与主题(命名规范 + tokens.css 位置 + 引用约定)
- docs-06 模板 § 四改为 Design Tokens 三段式(4.1 全局调色板 / 4.2 组件级状态色 / 4.3 引用约定)
- 新增 styles-tokens-template.css:8 个全局调色板 + 10 个组件状态色默认值
- SKILL.md 同步:C.1 加 mkdir src/styles + cp tokens.css;C.3 加勾选项;参考列表加新模板
skills/plan/skeleton-gen/SKILL.md
@@ -61,23 +61,29 @@ docs/04 已由 scope-lock 写入 § 零。本步骤追加 § 一 ~ 三。 @@ -61,23 +61,29 @@ docs/04 已由 scope-lock 写入 § 零。本步骤追加 § 一 ~ 三。
61 #### C.1 复制 61 #### C.1 复制
62 62
63 ```bash 63 ```bash
64 -mkdir -p scripts .githooks sql/migrations 64 +mkdir -p scripts .githooks sql/migrations src/styles
65 touch sql/migrations/.gitkeep 65 touch sql/migrations/.gitkeep
66 cp "${CLAUDE_SKILL_DIR}/templates/env-local-template" .env.local 66 cp "${CLAUDE_SKILL_DIR}/templates/env-local-template" .env.local
67 cp "${CLAUDE_SKILL_DIR}/templates/githooks-pre-push-template.sh" .githooks/pre-push 67 cp "${CLAUDE_SKILL_DIR}/templates/githooks-pre-push-template.sh" .githooks/pre-push
68 cp "${CLAUDE_SKILL_DIR}/templates/scripts-setup-test-db-template.sh" scripts/setup-test-db.sh 68 cp "${CLAUDE_SKILL_DIR}/templates/scripts-setup-test-db-template.sh" scripts/setup-test-db.sh
  69 +cp "${CLAUDE_SKILL_DIR}/templates/styles-tokens-template.css" src/styles/tokens.css
69 ``` 70 ```
70 71
71 #### C.2 渲染 scripts/test.sh 72 #### C.2 渲染 scripts/test.sh
72 73
73 -读取 `${CLAUDE_SKILL_DIR}/templates/scripts-test-template.sh`,基于步骤 A 的技术栈(docs/04推断命令后写到 `scripts/test.sh`: 74 +读取 `${CLAUDE_SKILL_DIR}/templates/scripts-test-template.sh`,基于步骤 A 的技术栈(docs/04 § 零)为 7 个占位推断命令后写到 `scripts/test.sh`:
74 75
75 -- `{{build_cmd}}` 构建  
76 -- `{{lint_cmd}}` lint  
77 -- `{{test_cmd}}` unit + integration  
78 -- `{{e2e_cmd}}` E2E(无 E2E 则填 `echo "[test.sh] e2e 略"`) 76 +- `{{backend_build}}` / `{{backend_lint}}` / `{{backend_test}}` 后端各 stage 命令
  77 +- `{{frontend_build}}` / `{{frontend_lint}}` / `{{frontend_test}}` 前端各 stage 命令
  78 +- `{{e2e_cmd}}` E2E(无 E2E 工具则填 `echo "[test.sh] e2e 略"`)
79 79
80 -> 双端项目(backend + frontend)用 `(cd backend && <cmd>) && (cd frontend && <cmd>)` 串联;单端直接写一条。 80 +> 推断规则:根据 `docs/04 § 零` 。
  81 +> - 「后端*」存在 → 据后端技术栈推 backend 三槽(build / lint / test 命令)
  82 +> - 「前端*」存在 → 据前端技术栈推 frontend 三槽
  83 +> - 缺席 stack → 三槽全填 `:`(运行期 `[ -d X ]` 守卫对接;语法合法即可)
  84 +> - `{{e2e_cmd}}` 通常仅前端,按上述前端规则或填 `echo "[test.sh] e2e 略"`
  85 +>
  86 +> 表结构异常(列名变更 / 无中文前缀)时停下,用 `AskUserQuestion` 让用户显式确认每 stack 命令。
81 87
82 #### C.3 赋权 + 配置 git hooks 88 #### C.3 赋权 + 配置 git hooks
83 89
@@ -88,6 +94,7 @@ git config core.hooksPath .githooks @@ -88,6 +94,7 @@ git config core.hooksPath .githooks
88 94
89 完成后,用 `Edit` 在 `docs/08-模块任务管理.md` 中勾选: 95 完成后,用 `Edit` 在 `docs/08-模块任务管理.md` 中勾选:
90 - ` - [ ] 工具脚本已生成(scripts/*.sh、.githooks/pre-push、.env.local)` 96 - ` - [ ] 工具脚本已生成(scripts/*.sh、.githooks/pre-push、.env.local)`
  97 +- ` - [ ] 样式 token 骨架已生成(src/styles/tokens.css)`
91 98
92 ### D. 追加 .gitignore 忽略项 99 ### D. 追加 .gitignore 忽略项
93 100
@@ -149,9 +156,10 @@ QA 横幅涵盖:产出文件清单(docs/04 / 06 / 07 / 09 + scripts/*.sh + . @@ -149,9 +156,10 @@ QA 横幅涵盖:产出文件清单(docs/04 / 06 / 07 / 09 + scripts/*.sh + .
149 - `${CLAUDE_SKILL_DIR}/templates/docs-06-static-template.md`(大纲) 156 - `${CLAUDE_SKILL_DIR}/templates/docs-06-static-template.md`(大纲)
150 - `${CLAUDE_SKILL_DIR}/templates/docs-07-env-template.md`(大纲) 157 - `${CLAUDE_SKILL_DIR}/templates/docs-07-env-template.md`(大纲)
151 - `${CLAUDE_SKILL_DIR}/templates/docs-09-structure-template.md`(大纲) 158 - `${CLAUDE_SKILL_DIR}/templates/docs-09-structure-template.md`(大纲)
152 -- `${CLAUDE_SKILL_DIR}/templates/scripts-test-template.sh`(推断命令填充:build/lint/test/e2e 159 +- `${CLAUDE_SKILL_DIR}/templates/scripts-test-template.sh`(推断命令填充 7 槽:backend/frontend × build/lint/test + e2e;缺席 stack 填 `:`
153 - `${CLAUDE_SKILL_DIR}/templates/scripts-setup-test-db-template.sh`(0 槽位) 160 - `${CLAUDE_SKILL_DIR}/templates/scripts-setup-test-db-template.sh`(0 槽位)
154 - `${CLAUDE_SKILL_DIR}/templates/githooks-pre-push-template.sh`(0 槽位) 161 - `${CLAUDE_SKILL_DIR}/templates/githooks-pre-push-template.sh`(0 槽位)
155 - `${CLAUDE_SKILL_DIR}/templates/env-local-template`(0 槽位) 162 - `${CLAUDE_SKILL_DIR}/templates/env-local-template`(0 槽位)
156 - `${CLAUDE_SKILL_DIR}/templates/gitignore-append-template`(0 槽位) 163 - `${CLAUDE_SKILL_DIR}/templates/gitignore-append-template`(0 槽位)
  164 +- `${CLAUDE_SKILL_DIR}/templates/styles-tokens-template.css`(0 槽位,样式 token 骨架)
157 - `${CLAUDE_SKILL_DIR}/scripts/merge-gitignore.sh`(.gitignore 逐行判重合并脚本) 165 - `${CLAUDE_SKILL_DIR}/scripts/merge-gitignore.sh`(.gitignore 逐行判重合并脚本)
skills/plan/skeleton-gen/templates/docs-04-skeleton-template.md
@@ -38,6 +38,14 @@ skeleton-gen 读取 docs/04 § 零(技术栈表)和 docs/01-需求清单/ind @@ -38,6 +38,14 @@ skeleton-gen 读取 docs/04 § 零(技术栈表)和 docs/01-需求清单/ind
38 ### 2.4 错误处理 38 ### 2.4 错误处理
39 <!-- 网络错误 / 业务错误 / 页面级错误的分层处理。 --> 39 <!-- 网络错误 / 业务错误 / 页面级错误的分层处理。 -->
40 40
  41 +### 2.5 样式与主题
  42 +<!-- 基于 § 零 UI 库给出 CSS 变量约定:
  43 + - 命名格式 `--color-<scope>-<role>-<state>`(scope=form/table-row/...,role=bg/fg/border,state=edit/readonly/hover/selected)
  44 + - 文件位置 `src/styles/tokens.css`,由 skeleton-gen 生成空骨架,色值由 docs/06 § 四锁定后填入
  45 + - 组件样式中只用 var(--color-xxx),禁止硬编码 hex/rgba
  46 + - 与 UI 库主题对接(如 Ant Design ConfigProvider.theme.token)的映射方式
  47 + 具体 token 表见 docs/06 § 四。 -->
  48 +
41 ## 三、共同约定 49 ## 三、共同约定
42 50
43 ### 3.1 Git 提交 51 ### 3.1 Git 提交
skills/plan/skeleton-gen/templates/docs-06-static-template.md
@@ -40,8 +40,24 @@ UI ç»†èŠ‚ï¼ˆå¸ƒå±€å‚æ•°ã€é¢œè‰²ã€ç»„件选型)æ¥è‡ª § é›¶ å‰ç«¯ UI ç»„ä» @@ -40,8 +40,24 @@ UI ç»†èŠ‚ï¼ˆå¸ƒå±€å‚æ•°ã€é¢œè‰²ã€ç»„件选型)æ¥è‡ª § é›¶ å‰ç«¯ UI 组ä»
40 ### 3.3 æƒé™æŽ§åˆ¶ï¼ˆå‰ç«¯ï¼‰ 40 ### 3.3 æƒé™æŽ§åˆ¶ï¼ˆå‰ç«¯ï¼‰
41 <!-- èœå•级 / 按钮级 / 路由级的控制方å¼ï¼Œå…³è”åŽç«¯ RBAC。 --> 41 <!-- èœå•级 / 按钮级 / 路由级的控制方å¼ï¼Œå…³è”åŽç«¯ RBAC。 -->
42 42
43 -## å››ã€ä¸»é¢˜ä¸Žé¢œè‰²  
44 -<!-- 基于 § é›¶ UI 库的主题 token;主色 / æˆåŠŸ / 警告 / 错误 色值。 --> 43 +## å››ã€Design Tokens
  44 +
  45 +<!-- 所有色值统一以 CSS å˜é‡å®šä¹‰äºŽ src/styles/tokens.css;命åè§„èŒƒè§ docs/04 § 2.5。 -->
  46 +
  47 +### 4.1 全局调色æ¿
  48 +<!-- 与 § é›¶ UI 库主题对é½ï¼šåˆ—å = 语义 / å˜é‡å / 默认值 / 用途。
  49 + 至少å«ï¼šä¸»è‰²/æˆåŠŸ/警告/错误/主文字/次文字/边框/背景。 -->
  50 +
  51 +### 4.2 组件级状æ€è‰²
  52 +<!-- 场景 × çŠ¶æ€æ˜ å°„表:列å = åºå· / 组件 / 编辑bg / åªè¯»bg / 悬浮bg / 编辑fg / åªè¯»fg / 悬浮fg / 备注。
  53 + å•元格写 token å(var(--color-xxx) å½¢å¼ï¼‰ï¼Œä¸å†™ hexï¼›"—" 表示该状æ€ä¸é€‚用。
  54 + 表åŽè¿½åŠ ã€ŒToken 默认值ã€è¡¨ï¼Œåˆ—出æ¯ä¸ª --color-xxx 在 tokens.css 的默认值。 -->
  55 +
  56 +### 4.3 引用约定
  57 +<!-- 一å¥è¯ä¸‰æ¡ï¼š
  58 + - 组件样å¼åªç”¨ var(--color-xxx)ï¼Œç¦æ­¢ç¡¬ç¼–ç 
  59 + - 新增 token 须先登记到 § 4.1/4.2 å†è¡¥ tokens.css
  60 + - ä¿®æ”¹è‰²å€¼åªæ”¹ tokens.css 一处,ä¸å…许组件覆盖 -->
45 61
46 ## 五ã€é¡µé¢æ¸…å• 62 ## 五ã€é¡µé¢æ¸…å•
47 (由 `downstream-gen` 按模å—追加段è½ï¼‰ 63 (由 `downstream-gen` 按模å—追加段è½ï¼‰
skills/plan/skeleton-gen/templates/styles-tokens-template.css 0 → 100644
  1 +/*
  2 + * src/styles/tokens.css — Design Tokens
  3 + * 命名规范见 docs/04-技术规范.md § 2.5
  4 + * 色值锁定见 docs/06-UI交互规范.md § 四
  5 + *
  6 + * 命名格式:--color-<scope>-<role>-<state>
  7 + * <scope> 组件域:form / table-row / table-header / ...
  8 + * <role> 作用:bg(背景)/ fg(前景/字体)/ border
  9 + * <state> 状态:edit / readonly / hover / selected(无状态时省略)
  10 + *
  11 + * 约束:
  12 + * - 组件样式中只用 var(--color-xxx),禁止硬编码 hex / rgba
  13 + * - 修改色值只改本文件,不允许在组件级覆盖
  14 + * - 新增 token 须先登记到 docs/06 § 4.1 / 4.2,再补到此处
  15 + */
  16 +
  17 +:root {
  18 + /* === 1. 全局调色板(与 Ant Design 主题对齐) === */
  19 + --color-primary: #1890ff;
  20 + --color-success: #52c41a;
  21 + --color-warning: #faad14;
  22 + --color-error: #ff4d4f;
  23 + --color-text: rgba(0, 0, 0, 0.85);
  24 + --color-text-secondary: rgba(0, 0, 0, 0.45);
  25 + --color-border: #d9d9d9;
  26 + --color-bg-base: #f0f2f5;
  27 +
  28 + /* === 2. 组件级状态色(与 docs/06 § 4.2 一一对应) === */
  29 +
  30 + /* form:输入框 / 备注框 / 时间框 / 下拉框共用 */
  31 + --color-form-bg-edit: #ffffff;
  32 + --color-form-bg-readonly: #f1f2f8;
  33 + --color-form-bg-hover: #f5f5f5; /* 仅下拉框使用 */
  34 + --color-form-fg: #000000;
  35 +
  36 + /* table */
  37 + --color-table-row-bg-selected: #86d5fb;
  38 + --color-table-row-bg-hover: #fff7e6;
  39 + --color-table-row-bg-readonly: #f1f2f8; /* = rgb(241, 242, 248) */
  40 + --color-table-row-fg: #000000;
  41 + --color-table-header-bg: #f5f5f5;
  42 + --color-table-header-fg: rgba(0, 0, 0, 0.85); /* = #000000D9 */
  43 +}