@hupan56/wlkj 2.0.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 (87) hide show
  1. package/bin/cli.js +213 -0
  2. package/package.json +11 -0
  3. package/templates/cli.js +198 -0
  4. package/templates/qoder/commands/wl-code.md +43 -0
  5. package/templates/qoder/commands/wl-commit.md +30 -0
  6. package/templates/qoder/commands/wl-init.md +80 -0
  7. package/templates/qoder/commands/wl-insight.md +51 -0
  8. package/templates/qoder/commands/wl-prd.md +199 -0
  9. package/templates/qoder/commands/wl-report.md +166 -0
  10. package/templates/qoder/commands/wl-search.md +52 -0
  11. package/templates/qoder/commands/wl-spec.md +18 -0
  12. package/templates/qoder/commands/wl-status.md +51 -0
  13. package/templates/qoder/commands/wl-task.md +71 -0
  14. package/templates/qoder/commands/wl-test.md +42 -0
  15. package/templates/qoder/config.toml +5 -0
  16. package/templates/qoder/config.yaml +141 -0
  17. package/templates/qoder/hooks/inject-workflow-state.py +117 -0
  18. package/templates/qoder/hooks/session-start.py +204 -0
  19. package/templates/qoder/rules/wl-pipeline.md +105 -0
  20. package/templates/qoder/scripts/add_session.py +245 -0
  21. package/templates/qoder/scripts/benchmark.py +209 -0
  22. package/templates/qoder/scripts/build_style_index.py +268 -0
  23. package/templates/qoder/scripts/code_index.py +41 -0
  24. package/templates/qoder/scripts/collect_prds.py +31 -0
  25. package/templates/qoder/scripts/common/__init__.py +0 -0
  26. package/templates/qoder/scripts/common/active_task.py +230 -0
  27. package/templates/qoder/scripts/common/atomicio.py +172 -0
  28. package/templates/qoder/scripts/common/developer.py +161 -0
  29. package/templates/qoder/scripts/common/eval_api.py +144 -0
  30. package/templates/qoder/scripts/common/feishu.py +278 -0
  31. package/templates/qoder/scripts/common/filelock.py +211 -0
  32. package/templates/qoder/scripts/common/identity.py +285 -0
  33. package/templates/qoder/scripts/common/mentions.py +134 -0
  34. package/templates/qoder/scripts/common/paths.py +311 -0
  35. package/templates/qoder/scripts/common/reqid.py +218 -0
  36. package/templates/qoder/scripts/common/search_engine.py +205 -0
  37. package/templates/qoder/scripts/common/task_utils.py +342 -0
  38. package/templates/qoder/scripts/common/terms.py +234 -0
  39. package/templates/qoder/scripts/common/utf8.py +38 -0
  40. package/templates/qoder/scripts/context_pack.py +196 -0
  41. package/templates/qoder/scripts/eval_prd.py +225 -0
  42. package/templates/qoder/scripts/export.py +487 -0
  43. package/templates/qoder/scripts/git_sync.py +1087 -0
  44. package/templates/qoder/scripts/handoff.py +22 -0
  45. package/templates/qoder/scripts/init_developer.py +76 -0
  46. package/templates/qoder/scripts/init_doctor.py +527 -0
  47. package/templates/qoder/scripts/install_qoderwork.py +339 -0
  48. package/templates/qoder/scripts/learn.py +67 -0
  49. package/templates/qoder/scripts/notify.py +5 -0
  50. package/templates/qoder/scripts/parse_prds.py +33 -0
  51. package/templates/qoder/scripts/report.py +281 -0
  52. package/templates/qoder/scripts/role.py +39 -0
  53. package/templates/qoder/scripts/run_weekly_update.bat +17 -0
  54. package/templates/qoder/scripts/run_weekly_update.sh +20 -0
  55. package/templates/qoder/scripts/search_index.py +352 -0
  56. package/templates/qoder/scripts/setup.py +453 -0
  57. package/templates/qoder/scripts/setup_weekly_cron.bat +22 -0
  58. package/templates/qoder/scripts/setup_weekly_cron.sh +19 -0
  59. package/templates/qoder/scripts/status.py +389 -0
  60. package/templates/qoder/scripts/syncgate.py +330 -0
  61. package/templates/qoder/scripts/task.py +954 -0
  62. package/templates/qoder/scripts/team.py +29 -0
  63. package/templates/qoder/scripts/team_sync.py +419 -0
  64. package/templates/qoder/scripts/workspace_init.py +102 -0
  65. package/templates/qoder/settings.json +53 -0
  66. package/templates/qoder/skills/design-review/SKILL.md +25 -0
  67. package/templates/qoder/skills/prd-generator/SKILL.md +180 -0
  68. package/templates/qoder/skills/prd-review/SKILL.md +36 -0
  69. package/templates/qoder/skills/prototype-generator/SKILL.md +141 -0
  70. package/templates/qoder/skills/spec-coder/SKILL.md +69 -0
  71. package/templates/qoder/skills/spec-generator/SKILL.md +67 -0
  72. package/templates/qoder/skills/test-generator/SKILL.md +72 -0
  73. package/templates/qoder/skills/wl-commit/SKILL.md +76 -0
  74. package/templates/qoder/skills/wl-init/SKILL.md +67 -0
  75. package/templates/qoder/skills/wl-insight/SKILL.md +81 -0
  76. package/templates/qoder/skills/wl-report/SKILL.md +87 -0
  77. package/templates/qoder/skills/wl-search/SKILL.md +75 -0
  78. package/templates/qoder/skills/wl-status/SKILL.md +61 -0
  79. package/templates/qoder/skills/wl-task/SKILL.md +58 -0
  80. package/templates/qoder/templates/prd-full-template.md +103 -0
  81. package/templates/qoder/templates/prd-quick-template.md +69 -0
  82. package/templates/qoder/templates/prototype-app.html +344 -0
  83. package/templates/qoder/templates/prototype-web.html +310 -0
  84. package/templates/root/AGENTS.md +182 -0
  85. package/templates/root/README-pipeline.md +56 -0
  86. package/templates/root/ROLES.md +85 -0
  87. package/templates/root//346/226/260/346/211/213/346/214/207/345/215/227.md +186 -0
