@agile-team/wl-skills-ui 1.6.2
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/CHANGELOG.md +207 -0
- package/README.md +623 -0
- package/SKILL.md +632 -0
- package/bin/wl-ui.js +794 -0
- package/design/spec/color.md +41 -0
- package/design/spec/spacing.md +28 -0
- package/design/spec/typography.md +29 -0
- package/design/tokens/base.css +144 -0
- package/design/tokens/index.css +8 -0
- package/dist/ag-grid-override.scss +1 -0
- package/dist/element.scss +1 -0
- package/dist/index.scss +1 -0
- package/dist/portal.scss +1 -0
- package/dist/style-override.scss +1 -0
- package/dist/tokens.css +144 -0
- package/es/chunk-GBB7LDKQ.js +261 -0
- package/es/chunk-MDI2SCUP.js +281 -0
- package/es/chunk-QDTNMM7W.js +286 -0
- package/es/chunk-YLNAFAWE.js +233 -0
- package/es/common-preset.d.ts +38 -0
- package/es/common-preset.js +157 -0
- package/es/index.d.ts +32 -0
- package/es/index.js +1 -0
- package/es/presets/security.d.ts +16 -0
- package/es/presets/security.js +99 -0
- package/es/renderers-BFRSp2BH.d.ts +51 -0
- package/es/renderers-DMZbi_Gs.d.ts +51 -0
- package/es/renderers-DWhUlI2y.d.ts +47 -0
- package/es/types-04qLKHMt.d.ts +62 -0
- package/es/types-BrCPjAH6.d.ts +62 -0
- package/es/types-QZ1gy9KX.d.ts +63 -0
- package/examples/migration-operations-to-renderOps.md +107 -0
- package/examples/wk-exempt.example.json +30 -0
- package/mcp/server.js +394 -0
- package/package.json +130 -0
- package/reference/SelectPopupCom.vue +634 -0
- package/reference/ag-cell-renders.ts +644 -0
- package/reference/define-columns.ts +185 -0
- package/reference/jhlc.d.ts +1 -0
- package/scanner/coverage.mjs +287 -0
- package/scanner/exempt.mjs +127 -0
- package/scanner/fix.mjs +216 -0
- package/scanner/index.mjs +403 -0
- package/scanner/integration.mjs +155 -0
- package/scanner/report.mjs +459 -0
- package/scanner/rules/_shared.mjs +134 -0
- package/scanner/rules/button.mjs +97 -0
- package/scanner/rules/color.mjs +118 -0
- package/scanner/rules/componentFamily.mjs +184 -0
- package/scanner/rules/dialog.mjs +42 -0
- package/scanner/rules/form.mjs +86 -0
- package/scanner/rules/index.mjs +58 -0
- package/scanner/rules/table.mjs +170 -0
- package/scanner/rules/tag.mjs +245 -0
- package/scanner/snapshot.mjs +198 -0
- package/skills/_flows/full-audit.md +65 -0
- package/skills/_flows/legacy-skin-align.md +71 -0
- package/skills/_flows/new-project-init.md +80 -0
- package/skills/_flows/progressive-migrate.md +49 -0
- package/skills/_meta/_compat/README.md +47 -0
- package/skills/_meta/_compat/editors.json +76 -0
- package/skills/_meta/_compat/headers/agents.txt +7 -0
- package/skills/_meta/_compat/headers/claude-code.txt +7 -0
- package/skills/_meta/_compat/headers/cline.txt +7 -0
- package/skills/_meta/_compat/headers/cursor-mdc.txt +5 -0
- package/skills/_meta/_compat/headers/github-copilot.txt +5 -0
- package/skills/_meta/_compat/headers/kiro.txt +4 -0
- package/skills/_meta/_compat/headers/qoder.txt +4 -0
- package/skills/_meta/_compat/headers/trae.txt +3 -0
- package/skills/_meta/_compat/headers/windsurf.txt +5 -0
- package/skills/_meta/_detection.md +81 -0
- package/skills/_meta/_registry.md +96 -0
- package/skills/element/component-family/SKILL.md +71 -0
- package/skills/element/el-dialog/SKILL.md +124 -0
- package/skills/element/el-form/SKILL.md +84 -0
- package/skills/element/el-table/SKILL.md +86 -0
- package/skills/element/el-tag/SKILL.md +127 -0
- package/skills/layouts/detail-page/SKILL.md +99 -0
- package/skills/layouts/form-dialog/SKILL.md +128 -0
- package/skills/layouts/list-page/SKILL.md +111 -0
- package/skills/layouts/tree-list/SKILL.md +108 -0
- package/skills/ops/audit/SKILL.md +109 -0
- package/skills/ops/fix/SKILL.md +52 -0
- package/skills/ops/fix/USAGE.md +24 -0
- package/skills/ops/migrate/SKILL.md +157 -0
- package/skills/ops/scan/SKILL.md +71 -0
- package/skills/ops/scan/USAGE.md +16 -0
- package/skills/runtime/design-tokens/SKILL.md +88 -0
- package/skills/runtime/design-tokens/USAGE.md +19 -0
- package/skills/runtime/migration/SKILL.md +106 -0
- package/skills/runtime/migration/USAGE.md +34 -0
- package/skills/runtime/style-align/SKILL.md +124 -0
- package/skills/runtime/style-align/USAGE.md +52 -0
- package/skills/vendors/ag-grid/SKILL.md +94 -0
- package/skills/vendors/base-table/SKILL.md +57 -0
- package/skills/vendors/c-components/SKILL.md +36 -0
- package/skills/vendors/custom-wrappers/SKILL.md +45 -0
- package/skills/vendors/jh-components/SKILL.md +42 -0
- package/skills/vendors/unknown-wrapper/SKILL.md +44 -0
- package/standards/engineering/01-import-order.md +46 -0
- package/standards/engineering/02-naming.md +54 -0
- package/standards/engineering/03-scss-structure.md +59 -0
- package/standards/ui/01-table.md +111 -0
- package/standards/ui/02-button.md +83 -0
- package/standards/ui/03-form.md +118 -0
- package/standards/ui/04-tag-status.md +110 -0
- package/standards/ui/05-dialog-pagination.md +118 -0
- package/styles/element/_card.scss +26 -0
- package/styles/element/_descriptions.scss +22 -0
- package/styles/element/_dialog.scss +43 -0
- package/styles/element/_drawer.scss +22 -0
- package/styles/element/_feedback.scss +52 -0
- package/styles/element/_form.scss +22 -0
- package/styles/element/_navigation.scss +36 -0
- package/styles/element/_overlay.scss +32 -0
- package/styles/element/_pagination.scss +16 -0
- package/styles/element/_steps.scss +32 -0
- package/styles/element/_table.scss +13 -0
- package/styles/element/_tabs.scss +40 -0
- package/styles/element/_tree.scss +27 -0
- package/styles/element/_upload.scss +34 -0
- package/styles/element/index.scss +17 -0
- package/styles/index.scss +21 -0
- package/styles/layouts/_detail-page.scss +27 -0
- package/styles/layouts/_form-dialog.scss +19 -0
- package/styles/layouts/_list-page.scss +47 -0
- package/styles/layouts/_tree-list.scss +33 -0
- package/styles/layouts/index.scss +6 -0
- package/styles/presets/element-only.scss +6 -0
- package/styles/presets/full.scss +12 -0
- package/styles/presets/security.scss +37 -0
- package/styles/presets/skin.scss +14 -0
- package/styles/presets/tokens-only.scss +7 -0
- package/styles/tokens/index.scss +79 -0
- package/styles/vendors/_ag-grid.scss +273 -0
- package/styles/vendors/_base-components.scss +480 -0
- package/styles/vendors/_base-query-toolbar.scss +253 -0
- package/styles/vendors/_base-table.scss +41 -0
- package/styles/vendors/_c-components.scss +34 -0
- package/styles/vendors/_custom-wrappers.scss +30 -0
- package/styles/vendors/_jh-drag-col.scss +63 -0
- package/styles/vendors/_jh-pagination.scss +81 -0
- package/styles/vendors/_jh-tree.scss +196 -0
- package/styles/vendors/_portal.scss +114 -0
- package/styles/vendors/index.scss +17 -0
- package/templates/ag-grid-page/TPL-AG-GRID.md +76 -0
- package/templates/form-dialog/TPL-FORM-DIALOG.md +165 -0
- package/templates/list-page/TPL-LIST.md +139 -0
- package/templates/tree-list/TPL-TREE-LIST.md +176 -0
- package/templates/ui-optimization-report/TPL-UI-OPTIM-REPORT.md +343 -0
package/README.md
ADDED
|
@@ -0,0 +1,623 @@
|
|
|
1
|
+
# @agile-team/wl-skills-ui
|
|
2
|
+
|
|
3
|
+
> **企业级 UI 风格对齐框架** — 让 Vue + Element Plus 业务系统获得一致的视觉、可被 AI 精确识别和修复的设计规范,以及可演进的工程能力。
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@agile-team/wl-skills-ui)
|
|
6
|
+
[]()
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 这是什么?
|
|
11
|
+
|
|
12
|
+
一套 "**设计令牌 + 控件对齐 + 封装组件化妆 + 页面骨架 + 业务渲染 + 自动化扫描修复 + AI Skills**" 的全栈式风格框架。
|
|
13
|
+
|
|
14
|
+
它解决的问题:
|
|
15
|
+
|
|
16
|
+
> 团队有多个 Vue 项目,新老共存。新项目可以从零按规范搭建;老项目用了大量内部封装组件(`Base*` / `jh-*` / `C_*` / `c_*` / 还有野路子自封装),改源码代价大。如何在 **不改业务代码** 的前提下,做到全项目视觉一致;同时给新项目和拿到源码后的老项目,提供更精简、更高效的演进路径?
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 架构总览
|
|
21
|
+
|
|
22
|
+
### 五层模型 (L0 → L4)
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
26
|
+
│ L0 Design Tokens 颜色 / 间距 / 圆角 / 字号 / 阴影 │
|
|
27
|
+
│ → 所有上层依赖的"宪法" │
|
|
28
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
29
|
+
│ L1 Element Plus 原子层 el-button / el-input / el-table ... │
|
|
30
|
+
│ → 一控件一规则、一控件一 SCSS、一控件一 SKILL │
|
|
31
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
32
|
+
│ L2 Vendors 封装组件层 ⭐ Base* / jh-* / C_*/c_* / custom / AG │
|
|
33
|
+
│ → 老项目化妆主战场(无源码也能覆盖) │
|
|
34
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
35
|
+
│ L3 Page Layouts 骨架层 list-page / tree-list / form-dialog │
|
|
36
|
+
│ → 团队约定的页面 DNA │
|
|
37
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
38
|
+
│ L4 Runtime 业务渲染层 defineColumns / renderOps / preset │
|
|
39
|
+
│ → 让业务代码"消失"(仅有源码场景) │
|
|
40
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 两种运行模式
|
|
44
|
+
|
|
45
|
+
| 模式 | 适用 | 包含层 | 接入方式 |
|
|
46
|
+
| ------------------ | ------------------------ | -------------- | ------------------------------------------------------ |
|
|
47
|
+
| **Native(原生)** | 新项目、能完全可控的项目 | L0+L1+L2+L3+L4 | `@use '.../styles' as *;` + `installCommonPreset()` |
|
|
48
|
+
| **Skin(化妆)** | 老项目、第三方封装无源码 | L0+L1+L2 | `@use '.../styles/presets/skin' as *;`(不动业务代码) |
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 目录结构
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
wl-skills-ui/
|
|
56
|
+
├── design/ # L0 — 设计令牌
|
|
57
|
+
│ ├── tokens/
|
|
58
|
+
│ │ ├── base.css # CSS 变量声明(:root --el-color-primary 等)
|
|
59
|
+
│ │ └── index.css
|
|
60
|
+
│ └── spec/ # 设计规范文档(color / typography / spacing)
|
|
61
|
+
│
|
|
62
|
+
├── styles/ # L1+L2+L3 SCSS 实现
|
|
63
|
+
│ ├── tokens/ # SCSS 变量映射层($wk-* → CSS 变量)
|
|
64
|
+
│ ├── element/ # L1 Element Plus 控件对齐
|
|
65
|
+
│ │ ├── _table.scss
|
|
66
|
+
│ │ ├── _form.scss
|
|
67
|
+
│ │ ├── _dialog.scss
|
|
68
|
+
│ │ ├── _pagination.scss
|
|
69
|
+
│ │ └── index.scss
|
|
70
|
+
│ ├── vendors/ # ⭐ L2 封装组件化妆层
|
|
71
|
+
│ │ ├── _base-table.scss # Base* 表格类(优先级 #1)
|
|
72
|
+
│ │ ├── _base-components.scss # Base* 通用(按钮组/徽标/Tag)
|
|
73
|
+
│ │ ├── _base-query-toolbar.scss # BaseQuery / BaseToolbar
|
|
74
|
+
│ │ ├── _jh-tree.scss # jh-tree(优先级 #2)
|
|
75
|
+
│ │ ├── _jh-pagination.scss # jh-pagination
|
|
76
|
+
│ │ ├── _jh-drag-col.scss # jh-drag-col 拖拽分割条
|
|
77
|
+
│ │ ├── _c-components.scss # C_/c_ 前缀(优先级 #3,团队未来主流)
|
|
78
|
+
│ │ ├── _custom-wrappers.scss # 野路子兜底(优先级 #4)
|
|
79
|
+
│ │ ├── _ag-grid.scss # AG Grid 主题
|
|
80
|
+
│ │ ├── _portal.scss # 弹层/popper
|
|
81
|
+
│ │ └── index.scss
|
|
82
|
+
│ ├── layouts/ # L3 页面骨架
|
|
83
|
+
│ │ ├── _list-page.scss # .list-page 列表页
|
|
84
|
+
│ │ ├── _tree-list.scss # .tree-list 左树右表
|
|
85
|
+
│ │ ├── _form-dialog.scss # .form-dialog 表单弹窗
|
|
86
|
+
│ │ ├── _detail-page.scss # .detail-page 详情页
|
|
87
|
+
│ │ └── index.scss
|
|
88
|
+
│ ├── presets/ # 组合预设(用户一行接入)
|
|
89
|
+
│ │ ├── full.scss # L0+L1+L2+L3(默认 = styles/index.scss)
|
|
90
|
+
│ │ ├── skin.scss # L0+L1+L2(老项目化妆)
|
|
91
|
+
│ │ ├── element-only.scss # L0+L1
|
|
92
|
+
│ │ └── tokens-only.scss # L0
|
|
93
|
+
│ └── index.scss # = presets/full
|
|
94
|
+
│
|
|
95
|
+
├── runtime/ # L4 业务渲染(TS)
|
|
96
|
+
│ ├── core/ # 不可变核心
|
|
97
|
+
│ │ ├── types.ts # 类型定义
|
|
98
|
+
│ │ ├── renderers.ts # renderTagNode / renderOps / renderClassifyTag ...
|
|
99
|
+
│ │ ├── registry.ts # COLUMN_AUTO_MAP + defineColumns
|
|
100
|
+
│ │ └── index.ts
|
|
101
|
+
│ ├── presets/ # 业务预设(可扩展)
|
|
102
|
+
│ │ ├── registry.ts # createPreset / installPreset
|
|
103
|
+
│ │ ├── common.ts # 通用业务预设(enable/audit/verify + 起步包)
|
|
104
|
+
│ │ └── index.ts
|
|
105
|
+
│ └── index.ts # 公共 API 入口
|
|
106
|
+
│
|
|
107
|
+
├── scanner/ # 自动化扫描 / 修复
|
|
108
|
+
│ ├── index.mjs # CLI(含 --layer/--vendor/--mode 过滤)
|
|
109
|
+
│ ├── rules/ # 规则集
|
|
110
|
+
│ │ ├── _shared.mjs # 公共工具 + inferMeta(layer/vendor)
|
|
111
|
+
│ │ ├── table.mjs # R001 R002 R003 R014
|
|
112
|
+
│ │ ├── form.mjs # R006 R007 R008
|
|
113
|
+
│ │ ├── button.mjs # R004 R005 R015
|
|
114
|
+
│ │ ├── tag.mjs # R009 R010 R012
|
|
115
|
+
│ │ ├── dialog.mjs # R011
|
|
116
|
+
│ │ ├── color.mjs # R016 R017 R018
|
|
117
|
+
│ │ └── index.mjs # 聚合 + addRules() 插件机制
|
|
118
|
+
│ ├── fix.mjs # 自动修复引擎
|
|
119
|
+
│ ├── integration.mjs # 接入完整性检查
|
|
120
|
+
│ └── report.mjs # 报告生成器
|
|
121
|
+
│
|
|
122
|
+
├── skills/ # ⭐ AI 编辑器知识库
|
|
123
|
+
│ ├── _meta/
|
|
124
|
+
│ │ ├── _registry.md # Skills 总索引
|
|
125
|
+
│ │ ├── _detection.md # vendor / layout 识别速查表
|
|
126
|
+
│ │ └── _compat/ # 多编辑器适配(Copilot/Cursor/Windsurf/Kiro/Trae/Claude/Cline/Agents/Qoder)
|
|
127
|
+
│ ├── _flows/ # ⭐ 组合流程(一句话跑全套)
|
|
128
|
+
│ │ ├── new-project-init.md # 新项目从零接入
|
|
129
|
+
│ │ ├── legacy-skin-align.md # 老项目化妆对齐 ⭐ 杀手级
|
|
130
|
+
│ │ ├── full-audit.md # 全量审计(不修)
|
|
131
|
+
│ │ └── progressive-migrate.md # 渐进迁移到 runtime
|
|
132
|
+
│ ├── element/ # L1 控件 SKILL
|
|
133
|
+
│ │ ├── el-table/SKILL.md
|
|
134
|
+
│ │ ├── el-form/SKILL.md
|
|
135
|
+
│ │ ├── el-dialog/SKILL.md
|
|
136
|
+
│ │ └── el-tag/SKILL.md
|
|
137
|
+
│ ├── vendors/ # ⭐ L2 封装识别 SKILL
|
|
138
|
+
│ │ ├── base-table/SKILL.md # 优先级 #1
|
|
139
|
+
│ │ ├── jh-components/SKILL.md # 优先级 #2
|
|
140
|
+
│ │ ├── c-components/SKILL.md # 优先级 #3
|
|
141
|
+
│ │ ├── custom-wrappers/SKILL.md # 优先级 #4 兜底
|
|
142
|
+
│ │ ├── ag-grid/SKILL.md
|
|
143
|
+
│ │ └── unknown-wrapper/SKILL.md # 兜底探测
|
|
144
|
+
│ ├── layouts/ # L3 页面骨架 SKILL(按需扩展)
|
|
145
|
+
│ ├── runtime/ # L4 业务渲染 SKILL
|
|
146
|
+
│ │ ├── style-align/SKILL.md
|
|
147
|
+
│ │ ├── design-tokens/SKILL.md
|
|
148
|
+
│ │ └── migration/SKILL.md
|
|
149
|
+
│ └── ops/ # 操作类 SKILL
|
|
150
|
+
│ ├── scan/SKILL.md
|
|
151
|
+
│ └── fix/SKILL.md
|
|
152
|
+
│
|
|
153
|
+
├── templates/ # 代码生成模板
|
|
154
|
+
│ ├── list-page/TPL-LIST.md
|
|
155
|
+
│ ├── form-dialog/TPL-FORM-DIALOG.md
|
|
156
|
+
│ ├── tree-list/TPL-TREE-LIST.md
|
|
157
|
+
│ └── ag-grid-page/TPL-AG-GRID.md
|
|
158
|
+
│
|
|
159
|
+
├── standards/ # 团队规范文档
|
|
160
|
+
│ ├── ui/ # UI 规范(01-table / 02-button / ...)
|
|
161
|
+
│ └── engineering/ # 工程规范(import 顺序 / 命名 / SCSS 结构)
|
|
162
|
+
│
|
|
163
|
+
├── bin/ # CLI
|
|
164
|
+
│ └── wl-ui.js # 统一入口(init/update/diff/clean/doctor/prompts/scan/fix/add-preset)
|
|
165
|
+
│
|
|
166
|
+
├── dist/ # 构建产物 + 兼容重定向
|
|
167
|
+
│ ├── tokens.css # = design/tokens/base.css
|
|
168
|
+
│ ├── index.scss # @use '../styles/index'
|
|
169
|
+
│ ├── element.scss # @use '../styles/element/index'
|
|
170
|
+
│ ├── ag-grid-override.scss # @use '../styles/vendors/ag-grid'
|
|
171
|
+
│ └── portal.scss # @use '../styles/vendors/portal'
|
|
172
|
+
│
|
|
173
|
+
└── es/ # tsup 构建产物(runtime ESM + d.ts)
|
|
174
|
+
├── index.js
|
|
175
|
+
├── common-preset.js
|
|
176
|
+
└── *.d.ts
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## 安装
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
pnpm add @agile-team/wl-skills-ui
|
|
185
|
+
# 或
|
|
186
|
+
npm i @agile-team/wl-skills-ui
|
|
187
|
+
yarn add @agile-team/wl-skills-ui
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
要求:Node ≥ 18,Vue ≥ 3.2,Element Plus ≥ 2.2。
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## 版本亮点
|
|
195
|
+
|
|
196
|
+
当前 v1.6.2 版本重点补齐 AI Skill 的安装、更新、清理和编辑器集成体验,并强化多组件样式覆盖精度:
|
|
197
|
+
|
|
198
|
+
- vendors 层各组件样式精细化调整:`_base-components`、`_ag-grid`、`_portal`、`_jh-tree`、`_jh-pagination`、`_jh-drag-col`、`_c-components`、`_base-query-toolbar` 全面优化
|
|
199
|
+
- design tokens(`base.css` / `dist/tokens.css`)同步更新,security preset 样式调整
|
|
200
|
+
- `wl-ui init/update` 会安装 Skill、触发提示、MCP 配置和 manifest 清单
|
|
201
|
+
- `wl-ui diff/clean/doctor/prompts` 覆盖升级前对比、卸载清理、环境体检和提示词查看
|
|
202
|
+
- 内置 `wl-skills-ui` MCP Server,供 AI 编辑器调用扫描、检查和 dry-run 修复
|
|
203
|
+
- 支持 GitHub Copilot、Cursor、Windsurf、Kiro、Trae、Claude Code、Cline、Qoder、通用 Agents
|
|
204
|
+
- 与 `@agile-team/wl-skills-kit` 只做可选桥接提醒,不建立强依赖
|
|
205
|
+
- 接入 `@robot-admin/git-standards`,仓库维护和业务项目均可复用提交/检查规范
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## 与 wl-skills-kit 的协同闭环
|
|
210
|
+
|
|
211
|
+
`wl-skills-ui` 与 `wl-skills-kit` 不强耦合,但可以互相配合形成“先统一视觉,再按团队规范渐进修复”的闭环:
|
|
212
|
+
|
|
213
|
+
- `wl-skills-ui` 负责整体设计体系、tokens、样式风格、化妆层和 UI runtime;无论项目是 kit 最佳写法、纯 Element Plus、老旧 `Base*` 封装,还是其他基于 Element Plus 的封装,都应尽量覆盖成统一视觉风格。
|
|
214
|
+
- `wl-skills-kit` 负责 AI 生成页面和前端工作流必须遵守的团队规范、最佳实践、业务模板、mock、api.md、菜单/字典/权限同步等,不直接负责样式体系。
|
|
215
|
+
- `wl-ui scan/check` 先识别项目中的多种 UI 写法并给出风格/结构结论;如果需要从“样式统一”进一步升级为“团队最佳实践写法”,再提示使用 `wl-skills-kit` 按扫描结论进行规范化重构。
|
|
216
|
+
- 即使暂不重构,`wl-skills-ui` 的 Skin/Native 样式覆盖也应继续生效,保证老项目和非标准写法至少获得统一视觉。
|
|
217
|
+
|
|
218
|
+
当页面由 `wl-skills-kit` 生成或重构时,推荐最终页面骨架保持:
|
|
219
|
+
|
|
220
|
+
```text
|
|
221
|
+
AbstractPageQueryHook + BaseQuery + BaseToolbar + BaseTable(render-type="agGrid", cid) + jh-pagination
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## 快速开始
|
|
227
|
+
|
|
228
|
+
### 场景 A — 新项目(Native Mode)
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
# 1. 自动安装 skills + 配置接入
|
|
232
|
+
npx wl-ui init --mode native
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
```html
|
|
236
|
+
<!-- 2. index.html -->
|
|
237
|
+
<head>
|
|
238
|
+
<link
|
|
239
|
+
rel="stylesheet"
|
|
240
|
+
href="/node_modules/@agile-team/wl-skills-ui/design/tokens/base.css"
|
|
241
|
+
/>
|
|
242
|
+
</head>
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
```scss
|
|
246
|
+
// 3. src/styles/index.scss
|
|
247
|
+
@use "@agile-team/wl-skills-ui/styles" as *;
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
```ts
|
|
251
|
+
// 4. src/main.ts
|
|
252
|
+
import { installCommonPreset } from "@agile-team/wl-skills-ui/runtime/common-preset";
|
|
253
|
+
installCommonPreset();
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
```vue
|
|
257
|
+
<!-- 5. 业务代码用 runtime API(参考 templates/list-page/) -->
|
|
258
|
+
<script setup>
|
|
259
|
+
import { defineColumns, renderOps } from "@agile-team/wl-skills-ui/runtime";
|
|
260
|
+
|
|
261
|
+
const columns = defineColumns([
|
|
262
|
+
{ type: "index", label: "序号", width: 60, align: "center" },
|
|
263
|
+
{ name: "name", label: "名称", minWidth: 150 },
|
|
264
|
+
{ name: "enableStatus", label: "状态", width: 90 }, // ← 自动渲染 Tag(已注册)
|
|
265
|
+
{
|
|
266
|
+
label: "操作",
|
|
267
|
+
width: 120,
|
|
268
|
+
fixed: "right",
|
|
269
|
+
align: "center",
|
|
270
|
+
defaultSlot: ({ row }) =>
|
|
271
|
+
renderOps([
|
|
272
|
+
{ type: "view", onClick: () => modal.value.view(row.id) },
|
|
273
|
+
{ type: "edit", onClick: () => modal.value.edit(row.id) },
|
|
274
|
+
{ type: "del", onClick: () => handleDel(row.id) },
|
|
275
|
+
]),
|
|
276
|
+
},
|
|
277
|
+
]);
|
|
278
|
+
</script>
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### 场景 B — 老项目(Skin Mode)
|
|
282
|
+
|
|
283
|
+
```bash
|
|
284
|
+
# 1. 化妆模式接入(不安装 runtime/layouts 类 skill)
|
|
285
|
+
npx wl-ui init --mode skin
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
```scss
|
|
289
|
+
// 2. 仅引入 skin preset(不引入 layouts,避免冲击老布局)
|
|
290
|
+
@use "@agile-team/wl-skills-ui/styles/presets/skin" as *;
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
# 3. AI 编辑器中触发:
|
|
295
|
+
# "用 wl-ui 的 legacy-skin-align 流程跑一下当前项目"
|
|
296
|
+
# → AI 按 _flows/legacy-skin-align.md 顺序执行 6 个 phase
|
|
297
|
+
|
|
298
|
+
# 或纯审计(不修):
|
|
299
|
+
npx wl-ui scan --target src --mode skin --outFile audit.md
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
### 场景 C — AI 编辑器 / MCP 接入
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
# 安装或更新 Skill 到当前业务项目
|
|
306
|
+
npx wl-ui init --project . --editor auto
|
|
307
|
+
npx wl-ui update --project .
|
|
308
|
+
|
|
309
|
+
# 查看 AI 触发提示
|
|
310
|
+
npx wl-ui prompts
|
|
311
|
+
|
|
312
|
+
# 体检安装结果和 MCP/规范插件提示
|
|
313
|
+
npx wl-ui doctor --project .
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
安装后会写入 `.github/wl-skills-ui/TRIGGER_PROMPTS.md`、`.mcp.json` 和 `.wl-skills-ui-manifest.json`。支持的编辑器可以单独指定,例如 `--editor claude-code`、`--editor cline`、`--editor agents-generic`、`--editor qoder`。
|
|
317
|
+
|
|
318
|
+
### 场景 D — 仅 CI 检查
|
|
319
|
+
|
|
320
|
+
```json
|
|
321
|
+
// package.json
|
|
322
|
+
{
|
|
323
|
+
"scripts": {
|
|
324
|
+
"ui:check": "wl-ui check --project .",
|
|
325
|
+
"ui:audit": "wl-ui scan --target src --outFile ui-audit.md",
|
|
326
|
+
"ui:fix": "wl-ui fix --target src --dry-run"
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
## CLI 速查
|
|
334
|
+
|
|
335
|
+
```bash
|
|
336
|
+
wl-ui init [--project .] [--editor <e>] [--mode native|skin]
|
|
337
|
+
[--dry-run] [--skills-only]
|
|
338
|
+
wl-ui update [--project .] [--force] [--dry-run]
|
|
339
|
+
wl-ui diff [--project .]
|
|
340
|
+
wl-ui clean [--project .] [--dry-run]
|
|
341
|
+
wl-ui doctor [--project .]
|
|
342
|
+
wl-ui prompts
|
|
343
|
+
wl-ui scan --target src [--layer L0,L1,L2] [--vendor base-table,jh]
|
|
344
|
+
[--mode skin|native] [--outFile report.md]
|
|
345
|
+
wl-ui check --project .
|
|
346
|
+
wl-ui fix --target src [--dry-run]
|
|
347
|
+
wl-ui all --project .
|
|
348
|
+
wl-ui add-preset <name> # 脚手架新业务 preset
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
支持的 AI 编辑器:`github-copilot` / `cursor` / `windsurf` / `kiro` / `trae` / `claude-code` / `cline` / `agents-generic` / `qoder`(自动检测)
|
|
352
|
+
|
|
353
|
+
`init/update` 会同时写入:
|
|
354
|
+
|
|
355
|
+
- AI Skill 规则文件
|
|
356
|
+
- `.github/wl-skills-ui/TRIGGER_PROMPTS.md` 触发提示
|
|
357
|
+
- `.mcp.json` 中的 `wl-skills-ui` MCP Server 配置
|
|
358
|
+
- `.wl-skills-ui-manifest.json` 安装清单,供 `update/diff/clean/doctor` 使用
|
|
359
|
+
|
|
360
|
+
> 可选桥接:如项目也安装了 `@agile-team/wl-skills-kit`,两者保持独立分工,不互相强依赖。kit 负责编码规范/页面生成/菜单字典权限,wl-skills-ui 负责 UI 风格/化妆层/Runtime 渲染。
|
|
361
|
+
|
|
362
|
+
> 规范插件建议:项目可执行 `npx @robot-admin/git-standards init` 接入 ESLint/Prettier/Husky/提交规范,形成代码质量闭环。
|
|
363
|
+
|
|
364
|
+
---
|
|
365
|
+
|
|
366
|
+
## AI Skills 触发模型
|
|
367
|
+
|
|
368
|
+
### 组合流程触发(一句话跑全套)
|
|
369
|
+
|
|
370
|
+
```
|
|
371
|
+
@workspace 用 wl-ui 的 legacy-skin-align 流程对当前项目做老项目化妆对齐
|
|
372
|
+
↓
|
|
373
|
+
AI 按 _flows/legacy-skin-align.md 严格 6 phase 执行:
|
|
374
|
+
1. 接入 tokens
|
|
375
|
+
2. 接入 skin preset
|
|
376
|
+
3. 触发 vendors/* skill 修复(按优先级 Base > jh > C_ > custom)
|
|
377
|
+
4. 触发 element/* skill 修复
|
|
378
|
+
5. 触发 tokens/* 规则修复
|
|
379
|
+
6. 不动业务代码
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
### 单点 Skill 触发(精准修复)
|
|
383
|
+
|
|
384
|
+
```
|
|
385
|
+
@workspace 用 wl-ui 的 vendors/base-table skill 检查这个文件
|
|
386
|
+
↓ AI 仅加载 base-table SKILL.md,针对 R001/R002/R003/R014 修复
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
### Skin 模式优先级(团队约定)
|
|
390
|
+
|
|
391
|
+
```
|
|
392
|
+
Base* > jh-* > C_*/c_* > custom wrappers
|
|
393
|
+
(高) (低)
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
样式文件加载顺序在 `styles/vendors/index.scss` 中固化,确保高优先级覆盖低优先级。
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
## 扩展机制
|
|
401
|
+
|
|
402
|
+
### 1. 新增一个业务 preset
|
|
403
|
+
|
|
404
|
+
```bash
|
|
405
|
+
npx wl-ui add-preset my-biz
|
|
406
|
+
# 生成 runtime/presets/my-biz.ts,按提示填字段映射,然后:
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
```ts
|
|
410
|
+
// main.ts
|
|
411
|
+
import { installMyBizPreset } from "@agile-team/wl-skills-ui/runtime/presets/my-biz";
|
|
412
|
+
installMyBizPreset();
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
### 2. 新增一类 vendor 封装组件
|
|
416
|
+
|
|
417
|
+
1. 在 `styles/vendors/` 新建 `_xxx.scss`
|
|
418
|
+
2. 在 `styles/vendors/index.scss` 按优先级 `@forward` 进去
|
|
419
|
+
3. 在 `skills/vendors/xxx/` 新建 `SKILL.md`(含 Detect/Diagnose/Repair 三段)
|
|
420
|
+
4. 在 `skills/_meta/_detection.md` 追加识别特征
|
|
421
|
+
5. 在 `scanner/rules/` 追加规则(带 `category: 'vendor-xxx'`,自动获得 `layer:'L2'`)
|
|
422
|
+
|
|
423
|
+
### 3. 新增一类页面骨架
|
|
424
|
+
|
|
425
|
+
1. 在 `styles/layouts/` 新建 `_xxx.scss`
|
|
426
|
+
2. 在 `styles/layouts/index.scss` `@forward` 进去
|
|
427
|
+
3. 在 `templates/xxx/` 新建 `TPL-XXX.md`
|
|
428
|
+
4. 在 `skills/layouts/xxx/` 新建 `SKILL.md`
|
|
429
|
+
|
|
430
|
+
### 4. 新增一条扫描规则
|
|
431
|
+
|
|
432
|
+
```js
|
|
433
|
+
// scanner/rules/my-rule.mjs
|
|
434
|
+
export const myRules = [
|
|
435
|
+
{
|
|
436
|
+
id: "R200",
|
|
437
|
+
category: "vendor-base-table", // 自动 layer=L2 / vendor=base-table
|
|
438
|
+
severity: "warning",
|
|
439
|
+
name: "...",
|
|
440
|
+
check(template, file, lineOffset) {
|
|
441
|
+
/* return issue[] */
|
|
442
|
+
},
|
|
443
|
+
},
|
|
444
|
+
];
|
|
445
|
+
|
|
446
|
+
// scanner/rules/index.mjs 中追加 import + addRules
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
---
|
|
450
|
+
|
|
451
|
+
## Element Plus 组件族样式管控
|
|
452
|
+
|
|
453
|
+
`wl-skills-ui` 的核心是样式绝对管控。加载 `styles`、`styles/presets/skin` 或 `styles/presets/element-only` 后,会统一覆盖首批 B 端高频 Element Plus 组件族:
|
|
454
|
+
|
|
455
|
+
| 组件族 | 覆盖标签 | 典型场景 |
|
|
456
|
+
| ------------ | ---------------------------------------------------------- | -------------------------------- |
|
|
457
|
+
| card | `el-card` | 列表容器、详情卡片、统计卡片 |
|
|
458
|
+
| tabs | `el-tabs` `el-tab-pane` | 详情页 Tab、配置页 Tab、主从切换 |
|
|
459
|
+
| descriptions | `el-descriptions` | 详情页字段展示、只读信息区 |
|
|
460
|
+
| tree | `el-tree` | 左树右表、组织树、区域树 |
|
|
461
|
+
| drawer | `el-drawer` | 抽屉详情、抽屉编辑 |
|
|
462
|
+
| upload | `el-upload` | 附件上传、图片上传、文件列表 |
|
|
463
|
+
| steps | `el-steps` `el-step` | 审批流、流程状态 |
|
|
464
|
+
| overlay | `el-popover` `el-tooltip` `el-dropdown` | 辅助说明、溢出提示、更多操作 |
|
|
465
|
+
| navigation | `el-menu` `el-breadcrumb` | 导航、面包屑 |
|
|
466
|
+
| feedback | `el-empty` `el-result` `el-alert` `el-badge` `el-timeline` | 空状态、异常状态、提示反馈 |
|
|
467
|
+
|
|
468
|
+
扫描器会在 JSON/Markdown 报告中输出 `componentCoverage`、`recommendedSkills`、`recommendations` 和 `kitBridge`,用于 AI 自动判断下一步是继续由 `wl-skills-ui` 做 Skin/Native 视觉统一,还是桥接 `wl-skills-kit` 做页面结构规范化。
|
|
469
|
+
|
|
470
|
+
同时会识别以下 B 端组合业务场景:
|
|
471
|
+
|
|
472
|
+
| 场景 | 识别含义 |
|
|
473
|
+
| ------------------- | ---------------------------- |
|
|
474
|
+
| `query-table` | 查询区 + 表格 |
|
|
475
|
+
| `toolbar-actions` | 工具栏 / 批量操作栏 |
|
|
476
|
+
| `tree-table` | 左树右表 |
|
|
477
|
+
| `dialog-form` | 弹窗表单 |
|
|
478
|
+
| `drawer-detail` | 抽屉详情 / 抽屉编辑 |
|
|
479
|
+
| `detail-card` | 详情卡片 |
|
|
480
|
+
| `tab-workbench` | Tab 工作台 / Tab 详情 |
|
|
481
|
+
| `attachment-upload` | 附件上传 |
|
|
482
|
+
| `process-flow` | 流程 / 审批 |
|
|
483
|
+
| `feedback-state` | 空状态 / 异常状态 / 反馈提示 |
|
|
484
|
+
|
|
485
|
+
---
|
|
486
|
+
|
|
487
|
+
## AI/MCP 智能引导
|
|
488
|
+
|
|
489
|
+
| MCP Tool | 作用 |
|
|
490
|
+
| ----------------------- | ---------------------------------------------------------- |
|
|
491
|
+
| `wks_ui_check` | 检查 tokens/styles/runtime 接入完整性 |
|
|
492
|
+
| `wks_ui_scan` | 扫描 UI 风格偏差,输出 Markdown 或 JSON |
|
|
493
|
+
| `wks_ui_fix_dry_run` | 预览自动修复,不实际写入 |
|
|
494
|
+
| `wks_ui_skill_prompt` | 输出 AI 触发提示 |
|
|
495
|
+
| `wks_ui_route_intent` | 根据自然语言识别 UI 治理意图并推荐 flow/tool/skill |
|
|
496
|
+
| `wks_ui_recommend_flow` | 根据扫描 JSON 推荐 nextActions 和 `wl-skills-kit` 桥接动作 |
|
|
497
|
+
|
|
498
|
+
推荐智能体流程:
|
|
499
|
+
|
|
500
|
+
```text
|
|
501
|
+
用户自然语言
|
|
502
|
+
→ wks_ui_route_intent
|
|
503
|
+
→ wks_ui_scan --output json
|
|
504
|
+
→ wks_ui_recommend_flow
|
|
505
|
+
→ 先保证样式统一
|
|
506
|
+
→ 如需规范化,再桥接 wl-skills-kit validate-page / doctor-ui
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
---
|
|
510
|
+
|
|
511
|
+
## Runtime API 概览
|
|
512
|
+
|
|
513
|
+
| API | 说明 |
|
|
514
|
+
| ------------------------------------------------ | -------------------------------------------------- |
|
|
515
|
+
| `defineColumns(cols)` | 列定义,自动应用 `COLUMN_AUTO_MAP` |
|
|
516
|
+
| `renderOps(items)` | 操作列图标按钮组(view/edit/del/log/ok/send 预设) |
|
|
517
|
+
| `renderTagNode(v, map)` | 状态 Tag 渲染 |
|
|
518
|
+
| `renderClassifyTag(v, map)` | 分类 Tag 渲染 |
|
|
519
|
+
| `renderBadge(v)` / `renderCountBadge(v)` | 编号 / 计数徽标 |
|
|
520
|
+
| `renderRatingLevel(v)` | 评级颜色 |
|
|
521
|
+
| `registerColumnAutoMap(field, config)` | 注册新字段自动渲染 |
|
|
522
|
+
| `installCommonPreset()` | 安装通用业务预设 |
|
|
523
|
+
| `setDictResolver(fn)` | 解耦动态字典查询 |
|
|
524
|
+
| `createPreset(config)` / `installPreset(config)` | 自定义 preset 工厂 |
|
|
525
|
+
|
|
526
|
+
---
|
|
527
|
+
|
|
528
|
+
## 设计令牌
|
|
529
|
+
|
|
530
|
+
详见 `design/spec/`:
|
|
531
|
+
|
|
532
|
+
| 维度 | 文档 |
|
|
533
|
+
| ---- | ------------------------------------------------------ |
|
|
534
|
+
| 颜色 | [design/spec/color.md](design/spec/color.md) |
|
|
535
|
+
| 字号 | [design/spec/typography.md](design/spec/typography.md) |
|
|
536
|
+
| 间距 | [design/spec/spacing.md](design/spec/spacing.md) |
|
|
537
|
+
|
|
538
|
+
主色:`#4368ff` → `--el-color-primary`(与 Element Plus 默认蓝对齐)
|
|
539
|
+
|
|
540
|
+
---
|
|
541
|
+
|
|
542
|
+
## 规范清单
|
|
543
|
+
|
|
544
|
+
### UI 规则(R001-R037,按 layer 自动分组)
|
|
545
|
+
|
|
546
|
+
| Rule | Layer | Vendor | 说明 |
|
|
547
|
+
| ---- | ----- | --------- | ------------------------------------ |
|
|
548
|
+
| R001 | L1 | element | el-table-column 缺 `align="center"` |
|
|
549
|
+
| R002 | L1 | element | el-table 缺 `empty-text` |
|
|
550
|
+
| R003 | L1 | element | BaseTable 缺 `empty-text` |
|
|
551
|
+
| R004 | L1 | element | 操作列按钮非文字按钮 |
|
|
552
|
+
| R005 | L1 | element | 工具栏按钮缺 icon |
|
|
553
|
+
| R006 | L1 | element | 表单控件缺 `size="small"` |
|
|
554
|
+
| R007 | L1 | element | el-date-picker 缺 `width:100%` |
|
|
555
|
+
| R008 | L1 | element | label-width ≥ 150px |
|
|
556
|
+
| R009 | L1 | element | 状态字段纯文本渲染 |
|
|
557
|
+
| R010 | L1 | element | 分类字段缺 `effect="plain"` |
|
|
558
|
+
| R011 | L1 | element | 分页器位置错误 |
|
|
559
|
+
| R012 | L1 | element | 弹窗内 el-table 缺 `empty-text` |
|
|
560
|
+
| R013 | L4 | runtime | columnsDef 用旧格式 `operations: []` |
|
|
561
|
+
| R014 | L1 | element | selection 列缺 header-align |
|
|
562
|
+
| R015 | L1 | element | modal 内表格按钮非 link |
|
|
563
|
+
| R016 | L0 | — | `<style>` 块硬编码颜色 |
|
|
564
|
+
| R017 | L0 | — | `<template>` 块硬编码颜色 |
|
|
565
|
+
| R018 | L0 | — | `<script>` 块硬编码颜色 |
|
|
566
|
+
| R021 | L2 | BaseTable | BaseTable 缺 `render-type="agGrid"` |
|
|
567
|
+
| R022 | L2 | BaseTable | BaseTable 缺唯一 `cid/:cid` |
|
|
568
|
+
| R031 | L1 | element | el-card 建议使用统一场景 class |
|
|
569
|
+
| R032 | L1 | element | el-tabs 建议明确页面场景 |
|
|
570
|
+
| R033 | L1 | element | el-descriptions 建议 bordered/容器 |
|
|
571
|
+
| R034 | L1 | element | el-drawer 建议明确 size |
|
|
572
|
+
| R035 | L1 | element | el-upload 建议配置 tip/限制说明 |
|
|
573
|
+
| R036 | L1 | element | el-steps 建议明确状态来源 |
|
|
574
|
+
| R037 | L1 | element | 空/异常反馈建议统一操作入口 |
|
|
575
|
+
|
|
576
|
+
### 工程规范
|
|
577
|
+
|
|
578
|
+
- [01-import-order.md](standards/engineering/01-import-order.md)
|
|
579
|
+
- [02-naming.md](standards/engineering/02-naming.md)
|
|
580
|
+
- [03-scss-structure.md](standards/engineering/03-scss-structure.md)
|
|
581
|
+
|
|
582
|
+
---
|
|
583
|
+
|
|
584
|
+
## 未来路线图
|
|
585
|
+
|
|
586
|
+
| 阶段 | 目标 |
|
|
587
|
+
| ---------- | ------------------------------------------------------------------- |
|
|
588
|
+
| **v1.5.x** | 生命周期 CLI + manifest + MCP + 多编辑器适配 + 规范插件接入 |
|
|
589
|
+
| **v1.6** | 多业务 preset 矩阵(safe / hr / asset / ops 等)和更多 MCP 辅助工具 |
|
|
590
|
+
| **v2.0** | 稳定接口冻结,正式标记 stable |
|
|
591
|
+
|
|
592
|
+
---
|
|
593
|
+
|
|
594
|
+
## 贡献
|
|
595
|
+
|
|
596
|
+
```bash
|
|
597
|
+
git clone git@github.com:ChenyCHENYU/wl-skills-ui.git
|
|
598
|
+
cd wl-skills-ui
|
|
599
|
+
pnpm install
|
|
600
|
+
pnpm lint
|
|
601
|
+
pnpm build
|
|
602
|
+
node scanner/index.mjs scan --target reference
|
|
603
|
+
```
|
|
604
|
+
|
|
605
|
+
约定:
|
|
606
|
+
|
|
607
|
+
- 提交规范见 [Git Commit Convention](#git-commit-convention)
|
|
608
|
+
- 新增规则必须带 `category` → 自动获得 `layer/vendor`
|
|
609
|
+
- 新增 vendor 必须同时更新:styles + skills + \_detection.md + scanner
|
|
610
|
+
|
|
611
|
+
### Git Commit Convention
|
|
612
|
+
|
|
613
|
+
```
|
|
614
|
+
类型(作用域): 内容
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
类型:`feat` `fix` `docs` `style` `refactor` `chore` `perf`
|
|
618
|
+
|
|
619
|
+
---
|
|
620
|
+
|
|
621
|
+
## License
|
|
622
|
+
|
|
623
|
+
UNLICENSED — 内部专用,未经授权不得外传
|