@hupan56/wlkj 3.4.5 → 3.4.7
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/package.json +1 -1
- package/templates/qoder/scripts/protocol/mcp/kg_mcp_server.py +9 -3
- package/templates/qoder/skills/prd-generator/SKILL.md +245 -241
- package/templates/qoder/skills/prd-review/SKILL.md +60 -56
- package/templates/qoder/skills/wl-code/SKILL.md +84 -80
- package/templates/qoder/skills/wl-prd/SKILL.md +6 -0
- package/templates/qoder/skills/wl-search/SKILL.md +218 -212
- package/templates/qoder/skills/wl-spec/SKILL.md +56 -52
- package/templates/qoder/skills/wl-test/SKILL.md +539 -523
|
@@ -1,56 +1,60 @@
|
|
|
1
|
-
---
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
##
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
- [ ]
|
|
34
|
-
- [ ]
|
|
35
|
-
- [ ]
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
1
|
+
---
|
|
2
|
+
n## 🚨 铁律:MCP工具优先,禁跑本地脚本
|
|
3
|
+
所有知识查询走 mcp__qoder-knowledge-graph__ 工具(云平台SSE),绝不跑 wlkj.py kg/context/search(本地kg空)。
|
|
4
|
+
name: prd-review
|
|
5
|
+
description: "评审 PRD 完整性与质量。Review PRD for completeness and quality. "
|
|
6
|
+
trigger: "被 /wl-prd 评审模式内部调用(实现层)"
|
|
7
|
+
---
|
|
8
|
+
n## 🚨 铁律:MCP工具优先,禁跑本地脚本
|
|
9
|
+
所有知识查询走 mcp__qoder-knowledge-graph__ 工具(云平台SSE),绝不跑 wlkj.py kg/context/search(本地kg空)。
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## 🔧 仓库根定位(QoderWork 桌面端 vs Qoder IDE/CLI)
|
|
13
|
+
|
|
14
|
+
**后续脚本里的 `$R` 代表仓库根**,先确定它(QoderWork 桌面端工作目录不是仓库根,相对路径会失效):
|
|
15
|
+
```bash
|
|
16
|
+
R=$(python ~/.qoderwork/repo_root.py 2>/dev/null || python3 ~/.qoderwork/repo_root.py 2>/dev/null) || R=.
|
|
17
|
+
PY=$(python --version >/dev/null 2>&1 && echo python || echo python3)
|
|
18
|
+
```
|
|
19
|
+
> `repo_root.py` 从 `~/.qoderwork/mcp.json` 反推仓库根;失败回退 `.`(IDE/CLI 工作目录即仓库根)。找不到时先跑 `$PY "$R/.qoder/scripts/orchestration/wlkj.py" install-qw`。
|
|
20
|
+
|
|
21
|
+
# PRD Review Skill
|
|
22
|
+
|
|
23
|
+
## ⚙️ 自取上下文(Quest / QoderWork 无 hook 注入,必须自读)
|
|
24
|
+
|
|
25
|
+
- **当前身份**:当前评审人。读法:先 `R=$(python ~/.qoderwork/repo_root.py 2>/dev/null || python3 ~/.qoderwork/repo_root.py 2>/dev/null) || R=.` 定位仓库根,
|
|
26
|
+
再 `$PY "$R/.qoder/scripts/foundation/core/paths.py" whoami`(输出开发者名;空=未初始化)。
|
|
27
|
+
⚠️ 勿用裸相对路径 `.qoder/.developer`(QoderWork 桌面端 cwd 不在仓库根,会读不到而误报未初始化)。
|
|
28
|
+
- `data/index/.index-meta.json` — 图谱新鲜度(影响"现实锚定"能否校验)
|
|
29
|
+
- 评审的 PRD 文件路径由用户指定;若用户没给路径,扫 `data/docs/prd/` 和
|
|
30
|
+
`workspace/members/{dev}/drafts/` 列出最近的 PRD 让用户选
|
|
31
|
+
|
|
32
|
+
## 评审检查项 (Checklist)
|
|
33
|
+
- [ ] 用户故事清晰
|
|
34
|
+
- [ ] 验收标准可测(Given-When-Then)
|
|
35
|
+
- [ ] 优先级已标(P0/P1/P2/P3)
|
|
36
|
+
- [ ] 模块/领域已识别
|
|
37
|
+
- [ ] 非功能性需求已列
|
|
38
|
+
- [ ] 边界情况已考虑(每个功能 ≥2 个异常场景)
|
|
39
|
+
- [ ] 依赖已识别
|
|
40
|
+
|
|
41
|
+
## 评审输出
|
|
42
|
+
|
|
43
|
+
报告:PASS 或 列出需修复的问题清单
|
|
44
|
+
若 PASS:更新任务状态为 prd_review passed
|
|
45
|
+
|
|
46
|
+
## 自动化校验(推荐)
|
|
47
|
+
|
|
48
|
+
跑一次 EVA 门禁给出客观分数:
|
|
49
|
+
```bash
|
|
50
|
+
$PY "$R/.qoder/scripts/orchestration/wlkj.py" eval <PRD路径> [原型HTML路径]
|
|
51
|
+
```
|
|
52
|
+
分数 ≥80% 才能发布。低于 80% 把 EVA 报告的问题合并进上面的清单。
|
|
53
|
+
|
|
54
|
+
## 评审完成埋点
|
|
55
|
+
|
|
56
|
+
评审出结论(无论 PASS/打回)后埋点,供 /wl-status 统计评审活跃度:
|
|
57
|
+
```bash
|
|
58
|
+
$PY "$R/.qoder/scripts/orchestration/wlkj.py" learn record review_done "{\"prd\": \"<PRD文件名>\", \"verdict\": \"<PASS|打回>\", \"score\": <EVA分数或空>}"
|
|
59
|
+
```
|
|
60
|
+
> 失败静默忽略。
|
|
@@ -1,80 +1,84 @@
|
|
|
1
|
-
---
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
##
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
>
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
>
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
1
|
+
---
|
|
2
|
+
n## 🚨 铁律:MCP工具优先,禁跑本地脚本
|
|
3
|
+
所有知识查询走 mcp__qoder-knowledge-graph__ 工具(云平台SSE),绝不跑 wlkj.py kg/context/search(本地kg空)。
|
|
4
|
+
name: wl-code
|
|
5
|
+
description: "按开发 Spec 严格实现代码(/wl-code 命令入口)。Implement code following a Spec strictly. 需用户确认(DANGEROUS)。"
|
|
6
|
+
trigger: "用户显式打 /wl-code; 或自然语言"写代码""实现这个功能""按spec开发"。需确认"
|
|
7
|
+
---
|
|
8
|
+
n## 🚨 铁律:MCP工具优先,禁跑本地脚本
|
|
9
|
+
所有知识查询走 mcp__qoder-knowledge-graph__ 工具(云平台SSE),绝不跑 wlkj.py kg/context/search(本地kg空)。
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
## 🔧 仓库根定位(QoderWork 桌面端 vs Qoder IDE/CLI)
|
|
13
|
+
|
|
14
|
+
**后续脚本里的 `$R` 代表仓库根**,先确定它(QoderWork 桌面端工作目录不是仓库根,相对路径会失效):
|
|
15
|
+
```bash
|
|
16
|
+
R=$(python ~/.qoderwork/repo_root.py 2>/dev/null || python3 ~/.qoderwork/repo_root.py 2>/dev/null) || R=.
|
|
17
|
+
PY=$(python --version >/dev/null 2>&1 && echo python || echo python3)
|
|
18
|
+
```
|
|
19
|
+
> `repo_root.py` 从 `~/.qoderwork/mcp.json` 反推仓库根;失败回退 `.`(IDE/CLI 工作目录即仓库根)。找不到时先跑 `$PY "$R/.qoder/scripts/orchestration/wlkj.py" install-qw`。
|
|
20
|
+
|
|
21
|
+
# wl-code — 按 Spec 实现代码(/wl-code 命令入口)
|
|
22
|
+
|
|
23
|
+
> 这是 `/wl-code` 命令的 skill 入口。让 QoderWork 的 `/` 列表也能用 `/wl-code`。
|
|
24
|
+
> ⚠️ DANGEROUS 操作(写代码),执行前向用户确认范围。
|
|
25
|
+
> 完整规则见功能型 skill `.qoder/skills/spec-coder/SKILL.md`
|
|
26
|
+
> 和命令 `.qoder/commands/wl-code.md`。
|
|
27
|
+
|
|
28
|
+
## ⚙️ 自取上下文(Quest / QoderWork 无 hook 注入,必须自读)
|
|
29
|
+
|
|
30
|
+
- **当前身份**:当前开发者。读法:先 `R=$(python ~/.qoderwork/repo_root.py 2>/dev/null || python3 ~/.qoderwork/repo_root.py 2>/dev/null) || R=.` 定位仓库根,
|
|
31
|
+
再 `$PY "$R/.qoder/scripts/foundation/core/paths.py" whoami`(输出开发者名;空=未初始化)。
|
|
32
|
+
⚠️ 勿用裸相对路径 `.qoder/.developer`(QoderWork 桌面端 cwd 不在仓库根,会读不到而误报未初始化)。
|
|
33
|
+
- **活动任务**:当前活动任务(找对应的 spec)。读法 `$PY "$R/.qoder/scripts/foundation/core/paths.py" current-task`(输出任务路径;空=无活动任务)。
|
|
34
|
+
- 活动任务的 spec:`workspace/specs/` 或 `workspace/tasks/{id}/spec.md`
|
|
35
|
+
|
|
36
|
+
### ⚡ 取全一次到位(spec 里的模块名 → 1 次 context_pack 拿全)
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
cap.mcp.call("context_pack", {"keyword": "..."}) <模块关键词> --platform <web|app> --role dev
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**一次返回**:相关代码文件(第1段) + 字段真名(第3段) + 相关 API(第5段) + Repo Wiki(第7段)。
|
|
43
|
+
拿到后直接 Read 2-3 个命中的代码文件照着写,**不要再 search_index 单词搜**(context 第1段已给全代码路径)。
|
|
44
|
+
> 只有关键词命中太少时,才回退 `search_index.py <词>` 补搜。
|
|
45
|
+
|
|
46
|
+
### 改表/改 Entity 前必查(用知识图谱 MCP,防改崩)
|
|
47
|
+
|
|
48
|
+
> ⚠️ 本段依赖知识图谱 MCP(`cap.mcp.call("search_code", ...)` / `cap.mcp.call("query_schema", ...)`),自动路由。
|
|
49
|
+
> Qoder IDE/Quest/CLI 无 MCP 时:table_impact 无脚本等价,需人工评估改动波及面;真实字段可用 `$PY "$R/.qoder/scripts/orchestration/wlkj.py" search --field <表名>` 查代码侧字段(不含 DB 真实列类型)。
|
|
50
|
+
|
|
51
|
+
1. **改表影响分析**:涉及改数据库表/Entity 时,先 `cap.mcp.call("table_impact", {"table": "表名"})`
|
|
52
|
+
- 查这张表关联哪些 Entity + 影响哪些 Controller/接口。
|
|
53
|
+
- 例:`table_impact(table='quality_case')` → 发现影响 QualityCaseController + 5 个接口。
|
|
54
|
+
- 看完才知道改动波及面,避免改一处崩多处。
|
|
55
|
+
2. **真实字段核对**:写 Entity/SQL 前 `cap.mcp.call("query_schema", {"table": "表名"})`
|
|
56
|
+
- context_pack 不含 DB 表结构(只有代码字段名),写 Entity/DDL 必须单独查真实列。
|
|
57
|
+
- 拿真实列名/类型/注释(含枚举定义),别靠推断。
|
|
58
|
+
- [QAS环境] 表结构与生产一致可放心用。
|
|
59
|
+
|
|
60
|
+
### 排查/修 bug 类先对齐链路(kg 取证,1-2 步定位,禁止空转假设)
|
|
61
|
+
|
|
62
|
+
> 遵守 wl-pipeline 规则 2.6:取证优先用 kg(`cap.mcp.call`),**不许"假设A→假设B→假设C"连环空转**。
|
|
63
|
+
|
|
64
|
+
| 场景 | 对齐链路 | kg 先取证 | 最常见根因 |
|
|
65
|
+
|------|---------|----------|-----------|
|
|
66
|
+
| 后端报错/类型异常 | 前端格式→BO→Entity→DB列 | `query_schema`(DB列类型) + `context_pack`(BO/Entity文件) | String/Date/Long 不一致 |
|
|
67
|
+
| 接口不通/400 | 路由→Controller→Service→Mapper→SQL | `code-api`(路由/参数) + `table_impact`(影响面) | 参数名不匹配/缺@RequestBody |
|
|
68
|
+
| 前端白屏/NaN | 组件→API→响应→字段映射 | `context_pack`(组件/API) + `field_map`(字段映射) | null未处理/字段名拼错 |
|
|
69
|
+
|
|
70
|
+
kg 取证后 Read 命中文件找**不一致点**,定位即动手,**别发散推理**。
|
|
71
|
+
|
|
72
|
+
## 执行
|
|
73
|
+
|
|
74
|
+
1. **加载 Spec**:按 REQ-ID 找 spec;没参数就读 `.qoder/.current-task`
|
|
75
|
+
2. **一次取全上下文**:用上面 context_pack(spec 里的模块名)拿代码+字段+API,再 Read 命中的 2-3 个文件
|
|
76
|
+
3. **按 spec-coder skill 实现**:严格按 spec,遵循 data/code/ 的团队约定
|
|
77
|
+
4. **自检**:
|
|
78
|
+
- [ ] Spec 所有需求都覆盖
|
|
79
|
+
- [ ] 无 TODO/FIXME
|
|
80
|
+
- [ ] 风格跟周围代码一致
|
|
81
|
+
- [ ] 有错误处理
|
|
82
|
+
5. **报告**:告诉用户实现了什么,建议下一步 `/wl-test`
|
|
83
|
+
|
|
84
|
+
详细编码规范见 `.qoder/skills/spec-coder/SKILL.md`。
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
+
n## 🚨 铁律:MCP工具优先,禁跑本地脚本
|
|
3
|
+
所有知识查询走 mcp__qoder-knowledge-graph__ 工具(云平台SSE),绝不跑 wlkj.py kg/context/search(本地kg空)。
|
|
2
4
|
name: wl-prd
|
|
3
5
|
description: "需求: 完整(13章,新功能) / 快速(6章,小改动) / 评审(检查质量)。默认根据描述自动判断。先问平台!"
|
|
4
6
|
trigger: "用户显式打 /wl-prd; 或自然语言'写需求''写PRD''这个需求怎么做'。⚠️铁律: 只要用户打了/wl-prd,不管描述含'报错/无法/bug'(如'养护计划无法提交,时间报错'这种修复型小需求),都必须走本skill产出PRD,绝不跨命令跑去/wl-test"
|
|
5
7
|
---
|
|
8
|
+
n## 🚨 铁律:MCP工具优先,禁跑本地脚本
|
|
9
|
+
所有知识查询走 mcp__qoder-knowledge-graph__ 工具(云平台SSE),绝不跑 wlkj.py kg/context/search(本地kg空)。
|
|
6
10
|
|
|
7
11
|
|
|
8
12
|
## 🔧 仓库根定位(QoderWork 桌面端 vs Qoder IDE/CLI)
|
|
@@ -46,6 +50,8 @@ PY=$(python --version >/dev/null 2>&1 && echo python || echo python3)
|
|
|
46
50
|
> 默认:没说模式 + 像新功能 → 完整;像小改动 → 快速;给了文件 → 评审。
|
|
47
51
|
|
|
48
52
|
---
|
|
53
|
+
n## 🚨 铁律:MCP工具优先,禁跑本地脚本
|
|
54
|
+
所有知识查询走 mcp__qoder-knowledge-graph__ 工具(云平台SSE),绝不跑 wlkj.py kg/context/search(本地kg空)。
|
|
49
55
|
|
|
50
56
|
## 详细流程
|
|
51
57
|
|