@@ -0,0 +1,67 @@
1
+ ---
2
+ name: wl-init
3
+ description: "初始化/切换开发者身份 + 环境体检。Initialize/switch developer identity + environment health check. 用户说'初始化''我是谁''换开发者''环境检查''/wl-init''设置一下''开始用'时触发。"
4
+ trigger: "首次使用、换人、或遇到环境问题时;用户说'初始化''换开发者''环境检查''体检'"
5
+ ---
6
+
7
+ # wl-init — 开发者身份 + 环境体检
8
+
9
+ 幂等、增量。**绝不删除 workspace**,绝不覆盖 member.json / task.json。
10
+
11
+ ## 触发场景
12
+
13
+ 1. **首次使用本工具**:注册身份 + 全套体检 + 自愈
14
+ 2. **换人/切换开发者**:写 `.qoder/.developer`,重定向 workspace 到新成员目录
15
+ 3. **环境出问题**(索引不对、搜不到、脚本报错):体检 + `--fix` 自愈
16
+ 4. **拉取团队最新**:体检时自动 `team_sync.py pull`
17
+
18
+ ## 执行
19
+
20
+ ### 无参数(仅体检)
21
+ ```bash
22
+ python .qoder/scripts/init_doctor.py
23
+ ```
24
+ 输出 8 段体检报告,每行 `[OK]/[WARN]/[FIX]/[MISS]` 标注。
25
+
26
+ ### 带名字(注册 + 自愈)
27
+ ```bash
28
+ python .qoder/scripts/init_doctor.py --fix <名字> [角色]
29
+ # 例:python .qoder/scripts/init_doctor.py --fix 小王 pm
30
+ ```
31
+ 做 3 件事:
32
+ 1. 写 `.qoder/.developer`(key=value 格式)
33
+ 2. `team_sync.py pull` 拉团队最新(图谱/PRD/任务)
34
+ 3. 按 WARN 清单逐项 `--fix`(缺索引就建、缺模板就拷、git user.name 不一致就改)
35
+
36
+ ### 仅自愈(不换人)
37
+ ```bash
38
+ python .qoder/scripts/init_doctor.py --fix
39
+ ```
40
+
41
+ ## 体检覆盖的 8 段
42
+
43
+ | 段 | 检查内容 | 出问题的后果 |
44
+ |----|---------|------------|
45
+ | 1 基础环境 | Python 3 / git 可用 | 全部脚本跑不了 |
46
+ | 2 开发者身份 | `.developer` 存在且与 git user.name 一致 | /wl-report 统计丢 |
47
+ | 3 团队同步 | 是否 >24h 未 pull | 拿不到队友 PRD/任务 |
48
+ | 4 源码仓库 | `data/code/` 三个项目在 | 搜不到代码 |
49
+ | 5 知识图谱 | `data/index/*.json` 新鲜(≤7 天) | 搜索结果过期 |
50
+ | 6 风格约束 | vben/chart/icon/style JSON + 原型模板 | 原型风格跑偏 |
51
+ | 7 PRD 模板 | prd-full/quick 模板 + rules + AGENTS.md | PRD 生成不规范 |
52
+ | 8 周五任务 | 本机是否设了 cron | 图谱是否自动保鲜 |
53
+
54
+ ## 输出规则
55
+
56
+ - 体检完打印一句总结:「环境健康,可以开始工作:/wl-prd <需求>」或「N 个问题待修,加 --fix 自愈」
57
+ - 如果用户没给名字但 `.developer` 不存在:先问"你叫什么名字?角色是 pm/dev/design?"
58
+ - 如果 git user.name 与开发者名不一致:在体检里 `[WARN]` 提示,`--fix` 会自动改
59
+
60
+ ## 完成后
61
+
62
+ 体检/注册本身不需要 push(只改本地 `.developer`)。但若 `--fix` 触发了图谱重建,
63
+ 完成后建议跑一次:
64
+ ```bash
65
+ python .qoder/scripts/team_sync.py push
66
+ ```
67
+ 让队友拿到刷新后的索引。
@@ -0,0 +1,81 @@
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。
@@ -0,0 +1,87 @@
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
+ - 报告是中文,简洁(日报 ≤20 行,周报 ≤40 行)
86
+ - 不要把 git log 原文贴进去,提炼成"做了什么"
87
+ - 如果某天没提交也没 finish 任务,如实写"今日主要在调研/评审,无代码产出",不编造
@@ -0,0 +1,75 @@
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 更省轮次。
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: wl-status
3
+ description: "项目状态/路线图/健康度。Project status: current sprint / roadmap / health score. 用户说'项目怎么样''进度''健康度''路线图''现在在做什么''整体情况'时触发。"
4
+ trigger: "用户说'项目怎么样''进度''健康度''路线图''整体情况''/wl-status'"
5
+ ---
6
+
7
+ # wl-status — 项目状态总览
8
+
9
+ 三个维度,用户没指定就全展示:
10
+
11
+ ## ⚙️ 自取上下文(Quest / QoderWork 无 hook 注入,必须自读)
12
+
13
+ - `.qoder/.developer` — 当前开发者
14
+ - `data/index/.index-meta.json` — 图谱新鲜度(健康度计算用)
15
+ - `.qoder/learning/eval-history.jsonl` — EVA 评估历史(健康度趋势用,可能不存在)
16
+ - `workspace/tasks/*/task.json` — 全部任务(current 维度用)
17
+
18
+ ## 维度 1:current(当前迭代)
19
+
20
+ ```bash
21
+ python .qoder/scripts/task.py list
22
+ ```
23
+ 展示:
24
+ - 当前活动任务(标 `*` 的那条)
25
+ - 进行中任务清单 + 各自进度
26
+ - 最近 5 个动作(建任务/finish/PRD 发布等,从 task.json 的 status 历史推)
27
+
28
+ ## 维度 2:roadmap(路线图)
29
+
30
+ 从任务的优先级 + 依赖关系(parent/child)整理:
31
+ - **Now**:当前迭代(in_progress 任务)
32
+ - **Next**:P1/P2 且依赖已就绪的任务
33
+ - **Later**:P3 或依赖未就绪的任务
34
+ - 阻塞项单独标出
35
+
36
+ ## 维度 3:health(健康度)
37
+
38
+ 加权评分(满分 5):
39
+
40
+ | 指标 | 权重 | 数据源 |
41
+ |------|------|--------|
42
+ | EVA PRD 合格率 | 25% | eval-history.jsonl 最近 10 次 PASS 比例 |
43
+ | 索引新鲜度 | 20% | .index-meta.json 的 last_sync 距今天数 |
44
+ | 按时交付 | 20% | 近期 task finish 是否在计划期内 |
45
+ | 团队同步 | 15% | `team_sync.py status` 的 ahead/behind |
46
+ | 流水线流转 | 10% | task 在各阶段的停留时长 |
47
+ | 学习成长 | 10% | learning 记录条数 |
48
+
49
+ 判定:≥4 健康 / 3–4 有风险 / <3 需关注。
50
+
51
+ ## 团队同步健康(必跑)
52
+
53
+ ```bash
54
+ python .qoder/scripts/team_sync.py status
55
+ ```
56
+ 看 ahead/behind 是否对齐,未同步产出有几个。
57
+
58
+ ## 输出规则
59
+
60
+ 一段总览 + 三个分维度小节。健康度分数醒目显示。发现问题(如索引过期、
61
+ 未同步堆积、EVA 合格率低)在结尾列"建议动作"清单。
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: wl-task
3
+ description: "任务管理 + RICE 优先级排序。Task management with RICE prioritization. 用户说'建任务''排优先级''开始做这个''任务做完了''列一下任务''归档'时触发。"
4
+ trigger: "用户说'建任务''排优先级''开始做''做完了''看任务''归档''/wl-task'"
5
+ ---
6
+
7
+ # wl-task — 任务管理 + RICE 排序
8
+
9
+ 任务存在 `workspace/tasks/{MM-DD-slug}/`,含 `task.json` + `prd.md` + `implement.jsonl` + `check.jsonl`。
10
+
11
+ ## ⚙️ 自取上下文(Quest / QoderWork 无 hook 注入,必须自读)
12
+
13
+ - `.qoder/.developer` — 当前开发者(assignee 默认值)
14
+ - `.qoder/.current-task` — 当前活动任务(如有,"开始做"默认对它操作)
15
+ - 列出已有任务:`python .qoder/scripts/task.py list`
16
+
17
+ ## 子命令对照
18
+
19
+ | 用户说什么 | 跑什么 |
20
+ |-----------|--------|
21
+ | "建个任务 XXX" | `task.py create "XXX" [--slug ...] [--priority P0\|P1\|P2\|P3]` |
22
+ | "列一下任务" / "我的任务" | `task.py list [--mine] [--status in_progress]` |
23
+ | "看下 XXX 任务" | `task.py show <task-dir>` |
24
+ | "开始做 XXX" | `task.py start <task-dir>` |
25
+ | "这个任务做完了" | `task.py finish` |
26
+ | "归档 XXX" | `task.py archive <task-dir>` |
27
+ | "把 A 拆成子任务 B" | `task.py add-subtask <parent> <child>` |
28
+
29
+ 完整用法:
30
+ ```bash
31
+ python .qoder/scripts/task.py create "登录优化" --slug login-fix --priority P1
32
+ python .qoder/scripts/task.py start 06-13-login-fix
33
+ python .qoder/scripts/task.py current --source # 看当前活动任务
34
+ python .qoder/scripts/task.py list --mine --status in_progress
35
+ python .qoder/scripts/task.py finish
36
+ python .qoder/scripts/task.py archive 06-13-login-fix
37
+ python .qoder/scripts/task.py add-subtask 06-13-parent 06-13-child
38
+ ```
39
+
40
+ ## RICE 优先级(建/排时自动算)
41
+
42
+ RICE = Reach × Impact × Confidence ÷ Effort
43
+ - 建任务时若给了 `--priority`,写入 task.json
44
+ - "排优先级"指令:扫所有任务,让用户给每个 R/I/C/E 打分(或从 task.json 读已有值),重算排序
45
+
46
+ ## 完成后同步
47
+
48
+ `create` 和 `finish` 改了任务状态,要推给团队:
49
+ ```bash
50
+ python .qoder/scripts/team_sync.py push
51
+ ```
52
+ (脚本会自动 stage workspace/tasks/ 并提交)
53
+
54
+ ## 输出规则
55
+
56
+ - `list` 结果用表格呈现(任务名 | 状态 | 优先级 | 负责人),当前任务标 `*`
57
+ - `create` 后告诉用户任务目录路径 + 下一步建议("接 /wl-prd 写需求" 或 "/wl-spec 写规格")
58
+ - `finish` 后提示是否归档 + 跑 `/wl-report` 出日报
@@ -0,0 +1,103 @@
1
+ # PRD 完整模板(团队标准)
2
+
3
+ > 来源: data/docs/constitution/prdtemplate/PRD通用模板-纯框架版.docx(团队章程)
4
+ > 适用: Reference / Brainstorm / Planning 模式生成的正式 PRD
5
+ > 规则: 以下章节为团队标准结构,生成 PRD 时**必须全部包含**(不适用的章节写"无",不可省略标题)。
6
+ > 在此基础上保留 QODER 的增强项:平台标注、原型链接、10项质量自检。
7
+
8
+ ---
9
+
10
+ # REQ-{YYYY}-{NNN} {需求标题}
11
+
12
+ ## 前言
13
+
14
+ ### 版本信息
15
+ | 版本号 | 创建日期 | 审核人 |
16
+ |--------|---------|--------|
17
+ | V1.0 | {YYYY.MM.DD} | {审核人} |
18
+
19
+ ### 变更日志
20
+ | 时间 | 版本号 | 状态 | 变更人 | 主要变更内容 |
21
+ |------|--------|------|--------|-------------|
22
+ | {YYYY.MM.DD} | V1.0 | 新增 | {姓名} | 初版 |
23
+
24
+ ### 文档说明
25
+ {编写目的、适用范围、关联文档链接。注明涉及端: Web 管理端 (fywl-ui) / APP 移动端 (Carmg-H5) / 两端}
26
+
27
+ ## 名词解释
28
+ | 术语/缩略词 | 说明 |
29
+ |------------|------|
30
+ | {术语} | {定义} |
31
+
32
+ ## 需求背景
33
+
34
+ ### 需求来源
35
+ {由谁提出、因何驱动: 业务投标/客户反馈/友商对标/数据分析发现等}
36
+
37
+ ### 产品现状
38
+ {当前系统相关功能现状。引用 /wl-search 的发现: 现有页面、API、字段。无则写"无"}
39
+
40
+ ## 需求范围
41
+ {涉及哪些端 (APP/PC/Web/API)、包含哪些功能点、边界。}
42
+
43
+ ## 功能详细说明
44
+
45
+ ### 涉及功能清单
46
+ | 功能点 | 涉及渠道 | 改动类型 | 改动描述 |
47
+ |--------|---------|---------|---------|
48
+ | {功能1} | PC/APP | 新增/修改/优化 | {一句话} |
49
+
50
+ ### {N}. {功能名称}-{端}
51
+
52
+ #### 总体说明
53
+ {入口路径【XX模块】-【XX菜单】、页面区域组成、刷新方式和频率}
54
+
55
+ #### 功能说明
56
+ {排序规则、筛选条件及交互方式、列表展示字段}
57
+
58
+ #### 字段规格说明
59
+ | 字段 | 是否必填 | 列表显示 | 说明 |
60
+ |------|---------|---------|------|
61
+ | {字段1} | 是/否 | 是/否 | {最大长度/类型/数据来源等约束} |
62
+
63
+ #### 操作与校验说明
64
+ | 操作 | 场景 | 提示/二次确认说明 |
65
+ |------|------|------------------|
66
+ | {操作1} | {场景} | {最终文案,不写"提示用户XX"} |
67
+
68
+ #### 状态机说明(如适用)
69
+ {状态分类、映射关系、各状态下的展示与可用操作}
70
+
71
+ #### 导出说明(如适用)
72
+ {文件命名规则(含变量)、导出数据模板}
73
+
74
+ #### 原型地址
75
+ {prototype-{feature}.html 的路径;两端需求分别给 -web/-app 两个文件}
76
+
77
+ ## 非功能性需求
78
+ {性能(响应时间/并发)、安全(权限)、兼容性(浏览器/系统版本)、可用性}
79
+
80
+ ## 埋点
81
+ | 参数名 | 参数说明 | 参数值 |
82
+ |--------|---------|--------|
83
+ | {事件} | {含义} | {取值} |
84
+
85
+ ## 版本计划
86
+ {目标版本号或上线日期}
87
+
88
+ ## 附录
89
+ {原型链接汇总、竞品截图、接口文档引用、验收标准清单}
90
+
91
+ ---
92
+
93
+ ## 质量自检(QODER 10 项,发布前逐项确认)
94
+ 1. 需求背景回答了"为什么做"
95
+ 2. 目标可量化
96
+ 3. 用户画像具体
97
+ 4. 业务规则穷尽(含字段规格表)
98
+ 5. 每个功能至少 2 个异常场景(操作与校验表)
99
+ 6. 验收标准可测试(Given-When-Then)
100
+ 7. 埋点事件完整
101
+ 8. PRD 中无技术实现细节
102
+ 9. 功能点标注优先级 (P0/P1/P2)
103
+ 10. 版本计划落地
@@ -0,0 +1,69 @@
1
+ # 零星需求 Mini-PRD 模板(团队标准)
2
+
3
+ > 来源: data/docs/constitution/prdtemplate/零星需求PRD简易模板.docx(团队章程)
4
+ > 适用: Quick 模式 / 小改动需求
5
+ > 规则: 改动要素"涉及则填,不涉及则跳过",但章节标题必须保留。
6
+
7
+ ---
8
+
9
+ # {功能模块} - {改动摘要}
10
+
11
+ > 标题让读者一眼知道改了什么,避免"XX功能修改"这类模糊表述。
12
+
13
+ ## 功能入口
14
+ - 菜单路径:【XX模块】-【XX菜单】-【XX页面】
15
+ - 涉及端:PC / APP / 后端 / 全端(纯后端写"后端,无前端入口";APP 注明具体 APP)
16
+
17
+ ## 需求背景
18
+ {1-2 句:为什么做?解决什么问题?谁提出的?}
19
+
20
+ ## 需求说明
21
+ 根据实际改动类型,从以下要素中选取相关项填写(涉及则填,不涉及跳过):
22
+
23
+ - **页面/入口调整**:新增/修改/移除的页面路径、按钮位置、tab、菜单项
24
+ - **字段调整**:字段名、类型、最大长度、必填/选填、默认值、显示位置、显隐条件
25
+ - **筛选/搜索调整**:筛选项、交互方式(单选/多选/模糊/日期)、数据源、默认值、防抖时长
26
+ - **列表/表格调整**:列、排序规则、分页逻辑
27
+ - **操作/按钮调整**:位置、启用/禁用条件、交互流程、二次确认文案、状态变更、反馈文案
28
+ - **校验规则调整**:校验时机、条件、不通过提示文案
29
+ - **业务规则/计算逻辑调整**:调整前后规则/公式对比、历史数据是否受影响
30
+ - **流程/节点调整**:调整前后流程链、分支条件
31
+ - **权限控制调整**:角色、粒度(菜单/页面/字段/按钮)、有无权限的表现差异
32
+ - **数据/接口调整**:入参出参、数据来源、是否影响现有接口
33
+ - **报表/看板调整**:统计维度、聚合公式、同比环比口径、导出模板、端侧差异
34
+ - **附件/导出调整**:文件命名规则、导出模板列、图片命名存储规则
35
+ - **文案/提示调整**:页面位置、修改前后文案对比
36
+
37
+ 填写格式示例(新增筛选项):
38
+ 1. 新增内容:在[页面]的[位置]增加[筛选名称]筛选项
39
+ 2. 数据源:[字典接口/列表已有字段/其他]
40
+ 3. 交互方式:[单选/多选/模糊],[默认值]
41
+ 4. 前端:[组件位置、与现有筛选的关系、防抖时长]
42
+ 5. 后端:[入参字段名、查询逻辑、是否影响现有接口]
43
+ 6. 其他约束:[切换时保留/清空筛选等]
44
+
45
+ ## 影响范围
46
+ {可能受影响的功能、页面、接口 —— 用 /wl-search 验证后列出}
47
+
48
+ ## 验收标准
49
+ - [ ] 在[条件]下,执行[操作],预期结果为[描述]
50
+
51
+ ## 不在本次范围
52
+ {显式排除易歧义内容,防止范围蔓延。无则留空}
53
+
54
+ ## 原型
55
+ {prototype-{feature}.html 路径(只画 diff 部分)}
56
+
57
+ ---
58
+
59
+ ## 提交前自检(来自团队章程)
60
+ - [ ] 功能入口路径完整可操作
61
+ - [ ] 需求背景说清了"为什么做"
62
+ - [ ] 涉及字段有完整规格(名称、类型、长度、必填)
63
+ - [ ] 涉及交互有完整描述(正常流程和异常流程)
64
+ - [ ] 涉及规则有调整前后对比
65
+ - [ ] 所有弹窗/提示写了最终文案,而非"提示用户XX"
66
+ - [ ] 状态变更描述了从什么状态到什么状态
67
+ - [ ] 涉及端标注清楚
68
+ - [ ] 影响范围无遗漏
69
+ - [ ] 不在本次范围的内容已显式排除