@hupan56/wlkj 2.6.0 → 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 (125) hide show
  1. package/bin/cli.js +261 -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,81 +1,201 @@
1
- ---
2
- name: wl-insight
3
- description: "反馈分析 + 数据指标复盘。Feedback analysis + metrics review. 用户说'用户反馈''数据怎么样''转化漏斗''留存分析''痛点''北欧星指标''A/B 结果'时触发。"
4
- trigger: "用户说'用户反馈''数据怎么样''转化''留存''痛点''指标''洞察''/wl-insight'"
5
- ---
6
-
7
- # wl-insight — 反馈分析 + 指标复盘
8
-
9
- 两类分析(用户没指定就问要做哪种):
10
-
11
- ## ⚙️ 自取上下文(Quest / QoderWork 无 hook 注入,必须自读)
12
-
13
- - `.qoder/.developer` — 当前分析师
14
- - `.qoder/learning/feedback.jsonl` 历史反馈记录(可能为空)
15
- - 用户需提供:反馈原文 / 指标数据(CSV、表格、口述均可)
16
- - 若用户既没给反馈也没给数据:先问"你是要分析用户反馈,还是看业务指标?数据在哪?"
17
-
18
- ## 类型 1:feedback(反馈分析)
19
-
20
- 输入:用户反馈原文(一条或多条)
21
-
22
- 分析步骤:
23
- 1. **分类**:feature_request / bug / UX / performance / praise / question
24
- 2. **情感**:正面 / 中性 / 负面
25
- 3. **痛点提取**:频率 × 严重度 排序,Top 10 带原文引用
26
- 4. **建议**:每个高频痛点对应一个改进方向(可挂到 /wl-task)
27
-
28
- 输出结构:
29
- ```
30
- # 反馈分析报告 - <日期>
31
-
32
- ## 概览
33
- - 总条数 / 正负比 / Top3 分类
34
-
35
- ## 痛点 Top 10
36
- | 排名 | 痛点 | 频次 | 严重度 | 代表原文 | 建议动作 |
37
- |------|------|------|--------|---------|---------|
38
-
39
- ## 可落地改进
40
- - 建议 A可建任务(说"建任务"触发 /wl-task)
41
- - 建议 B → ...
42
- ```
43
-
44
- ## 类型 2:metrics(指标复盘)
45
-
46
- 输入:业务指标数据
47
-
48
- 分析维度:
49
- - **北极星指标**:当前值 + 趋势 + 分解(拆到可执行子指标)
50
- - **留存**:D1 / D7 / D30,与行业基准对比
51
- - **漏斗**:每步转化率,找最大流失点
52
- - **A/B 实验**:显著性 + 效果量 + 结论
53
- - **OKR 对齐**:当前进度 vs 目标
54
- - **异常归因**:突增/突降的可能原因
55
-
56
- 输出结构:
57
- ```
58
- # 指标复盘 - <日期/周期>
59
-
60
- ## 北极星
61
- 值 / 趋势 / 距目标差距
62
-
63
- ## 关键漏斗
64
- 各步转化 + 瓶颈标注
65
-
66
- ## 留存
67
- D1/D7/D30 + 同比
68
-
69
- ## 结论与建议
70
- - 加速 X / 止血 Y / 实验 Z
71
- ```
72
-
73
- ## 类型 3:all(综合)
74
-
75
- 交叉引用 feedback + metrics:反馈里的痛点是否反映在指标异动上。
76
-
77
- ## 输出 + 保存
78
-
79
- 保存到 `workspace/members/{dev}/drafts/wl-insight-{type}-{YYYY-MM-DD}.md`。
80
-
81
- > insight 报告默认不 push(属于个人分析草稿)。用户说"发出去/同步"才跑 team_sync push。
1
+ ---
2
+ name: wl-insight
3
+ description: "需求探索 + 外部调研 + 未来规划。流水线的'上游探索站',负责发现需求、对标竞品、做 Gap 分析和 roadmap。把'该做什么、为什么做'想清楚,结论交给 /wl-prd-full 落地。用户说'调研一下''竞品分析''接下来做什么''路线图''探讨一下需求''我发现个机会''规划下个版本'时触发。"
4
+ trigger: "用户说'调研''竞品''对标''规划''路线图''roadmap''探讨需求''接下来做什么''发现个机会''下个版本做什么''/wl-insight'"
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-insight — 需求探索(7 站之前的「探索站」· 产品工位)
17
+
18
+ > 这是 `/wl-insight` 命令的 skill 入口(让 QoderWork 的 `/` 列表也能用)。
19
+ > 完整执行规则见命令 `.qoder/commands/optional/wl-insight.md`。
20
+ > **模块契约**(输入/输出/校验):`.qoder/contracts/insight.md`
21
+ > **第一性原理:看未来,不编造。** 探索有方法论(OST/JTBD/Gap),结论必须锚定现状(context_pack)。
22
+ > **与 prd 的分工**:insight 想清楚"该做什么、为什么做";prd 落地"具体怎么做"。
23
+
24
+ ## 🔒 语言锁(最高优先级)
25
+
26
+ **全部输出必须简体中文。** 含报告标题、章节名、字段名、结论、建议。
27
+ 禁止任何英文句子(技术专有名词如 MCP/API/JTBD 可保留英文缩写)。
28
+ 违反此锁 = 产出不合格,必须重写。
29
+
30
+ ---
31
+
32
+ ## 🎯 定位:流水线的最上游
33
+
34
+ ```
35
+ insight(探索/调研/规划)→ [用户确认转PRD] prd(落地)→ task → code → test → commit
36
+ 看未来,出洞察报告 ↑ 专注"已确定需求",含轻反思+确认
37
+ ```
38
+
39
+ **insight 不产 PRD,不画原型,不分配 REQ-ID。** insight 的产出是**洞察报告**(.md)。
40
+ 报告写完,提示用户"要把某个机会转成 PRD 吗?" → 自动进 `/wl-prd-full` 参考模式(mode: reference)。
41
+
42
+ ---
43
+
44
+ ## 🚦 动作路由(看用户说啥 → 走哪个类型)
45
+
46
+ | 用户说什么 | 类型 | 做什么 |
47
+ |-----------|------|--------|
48
+ | "我发现个机会""现状有个痛点""能不能做 XX" / `discover` | **discover** | 需求发现:从现状痛点/竞品空白找机会(OST 的 outcome+opportunity 层) |
49
+ | "调研一下竞品""对标 XX""行业都怎么做" / `research` | **research** | 外部调研:竞品对标+行业趋势+技术方案(web 搜索 + 多 agent 多视角) |
50
+ | "接下来做什么""下个版本规划""路线图""MVP 范围" / `plan` | **plan** | 未来规划:Gap 分析+MVP 范围+roadmap(OST 的 solution 层) |
51
+ | 模糊 / 拿不准 | 先问意图 | "你是想发现新需求、调研外部、还是规划未来?" |
52
+
53
+ ---
54
+
55
+ ## ⚙️ 自取上下文(Quest / QoderWork 无 hook 注入,必须自读)
56
+
57
+ - `.qoder/.developer` — 当前探索者(报告归属)
58
+ - **现状锚点**:`python "$R/.qoder/scripts/context_pack.py" <关键词> --platform <web|app>`(必跑,探索不能脱离现状凭空想)
59
+ - `.qoder/learning/feedback.jsonl` — 历史 insight 报告索引(可能为空)
60
+ - 相关历史 PRD:`data/docs/prd/`(看已经做了什么,避免重复)
61
+
62
+ ---
63
+
64
+ ## 🔒 三道前置检查(任何动作前先做)
65
+
66
+ 1. **身份检查**:`.developer` 缺失 → 停下,提示先 `/wl-init`,不继续。
67
+ 2. **现状锚点**:任何探索前先跑 `context_pack.py`。**不锚定现状的探索 = 凭空臆想,禁止。**
68
+ 3. **报告归属**:报告必须写到 `workspace/members/{dev}/drafts/`,用 `.developer` 归属。
69
+
70
+ ---
71
+
72
+ ## 核心方法论(融合业界高分框架,不照搬)
73
+
74
+ insight 把三个业界成熟框架**融合成本项目能用的探索流**,每个类型对应 OST(Opportunity Solution Tree)的一层:
75
+
76
+ ```
77
+ ┌─ Outcome(业务目标)──── discover 探索 ────┐
78
+ │ │
79
+ OST ├─ Opportunity(用户机会/痛点)─ discover ──┤ → insight 产出前三层
80
+ │ │
81
+ ├─ Solution(方案候选)──────── plan 规划 ──┘
82
+
83
+ └─ Experiment(验证)──────── 交给 prd 落地后,由 /wl-test 验证
84
+ ```
85
+
86
+ ### ① Opportunity Solution Tree(Teresa Torres)— 主骨架
87
+ - 4 层:**Outcome → Opportunity → Solution → Experiment**
88
+ - insight 负责**前三层**:把"业务目标"拆成"用户机会",再推演"方案候选"
89
+ - 第 4 层 Experiment 交给 prd 落地后由 test 验证
90
+ - **为什么用它**:防止"想到一个点子就开做",强制先想清"这个机会服务于哪个业务目标"
91
+
92
+ ### ② Jobs-to-be-Done(JTBD)— discover 的发现视角
93
+ - 问"用户雇佣这个产品/功能来完成什么 job",而不是"加什么功能"
94
+ - 用于 discover:把"我想加个导出按钮"还原成"用户要完成'月底交报表'这个 job"
95
+ - **为什么用它**:避免掉进"功能列表"思维,回归需求本质
96
+
97
+ ### ③ Gap 分析(现状→理想态)— plan 的规划工具
98
+ - 现状(context_pack 取真实代码/页面)vs 理想态(竞品/行业标准)→ 差距 → MVP + roadmap
99
+ - 用于 plan:把"未来想做成什么样"拆成"本期做什么 / 下期做什么"
100
+ - **为什么用它**:让规划有据可依,不是拍脑袋排期
101
+
102
+ > 三者不冲突,按类型组合用。详细执行规则见 `.qoder/commands/optional/wl-insight.md`。
103
+
104
+ ---
105
+
106
+ ## 三类型怎么做(概要,详见命令定义)
107
+
108
+ **discover(需求发现)—— 用 JTBD + OST 前两层:**
109
+ 1. 跑 context_pack 锚定现状
110
+ 2. 用 JTBD 还原"用户要完成什么 job",列出痛点/机会
111
+ 3. 每个机会对应一个业务 outcome(OST 第 1-2 层)
112
+ 4. 输出机会清单,问用户"哪个值得深入?"
113
+
114
+ **research(外部调研)—— 多 agent 多视角 + web 搜索:**
115
+ 1. 派 2-4 个多 agent,每个一个视角(竞品/行业趋势/技术方案/用户场景)
116
+ 2. 每 agent 做 web 搜索,写 `research-agent-{N}-{视角}.md` 中间产物
117
+ 3. 合并成调研报告,列对标发现 + Gap + 机会信号
118
+ 4. 中间产物最后必须清理(见命令定义的清理规则)
119
+
120
+ **plan(未来规划)—— Gap 分析 + OST 第 3 层:**
121
+ 1. 现状(context_pack)vs 理想态(research 结论或用户描述)→ Gap 表
122
+ 2. Gap 排优先级(业务价值 × 可行性)
123
+ 3. 拆 MVP(本期)+ roadmap(后续版本,标依赖)
124
+ 4. 输出方案候选(OST Solution 层)
125
+
126
+ ---
127
+
128
+ ## 🔒 与用户确认(贯穿所有类型,最重要)
129
+
130
+ **探索的结论必须跟用户确认,不是 AI 单方面输出。** 每个类型结束都要:
131
+ 1. 把发现/结论**一次性编号列清**(不逐条问)
132
+ 2. 问用户:"这个分析对吗?哪个要调整?"
133
+ 3. 用户确认后才写报告;用户有异议 → 调整后重确认(最多 2 轮,不无限循环)
134
+ 4. 报告写完,**主动提示出口衔接**(见下)
135
+
136
+ ---
137
+
138
+ ## 出口衔接:报告 → PRD(关键)
139
+
140
+ insight 报告末尾**永远**给一句:
141
+
142
+ ```
143
+ 要把握住哪个机会?说"转 PRD"我把它作为现状输入,进 /wl-prd-full 参考模式落地成可执行 PRD。
144
+ ```
145
+
146
+ 用户说"转 PRD"或指定某个机会 → 触发:
147
+ ```
148
+ /wl-prd-full 参考:{报告路径}#{机会编号}
149
+ ```
150
+ prd 以 reference 模式(mode: reference)承接,读取 insight 报告作为现状背景,走"轻反思+批量确认"流程落地。
151
+
152
+ > **insight 不直接生成 PRD**。探索和落地是两道工序,分开做才不会混在一起。
153
+
154
+ ---
155
+
156
+ ## 🧩 QoderWork 增强:外部数据源(可选 · 无连接器则自动回退)
157
+
158
+ > 依赖 **QoderWork 桌面端连接器**(Settings → Connectors & MCP)。
159
+ > **纯 Qoder IDE / CLI 没有连接器 → 本段不生效,insight 用 context_pack + web 搜索足够。**
160
+ > 探测方式:仅当运行环境提供了「Browser / MCP 工具」可调用时才用。
161
+
162
+ 若连接器可用,insight 的 research 类型可增强(非必须,纯锦上添花):
163
+ - **Browser 连接器**:抓竞品页面截图/交互,作为对标证据(比 web 搜索摘要更实)
164
+ - **MCP server**(如飞书/Notion):从 IM 收集的用户原声/需求池拉数据,作为 discover 的机会来源
165
+ - **IM Channel(飞书)**:把 insight 报告发到飞书群,让团队补充意见
166
+
167
+ > 回退保证:无连接器**绝不影响 insight 主流程**,只补一句 `[外部数据源未启用:非 QoderWork 或未授权连接器]` 提示。
168
+ > context_pack + web 搜索永远是兜底,纯 Qoder 完全可用。
169
+
170
+ ---
171
+
172
+ ## Storage(存储规则)
173
+
174
+ ```
175
+ 报告目录 → workspace/members/{developer}/drafts/
176
+ ├── insight-{type}-{YYYY-MM-DD}.md ← 洞察报告(主产物)
177
+ └── research-agent-{N}-{视角}.md ← research 类型的多 agent 中间产物(合并后删)
178
+ ```
179
+ - **报告不进 data/docs/prd/**(避免撞 REQ-ID、避免 eval_prd 误扫)
180
+ - 同天同类型重跑覆盖当天(要最新结果),不同天各自独立
181
+ - research 中间产物 `research-agent-*.md` 合并后**必须删**(team_sync 的 staging allowlist 也拒绝这类文件名)
182
+
183
+ ---
184
+
185
+ ## 完成后同步
186
+
187
+ insight 报告**默认不 push**(个人探索草稿)。用户说"发出去/同步/分享给团队"才:
188
+ ```bash
189
+ python "$R/.qoder/scripts/team_sync.py" push
190
+ ```
191
+
192
+ ---
193
+
194
+ ## 输出规则
195
+
196
+ - 报告用结构化 markdown(标题/表格/清单),便于后续 prd 读取
197
+ - 每个发现/机会/Gap 都要附**证据来源**(context_pack 命中的文件 / web 搜索的链接 / 用户口述)
198
+ - **禁止编造数据**:没有证据的结论标"【待验证】",不假装有据
199
+ - 任何脚本非 0 退出 → 原样转述错误,不吞
200
+
201
+ 详细执行规则见 `.qoder/commands/optional/wl-insight.md`。
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: wl-prd-full
3
+ description: "完整档 PRD + 原型(13 章,正经需求)。新模块/新业务/新流程用这个。支持 参考:<insight报告> 衔接探索站。用户说'写个需求''生成PRD''做个原型''保单这块加个功能''写个产品需求文档'或输入 /wl-prd-full 时触发。先问平台!"
4
+ trigger: "用户描述正经需求、要 PRD、要原型、要 mockup,或直接 /wl-prd-full"
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-prd-full — 完整档 PRD + 原型(/wl-prd-full 命令入口)
17
+
18
+ > 这是 `/wl-prd-full` 命令的 skill 入口。QoderWork 的 `/` 列表读 skills,
19
+ > 所以本 skill 让 QoderWork 也能用 `/wl-prd-full`,与 Qoder IDE 保持一致。
20
+ > 完整工作流见同名 command 文件 `.qoder/commands/wl-prd-full`,
21
+ > 功能实现层见 `.qoder/skills/prd-generator/SKILL.md`。
22
+ > **第一性原理:又快又准。**
23
+
24
+ ## ⚠️ STEP 0: 必须先问平台(任何分析前)
25
+
26
+ ```
27
+ 这个需求是针对哪个平台?
28
+ 1. Web 管理端 (fywl-ui) - Ant Design Vue + VxeGrid 风格
29
+ 2. APP 移动端 (Carmg-H5) - Vant 风格
30
+ 3. 两端都要
31
+ 请选择 (1/2/3):
32
+ ```
33
+ **绝不自动判断。绝不假设。绝不跳过。永远先问。等用户回答。**
34
+
35
+ | 回答 | 平台 | 搜索 flag | 原型模板 |
36
+ |------|------|-----------|----------|
37
+ | 1 / Web / PC / 管理端 | Web | `--platform web` | prototype-web.html |
38
+ | 2 / APP / H5 / 移动端 | APP | `--platform app` | prototype-app.html |
39
+ | 3 / 都要 / 两端 | Both | 都跑 | 两个模板,两份原型 |
40
+
41
+ ## 衔接 insight(参考模式)
42
+
43
+ **若用户说"按 insight 报告做 PRD""转 PRD"或带 `参考:<报告路径>`:**
44
+ Read 指定 insight 报告 → 把现状锚定 + 选中的机会/Gap 作为 PRD 现状背景输入 → 走完整档流程。
45
+ > 衔接语义:`/wl-prd-full 参考:{报告路径}#{机会编号}`
46
+
47
+ ## 完整流程(详细见 command 文件)
48
+
49
+ 1. **并行取全上下文**:先读当前角色(`python "$R/.qoder/scripts/role.py"` 输出 pm/design/dev/test/admin 之一),按角色传 `--role`,让上下文匹配角色视角:
50
+ ```bash
51
+ ROLE=$(python "$R/.qoder/scripts/role.py" 2>/dev/null || echo pm)
52
+ python "$R/.qoder/scripts/kg.py" context <词> --platform <p> --role "$ROLE"
53
+ ```
54
+ > 不硬编码 pm:dev 写 PRD 能拿到代码视角、设计师拿到页面+风格视角,比统一 PM 视角更"准"。
55
+ 2. **轻反思 + 批量确认**:AI 自动补全背景/目标/指标,只把真缺失的 1-2 点一次性问完
56
+ 3. **一次生成 + 3 道质量锁**:PRD(prd-full-template.md,13 章)+ 原型一次 Write → 背景锁/字段锁/闭环锁 → eval_prd → 不过自动修
57
+ 4. **发布 + 归档 + 同步**(3 合 1):collect_prds → team_sync push → archive_prd
58
+
59
+ ## 🔒 3 道质量锁
60
+
61
+ - **锁① 背景锁**:背景回答了"为什么做+目标指标"
62
+ - **锁② 字段锁**:字段来自真实代码(复用 eval_prd A1),无发明
63
+ - **锁③ 闭环锁**:每个功能点有验收标准(Given-When-Then)
64
+
65
+ ## REQ-ID 分配(并发安全)
66
+
67
+ ```bash
68
+ python -c "import sys; sys.path.insert(0,'.qoder/scripts'); from common.reqid import allocate_req_id; n=allocate_req_id(); print('REQ-%d-%03d' % (__import__('datetime').date.today().year, n))"
69
+ ```
@@ -0,0 +1,49 @@
1
+ ---
2
+ name: wl-prd-quick
3
+ description: "小改动极速出 Mini-PRD(6 章)。加字段/加按钮/改文案/加导出等零星需求专用。用户说'加个字段''加个导出按钮''改下文案''快速出个需求'时触发。先问平台!"
4
+ trigger: "用户说小改动/加字段/加按钮/改文案/快速出 PRD,或直接 /wl-prd-quick"
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-prd-quick — 小改动极速出 Mini-PRD(/wl-prd-quick 命令入口)
17
+
18
+ > 这是 `/wl-prd-quick` 命令的 skill 入口。QoderWork 的 `/` 列表读 skills,
19
+ > 所以本 skill 让 QoderWork 也能用 `/wl-prd-quick`,与 Qoder IDE 保持一致。
20
+ > 完整工作流见同名 command 文件 `.qoder/commands/wl-prd-quick.md`,
21
+ > 功能实现层见 `.qoder/skills/prd-generator/SKILL.md`(快档分支)。
22
+
23
+ ## ⚠️ STEP 0: 必须先问平台(任何分析前)
24
+
25
+ ```
26
+ 这个需求是针对哪个平台?
27
+ 1. Web 管理端 (fywl-ui) - Ant Design Vue + VxeGrid 风格
28
+ 2. APP 移动端 (Carmg-H5) - Vant 风格
29
+ 3. 两端都要
30
+ 请选择 (1/2/3):
31
+ ```
32
+ **绝不自动判断。问完就停。**
33
+
34
+ ## 适用范围(只管小改动)
35
+
36
+ ✅ 加/删/改字段、按钮、文案、导出、校验规则
37
+ ❌ 新模块/新业务/新流程/多页面联动 → 走 `/wl-prd-full`
38
+
39
+ ## 3 步极速流程(详细见 command 文件)
40
+
41
+ 1. 先读当前角色再取上下文(不硬编码 pm,让 dev/设计师拿到匹配视角):
42
+ ```bash
43
+ ROLE=$(python "$R/.qoder/scripts/role.py" 2>/dev/null || echo pm)
44
+ python "$R/.qoder/scripts/kg.py" context <词> --platform <p> --role "$ROLE"
45
+ ```
46
+ 2. 一次 Write:Mini-PRD(prd-quick-template.md,6 章)+ 微型原型(只画 diff)
47
+ 3. "出好了,确认发布吗?" → 归档 + push
48
+
49
+ > mode 标记 `<!-- mode: quick -->`,跳过 EVA 完整检查。只跑字段锁。
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: wl-prd-review
3
+ description: "评审 PRD 完整性与质量(7 项 checklist + EVA 评分)。用户说'评审PRD''检查需求文档''PRD质量怎么样''这个 PRD 合格吗''帮我看看这个需求文档'时触发。"
4
+ trigger: "用户说要评审/检查/审核 PRD 质量,或直接 /wl-prd-review"
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-prd-review — 评审 PRD 质量(/wl-prd-review 命令入口)
17
+
18
+ > 这是 `/wl-prd-review` 命令的 skill 入口。
19
+ > 完整工作流见同名 command 文件 `.qoder/commands/wl-prd-review.md`,
20
+ > 评审实现细节见 `.qoder/skills/prd-review/SKILL.md`。
21
+ > **定位:评审已有 PRD,不产出新 PRD。**
22
+
23
+ ## 评审做什么
24
+
25
+ 拿到一份 PRD,检查它够不够格发布/交付下游:
26
+ 1. **7 项 checklist**:用户故事清晰 / 验收可测 / 优先级已标 / 模块已识别 / 非功能已列 / 边界已考虑 / 依赖已识别
27
+ 2. **EVA 客观评分**:`python "$R/.qoder/scripts/eval_prd.py" <PRD> [原型]`,≥80% 才 PASS
28
+ 3. **合并报告**:PASS → 可发布;不 PASS → 修复清单
29
+
30
+ ## 定位要评审的 PRD
31
+
32
+ 用户给路径 → 直接 Read;没给 → 扫 `data/docs/prd/` + `workspace/members/*/drafts/` 列出最近 PRD 让用户选。
33
+
34
+ 详细流程见 `.qoder/commands/wl-prd-review.md`。