@agile-team/wl-skills-kit 2.3.4 → 2.3.6

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.
Files changed (96) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +16 -10
  3. package/files/.cursor/mcp.json +8 -8
  4. package/files/.github/guides/README.md +13 -13
  5. package/files/.github/guides/architecture.md +555 -555
  6. package/files/.github/guides/mcp-setup.md +109 -109
  7. package/files/.github/guides/usage.md +184 -184
  8. package/files/.github/reports/README.md +65 -65
  9. package/files/.github/reports/SYS_DICT_INFO.md +50 -50
  10. package/files/.github/reports/SYS_MENU_INFO.md +247 -247
  11. package/files/.github/reports/SYS_PERMISSION_INFO.md +20 -20
  12. package/files/.github/reports//347/273/204/344/273/266/346/217/220/345/217/226/345/273/272/350/256/256.md +33 -33
  13. package/files/.github/reports//350/247/204/350/214/203/345/256/241/346/237/245/346/212/245/345/221/212.md +44 -44
  14. package/files/.github/skills/_compat/README.md +108 -108
  15. package/files/.github/skills/_compat/headers/agents.txt +8 -8
  16. package/files/.github/skills/_compat/headers/claude-code.txt +7 -7
  17. package/files/.github/skills/_compat/headers/cline.txt +7 -7
  18. package/files/.github/skills/_compat/headers/cursor-mdc.txt +16 -16
  19. package/files/.github/skills/_compat/headers/cursor-rules.txt +7 -7
  20. package/files/.github/skills/_compat/headers/github-copilot.txt +1 -1
  21. package/files/.github/skills/_compat/headers/kiro.txt +10 -10
  22. package/files/.github/skills/_compat/headers/qoder.txt +8 -8
  23. package/files/.github/skills/_compat/headers/trae.txt +11 -11
  24. package/files/.github/skills/_compat/headers/windsurf.txt +7 -7
  25. package/files/.github/skills/_registry.md +81 -81
  26. package/files/.github/skills/core/api-contract/SKILL.md +344 -344
  27. package/files/.github/skills/core/api-contract/USAGE.md +110 -110
  28. package/files/.github/skills/core/convention-audit/SKILL.md +189 -189
  29. package/files/.github/skills/core/convention-audit/USAGE.md +99 -99
  30. package/files/.github/skills/core/page-codegen/SKILL.md +973 -973
  31. package/files/.github/skills/core/page-codegen/USAGE.md +102 -102
  32. package/files/.github/skills/core/page-codegen/templates/_index.md +46 -46
  33. package/files/.github/skills/core/page-codegen/templates/domains/_CONTRIBUTING.md +107 -107
  34. package/files/.github/skills/core/page-codegen/templates/domains/produce/TPL-OPERATION-STATION.md +442 -442
  35. package/files/.github/skills/core/page-codegen/templates/domains/sale/README.md +26 -26
  36. package/files/.github/skills/core/page-codegen/templates/universal/TPL-CHANGE-HISTORY.md +276 -276
  37. package/files/.github/skills/core/page-codegen/templates/universal/TPL-DETAIL-TABS.md +1145 -1145
  38. package/files/.github/skills/core/page-codegen/templates/universal/TPL-DRIVEN.md +309 -309
  39. package/files/.github/skills/core/page-codegen/templates/universal/TPL-FORM-ROUTE.md +436 -436
  40. package/files/.github/skills/core/page-codegen/templates/universal/TPL-LIST.md +191 -191
  41. package/files/.github/skills/core/page-codegen/templates/universal/TPL-MASTER-DETAIL.md +148 -148
  42. package/files/.github/skills/core/page-codegen/templates/universal/TPL-RECORD-FORM.md +376 -376
  43. package/files/.github/skills/core/page-codegen/templates/universal/TPL-TREE-LIST.md +186 -186
  44. package/files/.github/skills/core/prototype-scan/SKILL.md +498 -498
  45. package/files/.github/skills/core/prototype-scan/USAGE.md +95 -95
  46. package/files/.github/skills/core/template-extract/SKILL.md +139 -139
  47. package/files/.github/skills/core/template-extract/USAGE.md +93 -93
  48. package/files/.github/skills/domain/README.md +51 -51
  49. package/files/.github/skills/sync/env.local.json +0 -5
  50. package/files/.github/skills/sync/menu-sync/SKILL.md +263 -263
  51. package/files/.github/skills/sync/menu-sync/USAGE.md +104 -104
  52. package/files/.github/skills/sync/menu-sync/env/env.local.json +7 -7
  53. package/files/.github/skills/sync/menu-sync/env/guide.md +99 -99
  54. package/files/.github/skills/sync/permission-sync/SKILL.md +239 -0
  55. package/files/.github/skills/sync/permission-sync/USAGE.md +93 -0
  56. package/files/.github/standards/01-toolchain.md +57 -57
  57. package/files/.github/standards/02-code-structure.md +111 -111
  58. package/files/.github/standards/03-comments.md +53 -53
  59. package/files/.github/standards/04-coding-basics.md +33 -33
  60. package/files/.github/standards/05-logging.md +38 -38
  61. package/files/.github/standards/06-security.md +44 -44
  62. package/files/.github/standards/07-config.md +52 -52
  63. package/files/.github/standards/08-git.md +60 -60
  64. package/files/.github/standards/09-typescript.md +71 -71
  65. package/files/.github/standards/10-pinia.md +57 -57
  66. package/files/.github/standards/11-form-validation.md +81 -81
  67. package/files/.github/standards/12-base-table.md +153 -153
  68. package/files/.github/standards/13-platform-components.md +123 -123
  69. package/files/.github/standards/index.md +89 -89
  70. package/files/.kiro/settings/mcp.json +8 -8
  71. package/files/.mcp.json +8 -8
  72. package/files/.vscode/mcp.json +9 -9
  73. package/files/demo/produce/aiflow/mmwr-customer-apply-change-history/data.ts +196 -196
  74. package/files/demo/produce/aiflow/mmwr-customer-apply-change-history/index.scss +150 -150
  75. package/files/demo/produce/aiflow/mmwr-customer-apply-change-history/index.vue +79 -79
  76. package/files/docs/jh-date-range.md +257 -257
  77. package/files/docs/jh-date.md +222 -222
  78. package/files/docs/jh-dept-picker.md +190 -190
  79. package/files/docs/jh-drag-row.md +590 -590
  80. package/files/docs/jh-file-upload.md +216 -216
  81. package/files/docs/jh-picker.md +218 -218
  82. package/files/docs/jh-select.md +148 -148
  83. package/files/docs/jh-text.md +248 -248
  84. package/files/docs/jh-user-picker.md +197 -197
  85. package/files/src/components/global/C_RightToolbar/data.ts +228 -228
  86. package/files/src/components/global/C_RightToolbar/index.scss +44 -44
  87. package/files/src/components/global/C_Splitter/index.scss +61 -61
  88. package/files/src/components/global/C_SvgIcon/index.scss +15 -15
  89. package/files/src/components/global/C_TagStatus/index.scss +20 -20
  90. package/files/src/components/global/C_Tree/data.ts +61 -61
  91. package/files/src/components/local/c_listModal/index.scss +4 -4
  92. package/mcp/api/roleApi.js +60 -0
  93. package/mcp/server.js +125 -5
  94. package/mcp/tools/permissionSync.js +321 -0
  95. package/package.json +1 -1
  96. package/files/.github/skills/sync/permission-sync/SKILL.draft.md +0 -91
