# Consumer Product Scaffold 升级 + Marp tvu-dark 主题 · 复盘（2026-05-21）

> **目的**：内部分享 — 一次"基础设施型"AI-用户协作的真实过程复盘 + 高效对话建议
> **场景**：UX 设计师 Nancy 在 MicroApps 收尾后扩展 TVU 设计系统消费产品的项目骨架 + Marp 主题
> **跟典型 UX mockup session 的差别**：本 session 不画 Figma，主要做 infra（templates / skills / CSS / docs 架构）

---

## TL;DR

- **总轮次**：~25 轮 user feedback · 多次 Marp 导出 · 1 个新 Marp 主题文件 · 6 条 memory 落地 · 1 套 templates/consumer-product/ scaffolding upstream 到 TVU 真源
- **最终交付**：
  - TVU 真源 `templates/consumer-product/`（docs 骨架 + Marp 主题 + .marprc.yml + PROJECT_STRUCTURE.md）
  - `tvu-dark.css` Marp 主题（深色 + TVU 品牌绿）
  - `setup-tvu-consumer` SKILL.md 扩展（docs scaffold + .marprc.yml 复制）
  - MicroApps docs/ 5 子目录重组 + 复盘 slides 配套
  - 6 条规则落 memory 防 AI 自作主张
- **核心 insight**：

> **AI 在做"无 token / 无视觉真源参考"的视觉任务时，最容易凭印象犯致命错（品牌色记错蓝/绿、Marp 默认主题选错文档风）。每个"看起来通用的"决定都该先 grep 真源。**

---

## 1 · Session 概览

### 起点

用户问"当前项目的内容有提交到 gitea 上吗"——一个看似简单的 git status 查询。

### 实际演化路径（远超起点）

```
gitea push 检查
   ↓
docs/ 14 个文件平铺难找复盘  → 5 子目录重组
   ↓
MD 文件不适合分享给领导  → 引入 Marp
   ↓
gaia 主题太文档风  → 自定义 tvu-dark
   ↓
品牌色蓝/绿错位（致命错误）→ 修复 + memory
   ↓
单 consumer 维护成本高  → upstream 到 TVU 真源 templates/
   ↓
@import default 高优先级压住样式  → 独立自包含主题
   ↓
PDF 失真 + dist 默认导出过头  → on-demand 导出 + 不出 PDF
   ↓
署名 generic "TVU UX team"  → git user.name 占位符
```

每轮都不是"功能新增"，而是"上一轮 AI 自作主张做错了/做过头了 → user 拉回正确方向"。

### 最终落地

**TVU 真源新增**：
- `templates/consumer-product/` 完整 scaffolding（docs 骨架 + Marp 主题 + .marprc.yml + PROJECT_STRUCTURE.md + gitignore.fragment）
- `marp-themes/tvu-dark.css`（独立自包含，不 @import）
- `marp-themes/README.md`（架构 rationale + maintainer notes + 陷阱文档）

**setup-tvu-consumer SKILL.md 扩展**：
- Step 5 docs scaffold + .marprc.yml 复制
- {{AUTHOR}} 占位符 + git user.name 替换
- 反模式清单 +3 条（不覆盖既存 docs / 不自动装 marp-cli / 不重整既有结构）

**MicroApps 端**：
- docs/ 5 子目录重组 + README 索引
- `.marprc.yml` 配置文件
- video-sync 复盘 + slides 配套
- 6 条 memory 落到项目级 memory dir

**Memory 落地** (6 条)：
1. 收尾默认 push gitea
2. TVU 品牌色绿不是蓝（reference）
3. 品牌色写前必查 token
4. 署名默认 git user.name
5. dist 导出按需触发
6. Marp 不出 PDF

---

## 2 · 时间线（关键 turning points）

