@agile-team/wl-skills-kit 2.5.2 → 2.7.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.
Files changed (28) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +32 -4
  3. package/bin/wl-skills.js +48 -2
  4. package/docs/agent-pipeline-runbook.md +2 -1
  5. package/docs/ai/345/205/250/346/231/257/345/210/206/346/236/220.md +13 -4
  6. package/docs/mcp-tool-risk-matrix.md +2 -1
  7. package/docs//345/205/250/347/233/230/345/210/206/346/236/220/344/270/216/346/231/272/350/203/275/344/275/223/346/220/255/345/273/272/346/214/207/345/215/227.md +3 -2
  8. package/files/.github/copilot-instructions.md +2 -11
  9. package/files/.github/guides/architecture.md +1 -1
  10. package/files/.github/guides/usage.md +4 -3
  11. package/files/.github/skills/_compat/headers/cursor-mdc.txt +1 -1
  12. package/files/.github/skills/_compat/headers/kiro.txt +1 -1
  13. package/files/.github/skills/_compat/headers/trae.txt +1 -1
  14. package/files/.github/skills/_pipeline.md +10 -4
  15. package/files/.github/skills/_registry.md +3 -0
  16. package/files/.github/skills/core/business-doc-extract/SKILL.md +234 -0
  17. package/files/.github/skills/core/business-doc-extract/USAGE.md +176 -0
  18. package/files/.github/skills/core/business-doc-extract/templates/business-index.md +66 -0
  19. package/files/.github/skills/core/business-doc-extract/templates/business-open-questions.md +40 -0
  20. package/files/.github/skills/core/business-doc-extract/templates/module-dictionary.md +54 -0
  21. package/files/.github/skills/core/business-doc-extract/templates/module-field.md +63 -0
  22. package/files/.github/skills/core/business-doc-extract/templates/module-index.md +67 -0
  23. package/files/.github/skills/core/business-doc-extract/templates/module-requirement.md +101 -0
  24. package/files/.github/skills/ops/code-fix/USAGE.md +131 -0
  25. package/files/.github/skills/sync/dict-sync/USAGE.md +122 -0
  26. package/mcp/registry.js +368 -0
  27. package/mcp/server.js +65 -432
  28. package/package.json +9 -5
