@agile-team/wl-skills-kit 2.1.9 → 2.2.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/README.md +1 -1
- package/bin/wl-skills.js +1 -1
- package/files/.github/guides/architecture.md +1 -1
- package/files/.github/guides/usage.md +7 -2
- package/files/.github/skills/core/convention-audit/SKILL.md +3 -3
- package/files/.github/standards/12-base-table.md +16 -0
- package/package.json +2 -2
- package/files/.github/skills/ops/code-fix/SKILL.draft.md +0 -108
- package/files/.github/skills/sync/dict-sync/SKILL.draft.md +0 -100
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@agile-team/wl-skills-kit)
|
|
4
4
|
|
|
5
|
-
**AI Skill 模板包 v2.
|
|
5
|
+
**AI Skill 模板包 v2.2.0** — 一条命令尗13 条编码规范、8 个 AI Skill、组件文档、领域样例导入 Vue 3 项目。
|
|
6
6
|
|
|
7
7
|
让 AI 编辑器(Copilot / Cursor / Windsurf / Claude Code / Cline / Kiro / Trae / 通用 Agents)**真正理解项目规范**,从原型/详设到完整页面代码全流程自动化。
|
|
8
8
|
|
package/bin/wl-skills.js
CHANGED
|
@@ -93,10 +93,15 @@ AI 会自动识别意图,触发对应的 Skill。
|
|
|
93
93
|
2. page-spec → api-contract → api.md
|
|
94
94
|
3. api.md → page-codegen → 4 文件 + reports/SYS_MENU_INFO.md
|
|
95
95
|
4. SYS_MENU_INFO → menu-sync → 后端菜单表
|
|
96
|
-
5.
|
|
96
|
+
5. 代码完成 → dict-sync → 字典基线同步到后端字典表
|
|
97
|
+
6. 完成 → convention-audit → 偏差报告(reports/规范审查报告.md)
|
|
98
|
+
7. 报告 → code-fix → 受控自动修复 🟡/🟢 偏差,逐条 diff 确认
|
|
99
|
+
8. 沉淀 → template-extract → 从标杆页面提取领域专属模板
|
|
97
100
|
```
|
|
98
101
|
|
|
99
|
-
|
|
102
|
+
> **说明**:每一步都可以单独触发,也可以按用户意图自动接续。
|
|
103
|
+
> - `dict-sync`:首次使用先跑 **pull 模式**(「刷新字典基线」)建立本地基线,再跑 push 模式同步差异。
|
|
104
|
+
> - `code-fix`:只修复 🟡/🟢 偏差;🔴 严重偏差必须人工或 page-codegen 处理。每条修复前强制 diff 预览确认。
|
|
100
105
|
|
|
101
106
|
---
|
|
102
107
|
|
|
@@ -57,7 +57,7 @@ description: "Use when: auditing project source code against the 13 modular stan
|
|
|
57
57
|
| 09 | TypeScript | 滥用 any(>3 处/页) → 🟡 |
|
|
58
58
|
| 10 | Pinia | data.ts 内 import Store → 🔴 |
|
|
59
59
|
| 11 | 表单校验 | FORM_ROUTE 缺 validate / resetFields → 🔴 |
|
|
60
|
-
| 12 | BaseTable + cid | 用 el-table / 缺 render-type / cid 缺失或重复 → 🔴;cid 后缀使用旧格式(十进制截断后6位)→ 🟡;列级 cid 只用缩写作前缀(同页面两张表同名列碰撞)→
|
|
60
|
+
| 12 | BaseTable + cid | 用 el-table / 缺 render-type / cid 缺失或重复 → 🔴;cid 后缀使用旧格式(十进制截断后6位)→ 🟡;列级 cid 只用缩写作前缀(同页面两张表同名列碰撞)→ 🔴;**存量代码迁移期**:已存在旧格式 cid(缩写作前缀的列级 cid)→ 降级为 🟡,由 code-fix 逐步整改,不必一刀切全报红 |
|
|
61
61
|
| 13 | 平台组件合规 | 用 el-form/el-table/el-date-picker 替代封装 → 🔴;3+ 复用 → 提取建议 |
|
|
62
62
|
|
|
63
63
|
---
|
|
@@ -153,7 +153,7 @@ description: "Use when: auditing project source code against the 13 modular stan
|
|
|
153
153
|
📌 后续步骤:
|
|
154
154
|
1. 人工 review 报告,标记需要修复的条目
|
|
155
155
|
2. 严重偏差优先修复(用 page-codegen 重新生成)
|
|
156
|
-
3.
|
|
156
|
+
3. 触发 code-fix 自动整改 🟢/🟡 等级偏差
|
|
157
157
|
4. 提取建议人工评审 → template-extract 或手动封装
|
|
158
158
|
─────────────────────────────────────────────────────
|
|
159
159
|
```
|
|
@@ -176,7 +176,7 @@ description: "Use when: auditing project source code against the 13 modular stan
|
|
|
176
176
|
| ---------------------- | ------------------------------------------------------- |
|
|
177
177
|
| **page-codegen** | 审计发现偏差后,可调用 page-codegen 重新生成合规代码 |
|
|
178
178
|
| **template-extract** | 审计输出的"组件提取建议",确认后可触发 template-extract |
|
|
179
|
-
| **code-fix**
|
|
179
|
+
| **code-fix** | 审计报告作为修复输入,自动整改 🟢🟡 等级偏差 |
|
|
180
180
|
| **CI/CD** | 审计可作为 PR 检查项,不合规 PR 阻断合并 |
|
|
181
181
|
|
|
182
182
|
---
|
|
@@ -55,6 +55,22 @@ AGGrid 通过 `cid` 持久化列配置(列宽、顺序、显示),**cid 必
|
|
|
55
55
|
|
|
56
56
|
> **为什么不截断**:截断后缀(如后 6 位)会引入循环碰撞。完整 base-36 值为单调递增,毫秒级唯一,9 位 base-36 ≈ 2199 亿组合,同一毫秒只生成一次。
|
|
57
57
|
|
|
58
|
+
> ⚠️ **AI 批量生成多个 cid 时的碰撞风险**:AI 在同一上下文中连续生成多个 `Date.now().toString(36)` 时,
|
|
59
|
+
> 返回值可能相同(AI 不会真实调用系统时钟,而是推断一个"合理值")。
|
|
60
|
+
> **正确做法**:AI 批量生成时,在基准时间戳上依次 +1ms 递增,确保每个 cid 的数字部分唯一:
|
|
61
|
+
>
|
|
62
|
+
> ```typescript
|
|
63
|
+
> // 批量生成模板(AI 执行 code-fix / page-codegen 时使用)
|
|
64
|
+
> const base = Date.now()
|
|
65
|
+
> const cids = {
|
|
66
|
+
> table: `mca-${base.toString(36)}`, // mca-lhfge5hc
|
|
67
|
+
> sub1: `mca-${(base+1).toString(36)}-sub1`, // mca-lhfge5hd-sub1
|
|
68
|
+
> sub2: `mca-${(base+2).toString(36)}-sub2`, // mca-lhfge5he-sub2
|
|
69
|
+
> }
|
|
70
|
+
> ```
|
|
71
|
+
>
|
|
72
|
+
> 人工在编辑器里每次手写一个 cid 时,直接用 `Date.now().toString(36)` 即可(不同时刻天然不同)。
|
|
73
|
+
|
|
58
74
|
### 列级 cid
|
|
59
75
|
|
|
60
76
|
```
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agile-team/wl-skills-kit",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "AI Skill 模板包 —
|
|
3
|
+
"version": "2.2.0",
|
|
4
|
+
"description": "AI Skill 模板包 v2.2.0 — 13 条编码规范 + 8 个 AI Skill,一条命令导入 Vue 3 项目",
|
|
5
5
|
"main": "./bin/wl-skills.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"wl-skills": "bin/wl-skills.js"
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: code-fix
|
|
3
|
-
description: "[PLANNED — DRAFT, not yet active] 受控自动修复 Skill 设计草稿。基于 convention-audit 报告,对单条/分组偏差执行 AI 修复,全程必须人工 review 通过 + 单测护栏。"
|
|
4
|
-
status: planned
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Skill: 受控自动修复(code-fix)— 草稿
|
|
8
|
-
|
|
9
|
-
> ⚠️ **本文件为设计草稿(SKILL.draft.md),未启用,不参与 AI 调度。**
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## 1. 设计目标
|
|
14
|
-
|
|
15
|
-
`convention-audit` 已能产出偏差清单。`code-fix` 在此基础上提供**受控的自动修复**:
|
|
16
|
-
|
|
17
|
-
- **单条修复**:选定 1 条偏差 → AI 修改 → diff 确认 → 写入
|
|
18
|
-
- **分组修复**:选定一类偏差(如"全部缺少 :scoped")→ 批量修改 → 总体 diff → 分文件确认 → 写入
|
|
19
|
-
- **预置修复模板**:常见偏差直接走规则,不调 AI
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## 2. 工作流
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
convention-audit 报告 (reports/AUDIT_AI_*.md)
|
|
27
|
-
│
|
|
28
|
-
▼
|
|
29
|
-
[1] 用户从报告挑选 issueId(或 issueGroup)
|
|
30
|
-
│
|
|
31
|
-
▼
|
|
32
|
-
[2] 解析 issue → 定位文件 + 行号 + 偏差类型
|
|
33
|
-
│
|
|
34
|
-
▼
|
|
35
|
-
[3] 选择修复策略:
|
|
36
|
-
├─ rule-based(如缺 :scoped、缺 cid 等)→ 走预置模板
|
|
37
|
-
└─ ai-based(语义性偏差)→ 调 AI 生成 patch
|
|
38
|
-
│
|
|
39
|
-
▼
|
|
40
|
-
[4] Pre-flight 输出 diff 预览(人读)
|
|
41
|
-
│
|
|
42
|
-
▼
|
|
43
|
-
[5] 用户确认 yes/no
|
|
44
|
-
│
|
|
45
|
-
├─ yes → 跑 lint + typecheck(如配置)
|
|
46
|
-
│ ├─ 通过 → 写入文件 + 输出 reports/CODE_FIX_<YYYYMMDD>.md
|
|
47
|
-
│ └─ 失败 → 回滚 + 标记 issue "待人工"
|
|
48
|
-
│
|
|
49
|
-
└─ no → 跳过该 issue,回到挑选界面
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
---
|
|
53
|
-
|
|
54
|
-
## 3. 受控原则(关键)
|
|
55
|
-
|
|
56
|
-
| 原则 | 实现 |
|
|
57
|
-
| ------------------- | ------------------------------------------------------------- |
|
|
58
|
-
| **不破坏功能** | 修复前后跑 lint + typecheck,失败回滚 |
|
|
59
|
-
| **不批量盲改** | 每个文件改完都让用户看 diff,禁止全自动跳过确认 |
|
|
60
|
-
| **可回滚** | 修改前内存保留原始内容,输出报告含还原 patch |
|
|
61
|
-
| **范围明确** | 只改 issue 报告里点名的行,不顺手"重构"周边 |
|
|
62
|
-
| **AI 不生成新逻辑** | code-fix 只修偏差,**不**做功能补全(那是 page-codegen 的活) |
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## 4. 偏差类型 → 修复策略对照
|
|
67
|
-
|
|
68
|
-
| 偏差类型 | 来源 standards | 策略 | 难度 |
|
|
69
|
-
| ----------------------------------- | ---------------------- | ---------- | ---- |
|
|
70
|
-
| EColumn 缺 cid | data-ts.md | rule-based | 易 |
|
|
71
|
-
| scss 文件缺 :scoped 包裹 | scss.md | rule-based | 易 |
|
|
72
|
-
| import 路径不规范 | imports.md | rule-based | 易 |
|
|
73
|
-
| Hook 类未继承 AbstractPageQueryHook | page.md | rule-based | 中 |
|
|
74
|
-
| API_CONFIG URL 不符合命名约定 | api-contract.md | ai-based | 中 |
|
|
75
|
-
| 表格列定义与 api.md 字段不一致 | api-contract + data-ts | ai-based | 难 |
|
|
76
|
-
| 业务语义偏差(流程不对) | 多 standards 综合 | **不修复** | - |
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## 5. 命令形态(拟定)
|
|
81
|
-
|
|
82
|
-
```
|
|
83
|
-
"修复 reports/AUDIT_AI_*.md 中的 issue#3" → 单条
|
|
84
|
-
"修复 reports/AUDIT_AI_*.md 中所有 scss 偏差" → 分组
|
|
85
|
-
"修复全部 rule-based 偏差,跳过 ai-based" → 受控批量
|
|
86
|
-
"列出可修复的 issue" → 不动手,仅列清单
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
## 6. 与其他 Skill 关系
|
|
92
|
-
|
|
93
|
-
| Skill | 关系 |
|
|
94
|
-
| ---------------- | --------------------------------------- |
|
|
95
|
-
| convention-audit | **前置**:必须先有审计报告才能 code-fix |
|
|
96
|
-
| page-codegen | 互斥:生成新页面用 codegen,不要用 fix |
|
|
97
|
-
| template-extract | 无直接关系 |
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## 7. 转正前的开发任务
|
|
102
|
-
|
|
103
|
-
- [ ] 沉淀至少 10 个 rule-based 修复模板
|
|
104
|
-
- [ ] 设计 patch 内联格式(diff/unified)
|
|
105
|
-
- [ ] 决定 lint/typecheck 失败的处理(默认回滚 + 标记,无须用户决策)
|
|
106
|
-
- [ ] PR review 集成(修复完是否自动建 PR、是否分 commit)
|
|
107
|
-
- [ ] 防御对抗性 prompt:用户能否引导 AI 顺手改业务逻辑?应在 SKILL.md 强制约束
|
|
108
|
-
- [ ] 灰度策略:先支持单文件、再支持单 issue 组、最后批量
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: dict-sync
|
|
3
|
-
description: "[PLANNED — DRAFT, not yet active] 字典同步 Skill 设计草稿。机制类同 menu-sync:基于 reports/SYS_DICT_INFO.md 基线 ↔ 线上字典对比,自动补齐。"
|
|
4
|
-
status: planned
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Skill: 字典同步(dict-sync)— 草稿
|
|
8
|
-
|
|
9
|
-
> ⚠️ **本文件为设计草稿(SKILL.draft.md),未启用,不参与 AI 调度。**
|
|
10
|
-
> 待相关后端接口稳定后,转正为 `SKILL.md`。
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## 1. 设计目标
|
|
15
|
-
|
|
16
|
-
页面 `data.ts` 中常使用 `logicType: BusLogicDataType.dict` 引用数据字典(如 `customer_state`、`mmwr_apply_status`)。新增页面/字段时,需要:
|
|
17
|
-
|
|
18
|
-
1. 在系统字典表中**添加新字典码**(dictCode + 描述)
|
|
19
|
-
2. 在字典表中**添加各项条目**(value + label + sortNo)
|
|
20
|
-
3. 团队基线中保存当前线上字典(review/diff 用)
|
|
21
|
-
|
|
22
|
-
`dict-sync` 自动化以上 3 步。
|
|
23
|
-
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
## 2. 数据流
|
|
27
|
-
|
|
28
|
-
```
|
|
29
|
-
本地基线 后端接口 Skill 触发
|
|
30
|
-
───────────────────────────────────── ───────────────────────────────── ────────────────
|
|
31
|
-
reports/SYS_DICT_INFO.md ──fetch───→ GET /sys/dict/listAll
|
|
32
|
-
←──compare─── POST /sys/dict/save
|
|
33
|
-
──upload───→ POST /sys/dictItem/batchSave ─→ "同步字典"
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## 3. 三种工作模式
|
|
39
|
-
|
|
40
|
-
| 模式 | 触发 | 动作 |
|
|
41
|
-
| ----------------- | --------------------- | ----------------------------------------- |
|
|
42
|
-
| `pull`(刷基线) | "刷新字典基线" | 从线上拉全量字典 → 写入 SYS_DICT_INFO.md |
|
|
43
|
-
| `push`(推新增) | "同步字典 / 创建字典" | 对比 data.ts 引用的字典 vs 基线,补齐线上 |
|
|
44
|
-
| `audit`(仅检查) | "字典审计" | 输出报告,不调接口 |
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## 4. 配置文件
|
|
49
|
-
|
|
50
|
-
`.github/skills/sync/dict-sync/env/env.local.json`(不入 git):
|
|
51
|
-
|
|
52
|
-
```json
|
|
53
|
-
{
|
|
54
|
-
"gatewayPath": "https://uat-api.example.com",
|
|
55
|
-
"token": "Bearer xxx",
|
|
56
|
-
"tenantId": "10001",
|
|
57
|
-
"_inherit": "复用 skills/sync/menu-sync/env/env.local.json 的 token、gatewayPath 等基础配置"
|
|
58
|
-
}
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
> 实现时支持 `_inherit`:本目录无 env.local.json 时回落到 menu-sync 的同名文件。
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## 5. 冲突处理策略
|
|
66
|
-
|
|
67
|
-
| 场景 | 策略 |
|
|
68
|
-
| -------------------------------- | -------------------------------------------- |
|
|
69
|
-
| 本地新增字典,线上不存在 | 调用 /sys/dict/save 创建 |
|
|
70
|
-
| 本地有的字典项,线上字典已禁用 | 询问:跳过 / 重新启用 / 视为新建 |
|
|
71
|
-
| 本地与线上 value 相同 label 不同 | 询问:以本地为准 / 以线上为准 / 跳过 |
|
|
72
|
-
| 线上有的字典/项,本地没有 | 仅记录日志,**不主动删除**(防误删生产数据) |
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
## 6. 与其他 Skill 联动
|
|
77
|
-
|
|
78
|
-
- **page-codegen**:生成页面时如发现 data.ts 用到未在基线中的字典码,自动在生成报告中提示"运行 dict-sync 补齐"
|
|
79
|
-
- **convention-audit**:审计 standards/data-ts.md 时,对比基线检测"字典码未定义"
|
|
80
|
-
- **prototype-scan**:扫描原型阶段如识别出状态/枚举字段,提出字典码建议
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## 7. 转正前的开发任务
|
|
85
|
-
|
|
86
|
-
- [ ] 确认后端字典批量保存接口(save / batchSave / 字段名 / 响应外壳是否 `{code:2000,data}`)
|
|
87
|
-
- [ ] 设计 SYS_DICT_INFO.md 自动序列化/反序列化(防 markdown 渲染破坏数据)
|
|
88
|
-
- [ ] 实现 `_inherit` 配置回落机制
|
|
89
|
-
- [ ] 决定字典审计严格度(必须有 enabled / sortNo / remark 等字段)
|
|
90
|
-
- [ ] 提供 `dict-collect` Skill 或集成到 prototype-scan:从代码自动汇总字典依赖
|
|
91
|
-
- [ ] 处理多语言字典(i18n label)
|
|
92
|
-
- [ ] PROD 环境保护机制(推送前必须二次确认)
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
## 8. 风险与边界
|
|
97
|
-
|
|
98
|
-
- **不删除**:永远不主动删除线上字典/字典项
|
|
99
|
-
- **租户隔离**:env.local.json 的 tenantId 严格隔离
|
|
100
|
-
- **审计日志**:每次 push 输出 `reports/DICT_SYNC_<YYYYMMDD>.md`,含调用接口列表 + 入参 + 响应 + 回滚 SQL
|