| # | 用户 feedback | AI 改动 |
|---|---|---|
| 1 | "当前项目内容提交到 gitea 了吗" | git status 报告 — 部分已 push |
| 2 | "需要" + "消费产品说收尾时默认提交 gitea" | commit 13 文件 + 写 feedback_wrap_up_git_push memory |
| 3 | "文件目录不清晰，找复盘不知道开哪个" | docs/ 重组 5 子目录 + README 索引 |
| 4 | "MD 不适合分享，有 html 或 ppt 吗" | 引入 Marp，pilot 转 video-sync 复盘 |
| 5 | "内部同事和领导都看" | 推荐 Marp（gaia theme + 蓝） |
| 6 | "OK" | 装 marp-cli + 导出 PPTX/HTML/PDF |
| 7 | "这是单产品还是所有产品" + "包括 vite-singlefile 也通用" | upstream 到 TVU 真源 templates/ + PROJECT_STRUCTURE.md |
| 8 | "PPT 颜色不科技风" | 写 tvu-dark.css（**用了 #1f4e8c 蓝**）|
| 9 | **"TVU 品牌是绿色的，不是蓝色的。这个是最致命的错误"** | grep token 真源拿到 #2fb54e；6 文件批量替换；2 条 memory 防再犯 |
| 10 | "试试看 + 全产品复用" | 提出 .marprc.yml + themeSet 架构；重导出 |
| 11 | "PPT 第 4 页表格白底浅灰字看不清" | 定位到 `@import 'default'` 高优先级；移除 import；重导出 |
| 12 | "署名为什么不是 Nancy Zeng" | {{AUTHOR}} 占位符 + git user.name 替换；memory |
| 13 | "复盘自动还是手动？" | 解释手动关键词触发 + 3 种查看路径 + 自动 nudge 选项 |
| 14 | "PDF 跟 HTML/PPT 不一样 + 用不上 + dist 默认不生成节省资源" | 解释 Marp 三 backend 差异；改 README 默认 on-demand；2 条 memory |
| 15 | "导出 + 收尾 + 找回流规则" | 当前轮 |

---

## 3 · Top 5 Process Gap（按返工成本排序）

### Gap 1：**没查 token 就 hardcode TVU 品牌色（蓝/绿致命错）**

**实证**:
- 我凭印象写 `#1f4e8c`（深蓝）作为 TVU 主题色，污染 6 文件（template + MicroApps slides + 已生成 HTML）
- User 直接点破"TVU 品牌是绿色的，不是蓝色的。这个是最致命的错误，你都没发现"
- 真值 `#2fb54e` 在 `tvu-design-system/src/tokens/variables.css` 早就有，**一行 grep 就能拿**

**返工成本**: 6 文件批量替换 + 重新导出 + 2 条 memory（reference + feedback）

**原因**: AI 默认"我记得 TVU 品牌色是 X"——**记忆不可靠**，颜色 token 演进时尤其会漂移

**✅ 解决方案**：
- **当下修复**：grep `tvu-design-system/src/tokens/variables.css` 拿到真值 `#2fb54e`；6 文件批量替换 `#1f4e8c` → `#2fb54e`（tvu-dark.css + MicroApps slides + 已生成的 HTML/PPTX dist）；重新导出 dist 三 backend 校验视觉
- **长期防护**：写任何 TVU 品牌色 / 视觉 hex 前**强制先 grep `variables.css` 真源**，禁止凭"我记得是 X"赋值；grep 拿到的真值贴出来让 user verify 再写进文件
- **真源落地**：✅ 已落 [`reference_tvu_brand_color`](../../../tvu-design-system/BRANDING.md) + [`feedback_brand_color_verify_first`](../../../tvu-design-system/.claude/skills/consumer-product-conventions/SKILL.md) + `marp-themes/README.md` 强制"改色板先 grep token"流程；品牌色速查 ✅ 已上 `tvu-design-system/BRANDING.md`

### Gap 2：**Marp 主题选错（gaia 文档风 → 与 TVU 科技产品视觉冲突）**

**实证**:
- 第一版 PPTX 跟 Word 文档没区别（白底深字，无品牌氛围）
- User 反馈"颜色搭配不好，类似 Text 文档，没有色彩搭配，不是科技风的感觉，是不是还得用 Skill 才行"
- 起手选 Marp 内置主题时根本没考虑"消费产品是深色 UI"的事实

**返工成本**: 重新设计 tvu-dark 主题（独立 CSS 文件 240 行）+ 全部重导

**原因**: AI 默认"用内置主题省事"——**没主动问 user 视觉方向**，盲取最方便选项

**✅ 解决方案**：
- **当下修复**：写 `tvu-dark.css` 240 行独立主题（深色背景 + TVU 品牌绿 accent + 科技风 typography）；MicroApps `.marprc.yml` 切换默认 theme 为 tvu-dark；全部 retrospect slides 重导出 PPTX/HTML
- **长期防护**：视觉相关任务（PPT / 主题 / 配色 / 字体）起手必先**问 user 视觉方向**（"跟哪个产品 UI 对齐？深色还是浅色？品牌氛围多强？"），不假设；不直接套内置 / 默认主题
- **真源落地**：✅ 已落 [`templates/consumer-product/marp-themes/README.md`](../../../tvu-design-system/templates/consumer-product/marp-themes/README.md)（深色科技风作为 TVU 复盘默认 + 架构 rationale）

