@hupan56/wlkj 2.6.0 → 2.7.1

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 (125) hide show
  1. package/bin/cli.js +269 -11
  2. package/package.json +1 -1
  3. package/templates/qoder/agents/insight-planning.md +67 -0
  4. package/templates/qoder/agents/insight-research.md +61 -0
  5. package/templates/qoder/agents/prd-reference.md +8 -2
  6. package/templates/qoder/commands/optional/wl-insight.md +275 -0
  7. package/templates/qoder/commands/{wl-report.md → optional/wl-report.md} +13 -5
  8. package/templates/qoder/commands/{wl-spec.md → optional/wl-spec.md} +1 -1
  9. package/templates/qoder/commands/{wl-status.md → optional/wl-status.md} +28 -2
  10. package/templates/qoder/commands/wl-code.md +10 -2
  11. package/templates/qoder/commands/wl-commit.md +1 -1
  12. package/templates/qoder/commands/wl-design-draw.md +78 -0
  13. package/templates/qoder/commands/wl-design-scan.md +108 -0
  14. package/templates/qoder/commands/wl-design-spec.md +154 -0
  15. package/templates/qoder/commands/wl-design.md +32 -0
  16. package/templates/qoder/commands/wl-init.md +24 -3
  17. package/templates/qoder/commands/wl-prd-full.md +226 -0
  18. package/templates/qoder/commands/wl-prd-quick.md +134 -0
  19. package/templates/qoder/commands/wl-prd-review.md +104 -0
  20. package/templates/qoder/commands/wl-prd.md +17 -311
  21. package/templates/qoder/commands/wl-search.md +66 -30
  22. package/templates/qoder/commands/wl-task.md +290 -59
  23. package/templates/qoder/commands/wl-test.md +92 -24
  24. package/templates/qoder/config.yaml +51 -15
  25. package/templates/qoder/hooks/inject-workflow-state.py +2 -2
  26. package/templates/qoder/hooks/session-start.py +82 -51
  27. package/templates/qoder/rules/wl-pipeline.md +216 -105
  28. package/templates/qoder/scripts/__pycache__/search_index.cpython-39.pyc +0 -0
  29. package/templates/qoder/scripts/archive_prd.py +377 -0
  30. package/templates/qoder/scripts/autotest.py +1715 -0
  31. package/templates/qoder/scripts/autotest_batch.py +224 -0
  32. package/templates/qoder/scripts/autotest_run.py +297 -0
  33. package/templates/qoder/scripts/benchmark.py +210 -209
  34. package/templates/qoder/scripts/build_style_index.py +444 -4
  35. package/templates/qoder/scripts/check_carriers.py +238 -0
  36. package/templates/qoder/scripts/check_mcp.py +298 -0
  37. package/templates/qoder/scripts/check_qoderwork_consistency.py +166 -0
  38. package/templates/qoder/scripts/common/events.py +46 -0
  39. package/templates/qoder/scripts/common/extract.py +419 -0
  40. package/templates/qoder/scripts/common/graph_traverse.py +533 -0
  41. package/templates/qoder/scripts/common/paths.py +89 -0
  42. package/templates/qoder/scripts/common/pip_install.py +144 -0
  43. package/templates/qoder/scripts/common/platform_guard.py +61 -0
  44. package/templates/qoder/scripts/common/search_engine.py +205 -205
  45. package/templates/qoder/scripts/common/terms.py +57 -0
  46. package/templates/qoder/scripts/common/ts_extract.py +536 -0
  47. package/templates/qoder/scripts/context_pack.py +73 -13
  48. package/templates/qoder/scripts/enrich_prompt.py +226 -0
  49. package/templates/qoder/scripts/eval_prd.py +318 -231
  50. package/templates/qoder/scripts/export.py +487 -487
  51. package/templates/qoder/scripts/extract_api_params.py +246 -0
  52. package/templates/qoder/scripts/extract_routes.py +54 -0
  53. package/templates/qoder/scripts/extract_routes_tree.py +78 -0
  54. package/templates/qoder/scripts/fill_prototype.py +707 -0
  55. package/templates/qoder/scripts/gen_design_doc.py +394 -0
  56. package/templates/qoder/scripts/git_sync.py +27 -15
  57. package/templates/qoder/scripts/init_doctor.py +292 -40
  58. package/templates/qoder/scripts/install_qoderwork.py +366 -9
  59. package/templates/qoder/scripts/kg.py +708 -0
  60. package/templates/qoder/scripts/kg_auto_login.py +196 -0
  61. package/templates/qoder/scripts/kg_build.py +612 -0
  62. package/templates/qoder/scripts/kg_build_db.py +327 -0
  63. package/templates/qoder/scripts/kg_duckdb.py +549 -0
  64. package/templates/qoder/scripts/kg_incremental.py +393 -0
  65. package/templates/qoder/scripts/kg_link_db.py +224 -0
  66. package/templates/qoder/scripts/kg_mcp_server.py +801 -0
  67. package/templates/qoder/scripts/kg_semantic.py +150 -0
  68. package/templates/qoder/scripts/kg_test_runner.py +241 -0
  69. package/templates/qoder/scripts/lanhu_stdio_wrapper.py +119 -0
  70. package/templates/qoder/scripts/learn.py +118 -39
  71. package/templates/qoder/scripts/learn_aggregate.py +201 -0
  72. package/templates/qoder/scripts/mcp_launcher.py +359 -0
  73. package/templates/qoder/scripts/mysql_mcp_server.py +396 -0
  74. package/templates/qoder/scripts/repo_root.py +106 -0
  75. package/templates/qoder/scripts/role.py +12 -0
  76. package/templates/qoder/scripts/run_weekly_update.bat +5 -0
  77. package/templates/qoder/scripts/run_weekly_update.sh +5 -0
  78. package/templates/qoder/scripts/search_index.py +307 -60
  79. package/templates/qoder/scripts/secure-ls.js +5640 -0
  80. package/templates/qoder/scripts/setup.py +706 -641
  81. package/templates/qoder/scripts/setup_lanhu.py +963 -0
  82. package/templates/qoder/scripts/status.py +250 -11
  83. package/templates/qoder/scripts/sync_carriers.py +259 -0
  84. package/templates/qoder/scripts/syncgate.py +2 -2
  85. package/templates/qoder/scripts/task.py +75 -0
  86. package/templates/qoder/scripts/team_sync.py +60 -4
  87. package/templates/qoder/scripts/workspace_init.py +1 -1
  88. package/templates/qoder/skills/design-import/SKILL.md +226 -0
  89. package/templates/qoder/skills/design-import/figma-workflow.md +81 -0
  90. package/templates/qoder/skills/design-review/SKILL.md +82 -25
  91. package/templates/qoder/skills/prd-generator/SKILL.md +184 -60
  92. package/templates/qoder/skills/prd-review/SKILL.md +18 -1
  93. package/templates/qoder/skills/prompt-enrich/SKILL.md +90 -0
  94. package/templates/qoder/skills/prototype-generator/SKILL.md +256 -141
  95. package/templates/qoder/skills/prototype-generator/SKILL.md.zcode-79180-2af4721f-f9a6-412c-88db-c0af680d211b.tmp +0 -0
  96. package/templates/qoder/skills/spec-coder/SKILL.md +18 -1
  97. package/templates/qoder/skills/spec-generator/SKILL.md +18 -1
  98. package/templates/qoder/skills/test-generator/SKILL.md +15 -2
  99. package/templates/qoder/skills/wl-code/SKILL.md +55 -36
  100. package/templates/qoder/skills/wl-commit/SKILL.md +89 -76
  101. package/templates/qoder/skills/wl-design/SKILL.md +55 -0
  102. package/templates/qoder/skills/wl-init/SKILL.md +76 -67
  103. package/templates/qoder/skills/wl-insight/SKILL.md +201 -81
  104. package/templates/qoder/skills/wl-prd-full/SKILL.md +69 -0
  105. package/templates/qoder/skills/wl-prd-quick/SKILL.md +49 -0
  106. package/templates/qoder/skills/wl-prd-review/SKILL.md +34 -0
  107. package/templates/qoder/skills/wl-report/SKILL.md +131 -107
  108. package/templates/qoder/skills/wl-search/SKILL.md +141 -75
  109. package/templates/qoder/skills/wl-spec/SKILL.md +49 -39
  110. package/templates/qoder/skills/wl-status/SKILL.md +83 -61
  111. package/templates/qoder/skills/wl-task/SKILL.md +132 -58
  112. package/templates/qoder/skills/wl-test/SKILL.md +406 -40
  113. package/templates/qoder/templates/prototype-app.html +13 -8
  114. package/templates/qoder/templates/prototype-web.html +376 -93
  115. package/templates/root/AGENTS.md +89 -34
  116. package/templates/root/requirements.txt +21 -0
  117. package/templates/root//344/275/277/347/224/250/350/257/264/346/230/216.md +259 -259
  118. package/templates/root//346/226/260/346/211/213/346/214/207/345/215/227.md +186 -186
  119. package/templates/qoder/agents/prd-planning.md +0 -57
  120. package/templates/qoder/agents/prd-research.md +0 -34
  121. package/templates/qoder/commands/wl-insight.md +0 -51
  122. package/templates/qoder/scripts/__pycache__/init_doctor.cpython-39.pyc +0 -0
  123. package/templates/qoder/scripts/__pycache__/setup.cpython-39.pyc +0 -0
  124. package/templates/qoder/scripts/common/__pycache__/developer.cpython-39.pyc +0 -0
  125. package/templates/qoder/skills/wl-prd/SKILL.md +0 -92