@@ -0,0 +1,67 @@
1
+ <!--
2
+ 模板:docs/business/0X-xxx/index.md(模块全景)
3
+ 使用:business-doc-extract Skill 在 module 模式下生成或刷新。
4
+ 约束:仅放“模块定位 + 子功能清单 + 页面/API 索引 + 模块链路摘要”。
5
+ 详细需求 / 字段 / 字典放在 requirement.md / field.md / dictionary.md。
6
+ -->
7
+
8
+ # {{ModuleName}}
9
+
10
+ > **代码目录**:`src/views/{{module-path}}`
11
+ > **文档目录**:`docs/business/0X-{{module-kebab}}/`
12
+ > **最近更新**:{{UpdatedAt}}
13
+
14
+ ---
15
+
16
+ ## 1. 模块定位
17
+
18
+ {{ModulePositioning}}
19
+
20
+ ---
21
+
22
+ ## 2. 子功能清单
23
+
24
+ | 功能 | 说明 | 状态 |
25
+ |---|---|---|
26
+ | {{Feature1}} | {{Desc1}} | {{Status1}} |
27
+ | {{Feature2}} | {{Desc2}} | {{Status2}} |
28
+
29
+ ---
30
+
31
+ ## 3. 页面与 API 索引
32
+
33
+ > 详细接口契约位于页面目录的 `api.md`,本表只做导航。
34
+
35
+ | 页面 | 代码目录 | API 契约 | 实现状态 |
36
+ |---|---|---|---|
37
+ | {{Page1Name}} | `src/views/{{page1-path}}` | [`api.md`](../../../src/views/{{page1-path}}/api.md) | {{Status1}} |
38
+ | {{Page2Name}} | `src/views/{{page2-path}}` | [`api.md`](../../../src/views/{{page2-path}}/api.md) | {{Status2}} |
39
+
40
+ ---
41
+
42
+ ## 4. 模块链路摘要
43
+
44
+ ```mermaid
45
+ flowchart TD
46
+ A[{{Step1}}] --> B[{{Step2}}]
47
+ B --> C[{{Step3}}]
48
+ ```
49
+
50
+ > 完整业务流程详见 [`requirement.md`](./requirement.md)。
51
+
52
+ ---
53
+
54
+ ## 5. 关联模块
55
+
56
+ | 模块 | 关系 |
57
+ |---|---|
58
+ | {{RelatedModule}} | {{Relation}} |
59
+
60
+ ---
61
+
62
+ ## 6. 模块导航
63
+
64
+ - 需求理解:[`requirement.md`](./requirement.md)
65
+ - 字典枚举:[`dictionary.md`](./dictionary.md)
66
+ - 字段清单:[`field.md`](./field.md)
67
+ - 全局待确认:[`../open-questions.md`](../open-questions.md)
@@ -0,0 +1,101 @@
1
+ <!--
2
+ 模板:docs/business/0X-xxx/requirement.md(模块需求理解)
3
+ 使用:business-doc-extract Skill 在 module / incremental 模式下生成或更新。
4
+ 约束:流程图、页面清单、模块待确认事项都放在本文件,不再单独建 flow.md / pages.md / open-questions.md。
5
+ 全局 open-questions.md 由 Skill 汇总,不在本文件维护汇总表。
6
+ -->
7
+
8
+ # {{ModuleName}}:需求理解
9
+
10
+ ---
11
+
12
+ ## 1. 需求来源
13
+
14
+ | 来源类型 | 路径或说明 |
15
+ |---|---|
16
+ | 原型 | {{PrototypePath}} |
17
+ | 详设 | {{SpecPath}} |
18
+ | 现有代码 | `src/views/{{module-path}}` |
19
+ | 后端字段实体 | {{EntityPath}} |
20
+ | 字典资料 | {{DictPath}} |
21
+
22
+ ---
23
+
24
+ ## 2. 业务目标
25
+
26
+ {{BusinessGoal}}
27
+
28
+ ---
29
+
30
+ ## 3. 角色与权限
31
+
32
+ | 角色 | 可操作内容 | 备注 |
33
+ |---|---|---|
34
+ | {{Role1}} | {{Operation1}} | {{Note1}} |
35
+ | {{Role2}} | {{Operation2}} | {{Note2}} |
36
+
37
+ ---
38
+
39
+ ## 4. 功能范围
40
+
41
+ | 功能 | 说明 | 是否本期 | 备注 |
42
+ |---|---|---|---|
43
+ | {{Feature1}} | {{Desc1}} | 是 / 否 | {{Note1}} |
44
+
45
+ ---
46
+
47
+ ## 5. 核心业务流程
48
+
49
+ ```mermaid
50
+ flowchart TD
51
+ A[{{Step1}}] --> B[{{Step2}}]
52
+ B --> C[{{Step3}}]
53
+ ```
54
+
55
+ > 多个流程时按子标题拆分,例如 `5.1 主流程`、`5.2 异常流程`。
56
+
57
+ ---
58
+
59
+ ## 6. 页面清单
60
+
61
+ | 页面 | 原型 / 详设来源 | 代码路径 | 实现状态 | 备注 |
62
+ |---|---|---|---|---|
63
+ | {{Page1}} | {{Source1}} | `src/views/{{page1-path}}` | {{Status1}} | {{Note1}} |
64
+ | {{Page2}} | {{Source2}} | `src/views/{{page2-path}}` | {{Status2}} | {{Note2}} |
65
+
66
+ > 详细接口契约见对应页面目录下的 `api.md`。
67
+
68
+ ---
69
+
70
+ ## 7. 业务规则
71
+
72
+ | 规则 | 说明 |
73
+ |---|---|
74
+ | {{Rule1}} | {{Desc1}} |
75
+ | {{Rule2}} | {{Desc2}} |
76
+
77
+ ---
78
+
79
+ ## 8. 异常规则
80
+
81
+ | 场景 | 处理方式 |
82
+ |---|---|
83
+ | {{Exception1}} | {{Handling1}} |
84
+
85
+ ---
86
+
87
+ ## 9. 模块待确认事项
88
+
89
+ > 仅维护本模块的待确认事项;全局视图见 `docs/business/open-questions.md`。
90
+
91
+ | 编号 | 问题 | 影响 | 建议确认人 | 优先级 | 状态 |
92
+ |---|---|---|---|---|---|
93
+ | Q-{{Module}}-001 | {{Question}} | {{Impact}} | 产品 / 后端 / 前端 | 高 / 中 / 低 | 待确认 |
94
+
95
+ ---
96
+
97
+ ## 10. 变更记录
98
+
99
+ | 日期 | 摘要 | 操作人 |
100
+ |---|---|---|
101
+ | {{Date}} | {{Summary}} | {{Operator}} |
@@ -0,0 +1,131 @@
1
+ # 使用指南:code-fix(受控自动修复)
2
+
3
+ > **谁读这个文档**:团队成员(前端 / 接手老项目时)
4
+ > **AI 触发文件**:同目录 `SKILL.md`
5
+
6
+ ---
7
+
8
+ ## 这个 Skill 解决什么问题
9
+
10
+ `convention-audit` 跑完会生成 `reports/规范审查报告.md`,里面列出 N 条偏差,按 🔴/🟡/🟢 分级。如果手动一条一条改,效率很低;但**全量交给 AI 自动改**又会引入隐性破坏。
11
+
12
+ `code-fix` 的定位是:**只修 🟡 / 🟢 级偏差,且每条都要 diff 预览 + 用户确认**。
13
+
14
+ ---
15
+
16
+ ## 何时使用
17
+
18
+ - `convention-audit` 报告里堆积了大量 🟡 / 🟢 偏差(如缺 `:scoped` / 缺 `cid` / 缺导入顺序等)
19
+ - 接手老项目,想批量整改 ESLint 之外的项目内规范
20
+ - PR 评审前快速把"低风险偏差"清干净,让 reviewer 只看业务逻辑
21
+
22
+ **不适用场景**:
23
+
24
+ - 🔴 严重偏差(结构错误 / 用错组件 / 接口契约不符等)→ 用 `page-codegen` 重新生成或人工重写
25
+ - 业务逻辑变更 → code-fix 不参与;这是 PR 的活
26
+ - 没跑过 `convention-audit` → 必须先有报告,code-fix 不会自己扫代码
27
+
28
+ ---
29
+
30
+ ## 触发关键词
31
+
32
+ `自动修复` / `整改偏差` / `修复报告` / `规范整改` / `code fix`
33
+
34
+ ---
35
+
36
+ ## 前置条件
37
+
38
+ 1. 项目根有 `reports/规范审查报告.md`(来自 `convention-audit` 的最新一次输出)
39
+ 2. 报告里 issue 项明确(含 issueId / 文件路径 / 行号 / 偏差类型)
40
+
41
+ ---
42
+
43
+ ## 标准对话示例
44
+
45
+ ```
46
+ 你:把规范审查报告里 🟡 级的偏差都修一下
47
+ AI:[Pre-flight]
48
+ 步骤 1:读取 reports/规范审查报告.md,识别到:
49
+ - 🔴 严重 3 项(不修)
50
+ - 🟡 中 12 项(可修)
51
+ - 🟢 低 8 项(可修)
52
+ 步骤 2:本次修复目标:12 + 8 = 20 项
53
+ 步骤 3:分组展示前 5 项 diff:
54
+
55
+ [issue-001] src/views/sale/order/index.vue:24
56
+ - <style lang="scss">
57
+ + <style lang="scss" scoped>
58
+
59
+ [issue-002] src/views/sale/order/index.vue:80
60
+ - <BaseTable :columns="columns" />
61
+ + <BaseTable :cid="ORDER_CID" :columns="columns" />
62
+
63
+ ... (再展示 3 项)
64
+
65
+ [需你确认] 这 5 项 yes 后继续看后续 15 项?逐组 yes/no?
66
+ 你:yes,全部一起改了吧
67
+ AI:执行第 1 组(5 项)写入 → 标记报告条目为 ✅ 已修复 → 显示下一组
68
+ ...
69
+ ```
70
+
71
+ ---
72
+
73
+ ## 输出物
74
+
75
+ 1. **修改后的源文件**(每条 issue 命中的文件被精准 patch)
76
+ 2. **报告条目状态更新**:`reports/规范审查报告.md` 中对应 issueId 标记为 ✅ 已修复 + 时间戳
77
+ 3. **修复摘要**(可选):`reports/CODE_FIX_<YYYYMMDD>.md` —— 本次共修复 N 项,按文件聚合
78
+
79
+ ---
80
+
81
+ ## 受控原则(严格执行)
82
+
83
+ | 原则 | 说明 |
84
+ |---|---|
85
+ | **不修 🔴** | 严重偏差必须人工或 page-codegen 处理,code-fix 不介入 |
86
+ | **不破坏功能** | 只改报告点名的行,不顺手"重构"周边代码 |
87
+ | **不批量盲改** | 每个文件都先 diff 预览,禁止跳过用户确认 |
88
+ | **不生成新逻辑** | 只修偏差,不做功能补全(那是 page-codegen 的职责) |
89
+ | **范围明确** | 若用户引导修改业务逻辑,必须拒绝并说明原因 |
90
+
91
+ ---
92
+
93
+ ## 常见踩坑
94
+
95
+ | 现象 | 原因 | 解法 |
96
+ |---|---|---|
97
+ | diff 看着对,但 lint 又报新错 | 修复策略与项目 ESLint 配置不一致 | 先跑 `npm run lint` 看新报错;调整 SKILL 里的 rule-based 策略 |
98
+ | 报告里 issueId 被改回去了 | code-fix 修完后又有人手工改回旧写法 | PR 评审环节加"不要逆向修改"约束 |
99
+ | AI 想"顺手优化"周边逻辑 | 模型主动性过强 | 在指令里加"严格按 issueId 修复,不做其他改动" |
100
+ | 两次 code-fix 的 diff 不一致 | 中间 convention-audit 没重跑 | code-fix 之前必须先 audit,保证报告是最新快照 |
101
+
102
+ ---
103
+
104
+ ## 团队协作流程
105
+
106
+ ```
107
+ [每次 PR 之前]
108
+ 1. wl-skills validate-page <修改过的页面> # 单页快速校验
109
+ 2. convention-audit # 生成最新偏差报告
110
+ 3. code-fix # 修 🟡/🟢
111
+ 4. 再跑一次 convention-audit # 复扫确认 🟡/🟢 → 0
112
+ 5. PR 提交(reviewer 只看 🔴 处理 + 业务逻辑)
113
+ ```
114
+
115
+ > 复扫这一步**必做**:避免 code-fix 改完之后又引入新偏差。
116
+
117
+ ---
118
+
119
+ ## FAQ
120
+
121
+ **Q:能跳过用户确认直接全部改吗?**
122
+ A:**不允许**。code-fix 的核心定位就是"受控",跳过确认会变成黑盒整改。要全自动请用 ESLint --fix。
123
+
124
+ **Q:和 ESLint --fix 有什么区别?**
125
+ A:ESLint 修语法/格式(自动化没风险),code-fix 修**项目内规范**(如 cid/operations/`:scoped`/导入顺序/AGGrid 写法 等 ESLint 不覆盖的规则)。两者互补,建议先 ESLint 再 code-fix。
126
+
127
+ **Q:code-fix 改完会不会破坏 mock-first?**
128
+ A:不会。code-fix 只动报告点名的行,mock-first 相关字段(`API_CONFIG.useMock` 等)不在受控修复范围。
129
+
130
+ **Q:和 page-codegen 重新生成有什么区别?**
131
+ A:`page-codegen` 是"重写整个页面骨架",适合 🔴 级整页结构错误;`code-fix` 是"按 issue 精准修", 适合 🟡/🟢 级零碎偏差。两者互补,混用即可。
@@ -0,0 +1,122 @@
1
+ # 使用指南:dict-sync(字典同步)
2
+
3
+ > **谁读这个文档**:团队成员(前端 + 后端联调时)
4
+ > **AI 触发文件**:同目录 `SKILL.md`
5
+
6
+ ---
7
+
8
+ ## 这个 Skill 解决什么问题
9
+
10
+ 业务页面里 `data.ts` 引用的字典(`logicType: BusLogicDataType.dict, logicValue: "DICT_CODE"`)需要在低代码平台 **数据字典模块** 中真实存在,否则下拉项为空、表头标签为空。
11
+
12
+ `dict-sync` 负责:
13
+
14
+ 1. 拉取**线上字典模块及字典项**到 `reports/SYS_DICT_INFO.md`(团队基线)
15
+ 2. 对比 `data.ts` 引用的字典码 vs 线上字典,**列出缺失字典码**
16
+ 3. 调用字典模块/字典项保存接口(或生成对照报告供后端建数据)
17
+
18
+ ---
19
+
20
+ ## 何时使用
21
+
22
+ - 业务页面下拉/状态列空白,怀疑字典码没建
23
+ - 一次性从原型/详设里抽取出 N 个新字典,需批量同步
24
+ - 同步线上字典基线(DEV / UAT / PROD 拉齐)
25
+ - `convention-audit` 报告里出现 "字典码不存在" 类偏差
26
+
27
+ ---
28
+
29
+ ## 触发关键词
30
+
31
+ `同步字典` / `创建字典` / `刷新字典基线` / `字典对比` / `字典审计`
32
+
33
+ ---
34
+
35
+ ## 前置条件
36
+
37
+ `.github/skills/sync/env.local.json`(已 gitignore,每个开发者本地填自己的 token):
38
+
39
+ ```json
40
+ {
41
+ "gatewayPath": "http://192.168.10.50:9000",
42
+ "sysAppNo": "QjQuXy1kbKxZyjhS5N2",
43
+ "token": "eyJhbGci...",
44
+ "dict": {
45
+ "moduleId": "7C909G0U2F8HI7E305LV0135LSJ3UBIO"
46
+ }
47
+ }
48
+ ```
49
+
50
+ `dict.moduleId` 获取方式:低代码平台 → 数据字典 → 新增一条 → DevTools Network → 抓 `moduleId` 字段。
51
+
52
+ > **向下兼容**:`env.local.json` 不存在时回落到旧路径 `skills/sync/menu-sync/env/env.local.json`。
53
+
54
+ ---
55
+
56
+ ## 标准对话示例
57
+
58
+ ```
59
+ 你:把 src/views/produce/aiflow/ 里所有页面用到的字典同步一下
60
+ AI:[Pre-flight]
61
+ 步骤 1:扫描 data.ts,提取 logicValue 形成字典码集合(共 12 个)
62
+ 步骤 2:调用 wls_dict_query 拉线上字典模块(已有 8 个,缺 4 个)
63
+ 步骤 3:建议新增字典模块 + 字典项:
64
+ - APPLY_STATUS(申请状态:待审核/审核中/已通过/已驳回)
65
+ - CUSTOMER_TYPE(客户类型:临时/正式/合作/战略)
66
+ - ...
67
+ [需你确认]
68
+ - 排序 sortPriority 自动从 1 递增?yes/no
69
+ - 字典名 strName 我直接用截图里的中文,对吗?yes/no
70
+ ```
71
+
72
+ ---
73
+
74
+ ## 输出物
75
+
76
+ 1. **基线文件**:`reports/SYS_DICT_INFO.md` —— 当前所有线上字典模块 + 字典项的本地基线
77
+ 2. **同步报告**(可选):`reports/DICT_SYNC_<YYYYMMDD>.md` —— 本次新增了哪些字典/字典项
78
+ 3. **缺失对照**:报告附 "未在线上找到的字典码" 列表,便于后端预先建数据
79
+
80
+ ---
81
+
82
+ ## 与 business-doc-extract 的关系
83
+
84
+ | 维度 | `business-doc-extract` | `dict-sync` |
85
+ |---|---|---|
86
+ | 职责 | 业务理解 / 设计意图 | 线上事实 / 数据落地 |
87
+ | 输出 | `docs/business/0X-xx/dictionary.md`(人读) | 后端字典表(系统读) |
88
+ | 时机 | 项目/模块沉淀阶段 | 联调前 / 上线前 |
89
+
90
+ 两者**互不替代**:业务文档说的是"应该有什么字典",dict-sync 解决"线上有没有"。建议顺序:`business-doc-extract` 整理出 dictionary.md 草案 → 评审 → `dict-sync` 落地。
91
+
92
+ ---
93
+
94
+ ## 常见踩坑
95
+
96
+ | 现象 | 原因 | 解法 |
97
+ |---|---|---|
98
+ | 下拉空白但接口返回正常 | 字典码大小写不一致 | 字典码全部 UPPER_SNAKE_CASE,data.ts 与后端对齐 |
99
+ | 401/403 报错 | env.local.json 的 token 过期 | 重新登录系统,从 Network 抓 Authorization 替换 |
100
+ | 模块新增成功但取不到 id | 接口异步延迟 | dict-sync 已自动 re-query,无需手动处理 |
101
+ | 字典项重复创建 | 没读基线就 push | 先跑 `wls_dict_query` 取线上数据 → 对比 → 增量 push |
102
+
103
+ ---
104
+
105
+ ## 团队协作流程
106
+
107
+ 1. **每周一**由 lead 跑一次 `刷新字典基线`,更新 `reports/SYS_DICT_INFO.md`
108
+ 2. 业务页面 PR 提交前自查 "我加的字典码是否进了基线"
109
+ 3. 上线前再 sync 一次到生产环境(切换 env 文件中的 gatewayPath)
110
+
111
+ ---
112
+
113
+ ## FAQ
114
+
115
+ **Q:业务字典 vs 系统字典 vs 状态枚举怎么区分?**
116
+ A:状态枚举(如 `APPLY_STATUS`)走系统字典;业务高频可枚举字段(如 `CUSTOMER_TYPE`)走系统字典;纯文本备注、复杂联动数据不走字典。
117
+
118
+ **Q:能不能让 AI 直接根据 data.ts 自动建字典?**
119
+ A:可以,但 **建议人工确认 strName**。AI 从字段中文猜出来的字典名往往不够标准,PR 评审难。先生成对照报告,人工 review 后再 push。
120
+
121
+ **Q:和 menu-sync / permission-sync 关系?**
122
+ A:菜单是入口,字典是值域,权限是访问控制。三者独立但配合。建议顺序:`menu-sync` → `permission-sync` → `dict-sync`。