### Gap 3：**`@import default` 高优先级陷阱（不熟悉工具内部机制）**

**实证**:
- tvu-dark.css 顶部写 `@import 'default'` 想"扩展默认主题"
- 结果 GitHub Markdown CSS 用超高特异性 `div#\:\$p > svg > foreignObject > section` 压住自定义规则
- 表格依然白底浅灰字 → user 反馈"PPT 第 4 页表格大黑底上看不清"

**返工成本**: 移除 import + 自包含整个主题 + 重导

**原因**: 凭直觉用 `@import` 复用代码——**没读 Marp 内置主题的实际 CSS** 看特异性

**✅ 解决方案**：
- **当下修复**：移除 `tvu-dark.css` 顶部 `@import 'default'`；把表格 / 列表 / code block / blockquote 等所有基础样式 inline 进 tvu-dark.css 形成自包含主题；重导 dist 验证表格深底白字
- **长期防护**：自定义 Marp 主题**永不 `@import` 内置主题**——必须独立自包含；引入第三方 CSS 前先 read 它的实际 selector 看特异性，不凭"扩展默认 / 复用代码"直觉用 import
- **真源落地**：✅ 已落 [`templates/consumer-product/marp-themes/README.md`](../../../tvu-design-system/templates/consumer-product/marp-themes/README.md) "陷阱文档" 段（显式记录 `@import default` 高优先级 + 教训"tvu-dark 必须独立自包含"）

### Gap 4：**dist 默认生成 vs on-demand 没问 user**

**实证**:
- 每次 demo / 验证主题视觉，我都顺手 `marp ... --pptx --pdf --html`
- 用户看了几次 dist/ 累积后："能不能在我说要分享时再生成，默认不生成，节省资源"
- 加上 PDF 失真"我好像也用不上 pdf 文档"

**返工成本**: 改 2 个 README（template + MicroApps）+ 删 PDF + 2 条 memory

**原因**: AI "demo 顺手"模式没有"刹车"——每次主动跑 dist 导出，用户没说要

**✅ 解决方案**：
- **当下修复**：删除已生成的 PDF dist；改 2 个 README（template + MicroApps retrospects）默认 = "不主动导出 dist/"；改 `.marprc.yml` 不默认 PDF backend；保留 PPTX/HTML 两 backend
- **长期防护**：Marp 默认**只导 HTML + PPTX，不导 PDF**；dist 导出 = on-demand 模式，用户明确说"导出 / 分享 / 远程访问"才跑，不当成 demo 默认步骤；跑了告诉用户"这是预览"不长留 dist
- **真源落地**：✅ 已落 [`feedback_export_on_demand_only`](../../../tvu-design-system/.claude/skills/consumer-product-conventions/SKILL.md) + [`feedback_no_pdf_export`](../../../tvu-design-system/.claude/skills/consumer-product-conventions/SKILL.md) + `marp-themes/README.md` "默认 = 不主动导出 dist/" 节

### Gap 5：**署名默认 generic "TVU UX team" 而非对话者本人**

**实证**:
- 模板 footer 写 `TVU UX × Claude` + Thank You 写 `TVU UX team`
- User："署名默认为什么不是 Nancy Zeng 而是 TVU UX？不应该是对话的署名是谁吗"
- Generic 团队名 = 没署名，同事看不到是谁的贡献

**返工成本**: 模板改 {{AUTHOR}} 占位符 + setup-tvu-consumer 加 sed 替换 git user.name + 1 条 memory

**原因**: AI 写模板时"安全做法"用 team name 占位——**忘了"安全" ≠ "有用"**，归属清晰才是分享物料的核心价值

