@teamix-evo/skills 0.10.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/manifest.json CHANGED
@@ -10,7 +10,7 @@
10
10
  {
11
11
  "id": "teamix-evo-manage",
12
12
  "name": "teamix-evo-manage",
13
- "description": "Single entry point for the teamix-evo lifecycle: scaffold a new project skeleton, install the AI coding system into an existing repo via `teamix-evo init`, inspect / remove any teamix-evo package, manage component-source upgrades, and drive old-project migration/rebuild.\nTRIGGER when: (CLI) user runs or asks about `teamix-evo init` / `teamix-evo tokens ...` / `teamix-evo skills ...` / `teamix-evo ui ...` / `teamix-evo biz-ui ...` / `teamix-evo blocks ...` / `teamix-evo lint ...` / `teamix-evo logs ...` / `teamix-evo restore ...` / `teamix-evo switch ...`, or `npm create teamix-evo` / `pnpm create teamix-evo`; (模糊初始化) \"初始化一个项目\"、\"初始化一个工程\"、\"初始化一个 teamix-evo 工程\"、\"初始化一个 Teamix Evo 项目\"、\"create a teamix-evo project\"、\"set up teamix-evo from scratch\"、\"new teamix-evo app\"; (具名变体初始化) \"初始化一个 opentrek 工程 / op 工程 / OpenTrek 项目 / 探索者项目\"、\"初始化一个云管 / 云管控制台 / 云管项目 / uni-manager 工程 / 云管工程\"、\"new opentrek/uni-manager project\"; (AI coding 接入) \"给现有仓库装 teamix-evo\"、\"现有项目装一下 skills + ui\"、\"接入 AI coding 体系\"、\"装 teamix-evo 进这个项目\"、\"add teamix-evo to existing repo\"、\"install AI coding system\"、\"接入 opentrek 研发体系\"、\"接入 op 研发体系\"、\"接入 OpenTrek 研发体系\"、\"接入 opentrek 研发系统\"、\"接入 op 研发系统\"、\"接入云管研发体系\"、\"接入云管研发系统\"、\"接入 uni-manager 研发体系\"、\"接入 uni-manager 研发系统\"、\"接入统一管理研发体系\"; (组件源码升级 — ADR 0040) \"升级 ui\"、\"升级业务组件\"、\"升级 button\"、\"生成 ui staging\"、\"生成 biz-ui staging\"、\"upgrade ui\"、\"upgrade biz-ui\"、\"upgrade ui component\"、\"stage ui upgrade\"、\"teamix-evo ui upgrade\"、\"teamix-evo biz-ui upgrade\"; (卸载 / 清单) \"卸载 teamix-evo\"、\"看看装了哪些 teamix-evo 资源\"、\"remove the design system\"、\"list installed\"; (旧工程迁移) \"迁移旧项目\"、\"重建老工程\"、\"把旧项目搬过来\"、\"旧项目分析\"、\"旧系统翻新\"、\"legacy migration\"、\"migrate old project\"、\"rebuild from existing\"、\"refactor from old codebase\"、\"从旧项目迁移过来\"、\"用旧项目做参考重建\"、\"分析旧项目并迁移\"; (状态文件) user touches `.teamix-evo/config.json`、`.teamix-evo/manifest.json`.\nSKIP: any content task — generating components, pages, services, or reviewing screens; changes to `src/` files outside the component upgrade flow, design tokens, or business logic. Those go to teamix-evo-code-opentrek or teamix-evo-design-opentrek. SKIP if the user is mid-flow inside an already-initialized project asking to \"新增页面 / 加按钮 / 调接口\" — that's coding work, not lifecycle. SKIP pure styling / token tweaks — those go to ESLint + `tokens.overrides.css`.\nCoordinates with: teamix-evo-design-opentrek (visual side after a screen is generated)、teamix-evo-code-opentrek (file placement / reuse rules) — manage is the entry point and precedes content skills, never co-triggers.",
13
+ "description": "Single entry point for the teamix-evo lifecycle: scaffold a new project skeleton, install the AI coding system into an existing repo via `teamix-evo init`, inspect / remove any teamix-evo package, manage component-source upgrades, and drive old-project migration/rebuild.\nTRIGGER when: (CLI) user runs or asks about `teamix-evo init` / `teamix-evo tokens ...` / `teamix-evo skills ...` / `teamix-evo ui ...` / `teamix-evo biz-ui ...` / `teamix-evo blocks ...` / `teamix-evo lint ...` / `teamix-evo logs ...` / `teamix-evo restore ...` / `teamix-evo switch ...`, or `npm create teamix-evo` / `pnpm create teamix-evo`; (模糊初始化) \"初始化一个项目\"、\"初始化一个工程\"、\"初始化一个 teamix-evo 工程\"、\"初始化一个 Teamix Evo 项目\"、\"create a teamix-evo project\"、\"set up teamix-evo from scratch\"、\"new teamix-evo app\"; (具名变体初始化) \"初始化一个 opentrek 工程 / op 工程 / OpenTrek 项目 / 探索者项目\"、\"初始化一个云管 / 云管控制台 / 云管项目 / uni-manager 工程 / 云管工程\"、\"new opentrek/uni-manager project\"; (AI coding 接入) \"给现有仓库装 teamix-evo\"、\"现有项目装一下 skills + ui\"、\"接入 AI coding 体系\"、\"装 teamix-evo 进这个项目\"、\"add teamix-evo to existing repo\"、\"install AI coding system\"、\"接入 opentrek 研发体系\"、\"接入 op 研发体系\"、\"接入 OpenTrek 研发体系\"、\"接入 opentrek 研发系统\"、\"接入 op 研发系统\"、\"接入云管研发体系\"、\"接入云管研发系统\"、\"接入 uni-manager 研发体系\"、\"接入 uni-manager 研发系统\"、\"接入统一管理研发体系\"; (组件源码升级 — ADR 0040) \"升级 ui\"、\"升级业务组件\"、\"升级 button\"、\"生成 ui staging\"、\"生成 biz-ui staging\"、\"upgrade ui\"、\"upgrade biz-ui\"、\"upgrade ui component\"、\"stage ui upgrade\"、\"teamix-evo ui upgrade\"、\"teamix-evo biz-ui upgrade\"; (卸载 / 清单) \"卸载 teamix-evo\"、\"看看装了哪些 teamix-evo 资源\"、\"remove the design system\"、\"list installed\"; (旧工程迁移) \"迁移旧项目\"、\"重建老工程\"、\"把旧项目搬过来\"、\"旧项目分析\"、\"旧系统翻新\"、\"legacy migration\"、\"migrate old project\"、\"rebuild from existing\"、\"refactor from old codebase\"、\"从旧项目迁移过来\"、\"用旧项目做参考重建\"、\"分析旧项目并迁移\"、\"代码迁移\"、\"执行代码迁移\"、\"执行迁移\"、\"开始迁移\"、\"项目迁移\"、\"code migration\"、\"run migration\"、\"start migration\"、\"迁移代码\"、\"迁移项目\"; (状态文件) user touches `.teamix-evo/config.json`、`.teamix-evo/manifest.json`.\nSKIP: any content task — generating components, pages, services, or reviewing screens; changes to `src/` files outside the component upgrade flow, design tokens, or business logic. Those go to teamix-evo-code-opentrek or teamix-evo-design-opentrek. SKIP if the user is mid-flow inside an already-initialized project asking to \"新增页面 / 加按钮 / 调接口\" — that's coding work, not lifecycle. SKIP pure styling / token tweaks — those go to ESLint + `tokens.overrides.css`.\nCoordinates with: teamix-evo-design-opentrek (visual side after a screen is generated)、teamix-evo-code-opentrek (file placement / reuse rules) — manage is the entry point and precedes content skills, never co-triggers.",
14
14
  "version": "0.4.0",
15
15
  "source": "src/teamix-evo-manage",
16
16
  "ides": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teamix-evo/skills",
3
- "version": "0.10.1",
3
+ "version": "0.11.0",
4
4
  "description": "Skills (AI IDE capabilities) for Teamix Evo",
5
5
  "type": "module",
6
6
  "files": [
@@ -2,7 +2,7 @@
2
2
  name: teamix-evo-manage
3
3
  description: |
4
4
  Single entry point for the teamix-evo lifecycle: scaffold a new project skeleton, install the AI coding system into an existing repo via `teamix-evo init`, inspect / remove any teamix-evo package, manage component-source upgrades, and drive old-project migration/rebuild.
5
- TRIGGER when: (CLI) user runs or asks about `teamix-evo init` / `teamix-evo tokens ...` / `teamix-evo skills ...` / `teamix-evo ui ...` / `teamix-evo biz-ui ...` / `teamix-evo blocks ...` / `teamix-evo lint ...` / `teamix-evo logs ...` / `teamix-evo restore ...` / `teamix-evo switch ...`, or `npm create teamix-evo` / `pnpm create teamix-evo`; (模糊初始化) "初始化一个项目"、"初始化一个工程"、"初始化一个 teamix-evo 工程"、"初始化一个 Teamix Evo 项目"、"create a teamix-evo project"、"set up teamix-evo from scratch"、"new teamix-evo app"; (具名变体初始化) "初始化一个 opentrek 工程 / op 工程 / OpenTrek 项目 / 探索者项目"、"初始化一个云管 / 云管控制台 / 云管项目 / uni-manager 工程 / 云管工程"、"new opentrek/uni-manager project"; (AI coding 接入) "给现有仓库装 teamix-evo"、"现有项目装一下 skills + ui"、"接入 AI coding 体系"、"装 teamix-evo 进这个项目"、"add teamix-evo to existing repo"、"install AI coding system"、"接入 opentrek 研发体系"、"接入 op 研发体系"、"接入 OpenTrek 研发体系"、"接入 opentrek 研发系统"、"接入 op 研发系统"、"接入云管研发体系"、"接入云管研发系统"、"接入 uni-manager 研发体系"、"接入 uni-manager 研发系统"、"接入统一管理研发体系"; (组件源码升级 — ADR 0040) "升级 ui"、"升级业务组件"、"升级 button"、"生成 ui staging"、"生成 biz-ui staging"、"upgrade ui"、"upgrade biz-ui"、"upgrade ui component"、"stage ui upgrade"、"teamix-evo ui upgrade"、"teamix-evo biz-ui upgrade"; (卸载 / 清单) "卸载 teamix-evo"、"看看装了哪些 teamix-evo 资源"、"remove the design system"、"list installed"; (旧工程迁移) "迁移旧项目"、"重建老工程"、"把旧项目搬过来"、"旧项目分析"、"旧系统翻新"、"legacy migration"、"migrate old project"、"rebuild from existing"、"refactor from old codebase"、"从旧项目迁移过来"、"用旧项目做参考重建"、"分析旧项目并迁移"; (状态文件) user touches `.teamix-evo/config.json`、`.teamix-evo/manifest.json`.
5
+ TRIGGER when: (CLI) user runs or asks about `teamix-evo init` / `teamix-evo tokens ...` / `teamix-evo skills ...` / `teamix-evo ui ...` / `teamix-evo biz-ui ...` / `teamix-evo blocks ...` / `teamix-evo lint ...` / `teamix-evo logs ...` / `teamix-evo restore ...` / `teamix-evo switch ...`, or `npm create teamix-evo` / `pnpm create teamix-evo`; (模糊初始化) "初始化一个项目"、"初始化一个工程"、"初始化一个 teamix-evo 工程"、"初始化一个 Teamix Evo 项目"、"create a teamix-evo project"、"set up teamix-evo from scratch"、"new teamix-evo app"; (具名变体初始化) "初始化一个 opentrek 工程 / op 工程 / OpenTrek 项目 / 探索者项目"、"初始化一个云管 / 云管控制台 / 云管项目 / uni-manager 工程 / 云管工程"、"new opentrek/uni-manager project"; (AI coding 接入) "给现有仓库装 teamix-evo"、"现有项目装一下 skills + ui"、"接入 AI coding 体系"、"装 teamix-evo 进这个项目"、"add teamix-evo to existing repo"、"install AI coding system"、"接入 opentrek 研发体系"、"接入 op 研发体系"、"接入 OpenTrek 研发体系"、"接入 opentrek 研发系统"、"接入 op 研发系统"、"接入云管研发体系"、"接入云管研发系统"、"接入 uni-manager 研发体系"、"接入 uni-manager 研发系统"、"接入统一管理研发体系"; (组件源码升级 — ADR 0040) "升级 ui"、"升级业务组件"、"升级 button"、"生成 ui staging"、"生成 biz-ui staging"、"upgrade ui"、"upgrade biz-ui"、"upgrade ui component"、"stage ui upgrade"、"teamix-evo ui upgrade"、"teamix-evo biz-ui upgrade"; (卸载 / 清单) "卸载 teamix-evo"、"看看装了哪些 teamix-evo 资源"、"remove the design system"、"list installed"; (旧工程迁移) "迁移旧项目"、"重建老工程"、"把旧项目搬过来"、"旧项目分析"、"旧系统翻新"、"legacy migration"、"migrate old project"、"rebuild from existing"、"refactor from old codebase"、"从旧项目迁移过来"、"用旧项目做参考重建"、"分析旧项目并迁移"、"代码迁移"、"执行代码迁移"、"执行迁移"、"开始迁移"、"项目迁移"、"code migration"、"run migration"、"start migration"、"迁移代码"、"迁移项目"; (状态文件) user touches `.teamix-evo/config.json`、`.teamix-evo/manifest.json`.
6
6
  SKIP: any content task — generating components, pages, services, or reviewing screens; changes to `src/` files outside the component upgrade flow, design tokens, or business logic. Those go to teamix-evo-code-opentrek or teamix-evo-design-opentrek. SKIP if the user is mid-flow inside an already-initialized project asking to "新增页面 / 加按钮 / 调接口" — that's coding work, not lifecycle. SKIP pure styling / token tweaks — those go to ESLint + `tokens.overrides.css`.
7
7
  Coordinates with: teamix-evo-design-opentrek (visual side after a screen is generated)、teamix-evo-code-opentrek (file placement / reuse rules) — manage is the entry point and precedes content skills, never co-triggers.
8
8
  ---
@@ -490,11 +490,11 @@ npx teamix-evo ui promote-to-biz --staging-dir <path> # 指定 staging 目录
490
490
 
491
491
  **触发**:用户说"卸载 teamix-evo / remove the design system"。
492
492
 
493
- | 范围 | 命令 |
494
- | --------------------------------------------- | ------------------------------------------------------------------- |
495
- | Tokens | `npx teamix-evo tokens uninstall [-y] [--keep-files] [--purge]` |
496
- | Skills | `npx teamix-evo skills uninstall [-y]` |
497
- | (UI 不提供卸载,组件源码用户拥有 → 用户手动删) | |
493
+ | 范围 | 命令 |
494
+ | --------------------------------------------- | --------------------------------------------------------------- |
495
+ | Tokens | `npx teamix-evo tokens uninstall [-y] [--keep-files] [--purge]` |
496
+ | Skills | `npx teamix-evo skills uninstall [-y]` |
497
+ | (UI 不提供卸载,组件源码用户拥有 → 用户手动删) | |
498
498
 
499
499
  `tokens uninstall` 默认保留 `frozen` + `managed` 文件以保护用户编辑;`--keep-files` 完全保留物理文件只清 manifest;`--purge` 连 `frozen` 文件也删除。
500
500
 
@@ -513,6 +513,7 @@ npx teamix-evo ui promote-to-biz --staging-dir <path> # 指定 staging 目录
513
513
  - 存在 → 进入步骤 3。
514
514
  - 不存在 → 告知用户:"旧项目尚未生成 repo-wiki,请先在旧项目目录使用 Qoder 生成 repo-wiki,完成后告诉我。"等待用户确认后重检。
515
515
  3. **读取 repo-wiki** — 增量读取 `<old-path>/.qoder/repowiki/` 目录内容。优先读中文版(`repowiki/zh/`),其次英文版(`repowiki/en/`)。按文件名语义识别:
516
+
516
517
  - 项目总览 / 概述
517
518
  - 目录结构 / 模块划分
518
519
  - 页面 / 路由清单
@@ -521,6 +522,7 @@ npx teamix-evo ui promote-to-biz --staging-dir <path> # 指定 staging 目录
521
522
  - 依赖清单
522
523
 
523
524
  > 不一次性读完全部内容(token 预算有限)。先读概览 + 路由,后续按需深入。
525
+
524
526
  4. **补充读取**(若 repo-wiki 不完整)— 直接读旧项目的:
525
527
  - `package.json`(依赖 / scripts)
526
528
  - 路由配置文件(`src/routes/`、`src/router/`、`pages/` 目录等)
@@ -536,16 +538,62 @@ npx teamix-evo ui promote-to-biz --staging-dir <path> # 指定 staging 目录
536
538
 
537
539
  6. **生成迁移计划文件** — 写入 `.teamix-evo/migrate-plan.md`,格式如下:
538
540
 
539
- ```markdown
541
+ ````markdown
540
542
  # Migration Plan
541
543
 
544
+ ## ❗ 执行规则(每次读取本文件时必须重新确认)
545
+
546
+ 1. **Token 映射查表** — 每迁移一个页面前,必须先读取 `.teamix-evo/migrate-token-mapping.md`,所有旧项目 CSS 变量按实际像素值映射为新项目 Tailwind class。禁止根据变量名称“猜测”对应关系。
547
+ 2. **skill 门控** — 写代码前必须已加载 `teamix-evo-manage`、`teamix-evo-code-{variant}`、`teamix-evo-design-{variant}` 三个 skill(路径见关键文件索引)。
548
+ 3. **三轨齐备** — 进入任何页面实现前必须 wiki + 源码 + 截图全部就绪。
549
+ 4. **Token 合法性自检** — 写完代码后扫描所有 Tailwind class,确认在新项目有效。
550
+ 5. **新架构骨架层检查** — 迁移不仅是“翻译旧代码”,还必须“适配新架构的标准模式”。新架构有一套完整的页面骨架层级(`PageShell → OpPageContainer → PageHeader → 内容`),这些组件在旧项目中完全不存在(旧项目用自定义 `<h1>`、内联样式或散落 CSS 实现),三轨对照不会发现它们。必须主动查阅 design skill 和 biz-ui 组件的 JSDoc 获取标准骨架用法:
551
+ - **Layout 层**:检查 `src/components/biz-ui/` 是否存在页面容器组件(如 `OpPageContainer`),在 `<Outlet />` 外统一包裹,使所有页面自动获得容器效果
552
+ - **每页面层**:检查容器组件的 JSDoc / 源码中是否定义了标配的子组件模式(如 `header={<PageHeader>...</PageHeader>}` 是每页标配),必须按规范使用而非省略
553
+
554
+ ## ❄️ 冷启动恢复指南(上下文丢失 / 新会话接手时执行)
555
+
556
+ 如果你是一个新会话被要求“继续迁移”,按以下顺序恢复上下文:
557
+
558
+ 1. 读取本文件 `.teamix-evo/migrate-plan.md` — 获取进度、元数据、执行规则
559
+ 2. 读取 `.teamix-evo/migrate-token-mapping.md` — 加载 token 映射表
560
+ 3. 加载三个 skill(路径见下方「关键文件索引」):
561
+ - **Manage skill** — 包含完整的迁移执行协议(三轨采集流程、逐条实现步骤、验证流程)
562
+ - **Code skill** — 代码规范门控(reuse-first / file-structure / api-layering)
563
+ - **Design skill** — 设计/布局规范(视觉还原、栅格、组件组合)
564
+ 4. 查看 Progress 区块 — 找到 **Current phase** 所指的 Phase,在该 Phase 中定位第一个未完成的 `[ ]` 条目(不要回头处理更早 Phase 中被 pilot 模式有意推迟的条目)
565
+ 5. 执行三轨采集 — 对当前页面补全 wiki + 源码 + 截图
566
+ 6. 开始实现 — 从第一个未完成条目继续
567
+
568
+ > 注:若不确定旧项目是否仍在运行,先尝试访问 Source URL。超时则降级为两轨模式并标注。
569
+
570
+ ## 关键文件索引
571
+
572
+ | 文件 | 路径 | 用途 |
573
+ | ------------ | --------------------------------------------------------- | ------------------------------ |
574
+ | 迁移计划 | `.teamix-evo/migrate-plan.md` | 进度跟踪 + 执行规则(本文件) |
575
+ | Token 映射表 | `.teamix-evo/migrate-token-mapping.md` | CSS 变量 → Tailwind class 映射 |
576
+ | 截图目录 | `.teamix-evo/migrate-screenshots/` | 每页截图参考 |
577
+ | Manage skill | `.teamix-evo/skills/teamix-evo-manage/SKILL.md` | 迁移执行协议(场景 6) |
578
+ | Code skill | `.teamix-evo/skills/teamix-evo-code-{variant}/SKILL.md` | 代码规范门控 |
579
+ | Design skill | `.teamix-evo/skills/teamix-evo-design-{variant}/SKILL.md` | 设计/布局规范 |
580
+ | 旧项目源码 | 见 Metadata → Source | 源码轨参考 |
581
+ | 旧项目 Wiki | 见 Metadata → Source 同级 `repo-wiki/` | Wiki 轨参考 |
582
+
583
+ > ℹ️ `{variant}` 请替换为 Metadata 中的 **Target variant** 值(如 `opentrek` 或 `uni-manager`)。实际生成时会自动填入真实值。
584
+
542
585
  ## Progress
586
+
543
587
  - **Status**: in-progress
588
+ - **Mode**: <full | pilot>
589
+ - **Pilot pages**: <页面名列表,仅 pilot 模式填写>
590
+ - **Pilot 说明**: <pilot 模式下仅执行上述 Phase 涉及的条目。更早 Phase 中标 `[ ]` 的条目是有意推迟到 pilot 验证通过后再补的,当前不需要处理>
544
591
  - **Completed**: 0 / <总条目数>
545
592
  - **Current phase**: Phase 0 — Global Infrastructure
546
593
  - **Last updated**: <ISO 时间戳>
547
594
 
548
595
  ## Metadata
596
+
549
597
  - **Source**: <旧项目绝对路径>
550
598
  - **Target variant**: <当前项目 variant>
551
599
  - **Generated**: <ISO 时间戳>
@@ -555,65 +603,149 @@ npx teamix-evo ui promote-to-biz --staging-dir <path> # 指定 staging 目录
555
603
  ## Component Mapping (AI via MCP find_components 动态生成)
556
604
 
557
605
  | Old | New (teamix-evo) | Notes |
558
- |-----|-------------------|-------|
559
- | ... | ... | ... |
606
+ | --- | ---------------- | ----- |
607
+ | ... | ... | ... |
560
608
 
561
609
  ## Phase 0: Global Infrastructure
562
610
 
563
- - [ ] **Routing**路由结构搭建
611
+ - [ ] **清理脚手架示例页面**删除 `create-teamix-evo` 生成的 demo 页面(`src/pages/home/`、`src/pages/list/`、`src/pages/detail/`、`src/pages/form/` 等)及关联的 services / hooks / types / routes 条目
612
+ [ ] **Layout(吸顶 + 左导 + 页面容器)** — ❗ 优先级最高。全局壳重构:吸顶 Header、左侧边栏 Sidebar、面包屑、内容区布局。先保证通用性内容正确,再进入具体页面。
613
+
614
+ > Layout 也需要截图参考:使用 Source URL 对旧项目的吸顶和左导截图,存入 `.teamix-evo/migrate-screenshots/layout/`(`header.png` + `sidebar.png`),作为视觉还原参考。
615
+
616
+ > ⚠️ **新架构骨架层检查**:新架构的页面骨架是 `PageShell → OpPageContainer → PageHeader → 内容`,旧项目不会有这些抽象。必须主动检查 biz-ui 组件源码和 JSDoc 获取标准用法:
617
+ >
618
+ > - Layout 层:`<Outlet />` 外套 `OpPageContainer`(灰底白卡)
619
+ > - 每页面层:`OpPageContainer` 的 `header` prop 传入 `<PageHeader>`(页面标题 + Tabs 等)
620
+ > - 这些信息三轨对照找不到,只能从 design skill 和 biz-ui 组件 JSDoc 中获取
621
+
622
+ - [ ] **静态资源迁移** — 将旧项目的静态资源(图片 / 视频 / 动效 / 字体 / SVG / 音频等)拷贝到新项目对应目录(如 `public/` 或 `src/assets/`),保持相对引用路径一致
623
+ - [ ] **Routing** — 路由结构搭建(基于旧项目路由表重建)
564
624
  - [ ] **API client** — HTTP 客户端 + 拦截器
565
625
  - [ ] **Auth** — 鉴权流程
566
- - [ ] **Layout** — 全局壳(导航 / 侧边栏 / 面包屑)
567
626
  - [ ] **Global state** — 全局状态管理
568
- - [ ] **Theme**主题对齐(tokens.overrides.css)
627
+ - [ ] **Theme & 全局 CSS 基线** 对比旧项目的全局样式(body / html / :root),将以下配置对齐到新项目:
628
+
629
+ - 字体族(font-family)— 若旧项目使用自定义字体(如 Geist / Inter),需引入字体文件并配置 @font-face
630
+ - 字体平滑(-webkit-font-smoothing: antialiased)
631
+ - 字体特性(font-feature-settings)
632
+ - 基础行高、字号、颜色
633
+ - 其他全局 reset 样式
634
+ - tokens.overrides.css 主题变量覆盖
635
+
636
+ > 这些全局 CSS 影响所有页面的视觉表现,必须在进入具体页面迁移前完成。直接沿用旧项目的配置,无需询问用户。完成后在进度汇报中简要记录已对齐的项目(如“已对齐字体族 Geist Variable、antialiased、font-feature-settings”),通知用户即可。
637
+
638
+ - [ ] **Token 映射表** — 提取旧项目所有 CSS 变量 / design tokens,解析其实际值,建立与新项目 Tailwind class 的映射表,并写入 `.teamix-evo/migrate-token-mapping.md`。示例:
639
+
640
+ ```markdown
641
+ | 旧项目 Token | 实际值 | 新项目 Tailwind Class |
642
+ | ---------------- | ------- | ------------------------- |
643
+ | --font-size-base | 12px | text-xs |
644
+ | --font-size-lg | 14px | text-sm |
645
+ | --font-size-xl | 16px | text-base |
646
+ | --font-size-2xl | 18px | text-lg |
647
+ | --color-primary | #1677ff | text-primary / bg-primary |
648
+ | --border-radius | 4px | rounded |
649
+ | --spacing-sm | 8px | gap-2 / p-2 |
650
+ ```
651
+
652
+ 映射表必须覆盖以下维度:
653
+
654
+ - **字号** — 所有 font-size 变量
655
+ - **间距** — spacing / padding / margin / gap 变量
656
+ - **圆角** — border-radius 变量
657
+ - **颜色** — 旧项目自定义色值变量(如 `--color-data-8`、`--color-brand-3`)→ 检查新项目 `tokens.theme.css` 中是否存在对应 utility。若不存在,标注为「❗ 无对应」并建议替代方案(如用最接近的语义色或 CSS 变量内联)
658
+ - **阴影** — box-shadow 变量
659
+
660
+ > ⚠️ **硬约束:禁止按名称猜测映射。** AI 必须解析旧项目 CSS 变量的实际像素值,再映射到新项目对应的 Tailwind class。例如 `--font-size-lg = 14px` 应映射为 `text-sm`(而不是名称相似的 `text-lg`)。
661
+ > 后续 Phase C 逐页实现时,所有涉及旧 token 的代码必须查询此表来确定正确的 Tailwind class,不得凭名称直觉映射。
662
+ > 对于映射表中标注为「❗ 无对应」的 token,在写代码时必须使用替代方案,不得直接复制旧项目的 class 名。
569
663
 
570
664
  ## Phase 1: <页面名> (complexity: <simple|medium|complex>)
571
665
 
666
+ > ⚠️ 执行前检查:① 已读取 `migrate-token-mapping.md` ② 已加载 manage/code/design skill(见关键文件索引) ③ 三轨已采集
667
+
572
668
  - Route: `<路由路径>`
573
669
  - [ ] **<子任务>** — <描述> (<使用组件>)
574
670
  - [ ] **API integration** — <接口列表>
575
671
 
576
672
  ## Phase N: ...
577
- ```
673
+ ````
578
674
 
579
- **组件映射生成规则**:通过 MCP `find_components` / `list_components` 查询 teamix-evo 注册表,逐个匹配旧项目使用的 UI 组件,动态填写映射表。
675
+ **组件映射生成规则**:通过 MCP `find_components` / `list_components` 查询 teamix-evo 注册表,逐个匹配旧项目使用的 UI 组件,动态填写映射表。
580
676
 
581
677
  7. **展示计划摘要** — 向用户复述:
678
+
582
679
  - 总页面数
583
680
  - 按复杂度分布(简单 / 中等 / 复杂)
584
681
  - 建议执行顺序
585
682
  - 询问用户是否调整顺序、跳过某些页面、或补充遗漏页面
586
683
 
684
+ 8. **确认迁移节奏** — 向用户提问:
685
+
686
+ > “您希望先迁移几个页面验证效果,还是直接开始全量迁移?”
687
+
688
+ - **先验证(推荐)**:用户选择 1–3 个代表性页面(建议包含一个简单页 + 一个复杂页),先做完这几个让用户检验代码质量、视觉还原度、组件映射质量后再继续剩余页面
689
+ - **全量迁移**:按计划顺序逐页执行,每完成一个 Phase 后向用户汇报
690
+
691
+ 在 `migrate-plan.md` 顶部 Progress 区块记录用户选择:
692
+
693
+ - `Mode: pilot` + `Pilot pages: <页面名列表>` — 验证模式,仅执行指定页面
694
+ - `Mode: full` — 全量模式
695
+
696
+ > pilot 模式完成后,向用户确认:“验证页面已完成,是否继续迁移剩余页面?”用户确认后将 Mode 改为 `full` 并继续。
697
+
587
698
  > Phase B → Phase C 之间**必须**有用户的明确确认(go-ahead)。
588
699
 
589
700
  #### Phase C · 执行
590
701
 
591
- 8. **读取当前进度** — 读 `.teamix-evo/migrate-plan.md` 顶部 Progress 区块。若 Status 为 `done` → 告知用户迁移已全部完成。否则找到第一个未完成(`[ ]`)的条目。
592
- 9. **三轨采集(每页开发前必做)** — 进入一个页面的开发前,必须先收集三轨信息:
593
- a. **Wiki 轨**:读旧项目 repo-wiki 中该页面相关的描述(功能说明、业务规则、数据流)
594
- b. **源码轨**:读旧项目该页面的全部源文件(页面组件 + 子组件 + 页面内弹窗 Dialog / 抽屉 Drawer / 确认框等)
595
- c. **截图轨**:通过浏览器访问旧项目运行地址,对该页面进行截图。截图范围须覆盖:
596
- - 页面默认态(列表 / 表单 / 详情等主视图)
597
- - 页面内所有弹窗(Dialog / Modal)的打开态
598
- - 页面内所有抽屉(Drawer / Sheet)的打开态
599
- - 关键交互状态(空态 / 加载态 / 错误态,若能触发)
702
+ 9. **读取当前进度** — 读 `.teamix-evo/migrate-plan.md` 顶部 Progress 区块。若 Status 为 `done` → 告知用户迁移已全部完成。否则找到第一个未完成(`[ ]`)的条目。
703
+ 10. **三轨采集(每页开发前必做)** — 进入一个页面的开发前,必须先收集三轨信息:
704
+ a. **Wiki 轨**:读旧项目 repo-wiki 中该页面相关的描述(功能说明、业务规则、数据流)
705
+ b. **源码轨**:读旧项目该页面的全部源文件(页面组件 + 子组件 + 页面内弹窗 Dialog / 抽屉 Drawer / 确认框等)
706
+ c. **截图轨**:检查 `.teamix-evo/migrate-screenshots/<page-name>/` 是否已有该页面截图。
707
+
708
+ - **已有截图** 直接读取作为视觉参考。
709
+ - **无截图** 使用 Phase A 中用户提供的 Source URL,通过浏览器访问该页面并截图存入固定路径。
710
+
711
+ **截图存放约定**:所有截图存放在 `.teamix-evo/migrate-screenshots/<page-name>/` 目录下,文件名约定:
712
+
713
+ - `default.png` — 页面默认态
714
+ - `dialog-<名称>.png` — 弹窗打开态
715
+ - `drawer-<名称>.png` — 抽屉打开态
716
+ - `state-empty.png` / `state-loading.png` / `state-error.png` — 特殊状态
717
+
718
+ 截图范围须覆盖:
719
+
720
+ - 页面默认态(列表 / 表单 / 详情等主视图)
721
+ - 页面内所有弹窗(Dialog / Modal)的打开态
722
+ - 页面内所有抽屉(Drawer / Sheet)的打开态
723
+ - 关键交互状态(空态 / 加载态 / 错误态,若能触发)
724
+
725
+ > **为什么固定路径**:因为迁移工作通常跨多个会话。截图存在固定位置,新会话可直接读取作为视觉参考,无需再次启动旧项目截图。
726
+
727
+ > ⚠️ **硬约束:三轨齐备方可动手。** AI 必须在 wiki、源码、截图三轨全部采集完成后,才能开始该页面的实现。**AI 不得自行跳过截图轨**——只有用户明确要求「跳过截图」或旧项目确实无法访问(超时 / 报错)时,才可降级为两轨模式,并标注"⚠️ 无截图参考,视觉还原需用户人工校对"。
600
728
 
601
- > 三轨齐备后,向用户确认:"已采集完 <页面名> 的 wiki、源码、截图,开始实现?"用户确认后才动手。若截图不可用(旧项目未运行),告知用户并以 wiki + 源码两轨继续,标注"无截图参考,视觉还原需用户人工校对"。
729
+ 三轨齐备后,向用户确认:"已采集完 <页面名> 的 wiki、源码、截图,开始实现?"用户确认后才动手。
602
730
 
603
- 10. **逐条实现** — 对每个 checklist 条目:
731
+ 11. **逐条实现** — 对每个 checklist 条目:
604
732
  a. 通过 MCP `find_components` / `get_component_meta` 查询可用组件
605
- b. 遵循 `teamix-evo-code-<variant>` skill 规范生成代码(reuse-first / file-structure / api-layering)
606
- c. 遵循 `teamix-evo-design-<variant>` skill 规范处理页面布局,参照截图还原视觉
607
- d. 完成后更新 `.teamix-evo/migrate-plan.md`:将对应条目标记为 `[x]`,同步更新顶部 Progress(Completed 计数 + Current phase + Last updated)
608
- e. 向用户汇报进度,格式:`✅ <条目名> 完成(<已完成数>/<总数>)| 当前阶段:<Phase 名>`
609
- 11. **验证**每完成一个页面后:
733
+ b. **加载 code/design skill** — 必须先读取 `teamix-evo-code-{variant}` `teamix-evo-design-{variant}` SKILL.md 全文,激活其门控流程。**禁止未读取就开始写代码**。若当前会话已经读取过且上下文未丢失,可跳过重复读取
734
+ c. 遵循 `teamix-evo-code-{variant}` skill 规范生成代码(reuse-first / file-structure / api-layering)
735
+ d. 遵循 `teamix-evo-design-{variant}` skill 规范处理页面布局,参照截图还原视觉
736
+ e. **Token 映射查表** 写代码时遇到旧项目的 CSS 变量 / class,必须查询 `.teamix-evo/migrate-token-mapping.md` 确定正确的 Tailwind class,禁止凭名称直觉映射
737
+ f. **静态资源处理**实现过程中若发现页面引用了图片 / 视频 / 动效 / 字体等资源,必须从旧项目对应路径拷贝到新项目,**禁止仅报告“缺少资源”而不动手拷贝**
738
+ g. **Token 合法性自检** — 写完代码后,扫描本次生成的所有 Tailwind class,确认每个都在新项目 `tokens.theme.css` 中有对应变量或是 Tailwind 标准 utility。若发现无效 class(如 `bg-data-8` 在新项目不存在),必须立即替换为有效的替代方案
739
+ h. 完成后更新 `.teamix-evo/migrate-plan.md`:将对应条目标记为 `[x]`,同步更新顶部 Progress(Completed 计数 + Current phase + Last updated)
740
+ i. 向用户汇报进度,格式:`✅ <条目名> 完成(<已完成数>/<总数>)| 当前阶段:<Phase 名>`
741
+ 12. **验证** — 每完成一个页面后:
610
742
  - 列出该页面的功能检查点(从旧代码提取的关键交互:CRUD / 筛选 / 分页 / 权限 / 弹窗流程等)
611
743
  - 若有截图,建议用户对比新旧页面视觉差异
612
744
  - 跑 `pnpm typecheck` 确认零类型错误
613
745
 
614
746
  #### Phase D · 全量 Review
615
747
 
616
- 12. **全部页面完成后** — 当 Progress 中 Completed 等于总条目数时:
748
+ 13. **全部页面完成后** — 当 Progress 中 Completed 等于总条目数时:
617
749
  - 将 Status 更新为 `review`
618
750
  - 向用户提示:"所有页面已迁移完成,建议进行一轮整体 review。是否现在开始?"
619
751
  - 用户确认后,逐页面列出 review 检查点:
@@ -622,38 +754,42 @@ npx teamix-evo ui promote-to-biz --staging-dir <path> # 指定 staging 目录
622
754
  - 路由可达性(所有页面是否串通)
623
755
  - 全局一致性(Layout / 导航 / 权限守卫是否统一)
624
756
  - review 全部通过后,将 Status 更新为 `done`
625
- 13. **会话恢复** — 若 AI 进入新会话:
626
- - 读 `.teamix-evo/migrate-plan.md` 顶部 Progress 区块快速获取整体进度(Status / Completed / Current phase)
627
- - `in-progress` → 定位第一个 `[ ]` 条目,从断点处继续
757
+ 14. **会话恢复** — 若 AI 进入新会话:
758
+ - 读 `.teamix-evo/migrate-plan.md` 文件顶部包含「冷启动恢复指南」,按其 6 步顺序恢复上下文
759
+ - 读 `.teamix-evo/migrate-screenshots/` 目录,确认已有哪些页面的截图可作为视觉参考
760
+ - `in-progress` → 定位第一个 `[ ]` 条目,从断点处继续;若当前页面已有截图,直接读取作为参考,无需重新截图
628
761
  - `review` → 进入 Phase D review 流程
629
762
  - `done` → 告知用户迁移已完成
630
763
 
631
764
  ### 身份划分清单
632
765
 
633
766
  - **AI(本 skill — manage)**:询问路径 → 检测 repo-wiki → 生成/管理 `migrate-plan.md` → 进度追踪 → 会话恢复定位。
634
- - **AI(`teamix-evo-code-<variant>`)**:生成每页实际代码时遵循 reuse-first / file-structure / api-layering 规范。Phase C 执行时自动应用。
635
- - **AI(`teamix-evo-design-<variant>`)**:页面级布局 / 视觉设计决策。迁移新页面时并行参考。
767
+ - **AI(`teamix-evo-code-{variant}`)**:生成每页实际代码时遵循 reuse-first / file-structure / api-layering 规范。Phase C 执行时自动应用。
768
+ - **AI(`teamix-evo-design-{variant}`)**:页面级布局 / 视觉设计决策。迁移新页面时并行参考。
636
769
  - **用户**:提供旧项目路径 / 确认 repo-wiki 已生成 / 审核迁移计划 / 可选提供运行 URL / 确认每页实现结果。
637
770
  - **CLI**:无新命令。执行阶段复用 `teamix-evo ui add <id>`(若发现有未安装的 UI 组件需要补装)。
638
771
 
639
772
  ### 边缘情况
640
773
 
641
- | 情况 | 处理 |
642
- | ---- | ---- |
643
- | repo-wiki 不存在 | 提示用户先在旧项目执行 repo-wiki 生成命令 |
644
- | repo-wiki 不完整(缺路由/API 等) | 直接读旧项目源码补充(路由配置 / package.json / 目录结构) |
645
- | 旧项目是 Vue / Angular(非 React) | 正常分析,概念映射无框架壁垒(路由→路由、组件→组件),新项目统一生成 React |
646
- | 旧项目是 monorepo | 让用户指定具体 package 路径作为 `<old-path>` |
647
- | 页面极复杂(>500 行、多子路由) | 拆为多个 checklist 子条目,标记 complexity: complex |
648
- | `.teamix-evo/migrate-plan.md` 已存在 | 询问用户三选一:(a) 恢复进度继续、(b) 重新生成(覆盖)、(c) 查看当前计划 |
649
- | 新项目已有部分页面 | 跳过已存在的页面,或标记为 verify-only |
650
- | token 预算不足以完成全部分析 | 停止读取,基于已有信息生成部分计划,标注"后续会话补充" |
774
+ | 情况 | 处理 |
775
+ | ------------------------------------ | ------------------------------------------------------------------------------ |
776
+ | repo-wiki 不存在 | 提示用户先在旧项目执行 repo-wiki 生成命令 |
777
+ | repo-wiki 不完整(缺路由/API 等) | 直接读旧项目源码补充(路由配置 / package.json / 目录结构) |
778
+ | 旧项目是 Vue / Angular(非 React) | 正常分析,概念映射无框架壁垒(路由 → 路由、组件 → 组件),新项目统一生成 React |
779
+ | 旧项目是 monorepo | 让用户指定具体 package 路径作为 `<old-path>` |
780
+ | 页面极复杂(>500 行、多子路由) | 拆为多个 checklist 子条目,标记 complexity: complex |
781
+ | `.teamix-evo/migrate-plan.md` 已存在 | 询问用户三选一:(a) 恢复进度继续、(b) 重新生成(覆盖)、(c) 查看当前计划 |
782
+ | 新项目已有部分页面 | 跳过已存在的页面,或标记为 verify-only |
783
+ | token 预算不足以完成全部分析 | 停止读取,基于已有信息生成部分计划,标注"后续会话补充" |
651
784
 
652
785
  ### 不要
653
786
 
654
787
  - **不要**在无 repo-wiki 且源码量大时一次性读完全部文件 — 分批按需读取。
655
788
  - **不要**跳过 Phase B 直接写代码 — 必须先生成 `migrate-plan.md` 让用户审核确认。
656
789
  - **不要**复制旧项目的组件源码到新项目 — 走 reuse-first 查 `@teamix-evo/ui` 注册表匹配。
790
+ - **但可以修改业务组件(biz-ui)** — `src/components/biz-ui/` 下的组件(如 `op-sidebar`、`page-header`、`op-layout` 等)是 `frozen` 策略,用户拥有所有权。当现有业务组件无法满足迁移需求(缺少 slot、不支持某布局、缺少交互能力)时,AI **应当直接修改 biz-ui 组件源码**,而不是在页面层面 hack。修改前告知用户“当前 biz-ui 组件 <X> 不支持 <能力>,我将直接增强它”。
791
+ - ✅ 可修改:`src/components/biz-ui/**`(用户拥有,frozen)
792
+ - ❌ 不可修改:`src/components/ui/**`(teamix-evo 接管,需走 `ui upgrade`)
657
793
  - **不要**搬迁旧项目的样式体系(CSS-in-JS / less / sass / antd theme) — 新项目用 design tokens + Tailwind v4。
658
794
  - **不要**原样搬入旧 node_modules 依赖 — 仅迁移业务必需的第三方库(如图表库、富文本编辑器)。
659
795
  - **不要**在用户未确认计划前开始实现。