@@ -1,95 +1,95 @@
1
- # 使用指南:prototype-scan(原型扫描)
2
-
3
- > **谁读这个文档**:团队成员(产品/前端/后端)
4
- > **AI 触发文件**:同目录 `SKILL.md`(无需手动阅读)
5
-
6
- ---
7
-
8
- ## 这个 Skill 解决什么问题
9
-
10
- 把零散的需求来源(HTML/PDF 原型、详设文档、口述需求、PRD),**结构化为一份《页面清单》**,作为后续 `api-contract` 和 `page-codegen` 的输入。
11
-
12
- ---
13
-
14
- ## 何时使用
15
-
16
- - 产品经理给你一组 HTML 原型,要做成页面
17
- - 拿到 Word/PDF 详设文档,需要拆解出多少个页面、各自有哪些字段
18
- - 业务方口述需求:"给我加一个客户档案的页面,能查能改能审批……"
19
- - 想梳理一个模块到底有哪些页面、各自什么类型
20
-
21
- ---
22
-
23
- ## 触发关键词
24
-
25
- `扫描原型` / `解析原型` / `页面清单` / `详设文档` / `口述需求` / `建个页面` / `写个页面`
26
-
27
- ---
28
-
29
- ## 标准对话示例
30
-
31
- ### 示例 1:HTML 原型扫描
32
-
33
- ```
34
- 你:扫描 docs/prototypes/客户管理/ 下的所有原型,生成页面清单。
35
- AI:[读取 SKILL.md → 输出 Pre-flight 声明]
36
- Pre-flight:
37
- ├─ 来源:docs/prototypes/客户管理/ 共 7 个 HTML
38
- ├─ 输出:reports/PROTOTYPE_SCAN_客户管理_20260426.md
39
- └─ 不会生成代码
40
- [扫描中... 3 分钟]
41
- 完成,请确认页面清单:
42
- 1. mmwr-customer-archive (LIST 类型) - 客户档案查询
43
- 2. mmwr-customer-detail (DETAIL) - 客户详情
44
- ... 共 7 项
45
- ```
46
-
47
- ### 示例 2:口述需求
48
-
49
- ```
50
- 你:给生产域加个炼钢批次管理,能查能改能批量审批。
51
- AI:[输出 Pre-flight]
52
- Pre-flight:
53
- ├─ 来源:口述需求
54
- ├─ 输出:reports/PROTOTYPE_SCAN_炼钢批次_20260426.md
55
- └─ 类型推断:LIST + 弹窗编辑 + 行内审批
56
- 需向你确认 4 项:
57
- 1. 批次主键是 heatNo 还是 batchId?
58
- 2. 状态字段有哪些值(已下达/进行中/已完成/作废)?
59
- 3. 审批是单人审还是多级流转?
60
- 4. 字典码用 ms_heat_status 还是 mmsm_heat_state?
61
- ```
62
-
63
- ---
64
-
65
- ## 输出物
66
-
67
- `.github/reports/PROTOTYPE_SCAN_<模块>_<YYYYMMDD>.md` —— 包含:
68
-
69
- - 页面清单表格(页面英文名 / 中文名 / 类型 / 路由 / 字段概要)
70
- - 各页面查询条件、表格列、表单字段的初步定义
71
- - 字典/弹窗/联动的猜测,标注 🟡 待确认
72
-
73
- ---
74
-
75
- ## 常见踩坑
76
-
77
- | 现象 | 原因 | 解法 |
78
- | --------------------------- | ---------------------- | ----------------------------------------- |
79
- | AI 凭空臆造字段 | 原型缺失或描述模糊 | 让 AI 列"待确认"清单,逐项填空再继续 |
80
- | 页面命名不符合 kebab-case | AI 直接用中文/驼峰命名 | 在指令里强调 "命名遵循 standards/page.md" |
81
- | 同一字段在多页面命名不一致 | AI 没有跨页面对齐 | 要求生成清单后做一遍"字段一致性自检" |
82
- | LIST/MASTER_DETAIL 类型错判 | 原型隐含主从结构未识别 | 显式告知"这是主从表"或贴出原型图 |
83
-
84
- ---
85
-
86
- ## FAQ
87
-
88
- **Q:扫描出来的页面清单可以直接用 `page-codegen` 生成代码吗?**
89
- A:建议先走 `api-contract` 生成 api.md,让后端确认接口字段,再 codegen。否则 data.ts 里的字段名可能和后端对不上。
90
-
91
- **Q:能不能跳过这个 Skill 直接让 AI 写代码?**
92
- A:可以但不推荐。Skill 的价值是**约束输出物落到统一文档**,便于团队对账。直接生成代码容易遗漏需求要点、字段命名不规范。
93
-
94
- **Q:扫描结果不对怎么办?**
95
- A:reports/ 下的 md 是 markdown,可以直接编辑。修改后再让 AI "基于 reports/PROTOTYPE_SCAN_xxx.md 进行 api-contract"。
1
+ # 使用指南:prototype-scan(原型扫描)
2
+
3
+ > **谁读这个文档**:团队成员(产品/前端/后端)
4
+ > **AI 触发文件**:同目录 `SKILL.md`(无需手动阅读)
5
+
6
+ ---
7
+
8
+ ## 这个 Skill 解决什么问题
9
+
10
+ 把零散的需求来源(HTML/PDF 原型、详设文档、口述需求、PRD),**结构化为一份《页面清单》**,作为后续 `api-contract` 和 `page-codegen` 的输入。
11
+
12
+ ---
13
+
14
+ ## 何时使用
15
+
16
+ - 产品经理给你一组 HTML 原型,要做成页面
17
+ - 拿到 Word/PDF 详设文档,需要拆解出多少个页面、各自有哪些字段
18
+ - 业务方口述需求:"给我加一个客户档案的页面,能查能改能审批……"
19
+ - 想梳理一个模块到底有哪些页面、各自什么类型
20
+
21
+ ---
22
+
23
+ ## 触发关键词
24
+
25
+ `扫描原型` / `解析原型` / `页面清单` / `详设文档` / `口述需求` / `建个页面` / `写个页面`
26
+
27
+ ---
28
+
29
+ ## 标准对话示例
30
+
31
+ ### 示例 1:HTML 原型扫描
32
+
33
+ ```
34
+ 你:扫描 docs/prototypes/客户管理/ 下的所有原型,生成页面清单。
35
+ AI:[读取 SKILL.md → 输出 Pre-flight 声明]
36
+ Pre-flight:
37
+ ├─ 来源:docs/prototypes/客户管理/ 共 7 个 HTML
38
+ ├─ 输出:reports/PROTOTYPE_SCAN_客户管理_20260426.md
39
+ └─ 不会生成代码
40
+ [扫描中... 3 分钟]
41
+ 完成,请确认页面清单:
42
+ 1. mmwr-customer-archive (LIST 类型) - 客户档案查询
43
+ 2. mmwr-customer-detail (DETAIL) - 客户详情
44
+ ... 共 7 项
45
+ ```
46
+
47
+ ### 示例 2:口述需求
48
+
49
+ ```
50
+ 你:给生产域加个炼钢批次管理,能查能改能批量审批。
51
+ AI:[输出 Pre-flight]
52
+ Pre-flight:
53
+ ├─ 来源:口述需求
54
+ ├─ 输出:reports/PROTOTYPE_SCAN_炼钢批次_20260426.md
55
+ └─ 类型推断:LIST + 弹窗编辑 + 行内审批
56
+ 需向你确认 4 项:
57
+ 1. 批次主键是 heatNo 还是 batchId?
58
+ 2. 状态字段有哪些值(已下达/进行中/已完成/作废)?
59
+ 3. 审批是单人审还是多级流转?
60
+ 4. 字典码用 ms_heat_status 还是 mmsm_heat_state?
61
+ ```
62
+
63
+ ---
64
+
65
+ ## 输出物
66
+
67
+ `.github/reports/PROTOTYPE_SCAN_<模块>_<YYYYMMDD>.md` —— 包含:
68
+
69
+ - 页面清单表格(页面英文名 / 中文名 / 类型 / 路由 / 字段概要)
70
+ - 各页面查询条件、表格列、表单字段的初步定义
71
+ - 字典/弹窗/联动的猜测,标注 🟡 待确认
72
+
73
+ ---
74
+
75
+ ## 常见踩坑
76
+
77
+ | 现象 | 原因 | 解法 |
78
+ | --------------------------- | ---------------------- | ----------------------------------------- |
79
+ | AI 凭空臆造字段 | 原型缺失或描述模糊 | 让 AI 列"待确认"清单,逐项填空再继续 |
80
+ | 页面命名不符合 kebab-case | AI 直接用中文/驼峰命名 | 在指令里强调 "命名遵循 standards/page.md" |
81
+ | 同一字段在多页面命名不一致 | AI 没有跨页面对齐 | 要求生成清单后做一遍"字段一致性自检" |
82
+ | LIST/MASTER_DETAIL 类型错判 | 原型隐含主从结构未识别 | 显式告知"这是主从表"或贴出原型图 |
83
+
84
+ ---
85
+
86
+ ## FAQ
87
+
88
+ **Q:扫描出来的页面清单可以直接用 `page-codegen` 生成代码吗?**
89
+ A:建议先走 `api-contract` 生成 api.md,让后端确认接口字段,再 codegen。否则 data.ts 里的字段名可能和后端对不上。
90
+
91
+ **Q:能不能跳过这个 Skill 直接让 AI 写代码?**
92
+ A:可以但不推荐。Skill 的价值是**约束输出物落到统一文档**,便于团队对账。直接生成代码容易遗漏需求要点、字段命名不规范。
93
+
94
+ **Q:扫描结果不对怎么办?**
95
+ A:reports/ 下的 md 是 markdown,可以直接编辑。修改后再让 AI "基于 reports/PROTOTYPE_SCAN_xxx.md 进行 api-contract"。
@@ -1,139 +1,139 @@
1
- ---
2
- name: template-extract
3
- description: "Use when: extracting domain-specific page templates from existing project pages and contributing them to skills/core/page-codegen/templates/domains/. Triggers on: 提取模板, 抽取模板, 沉淀模板, 模板贡献, extract template, contribute template."
4
- ---
5
-
6
- # Skill: 模板提取(template-extract)
7
-
8
- 从现有项目的成熟页面提取领域模板,沉淀到 `.github/skills/core/page-codegen/templates/domains/`,扩充团队 AI 模板库。
9
-
10
- > **核心理念**:模板贡献门槛极低 — 开发者只需说出一个页面目录路径,AI 完成 90% 的分析和写作。
11
-
12
- ---
13
-
14
- ## 触发词
15
-
16
- `提取模板` / `抽取模板` / `沉淀模板` / `模板贡献` / `extract template`
17
-
18
- ---
19
-
20
- ## Pre-flight 声明
21
-
22
- ```
23
- 🚀 已触发技能 template-extract/SKILL.md → 从现有页面提取领域模板
24
- ✅ 已读取 template-extract/SKILL.md → 提取流程主规则
25
- ✅ 已读取 templates/_index.md → 已有模板清单(避免重复)
26
- ✅ 已读取 standards/02-code-structure.md → 模板必须遵循的代码结构
27
- ✅ 已读取 standards/13-platform-components.md → 模板必须遵循的平台组件合规
28
- ```
29
-
30
- ---
31
-
32
- ## 执行流程
33
-
34
- ### 步骤 1:开发者指定目标
35
-
36
- 开发者提供一个目录路径:
37
-
38
- ```
39
- "提取模板,目标页:src/views/produce/sjgl/mmwr-rolling-management/"
40
- ```
41
-
42
- ### 步骤 2:AI 读取目标页 4 文件
43
-
44
- ```
45
- ✅ 读取 {target}/index.vue
46
- ✅ 读取 {target}/data.ts
47
- ✅ 读取 {target}/index.scss
48
- ✅ 读取 {target}/api.md(如存在)
49
- ```
50
-
51
- ### 步骤 3:AI 自动识别交互模式
52
-
53
- 输出识别结论:
54
-
55
- ```
56
- 🔍 识别结果
57
- - 页面包含:{2 个 BaseTable / 1 个内联 BaseForm / 4 个操作按钮}
58
- - 交互模式:{双清单联动 + 内联表单 + 条件按钮}
59
- - 与已有 TPL 对比:
60
- ✅ 接近 TPL-OPERATION-STATION(domains/produce/)
61
- ❌ 不符合 TPL-LIST / TPL-MASTER-DETAIL / TPL-RECORD-FORM
62
- - 结论建议:本页面**已有相似模板**,可能是 TPL-OPERATION-STATION 的变体,
63
- 建议考虑增强现有模板而非新建。
64
- (或:本页面是**独立新模式**,建议提取为 TPL-XXX)
65
- ```
66
-
67
- ### 步骤 4:AI 问答确认(最多 4 个问题)
68
-
69
- ```
70
- ❓ 问题 1:领域归属?
71
- 选项:A. produce(生产) B. sale(销售) C. 其他(请说明)
72
-
73
- ❓ 问题 2:建议的模板命名?
74
- AI 建议:TPL-{XXX-XXX}
75
- 如不满意请提出替代
76
-
77
- ❓ 问题 3:是否有需要脱敏/抽象的业务特定内容?
78
- - 业务字段名(建议保留作为占位符 [字段名])
79
- - 业务接口路径(建议改为 [服务缩写]/[资源名]/{action} 占位)
80
- - 硬编码字典码(建议改为占位符或注释说明)
81
-
82
- ❓ 问题 4:是否合并到已有模板?
83
- 仅当步骤 3 识别为「相似模板」时才问。
84
- 选项:A. 增强现有模板(追加章节) B. 提取为独立新模板
85
- ```
86
-
87
- ### 步骤 5:生成 TPL 文件
88
-
89
- 按 `templates/domains/_CONTRIBUTING.md` 格式生成,必须包含:
90
-
91
- - 适用场景说明
92
- - 识别规则(5 条以内)
93
- - 完整 index.vue / data.ts / index.scss 代码(脱敏后)
94
- - 注意事项
95
-
96
- ### 步骤 6:写入并注册
97
-
98
- ```
99
- ✅ 写入 templates/domains/{domain}/TPL-{NAME}.md
100
- ✅ 更新 templates/_index.md(追加注册条目)
101
- ```
102
-
103
- ### 步骤 7:输出后续步骤
104
-
105
- ```
106
- 📦 模板提取完成
107
- ────────────────────────────────────────────────
108
- ✅ 已生成 templates/domains/{domain}/TPL-{NAME}.md
109
- ✅ 已更新 templates/_index.md 注册表
110
- ────────────────────────────────────────────────
111
- 📌 后续步骤:
112
- 1. 人工 review 模板内容(脱敏完整性 / 占位符正确性)
113
- 2. 提交:git cz → feat(template): 新增领域模板 TPL-{NAME}
114
- 3. PR 评审 → CHENY 合入
115
- ────────────────────────────────────────────────
116
- ```
117
-
118
- ---
119
-
120
- ## 提取质量校验(AI 自检)
121
-
122
- 生成 TPL 文件后,AI 必须自检:
123
-
124
- - [ ] 业务字段名已替换为 `[字段名]` / `[资源名]` 占位符
125
- - [ ] API 路径已替换为 `/[服务缩写]/[资源名]/{action}` 格式
126
- - [ ] 没有遗留具体的字典码 / 状态值(已注释说明用途)
127
- - [ ] 代码符合 standards/02、13(结构 + 组件合规)
128
- - [ ] 包含识别规则(让 AI 未来能匹配此模板)
129
-
130
- ---
131
-
132
- ## 边界情况
133
-
134
- | 情况 | 处理 |
135
- | -------------------------------- | ------------------------------------------------------------ |
136
- | 目标页代码不符合 standards/ 规范 | 拒绝提取,输出审计建议("目标页本身不合规,建议先整改") |
137
- | 目标页过于业务特化,无法抽象 | 反问开发者:"此页面业务耦合较深,提取后通用性差,是否继续?" |
138
- | 已有 TPL 高度重合 | 优先建议增强现有模板,不建议新建 |
139
- | 开发者指定的命名不符合规范 | 给出建议命名,请开发者确认 |
1
+ ---
2
+ name: template-extract
3
+ description: "Use when: extracting domain-specific page templates from existing project pages and contributing them to skills/core/page-codegen/templates/domains/. Triggers on: 提取模板, 抽取模板, 沉淀模板, 模板贡献, extract template, contribute template."
4
+ ---
5
+
6
+ # Skill: 模板提取(template-extract)
7
+
8
+ 从现有项目的成熟页面提取领域模板,沉淀到 `.github/skills/core/page-codegen/templates/domains/`,扩充团队 AI 模板库。
9
+
10
+ > **核心理念**:模板贡献门槛极低 — 开发者只需说出一个页面目录路径,AI 完成 90% 的分析和写作。
11
+
12
+ ---
13
+
14
+ ## 触发词
15
+
16
+ `提取模板` / `抽取模板` / `沉淀模板` / `模板贡献` / `extract template`
17
+
18
+ ---
19
+
20
+ ## Pre-flight 声明
21
+
22
+ ```
23
+ 🚀 已触发技能 template-extract/SKILL.md → 从现有页面提取领域模板
24
+ ✅ 已读取 template-extract/SKILL.md → 提取流程主规则
25
+ ✅ 已读取 templates/_index.md → 已有模板清单(避免重复)
26
+ ✅ 已读取 standards/02-code-structure.md → 模板必须遵循的代码结构
27
+ ✅ 已读取 standards/13-platform-components.md → 模板必须遵循的平台组件合规
28
+ ```
29
+
30
+ ---
31
+
32
+ ## 执行流程
33
+
34
+ ### 步骤 1:开发者指定目标
35
+
36
+ 开发者提供一个目录路径:
37
+
38
+ ```
39
+ "提取模板,目标页:src/views/produce/sjgl/mmwr-rolling-management/"
40
+ ```
41
+
42
+ ### 步骤 2:AI 读取目标页 4 文件
43
+
44
+ ```
45
+ ✅ 读取 {target}/index.vue
46
+ ✅ 读取 {target}/data.ts
47
+ ✅ 读取 {target}/index.scss
48
+ ✅ 读取 {target}/api.md(如存在)
49
+ ```
50
+
51
+ ### 步骤 3:AI 自动识别交互模式
52
+
53
+ 输出识别结论:
54
+
55
+ ```
56
+ 🔍 识别结果
57
+ - 页面包含:{2 个 BaseTable / 1 个内联 BaseForm / 4 个操作按钮}
58
+ - 交互模式:{双清单联动 + 内联表单 + 条件按钮}
59
+ - 与已有 TPL 对比:
60
+ ✅ 接近 TPL-OPERATION-STATION(domains/produce/)
61
+ ❌ 不符合 TPL-LIST / TPL-MASTER-DETAIL / TPL-RECORD-FORM
62
+ - 结论建议:本页面**已有相似模板**,可能是 TPL-OPERATION-STATION 的变体,
63
+ 建议考虑增强现有模板而非新建。
64
+ (或:本页面是**独立新模式**,建议提取为 TPL-XXX)
65
+ ```
66
+
67
+ ### 步骤 4:AI 问答确认(最多 4 个问题)
68
+
69
+ ```
70
+ ❓ 问题 1:领域归属?
71
+ 选项:A. produce(生产) B. sale(销售) C. 其他(请说明)
72
+
73
+ ❓ 问题 2:建议的模板命名?
74
+ AI 建议:TPL-{XXX-XXX}
75
+ 如不满意请提出替代
76
+
77
+ ❓ 问题 3:是否有需要脱敏/抽象的业务特定内容?
78
+ - 业务字段名(建议保留作为占位符 [字段名])
79
+ - 业务接口路径(建议改为 [服务缩写]/[资源名]/{action} 占位)
80
+ - 硬编码字典码(建议改为占位符或注释说明)
81
+
82
+ ❓ 问题 4:是否合并到已有模板?
83
+ 仅当步骤 3 识别为「相似模板」时才问。
84
+ 选项:A. 增强现有模板(追加章节) B. 提取为独立新模板
85
+ ```
86
+
87
+ ### 步骤 5:生成 TPL 文件
88
+
89
+ 按 `templates/domains/_CONTRIBUTING.md` 格式生成,必须包含:
90
+
91
+ - 适用场景说明
92
+ - 识别规则(5 条以内)
93
+ - 完整 index.vue / data.ts / index.scss 代码(脱敏后)
94
+ - 注意事项
95
+
96
+ ### 步骤 6:写入并注册
97
+
98
+ ```
99
+ ✅ 写入 templates/domains/{domain}/TPL-{NAME}.md
100
+ ✅ 更新 templates/_index.md(追加注册条目)
101
+ ```
102
+
103
+ ### 步骤 7:输出后续步骤
104
+
105
+ ```
106
+ 📦 模板提取完成
107
+ ────────────────────────────────────────────────
108
+ ✅ 已生成 templates/domains/{domain}/TPL-{NAME}.md
109
+ ✅ 已更新 templates/_index.md 注册表
110
+ ────────────────────────────────────────────────
111
+ 📌 后续步骤:
112
+ 1. 人工 review 模板内容(脱敏完整性 / 占位符正确性)
113
+ 2. 提交:git cz → feat(template): 新增领域模板 TPL-{NAME}
114
+ 3. PR 评审 → CHENY 合入
115
+ ────────────────────────────────────────────────
116
+ ```
117
+
118
+ ---
119
+
120
+ ## 提取质量校验(AI 自检)
121
+
122
+ 生成 TPL 文件后,AI 必须自检:
123
+
124
+ - [ ] 业务字段名已替换为 `[字段名]` / `[资源名]` 占位符
125
+ - [ ] API 路径已替换为 `/[服务缩写]/[资源名]/{action}` 格式
126
+ - [ ] 没有遗留具体的字典码 / 状态值(已注释说明用途)
127
+ - [ ] 代码符合 standards/02、13(结构 + 组件合规)
128
+ - [ ] 包含识别规则(让 AI 未来能匹配此模板)
129
+
130
+ ---
131
+
132
+ ## 边界情况
133
+
134
+ | 情况 | 处理 |
135
+ | -------------------------------- | ------------------------------------------------------------ |
136
+ | 目标页代码不符合 standards/ 规范 | 拒绝提取,输出审计建议("目标页本身不合规,建议先整改") |
137
+ | 目标页过于业务特化,无法抽象 | 反问开发者:"此页面业务耦合较深,提取后通用性差,是否继续?" |
138
+ | 已有 TPL 高度重合 | 优先建议增强现有模板,不建议新建 |
139
+ | 开发者指定的命名不符合规范 | 给出建议命名,请开发者确认 |
@@ -1,93 +1,93 @@
1
- # 使用指南:template-extract(模板提取)
2
-
3
- > **谁读这个文档**:团队成员(主要前端,模板贡献者)
4
- > **AI 触发文件**:同目录 `SKILL.md`
5
-
6
- ---
7
-
8
- ## 这个 Skill 解决什么问题
9
-
10
- 把项目里**已经写得很好的页面**抽取成可复用模板,沉淀到 `skills/core/page-codegen/templates/domains/` 下。下次 codegen 时同类页面优先复用。
11
-
12
- ---
13
-
14
- ## 何时使用
15
-
16
- - 写完一个"代表性强、规范度高"的页面,想沉淀给团队复用
17
- - 同模块内重复结构出现 ≥ 3 次,应抽模板
18
- - 季度/版本末整理沉淀产出
19
-
20
- ---
21
-
22
- ## 触发关键词
23
-
24
- `提取模板` / `抽取模板` / `沉淀模板` / `模板贡献`
25
-
26
- ---
27
-
28
- ## 标准对话示例
29
-
30
- ```
31
- 你:把 src/views/produce/aiflow/mmwr-customer-archive/ 这个页面抽取成模板
32
- AI:[Pre-flight]
33
- 源:mmwr-customer-archive (LIST 类型,含审批工作流)
34
- 建议落位:templates/domains/produce/customer/list-with-approval/
35
- 将抽取:
36
- - data.ts.tpl (EColumn 字段保留 + 字段名占位化)
37
- - index.vue.tpl
38
- - index.scss.tpl
39
- - meta.json (记录适用场景、字段规则、字典)
40
- 占位约定:
41
- - 资源名 → {{resourceName}}
42
- - 服务缩写 → {{serviceShort}}
43
- - 字典 logicValue → {{statusDict}}
44
- 通过 convention-audit 后才落盘。
45
- ```
46
-
47
- ---
48
-
49
- ## 输出物
50
-
51
- ```
52
- templates/domains/<域>/<场景>/
53
- ├── data.ts.tpl
54
- ├── index.vue.tpl
55
- ├── index.scss.tpl
56
- ├── meta.json 适用条件 / 占位字段说明 / 字典依赖
57
- └── README.md 场景说明 + 何时复用 + 已知限制
58
- ```
59
-
60
- ---
61
-
62
- ## 模板分级
63
-
64
- | 层级 | 路径 | 复用范围 |
65
- | ------------ | -------------------------------- | ----------------------------------- |
66
- | `universal/` | `templates/universal/<类型>/` | 跨业务通用(LIST/DETAIL/TREE_LIST) |
67
- | `domains/` | `templates/domains/<域>/<场景>/` | 同域同场景 |
68
-
69
- 抽取的模板**默认进 domains/**。如果发现真的全员通用,可由维护者升级到 universal/。
70
-
71
- ---
72
-
73
- ## 常见踩坑
74
-
75
- | 现象 | 原因 | 解法 |
76
- | ---------------------------------- | -------------------- | --------------------------------------------------------------- |
77
- | 抽出来的模板里夹着业务字段 | 占位化不彻底 | meta.json 里**穷举所有占位**,AI 才会替换干净 |
78
- | 模板下次 codegen 命中率低 | 命名/scope 太具体 | 起更通用的场景名(list-with-approval 比 mmwr-customer-list 好) |
79
- | 字典硬编码进模板 | 没用 logicValue 占位 | 改用 `{{statusDict}}` 占位 + meta 里描述 |
80
- | 不同业务字段长度不一时模板生成报错 | 列宽硬编码 | 模板里只给推荐值,meta 标"可调" |
81
-
82
- ---
83
-
84
- ## FAQ
85
-
86
- **Q:贡献的模板要走 review 吗?**
87
- A:建议至少同事 review 一下 meta.json + 是否真有复用价值。直接落盘容易污染模板库。
88
-
89
- **Q:模板出问题谁负责?**
90
- A:贡献者维护一段时间,稳定后由 kit 维护者接管。模板里要写 author + lastUpdate。
91
-
92
- **Q:能否私有领域只抽到本仓库不发布?**
93
- A:可以。`templates/domains/` 在 `.github/skills/` 下,跟着业务项目走。kit 包不强制收集。
1
+ # 使用指南:template-extract(模板提取)
2
+
3
+ > **谁读这个文档**:团队成员(主要前端,模板贡献者)
4
+ > **AI 触发文件**:同目录 `SKILL.md`
5
+
6
+ ---
7
+
8
+ ## 这个 Skill 解决什么问题
9
+
10
+ 把项目里**已经写得很好的页面**抽取成可复用模板,沉淀到 `skills/core/page-codegen/templates/domains/` 下。下次 codegen 时同类页面优先复用。
11
+
12
+ ---
13
+
14
+ ## 何时使用
15
+
16
+ - 写完一个"代表性强、规范度高"的页面,想沉淀给团队复用
17
+ - 同模块内重复结构出现 ≥ 3 次,应抽模板
18
+ - 季度/版本末整理沉淀产出
19
+
20
+ ---
21
+
22
+ ## 触发关键词
23
+
24
+ `提取模板` / `抽取模板` / `沉淀模板` / `模板贡献`
25
+
26
+ ---
27
+
28
+ ## 标准对话示例
29
+
30
+ ```
31
+ 你:把 src/views/produce/aiflow/mmwr-customer-archive/ 这个页面抽取成模板
32
+ AI:[Pre-flight]
33
+ 源:mmwr-customer-archive (LIST 类型,含审批工作流)
34
+ 建议落位:templates/domains/produce/customer/list-with-approval/
35
+ 将抽取:
36
+ - data.ts.tpl (EColumn 字段保留 + 字段名占位化)
37
+ - index.vue.tpl
38
+ - index.scss.tpl
39
+ - meta.json (记录适用场景、字段规则、字典)
40
+ 占位约定:
41
+ - 资源名 → {{resourceName}}
42
+ - 服务缩写 → {{serviceShort}}
43
+ - 字典 logicValue → {{statusDict}}
44
+ 通过 convention-audit 后才落盘。
45
+ ```
46
+
47
+ ---
48
+
49
+ ## 输出物
50
+
51
+ ```
52
+ templates/domains/<域>/<场景>/
53
+ ├── data.ts.tpl
54
+ ├── index.vue.tpl
55
+ ├── index.scss.tpl
56
+ ├── meta.json 适用条件 / 占位字段说明 / 字典依赖
57
+ └── README.md 场景说明 + 何时复用 + 已知限制
58
+ ```
59
+
60
+ ---
61
+
62
+ ## 模板分级
63
+
64
+ | 层级 | 路径 | 复用范围 |
65
+ | ------------ | -------------------------------- | ----------------------------------- |
66
+ | `universal/` | `templates/universal/<类型>/` | 跨业务通用(LIST/DETAIL/TREE_LIST) |
67
+ | `domains/` | `templates/domains/<域>/<场景>/` | 同域同场景 |
68
+
69
+ 抽取的模板**默认进 domains/**。如果发现真的全员通用,可由维护者升级到 universal/。
70
+
71
+ ---
72
+
73
+ ## 常见踩坑
74
+
75
+ | 现象 | 原因 | 解法 |
76
+ | ---------------------------------- | -------------------- | --------------------------------------------------------------- |
77
+ | 抽出来的模板里夹着业务字段 | 占位化不彻底 | meta.json 里**穷举所有占位**,AI 才会替换干净 |
78
+ | 模板下次 codegen 命中率低 | 命名/scope 太具体 | 起更通用的场景名(list-with-approval 比 mmwr-customer-list 好) |
79
+ | 字典硬编码进模板 | 没用 logicValue 占位 | 改用 `{{statusDict}}` 占位 + meta 里描述 |
80
+ | 不同业务字段长度不一时模板生成报错 | 列宽硬编码 | 模板里只给推荐值,meta 标"可调" |
81
+
82
+ ---
83
+
84
+ ## FAQ
85
+
86
+ **Q:贡献的模板要走 review 吗?**
87
+ A:建议至少同事 review 一下 meta.json + 是否真有复用价值。直接落盘容易污染模板库。
88
+
89
+ **Q:模板出问题谁负责?**
90
+ A:贡献者维护一段时间,稳定后由 kit 维护者接管。模板里要写 author + lastUpdate。
91
+
92
+ **Q:能否私有领域只抽到本仓库不发布?**
93
+ A:可以。`templates/domains/` 在 `.github/skills/` 下,跟着业务项目走。kit 包不强制收集。