**✅ 解决方案**：
- **当下修复**：模板 footer / Thank You slide 全换成 `{{AUTHOR}}` 占位符；setup-tvu-consumer skill 加 sed 步骤跑 `git config user.name` 替换 `{{AUTHOR}}`；MicroApps 已生成的 slides footer 改为 "Nancy Zeng (UX)"；重导 dist
- **长期防护**：AI 写模板默认值时**主动用 user 真实数据**（`git config user.name` / `git config user.email` / cwd basename）做占位填充，不用 generic team name / "Anonymous" / "TVU UX team"；归属清晰 > "安全"
- **真源落地**：✅ 已落 [`feedback_signature_real_author`](../../../tvu-design-system/.claude/skills/consumer-product-conventions/SKILL.md) + [`templates/consumer-product/`](../../../tvu-design-system/templates/consumer-product/) `{{AUTHOR}}` 占位符 + setup-tvu-consumer Step 5 sed 自动替换闭环

---

## 4 · 高效对话 8 条建议（按 ROI 排序）

### 给 UX / PM（提需求方）

**(1) 涉及品牌视觉的任何任务，起手 1 句话给 AI 真源路径**

> "TVU 品牌色 token 在 `tvu-design-system/src/tokens/variables.css`，按 `--brand` 拿真值"

避免 AI 凭印象 hardcode hex。

**(2) "通用 / 全产品复用"诉求要早说**

> 反例：先让 AI 在单 consumer 做完，再问"能不能所有产品复用" — 架构推翻重做
> 正例：起手就说"这要做成 TVU 设计系统的通用 scaffold"——AI 一次就走对架构

**(3) 视觉任务起手要说"什么风格"**

> 反例：直接说"出 PPT" → AI 套 gaia 文档风
> 正例："出 PPT，跟 TVU 产品 dark UI 风格一致（深色 + 品牌绿）"

### 给 AI 协作流程

**(4) AI 写涉及 token / 真源数据的任何 hex / 字符串前，强制先 grep 真源**

不写"我记得是 X"的赋值。所有 hex / 真源 token / 路径必查后写。详见 [[feedback_brand_color_verify_first]]。

**(5) AI demo 跑产物（PPTX / PDF / 截图）默认要 on-demand，不主动跑**

跑了告诉用户"这是预览，按需保留"，不当成默认流程。详见 [[feedback_export_on_demand_only]]。

**(6) AI 写模板默认值时主动用 user 真实数据**

用 `git config user.name`、`git config user.email`、cwd basename 等取真值，不用 generic placeholder（"TVU UX team" / "Anonymous"）。

### 给 PM / Stakeholder（review 方）

**(7) Review 视觉物料时用对比 baseline（前后版本截图）**

本 session 多次"凭直觉看哪不对"型 review。如果有 baseline 截图（前主题 vs 新主题）就能秒指出"表格背景倒了"。

**(8) 文档 / 物料的"用户体验"差异点要明确说**

> 反例："PDF 跟 HTML 不一样" → 笼统
> 正例："PDF 渐变变成块状，box-shadow 丢了，行间距挤" → AI 能精确定位是打印 CSS 问题

---

## 5 · 6 条已回流规则清单

### ✅ 已落 Memory（项目级，跨 session 持久）

| 规则 | 文件 | 类型 |
|---|---|---|
| 收尾默认 push gitea | `feedback_wrap_up_git_push.md` | feedback |
| TVU 品牌色绿不是蓝（token 速查） | `reference_tvu_brand_color.md` | reference |
| 品牌色写前必查 token | `feedback_brand_color_verify_first.md` | feedback |
| 署名默认 git user.name | `feedback_signature_real_author.md` | feedback |
| dist 导出按需触发 | `feedback_export_on_demand_only.md` | feedback |
| Marp 不出 PDF | `feedback_no_pdf_export.md` | feedback |

### ✅ 已落 TVU 真源（跨 consumer 共享）

| 规则 / artifact | 路径 |
|---|---|
| Marp 主题 + 架构 rationale + maintainer notes | `templates/consumer-product/marp-themes/README.md` |
| tvu-dark.css 独立自包含主题 | `templates/consumer-product/marp-themes/tvu-dark.css` |
| .marprc.yml.template | `templates/consumer-product/.marprc.yml.template` |
| docs 5 子目录 scaffold | `templates/consumer-product/docs/` |
| 消费产品项目结构规则 | `templates/consumer-product/PROJECT_STRUCTURE.md` |
| gitignore 标准片段 | `templates/consumer-product/gitignore.fragment` |
| setup-tvu-consumer 扩展（Step 5 docs scaffold） | `~/.claude/skills/setup-tvu-consumer/SKILL.md` |

### ⏳ 后续可补（非 blocking）