@@ -1,107 +1,131 @@
1
- ---
2
- name: wl-report
3
- description: "生成日报/周报,严格按当前开发者隔离。Generate daily/weekly work report, isolated by current developer. 用户说'写日报''周报''我今天干了啥''这周做了什么''出个报告'时触发。"
4
- trigger: "用户说'日报''周报''我干了啥''今天做了什么''本周工作''出报告''/wl-report'"
5
- ---
6
-
7
- # wl-report — 日报 / 周报(按开发者隔离)
8
-
9
- > ⚠️ 所有数据严格按当前开发者过滤。`.developer` 未设置 → 拒绝并提示先 `/wl-init`。
10
-
11
- ## ⚙️ 自取上下文(Quest / QoderWork 无 hook 注入,必须自读)
12
-
13
- - `.qoder/.developer` — **必需**。未设置则停止,提示用户先初始化
14
- - `.qoder/.current-task` 当前任务
15
- - `workspace/members/{dev}/journal/` — 历史日报/周报
16
- - `workspace/members/{dev}/drafts/` 今日/本周产出的 PRD/原型草稿
17
-
18
- ## 模式自动判断
19
-
20
- - **周五**(周一=1,周五=5)→ 周报模式
21
- - 其他工作日 → 日报模式
22
- - 用户明说"周报/日报" 覆盖自动判断
23
-
24
- ## 数据采集(全部按当前开发者过滤)
25
-
26
- ```bash
27
- # 1. 我的任务
28
- python .qoder/scripts/task.py list --mine
29
-
30
- # 2. 我的提交(按 git author 过滤)
31
- git log --author=<开发者名> --since="<时间范围>" --pretty=format:"%h %s (%ar)" --no-merges
32
-
33
- # 3. 我的产出(drafts 目录按时间筛)
34
- # 读 workspace/members/{dev}/drafts/ 下今日/本周改动的文件
35
- ```
36
-
37
- ## 报告结构(中文)
38
-
39
- ### 日报
40
- ```
41
- # 工作日报 - <开发者> - <日期>
42
-
43
- ## 今日完成
44
- - [任务名] 具体做了什么(基于 git commit + task finish)
45
-
46
- ## 进行中
47
- - [任务名] 当前进度
48
-
49
- ## 明日计划
50
- - (从 in_progress 任务 + roadmap 推断)
51
-
52
- ## 阻塞/风险
53
- - (如有)
54
- ```
55
-
56
- ### 周报
57
- ```
58
- # 周报 - <开发者> - <周范围>
59
-
60
- ## 本周完成
61
- - 按任务/需求维度汇总,不按天
62
-
63
- ## 关键产出
64
- - PRD: REQ-XXX
65
- - 原型: prototype-xxx.html
66
- - 提交数: N
67
-
68
- ## 下周计划
69
- - (从 roadmap Next 段取)
70
-
71
- ## 反思/改进
72
- - (可选,从 learning/feedback 推)
73
- ```
74
-
75
- ## 输出 + 同步
76
-
77
- 保存到 `workspace/members/{dev}/journal/{YYYY-MM-DD}-{daily|weekly}.md`,然后:
78
- ```bash
79
- python .qoder/scripts/team_sync.py push
80
- ```
81
- 让团队/上级看到。
82
-
83
- ## 推送通知(可选,二选一)
84
-
85
- 生成报告后,如果用户要求"发到飞书/钉钉/群里",按环境选:
86
-
87
- ### 方式 A: QoderWork 连接器(QoderWork 桌面端,交互式)
88
- 如果你在 **QoderWork** 里运行(有连接器):
89
- 1. 检查用户是否装了飞书/钉钉连接器(Settings → Connectors & MCP)
90
- 2. 用连接器把报告发到指定群/个人
91
- 3. 这是最自然的方式(富文本卡片、@提及、审批流转都支持)
92
- > 提示用户: "要我发到飞书吗?先在 QoderWork Settings → Connectors 装飞书连接器"
93
-
94
- ### 方式 B: webhook(任何环境,脚本化)
95
- 如果没有连接器,用引擎自带的 webhook 推送:
96
- ```bash
97
- python .qoder/scripts/report.py daily --push-feishu
98
- python .qoder/scripts/report.py weekly --push-feishu
99
- ```
100
- 这会通过 config.yaml 里配的飞书 bot webhook 发卡片通知。
101
- 两种方式不冲突,连接器更富交互,webhook 更可靠无依赖。
102
-
103
- ## 输出规则
104
-
105
- - 报告是中文,简洁(日报 ≤20 行,周报 ≤40 行)
106
- - 不要把 git log 原文贴进去,提炼成"做了什么"
107
- - 如果某天没提交也没 finish 任务,如实写"今日主要在调研/评审,无代码产出",不编造
1
+ ---
2
+ name: wl-report
3
+ description: "生成日报/周报,严格按当前开发者隔离。Generate daily/weekly work report, isolated by current developer. 用户说'写日报''周报''我今天干了啥''这周做了什么''出个报告'时触发。"
4
+ trigger: "用户说'日报''周报''我干了啥''今天做了什么''本周工作''出报告''/wl-report'"
5
+ ---
6
+
7
+
8
+ ## 🔧 仓库根定位(QoderWork 桌面端 vs Qoder IDE/CLI)
9
+
10
+ **后续脚本里的 `$R` 代表仓库根**,先确定它(QoderWork 桌面端工作目录不是仓库根,相对路径会失效):
11
+ ```bash
12
+ R=$(python ~/.qoderwork/repo_root.py 2>/dev/null) || R=.
13
+ ```
14
+ > `repo_root.py` `~/.qoderwork/mcp.json` 反推仓库根;失败回退 `.`(IDE/CLI 工作目录即仓库根)。找不到时先跑 `python .qoder/scripts/install_qoderwork.py`。
15
+
16
+ # wl-report日报 / 周报(按开发者隔离)
17
+
18
+ > ⚠️ 所有数据严格按当前开发者过滤。`.developer` 未设置 → 拒绝并提示先 `/wl-init`。
19
+
20
+ ## ⚙️ 自取上下文(Quest / QoderWork 无 hook 注入,必须自读)
21
+
22
+ - `.qoder/.developer` **必需**。未设置则停止,提示用户先初始化
23
+ - `.qoder/.current-task` — 当前任务
24
+ - `workspace/members/{dev}/journal/` — 历史日报/周报
25
+ - `workspace/members/{dev}/drafts/` — 今日/本周产出的 PRD/原型草稿
26
+
27
+ ## 模式自动判断
28
+
29
+ - **周五**(周一=1,周五=5)→ 周报模式
30
+ - 其他工作日 日报模式
31
+ - 用户明说"周报/日报" 覆盖自动判断
32
+
33
+ ## 数据采集(全部按当前开发者过滤)
34
+
35
+ ```bash
36
+ # 1. 我的任务
37
+ python "$R/.qoder/scripts/task.py" list --mine
38
+
39
+ # 2. 我的提交(按 git author 过滤)
40
+ git log --author=<开发者名> --since="<时间范围>" --pretty=format:"%h %s (%ar)" --no-merges
41
+
42
+ # 3. 我的产出(drafts 目录按时间筛)
43
+ # 读 workspace/members/{dev}/drafts/ 下今日/本周改动的文件
44
+ ```
45
+
46
+ ## 🧩 QoderWork 增强:日历补数据(可选 · 无连接器则自动回退)
47
+
48
+ > 依赖 **QoderWork 桌面端连接器**(Settings → Connectors,授权 Microsoft 365 或 macOS)。
49
+ > **纯 Qoder IDE / CLI 没有连接器 → 本段不生效,日报照常只用上面 3 个数据源,功能完全不受影响。**
50
+ > 探测方式:仅当运行环境提供了「日历/会议」工具可直接读取时才用;看不到这些工具就跳过。
51
+
52
+ PM / 设计岗常一天在开会、评审,没有 git 提交,纯靠 commit 的日报会很空。
53
+ 若日历连接器可用,把它当作**第 4 个数据源**追加进来:
54
+ - 读取当天 / 本周已发生的日历事件(评审、站会、需求对齐、客户沟通等)
55
+ - 把"参加 XXX 评审 / 与 XX 对齐需求"补进「今日完成」或「进行中」
56
+ - 全天事件(请假 / 外出 / 培训)如实标进「阻塞/风险」
57
+
58
+ > 只增不减:会议信息是**追加**到报告,绝不替代上面的任务 / 提交 / 产出数据。
59
+ > 回退保证:读取失败或无连接器,只输出一句 `[日历数据未启用:非 QoderWork 或未授权连接器]` 即可,不报错、不阻塞出报告。
60
+
61
+ ## 报告结构(中文)
62
+
63
+ ### 日报
64
+ ```
65
+ # 工作日报 - <开发者> - <日期>
66
+
67
+ ## 今日完成
68
+ - [任务名] 具体做了什么(基于 git commit + task finish)
69
+
70
+ ## 进行中
71
+ - [任务名] 当前进度
72
+
73
+ ## 明日计划
74
+ - (从 in_progress 任务 + roadmap 推断)
75
+
76
+ ## 阻塞/风险
77
+ - (如有)
78
+ ```
79
+
80
+ ### 周报
81
+ ```
82
+ # 周报 - <开发者> - <周范围>
83
+
84
+ ## 本周完成
85
+ - 按任务/需求维度汇总,不按天
86
+
87
+ ## 关键产出
88
+ - PRD: REQ-XXX
89
+ - 原型: prototype-xxx.html
90
+ - 提交数: N
91
+
92
+ ## 下周计划
93
+ - (从 roadmap Next 段取)
94
+
95
+ ## 反思/改进
96
+ - (可选,从 learning/feedback 推)
97
+ ```
98
+
99
+ ## 输出 + 同步
100
+
101
+ 保存到 `workspace/members/{dev}/journal/{YYYY-MM-DD}-{daily|weekly}.md`,然后:
102
+ ```bash
103
+ python "$R/.qoder/scripts/team_sync.py" push
104
+ ```
105
+ 让团队/上级看到。
106
+
107
+ ## 推送通知(可选,二选一)
108
+
109
+ 生成报告后,如果用户要求"发到飞书/钉钉/群里",按环境选:
110
+
111
+ ### 方式 A: QoderWork 连接器(QoderWork 桌面端,交互式)
112
+ 如果你在 **QoderWork** 里运行(有连接器):
113
+ 1. 检查用户是否装了飞书/钉钉连接器(Settings → Connectors & MCP)
114
+ 2. 用连接器把报告发到指定群/个人
115
+ 3. 这是最自然的方式(富文本卡片、@提及、审批流转都支持)
116
+ > 提示用户: "要我发到飞书吗?先在 QoderWork Settings → Connectors 装飞书连接器"
117
+
118
+ ### 方式 B: webhook(任何环境,脚本化)
119
+ 如果没有连接器,用引擎自带的 webhook 推送:
120
+ ```bash
121
+ python "$R/.qoder/scripts/report.py" daily --push-feishu
122
+ python "$R/.qoder/scripts/report.py" weekly --push-feishu
123
+ ```
124
+ 这会通过 config.yaml 里配的飞书 bot webhook 发卡片通知。
125
+ 两种方式不冲突,连接器更富交互,webhook 更可靠无依赖。
126
+
127
+ ## 输出规则
128
+
129
+ - 报告是中文,简洁(日报 ≤20 行,周报 ≤40 行)
130
+ - 不要把 git log 原文贴进去,提炼成"做了什么"
131
+ - 如果某天没提交也没 finish 任务,如实写"今日主要在调研/评审,无代码产出",不编造
@@ -1,75 +1,141 @@
1
- ---
2
- name: wl-search
3
- description: "查代码/业务/API/字段/PRD 的唯一入口。Search code index by keyword, API, style, field, PRD. 用户说'查一下''代码在哪''搜保险''考勤API''字段含义''帮我找''有哪些''哪些文件'时触发。"
4
- trigger: "用户问代码/业务/API/字段/页面在哪,或说'查''搜''找''有哪些文件''定位'"
5
- ---
6
-
7
- # wl-search — 代码/知识图谱搜索
8
-
9
- > ⚠️ 这是查代码/业务/API 的**唯一入口**。禁止直接 grep `data/code/` 全库。
10
-
11
- ## ⚙️ 自取上下文(Quest / QoderWork 无 hook 注入,必须自读)
12
-
13
- - `data/index/.index-meta.json` — 图谱新鲜度;若 >7 天或不存在,提示用户
14
- "知识图谱可能过期,建议先说'初始化'(/wl-init)刷新",但不要阻塞本次搜索
15
- - 平台意图:用户提到"Web/PC/管理端"→ `--platform web`;
16
- "APP/H5/移动端"→ `--platform app`;不明确就不加该 flag
17
-
18
- ## 执行
19
-
20
- 直接把用户的查询关键词传给脚本(脚本自带中文扩展 + 平台过滤):
21
-
22
- ```bash
23
- # 关键词搜代码(最常用)
24
- python .qoder/scripts/search_index.py <关键词> [--platform web|app]
25
-
26
- # 搜 PRD
27
- python .qoder/scripts/search_index.py --prd <关键词>
28
-
29
- # 搜 API 路径
30
- python .qoder/scripts/search_index.py --api <关键词>
31
-
32
- # 搜字段用法(返回字段标签 + 使用文件)
33
- python .qoder/scripts/search_index.py --field <字段名>
34
-
35
- # 搜同类页面示例(table/form/detail/modal/dashboard)
36
- python .qoder/scripts/search_index.py --style <类型> [--platform web|app]
37
-
38
- # 浏览所有关键词 Top50
39
- python .qoder/scripts/search_index.py --list
40
-
41
- # 项目模块概览
42
- python .qoder/scripts/search_index.py --modules
43
-
44
- # 组件使用统计
45
- python .qoder/scripts/search_index.py --components
46
- ```
47
-
48
- 如果用户没给关键词,跑 `--list` 列出热门关键词让用户选。
49
-
50
- ## 结果使用规则
51
-
52
- 脚本返回的是**紧凑结果**(每组最多 5 个文件,路径已缩短):
53
- 1. 从结果里挑最相关的 2-3 个文件
54
- 2. **只读这几个文件**(用 Read 工具)
55
- 3. 基于读到的真实代码回答用户问题
56
- 4. 不要把脚本原始输出整个贴给用户 —— 提炼后再回答
57
-
58
- ## 高频场景对照
59
-
60
- | 用户问法 | 该跑的命令 |
61
- |---------|-----------|
62
- | "考勤代码在哪" | `search_index.py 考勤` `attendance` |
63
- | "保险定时任务" | `search_index.py 保险` |
64
- | "薪资 API" | `search_index.py --api salary` |
65
- | "nickName 字段在哪用" | `search_index.py --field nickName` |
66
- | "列表页有哪些例子(Web)" | `search_index.py --style table --platform web` |
67
- | "保险相关的 PRD" | `search_index.py --prd 保险` |
68
-
69
- ## 一次取全(推荐用于写 PRD/Spec 前)
70
-
71
- 如果要一次性拿到代码+页面+字段+PRD+API+样式+图标,用 Fast Path:
72
- ```bash
73
- python .qoder/scripts/context_pack.py <业务词> --platform <web|app>
74
- ```
75
- 返回 7 个章节的 markdown,比逐个 search 更省轮次。
1
+ ---
2
+ name: wl-search
3
+ description: "查代码/业务/API/字段/PRD + 知识图谱(影响分析/覆盖矩阵/功能画像/业务流程/多跳遍历)的唯一入口。用户说'查一下''代码在哪''搜保险''考勤API''字段含义''改这个影响谁''哪些功能没测试''资产盘点有几步''XX功能画像'时触发。"
4
+ trigger: "用户问代码/业务/API/字段/页面在哪,或说'查''搜''找''有哪些文件''定位''影响''覆盖''功能画像''业务流程''调用链'"
5
+ ---
6
+
7
+
8
+ # wl-search — 代码 / 知识图谱搜索
9
+
10
+ ## 🔧 仓库根定位(QoderWork 桌面端 vs Qoder IDE/CLI)
11
+
12
+ **后续脚本里的 `$R` 代表仓库根**,先确定它(QoderWork 桌面端工作目录不是仓库根,相对路径会失效):
13
+ ```bash
14
+ R=$(python ~/.qoderwork/repo_root.py 2>/dev/null) || R=.
15
+ ```
16
+ > `repo_root.py` 从 `~/.qoderwork/mcp.json` 反推仓库根;失败回退 `.`(IDE/CLI 工作目录即仓库根)。找不到时先跑 `python .qoder/scripts/install_qoderwork.py`。
17
+
18
+ > ⚠️ 这是查代码、业务、知识图谱的**唯一入口**。禁止直接 grep `data/code/` 全库。
19
+
20
+ ## ⚙️ 自取上下文(Quest / QoderWork 无 hook 注入,必须自读)
21
+
22
+ - `data/index/.index-meta.json` — 图谱新鲜度;若 >7 天或不存在,提示用户
23
+ "知识图谱可能过期,建议先说'初始化'(/wl-init)刷新",但不要阻塞本次搜索
24
+ - 平台意图:用户提到"Web/PC/管理端"→ `--platform web`;
25
+ "APP/H5/移动端"→ `--platform app`;不明确就不加该 flag
26
+
27
+ ## 双轨执行:kg.py(全系列通用) / MCP(仅 QoderWork)
28
+
29
+ **所有能力都有两条路,功能等价:**
30
+
31
+ - **QoderWork 环境**(有 `mcp__qoder-knowledge-graph` 工具):AI 直接调 MCP 工具,更快
32
+ - **Qoder IDE / Quest / CLI**(无 MCP):一律跑 `python "$R/.qoder/scripts/kg.py" <子命令>`
33
+
34
+ > 不确定在哪个环境?优先试 MCP 工具;MCP 工具不存在就用 kg.py。两条路返回的数据一致。
35
+
36
+ ## 能力总表(自然语言 命令)
37
+
38
+ ### A. 基础搜索(找文件/接口/需求)
39
+
40
+ | 用户问法 | kg.py 命令 | MCP 工具 |
41
+ |---------|-----------|---------|
42
+ | "考勤代码在哪""搜保险" | `kg.py search <关键词> [--platform web\|app]` | search_code |
43
+ | "薪资 API""有哪些接口" | `kg.py api <关键词>` | search_api |
44
+ | "保险相关的 PRD"(防重复造轮子) | `kg.py prd <关键词>` | search_prd |
45
+
46
+ ### B. 知识图谱高级能力(PM/开发/测试最常用)
47
+
48
+ | 用户问法 | kg.py 命令 | MCP 工具 | 谁最该用 |
49
+ |---------|-----------|---------|---------|
50
+ | "改 /asset 影响哪些页面" | `kg.py impact <端点>` | get_impact | 开发改接口前 |
51
+ | "handleExport 的完整关联" | `kg.py context360 <符号>` | context_360 | 开发/测试 |
52
+ | "哪些功能没测试""回归盲区" | `kg.py coverage` | coverage_matrix | **PM/测试/管理** |
53
+ | "资产管理功能画像"(几端点几按钮几测试) | `kg.py feature <功能名>` | feature_overview | **PM 写 PRD 前** |
54
+ | "资产盘点有几步"(业务流程链) | `kg.py workflow <模块名>` | get_workflow | **PM/测试** |
55
+ | "从资产管理能到哪些实体"(多跳遍历) | `kg.py hop <符号> [--depth 1-5]` | multi_hop | 开发/架构 |
56
+ | "考勤的 Wiki 文档"(比读源码省 token) | `kg.py wiki <关键词>` | search_wiki | 所有人 |
57
+
58
+ ### C. 设计/原型辅助(设计师/PM 出原型前)
59
+
60
+ | 用户问法 | kg.py 命令 | MCP 工具 |
61
+ |---------|-----------|---------|
62
+ | "用真实数据预填原型" | `kg.py fill-prototype <关键词> [--platform]` | fill_prototype |
63
+ | "项目设计规范"(布局/配色/组件) | `kg.py design-system [--platform]` | get_design_system |
64
+
65
+ ### D. 字段 / 页面风格 / 组件(写 PRD/原型参考)
66
+
67
+ 这些仍走 search_index.py(kg.py 未单独封装,直接用):
68
+
69
+ ```bash
70
+ # 搜字段用法(返回字段标签 + 使用文件)
71
+ python "$R/.qoder/scripts/search_index.py" --field <字段名>
72
+
73
+ # 搜同类页面示例(table/form/detail/modal/dashboard)
74
+ python "$R/.qoder/scripts/search_index.py" --style <类型> [--platform web|app]
75
+
76
+ # 浏览所有关键词 Top50
77
+ python "$R/.qoder/scripts/search_index.py" --list
78
+
79
+ # 项目模块概览
80
+ python "$R/.qoder/scripts/search_index.py" --modules
81
+
82
+ # 组件使用统计
83
+ python "$R/.qoder/scripts/search_index.py" --components
84
+ ```
85
+
86
+ ## 一次取全(推荐写 PRD/Spec 前)
87
+
88
+ 要一次性拿到代码+页面+字段+PRD+API+样式+图标,用上下文打包,支持**角色裁剪**只看相关部分:
89
+
90
+ ```bash
91
+ python "$R/.qoder/scripts/kg.py" context <业务词> --platform <web|app> --role <pm|design|dev|test|admin>
92
+ ```
93
+
94
+ 角色裁剪说明:
95
+ - `--role pm`:只看字段+PRD+API,不看代码噪音(**PM 首选**)
96
+ - `--role design`:只看页面示例+布局指纹+风格速查
97
+ - `--role dev`:只看代码+字段+API+Wiki
98
+ - `--role test`:只看代码+PRD+API
99
+
100
+ > 等价旧命令:`python "$R/.qoder/scripts/context_pack.py" <业务词> --platform <web|app>`
101
+
102
+ ## 决策树:该用哪个能力?
103
+
104
+ ```
105
+ 用户想查什么?
106
+ ├─ "这个东西有了吗/在哪" → search(找文件)/ prd(找需求)/ api(找接口)
107
+ ├─ "这个功能现在啥样" → feature(画像)+ context --role pm
108
+ ├─ "改这个会影响谁" → impact
109
+ ├─ "这个流程有几步" → workflow
110
+ ├─ "哪些功能缺测试" → coverage
111
+ ├─ "XX 谁调用/调用链" → context360 或 hop
112
+ └─ 要出原型/查风格 → design-system + fill-prototype
113
+ ```
114
+
115
+ ## 结果使用规则
116
+
117
+ 1. 从结果里挑最相关的 2-3 个文件
118
+ 2. **只读这几个文件**(用 Read 工具)
119
+ 3. 基于读到的真实代码/数据回答用户问题
120
+ 4. 不要把脚本原始输出整个贴给用户 —— 提炼后再回答
121
+
122
+ ## 索引/图谱缺失怎么办
123
+
124
+ kg.py 全容错,索引缺失会给出友好提示。遇到"知识图谱未构建"类提示:
125
+ - 对 AI 说「初始化」(/wl-init)自动刷新
126
+ - 或 `python "$R/.qoder/scripts/kg_build.py"` 手动构建
127
+ - 或 `python "$R/.qoder/scripts/init_doctor.py" --fix` 自检修复
128
+
129
+ ## 高频场景对照
130
+
131
+ | 用户问法 | 该跑的命令 |
132
+ |---------|-----------|
133
+ | "考勤代码在哪" | `kg.py search 考勤` |
134
+ | "改 /asset 接口影响谁" | `kg.py impact /asset` |
135
+ | "哪些功能没测试覆盖" | `kg.py coverage` |
136
+ | "资产管理功能完整吗" | `kg.py feature 资产管理` |
137
+ | "资产盘点业务流程" | `kg.py workflow assets` |
138
+ | "从资产管理关联到哪些" | `kg.py hop 资产管理 --depth 3` |
139
+ | "nickName 字段在哪用" | `search_index.py --field nickName` |
140
+ | "列表页有哪些例子(Web)" | `search_index.py --style table --platform web` |
141
+ | "写 PRD 前一次取全" | `kg.py context 车辆 --role pm` |
@@ -1,39 +1,49 @@
1
- ---
2
- name: wl-spec
3
- description: "从已确认 PRD 生成开发 Spec 文档(/wl-spec 命令入口)。Generate or review technical Spec from PRD + Design. 用户说'生成规格''写spec''出技术方案''把PRD转开发文档'或输入 /wl-spec 时触发。"
4
- trigger: "PRD 确认/发布后;用户说'生成Spec''写技术规格''/wl-spec'"
5
- ---
6
-
7
- # wl-spec — 生成开发 Spec(/wl-spec 命令入口)
8
-
9
- > 这是 `/wl-spec` 命令的 skill 入口。让 QoderWork 的 `/` 列表也能用 `/wl-spec`。
10
- > 完整规则见功能型 skill `.qoder/skills/spec-generator/SKILL.md`
11
- > 和命令 `.qoder/commands/wl-spec.md`。
12
-
13
- ## ⚙️ 自取上下文(Quest / QoderWork 无 hook 注入,必须自读)
14
-
15
- - `.qoder/.developer` — 当前开发者
16
- - `.qoder/.current-task`当前任务(决定 spec 存哪个 task 目录)
17
- - 扫描 PRD 来源:`data/docs/prd/`(已发布)+
18
- `workspace/members/{dev}/drafts/REQ-*.md`(草稿),找出还没 SpecPRD
19
- - 字段命名约定:`python .qoder/scripts/search_index.py --field <字段名>`
20
- - 团队 Java 约定(MyBatis Plus + RESTful + BigDecimal 金额)见
21
- `.qoder/skills/spec-generator/SKILL.md` 的 Step 3
22
-
23
- ## 执行
24
-
25
- 1. 定位 PRD(按 REQ-ID 或最新发布的)
26
- 2. PRD + 相关代码(用 search_index.py 找现有实现模式)
27
- 3. 按 spec-generator skill 生成 spec.md(接口/字段/数据模型/验收标准)
28
- 4. 存到 `workspace/specs/spec-{REQ-ID}-{desc}.md`
29
- 5. 通知开发评审
30
- 6. 发布后自动同步:
31
- ```bash
32
- python .qoder/scripts/team_sync.py push
33
- ```
34
-
35
- ## Review 模式
36
-
37
- `review` 参数 读现有 spec 做评审,给出改进建议,不重新生成。
38
-
39
- 详细生成规则见 `.qoder/skills/spec-generator/SKILL.md`。
1
+ ---
2
+ name: wl-spec
3
+ description: "从已确认 PRD 生成开发 Spec 文档(/wl-spec 命令入口)。Generate or review technical Spec from PRD + Design. 用户说'生成规格''写spec''出技术方案''把PRD转开发文档'或输入 /wl-spec 时触发。"
4
+ trigger: "PRD 确认/发布后;用户说'生成Spec''写技术规格''/wl-spec'"
5
+ ---
6
+
7
+
8
+ ## 🔧 仓库根定位(QoderWork 桌面端 vs Qoder IDE/CLI)
9
+
10
+ **后续脚本里的 `$R` 代表仓库根**,先确定它(QoderWork 桌面端工作目录不是仓库根,相对路径会失效):
11
+ ```bash
12
+ R=$(python ~/.qoderwork/repo_root.py 2>/dev/null) || R=.
13
+ ```
14
+ > `repo_root.py` 从 `~/.qoderwork/mcp.json` 反推仓库根;失败回退 `.`(IDE/CLI 工作目录即仓库根)。找不到时先跑 `python .qoder/scripts/install_qoderwork.py`。
15
+
16
+ # wl-spec生成开发 Spec(/wl-spec 命令入口)
17
+
18
+ > 这是 `/wl-spec` 命令的 skill 入口。让 QoderWork `/` 列表也能用 `/wl-spec`。
19
+ > 完整规则见功能型 skill `.qoder/skills/spec-generator/SKILL.md`
20
+ > 和命令 `.qoder/commands/wl-spec.md`。
21
+ > **模块契约**(输入/输出/校验):`.qoder/contracts/spec.md`
22
+
23
+ ## ⚙️ 自取上下文(Quest / QoderWork 无 hook 注入,必须自读)
24
+
25
+ - `.qoder/.developer` 当前开发者
26
+ - `.qoder/.current-task` 当前任务(决定 spec 存哪个 task 目录)
27
+ - 扫描 PRD 来源:`data/docs/prd/`(已发布)+
28
+ `workspace/members/{dev}/drafts/REQ-*.md`(草稿),找出还没 Spec 的 PRD
29
+ - 字段命名约定:`python "$R/.qoder/scripts/search_index.py" --field <字段名>`
30
+ - 团队 Java 约定(MyBatis Plus + RESTful + BigDecimal 金额)见
31
+ `.qoder/skills/spec-generator/SKILL.md` 的 Step 3
32
+
33
+ ## 执行
34
+
35
+ 1. 定位 PRD(按 REQ-ID 或最新发布的)
36
+ 2. 读 PRD + 相关代码(用 search_index.py 找现有实现模式)
37
+ 3. spec-generator skill 生成 spec.md(接口/字段/数据模型/验收标准)
38
+ 4. 存到 `workspace/specs/REQ-{ID}-{module}.spec.md`(命名与 PRD 的 REQ-ID 一致,便于贯穿检索)
39
+ 5. 通知开发评审
40
+ 6. 发布后自动同步:
41
+ ```bash
42
+ python "$R/.qoder/scripts/team_sync.py" push
43
+ ```
44
+
45
+ ## Review 模式
46
+
47
+ 带 `review` 参数 → 读现有 spec 做评审,给出改进建议,不重新生成。
48
+
49
+ 详细生成规则见 `.qoder/skills/spec-generator/SKILL.md`。