| 规则 | 目标 |
|---|---|
| TVU 品牌速查文档（给非视觉同事接入用） | `tvu-design-system/BRANDING.md` 🆕 |
| 自动 nudge 长 session 提醒写复盘 | session-end hook（待评估 ROI） |

---

## 6 · Model 选型实证

| 模型 | 适合场景 | 本 session 起作用时刻 |
|---|---|---|
| **Opus 4.7** | 主对话 / 架构推理 / 自审 / 跨文件回流 / 错误根因分析 | (a) 提出 `.marprc.yml + themeSet` 共享架构（不是先单 consumer 做完再回流）(b) 定位 `@import default` 高优先级根因 (c) 写本复盘的根因分析段 |
| **Sonnet 4.6** | 批量文件替换 / scaffold 执行 / 简单 sed | 6 文件品牌色替换 / docs 重组 git mv 全可委托 |

**Hybrid 推荐**：Opus 决策 + 写主题 CSS + 错误根因；Sonnet 跑 marp 导出 / scaffold 复制 / git mv。

---

## 7 · 3 个 Action Items

**1. 给 TVU 真源加 `BRANDING.md` 速查文档**
> 内容：品牌色 token 表 + logo 用法 + 字体规范。目的：非视觉同事（包括 AI）接入时一站式查"TVU 是什么颜色"，避免本 session 的"凭印象写蓝"再发生。

**2. 在 setup-tvu-consumer SKILL.md 加自检步骤"BRANDING.md 已读"**
> AI 跑 setup 时输出"建议你查一下 `$TVU/BRANDING.md`"。降低未来 consumer 的视觉漂移风险。

**3. 评估 session-end auto-nudge"要不要写复盘"**
> 长 session（>20 turn 或 >2 小时）末尾 AI 主动提示。目前是关键词触发，依赖用户记得说"收尾"。

---

## 8 · 附录：本 session 文件改动统计

| 类型 | 数量 |
|---|---|
| TVU 真源新增文件 | 8（templates/consumer-product/ 整套）|
| TVU 真源 SKILL.md 更新 | 1（setup-tvu-consumer Step 5 + 反模式）|
| MicroApps 新增文件 | 4（.marprc.yml + docs/README + retrospects/{README,slides,本复盘}）|
| MicroApps git mv（docs 重组） | 14（5 子目录归类）|
| Memory 新增 | 6（5 feedback + 1 reference）|
| Marp 导出尝试 | 5+（迭代主题视觉 + 修 @import 后 + 修署名后 + 最终发布版）|
| 品牌色批量替换 | 6 文件（#1f4e8c → #2fb54e）|

---

## 9 · 附录：Post-Wrap-Up 第二波学习

> 原始复盘写完 + commit + push 之后，session 继续进行，产生了一波关于"复盘和规则归属"的元学习。这部分独立成段是因为它跟原始 session（Marp 主题 / scaffold）是不同主题——**关于 AI 协作的元规则**。

### 9.1 触发：用户两次连续提醒

| # | 用户原话 | 暴露的问题 |
|---|---|---|
| A | "这个为什么是项目级别？不应该是 TVU 设计系统里面的消费产品设计的规则吗？" | 6 条 feedback memory 都是 TVU 通用规则，被我误塞 MicroApps memory dir |
| B | "[2 条 retrospect memory] 这两个放在 Memory 里面合适吗？比放在 TVU 设计系统项目中更合适吗？" | 复盘格式 / 触发规则也是通用规则，同样误塞 memory |

**关键观察**：用户连续 2 次问"这是项目级还是 TVU 通用"——同一个 anti-pattern 重复，说明这不是单次失误，是 **AI 的系统性偏置**。

### 9.2 Gap 6 · AI Memory 是行为 default sink，但通用规则的真源应该是 TVU skill

**实证**：
- 用户给 feedback 时 AI 默认动作 = 写 memory（按 superpowers auto-memory skill 默认指引）
- 但 memory 是**项目级**——TVU 通用规则写进 memory = 每个 consumer 各自一份副本
- TVU 改规则时要逐 consumer 同步——架构债务

**根因**：`auto-memory` skill 的默认 trigger 是"用户给反馈就存 memory"，没有"先判断通用性"的过滤步。AI 盲套了默认行为。

**返工成本**：8 条 memory（6 feedback + 2 retrospect 相关）全部从 MicroApps memory dir 删除，迁移到 TVU 真源：
- 6 条 → `consumer-product-conventions/SKILL.md`
- 1 条复盘格式 spec → `RETROSPECT_FORMAT.md` 🆕
- 1 条品牌色 reference → `BRANDING.md` 🆕

**回流**: 在 `consumer-product-conventions/SKILL.md` 顶部加 **Meta-Rule**：

> 写任何 feedback memory 前**先问自己**：这条规则是用户**个人偏好**还是**所有 TVU 消费产品都该遵守的通用规则**？通用 → 上 TVU skill 不进 memory。

### 9.3 真源新增 artifact（post-wrap-up）

| Artifact | 真源路径 | 内容 |
|---|---|---|
| `consumer-product-conventions/SKILL.md` | `tvu-design-system/.claude/skills/` | 6 通用规则 + Meta-Rule |
| `BRANDING.md` | `tvu-design-system/` root | 品牌色速查 + token 表 + logo 用法 |
| `RETROSPECT_FORMAT.md` | `templates/consumer-product/docs/retrospects/` | 8 段格式 spec + 标杆参考 |
| Rule 4 例外段 | `consumer-product-conventions/SKILL.md` | `dist/` force-add for 远程访问 |

### 9.4 Memory 最终状态（从 8 条 → 2 条）

**保留**：
- `reference_tvu_consumer_conventions.md` — pointer 指向 TVU 真源 skill
- `microapps-layout-convention.md` — MicroApps 项目专属硬规则（LEFT 1216 / RIGHT 680）

**删除**：8 条已迁移到 TVU 真源

### 9.5 Dist Force-Add Exception

用户提出"我需要远程访问 dist 文件"——揭示了 Rule 4 的边缘场景：

- **默认**：dist gitignored（节省资源）
- **例外**：用户说"远程访问 / 上传服务器 / share remotely" → `git add -f` 单次强提交，**不改 .gitignore**

已落 `consumer-product-conventions/SKILL.md` Rule 4 例外段。

### 9.6 第二波 Action Item（补充原 §7 的 3 条）

**4. 把 Meta-Rule 加进 `superpowers:auto-memory` skill 起手协议**
> 当前 auto-memory skill 的默认行为是"用户给 feedback 就存 memory"，缺"先判断通用性"的过滤步。如果未来跨项目使用 TVU 真源 + memory 双轨架构成熟，可考虑给 auto-memory skill 加这个判断。

**5. setup-tvu-consumer 加 `consumer-product-conventions` skill 加载报告**
> 已落（symlink 列表从 6→7）。新接入 consumer 自动看到通用规则集。

### 9.7 时间线增补（轮 16-20）

| 轮 | 用户原话 | AI 改动 |
|---|---|---|
| 16 | "Memory 里这 6 条不应该是 TVU 设计系统消费产品的规则吗？" | 创建 `consumer-product-conventions` skill + `BRANDING.md` + 删 6 memory + 加 1 pointer + 更新 setup-tvu-consumer (6→7 symlinks) |
| 17 | "如何判断什么时候是消费产品并且引入对应的 Skill 呢" | 解释当前机制（.claude/skills/ 落地 = 真值，session 启动自动加载）+ 4 个检测信号 + 可选增强方案 |
| 18 | "[2 条 retrospect memory] 这两个放在 Memory 里面合适吗？" | 创建 `RETROSPECT_FORMAT.md` 8 段 spec + 删 2 memory + skill 交叉引用 |
| 19 | "看起来 dist 这个目录并没有提交，我需要下午远程访问它" | `git add -f` dist 6 文件 commit + push + Rule 4 例外段回流 |
| 20 | "收尾" | 本附录段写入 + .slides.md 同步 + dist 重新导出 + commit + push |

---

> **附录补写时间**：2026-05-21 11:50 (post-original-wrap-up)
> **附录主题**：AI 元学习 — memory vs TVU 真源的归属判断
> **新增真源 artifact**：3 个（skill + BRANDING + RETROSPECT_FORMAT）+ 1 个例外段（Rule 4 force-add）

---

> **复盘人**：Claude Opus 4.7 + Nancy Zeng (UX)
> **复盘时间**：2026-05-21（原始）+ 附录补 post-wrap-up
> **目标受众**：TVU UX team + AI 协作流程改进 + 未来 consumer scaffold 维护者
> **联系**: 本文件提到的真源文件全部在 `tvu-design-system` repo 内可查
