@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.
- package/bin/cli.js +269 -11
- package/package.json +1 -1
- package/templates/qoder/agents/insight-planning.md +67 -0
- package/templates/qoder/agents/insight-research.md +61 -0
- package/templates/qoder/agents/prd-reference.md +8 -2
- package/templates/qoder/commands/optional/wl-insight.md +275 -0
- package/templates/qoder/commands/{wl-report.md → optional/wl-report.md} +13 -5
- package/templates/qoder/commands/{wl-spec.md → optional/wl-spec.md} +1 -1
- package/templates/qoder/commands/{wl-status.md → optional/wl-status.md} +28 -2
- package/templates/qoder/commands/wl-code.md +10 -2
- package/templates/qoder/commands/wl-commit.md +1 -1
- package/templates/qoder/commands/wl-design-draw.md +78 -0
- package/templates/qoder/commands/wl-design-scan.md +108 -0
- package/templates/qoder/commands/wl-design-spec.md +154 -0
- package/templates/qoder/commands/wl-design.md +32 -0
- package/templates/qoder/commands/wl-init.md +24 -3
- package/templates/qoder/commands/wl-prd-full.md +226 -0
- package/templates/qoder/commands/wl-prd-quick.md +134 -0
- package/templates/qoder/commands/wl-prd-review.md +104 -0
- package/templates/qoder/commands/wl-prd.md +17 -311
- package/templates/qoder/commands/wl-search.md +66 -30
- package/templates/qoder/commands/wl-task.md +290 -59
- package/templates/qoder/commands/wl-test.md +92 -24
- package/templates/qoder/config.yaml +51 -15
- package/templates/qoder/hooks/inject-workflow-state.py +2 -2
- package/templates/qoder/hooks/session-start.py +82 -51
- package/templates/qoder/rules/wl-pipeline.md +216 -105
- package/templates/qoder/scripts/__pycache__/search_index.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/archive_prd.py +377 -0
- package/templates/qoder/scripts/autotest.py +1715 -0
- package/templates/qoder/scripts/autotest_batch.py +224 -0
- package/templates/qoder/scripts/autotest_run.py +297 -0
- package/templates/qoder/scripts/benchmark.py +210 -209
- package/templates/qoder/scripts/build_style_index.py +444 -4
- package/templates/qoder/scripts/check_carriers.py +238 -0
- package/templates/qoder/scripts/check_mcp.py +298 -0
- package/templates/qoder/scripts/check_qoderwork_consistency.py +166 -0
- package/templates/qoder/scripts/common/events.py +46 -0
- package/templates/qoder/scripts/common/extract.py +419 -0
- package/templates/qoder/scripts/common/graph_traverse.py +533 -0
- package/templates/qoder/scripts/common/paths.py +89 -0
- package/templates/qoder/scripts/common/pip_install.py +144 -0
- package/templates/qoder/scripts/common/platform_guard.py +61 -0
- package/templates/qoder/scripts/common/search_engine.py +205 -205
- package/templates/qoder/scripts/common/terms.py +57 -0
- package/templates/qoder/scripts/common/ts_extract.py +536 -0
- package/templates/qoder/scripts/context_pack.py +73 -13
- package/templates/qoder/scripts/enrich_prompt.py +226 -0
- package/templates/qoder/scripts/eval_prd.py +318 -231
- package/templates/qoder/scripts/export.py +487 -487
- package/templates/qoder/scripts/extract_api_params.py +246 -0
- package/templates/qoder/scripts/extract_routes.py +54 -0
- package/templates/qoder/scripts/extract_routes_tree.py +78 -0
- package/templates/qoder/scripts/fill_prototype.py +707 -0
- package/templates/qoder/scripts/gen_design_doc.py +394 -0
- package/templates/qoder/scripts/git_sync.py +27 -15
- package/templates/qoder/scripts/init_doctor.py +292 -40
- package/templates/qoder/scripts/install_qoderwork.py +366 -9
- package/templates/qoder/scripts/kg.py +708 -0
- package/templates/qoder/scripts/kg_auto_login.py +196 -0
- package/templates/qoder/scripts/kg_build.py +612 -0
- package/templates/qoder/scripts/kg_build_db.py +327 -0
- package/templates/qoder/scripts/kg_duckdb.py +549 -0
- package/templates/qoder/scripts/kg_incremental.py +393 -0
- package/templates/qoder/scripts/kg_link_db.py +224 -0
- package/templates/qoder/scripts/kg_mcp_server.py +801 -0
- package/templates/qoder/scripts/kg_semantic.py +150 -0
- package/templates/qoder/scripts/kg_test_runner.py +241 -0
- package/templates/qoder/scripts/lanhu_stdio_wrapper.py +119 -0
- package/templates/qoder/scripts/learn.py +118 -39
- package/templates/qoder/scripts/learn_aggregate.py +201 -0
- package/templates/qoder/scripts/mcp_launcher.py +359 -0
- package/templates/qoder/scripts/mysql_mcp_server.py +396 -0
- package/templates/qoder/scripts/repo_root.py +106 -0
- package/templates/qoder/scripts/role.py +12 -0
- package/templates/qoder/scripts/run_weekly_update.bat +5 -0
- package/templates/qoder/scripts/run_weekly_update.sh +5 -0
- package/templates/qoder/scripts/search_index.py +307 -60
- package/templates/qoder/scripts/secure-ls.js +5640 -0
- package/templates/qoder/scripts/setup.py +706 -641
- package/templates/qoder/scripts/setup_lanhu.py +963 -0
- package/templates/qoder/scripts/status.py +250 -11
- package/templates/qoder/scripts/sync_carriers.py +259 -0
- package/templates/qoder/scripts/syncgate.py +2 -2
- package/templates/qoder/scripts/task.py +75 -0
- package/templates/qoder/scripts/team_sync.py +60 -4
- package/templates/qoder/scripts/workspace_init.py +1 -1
- package/templates/qoder/skills/design-import/SKILL.md +226 -0
- package/templates/qoder/skills/design-import/figma-workflow.md +81 -0
- package/templates/qoder/skills/design-review/SKILL.md +82 -25
- package/templates/qoder/skills/prd-generator/SKILL.md +184 -60
- package/templates/qoder/skills/prd-review/SKILL.md +18 -1
- package/templates/qoder/skills/prompt-enrich/SKILL.md +90 -0
- package/templates/qoder/skills/prototype-generator/SKILL.md +256 -141
- package/templates/qoder/skills/prototype-generator/SKILL.md.zcode-79180-2af4721f-f9a6-412c-88db-c0af680d211b.tmp +0 -0
- package/templates/qoder/skills/spec-coder/SKILL.md +18 -1
- package/templates/qoder/skills/spec-generator/SKILL.md +18 -1
- package/templates/qoder/skills/test-generator/SKILL.md +15 -2
- package/templates/qoder/skills/wl-code/SKILL.md +55 -36
- package/templates/qoder/skills/wl-commit/SKILL.md +89 -76
- package/templates/qoder/skills/wl-design/SKILL.md +55 -0
- package/templates/qoder/skills/wl-init/SKILL.md +76 -67
- package/templates/qoder/skills/wl-insight/SKILL.md +201 -81
- package/templates/qoder/skills/wl-prd-full/SKILL.md +69 -0
- package/templates/qoder/skills/wl-prd-quick/SKILL.md +49 -0
- package/templates/qoder/skills/wl-prd-review/SKILL.md +34 -0
- package/templates/qoder/skills/wl-report/SKILL.md +131 -107
- package/templates/qoder/skills/wl-search/SKILL.md +141 -75
- package/templates/qoder/skills/wl-spec/SKILL.md +49 -39
- package/templates/qoder/skills/wl-status/SKILL.md +83 -61
- package/templates/qoder/skills/wl-task/SKILL.md +132 -58
- package/templates/qoder/skills/wl-test/SKILL.md +406 -40
- package/templates/qoder/templates/prototype-app.html +13 -8
- package/templates/qoder/templates/prototype-web.html +376 -93
- package/templates/root/AGENTS.md +89 -34
- package/templates/root/requirements.txt +21 -0
- package/templates/root//344/275/277/347/224/250/350/257/264/346/230/216.md +259 -259
- package/templates/root//346/226/260/346/211/213/346/214/207/345/215/227.md +186 -186
- package/templates/qoder/agents/prd-planning.md +0 -57
- package/templates/qoder/agents/prd-research.md +0 -34
- package/templates/qoder/commands/wl-insight.md +0 -51
- package/templates/qoder/scripts/__pycache__/init_doctor.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/__pycache__/setup.cpython-39.pyc +0 -0
- package/templates/qoder/scripts/common/__pycache__/developer.cpython-39.pyc +0 -0
- package/templates/qoder/skills/wl-prd/SKILL.md +0 -92
|
@@ -1,61 +1,83 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: wl-status
|
|
3
|
-
description: "项目状态/路线图/健康度。Project status: current sprint / roadmap / health score. 用户说'项目怎么样''进度''健康度''路线图''现在在做什么''整体情况'时触发。"
|
|
4
|
-
trigger: "用户说'项目怎么样''进度''健康度''路线图''整体情况''/wl-status'"
|
|
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
|
-
|
|
1
|
+
---
|
|
2
|
+
name: wl-status
|
|
3
|
+
description: "项目状态/路线图/健康度。Project status: current sprint / roadmap / health score. 用户说'项目怎么样''进度''健康度''路线图''现在在做什么''整体情况'时触发。"
|
|
4
|
+
trigger: "用户说'项目怎么样''进度''健康度''路线图''整体情况''/wl-status'"
|
|
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-status — 项目状态总览
|
|
17
|
+
|
|
18
|
+
三个维度,用户没指定就全展示:
|
|
19
|
+
|
|
20
|
+
## ⚙️ 自取上下文(Quest / QoderWork 无 hook 注入,必须自读)
|
|
21
|
+
|
|
22
|
+
- `.qoder/.developer` — 当前开发者
|
|
23
|
+
- `data/index/.index-meta.json` — 图谱新鲜度(健康度计算用)
|
|
24
|
+
- `.qoder/learning/eval-history.jsonl` — EVA 评估历史(健康度趋势用,可能不存在)
|
|
25
|
+
- `workspace/tasks/*/task.json` — 全部任务(current 维度用)
|
|
26
|
+
|
|
27
|
+
## 维度 1:current(当前迭代)
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
python "$R/.qoder/scripts/task.py" list
|
|
31
|
+
```
|
|
32
|
+
展示:
|
|
33
|
+
- 当前活动任务(标 `*` 的那条)
|
|
34
|
+
- 进行中任务清单 + 各自进度
|
|
35
|
+
- 最近 5 个动作(建任务/finish/PRD 发布等,从 task.json 的 status 历史推)
|
|
36
|
+
|
|
37
|
+
## 维度 2:roadmap(路线图)
|
|
38
|
+
|
|
39
|
+
从任务的优先级 + 依赖关系(parent/child)整理:
|
|
40
|
+
- **Now**:当前迭代(in_progress 任务)
|
|
41
|
+
- **Next**:P1/P2 且依赖已就绪的任务
|
|
42
|
+
- **Later**:P3 或依赖未就绪的任务
|
|
43
|
+
- 阻塞项单独标出
|
|
44
|
+
|
|
45
|
+
## 维度 3:health(健康度)
|
|
46
|
+
|
|
47
|
+
加权评分(满分 5):
|
|
48
|
+
|
|
49
|
+
| 指标 | 权重 | 数据源 |
|
|
50
|
+
|------|------|--------|
|
|
51
|
+
| EVA PRD 合格率 | 25% | eval-history.jsonl 最近 10 次 PASS 比例 |
|
|
52
|
+
| 索引新鲜度 | 20% | .index-meta.json 的 last_sync 距今天数 |
|
|
53
|
+
| 按时交付 | 20% | 近期 task finish 是否在计划期内 |
|
|
54
|
+
| 团队同步 | 15% | `team_sync.py status` 的 ahead/behind |
|
|
55
|
+
| 流水线流转 | 10% | task 在各阶段的停留时长 |
|
|
56
|
+
| 学习成长 | 10% | learning 记录条数 |
|
|
57
|
+
|
|
58
|
+
判定:≥4 健康 / 3–4 有风险 / <3 需关注。
|
|
59
|
+
|
|
60
|
+
## 团队同步健康(必跑)
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
python "$R/.qoder/scripts/team_sync.py" status
|
|
64
|
+
```
|
|
65
|
+
看 ahead/behind 是否对齐,未同步产出有几个。
|
|
66
|
+
|
|
67
|
+
## 🧩 QoderWork 增强:日历校准健康度(可选 · 无连接器则自动回退)
|
|
68
|
+
|
|
69
|
+
> 依赖 **QoderWork 桌面端连接器**(Settings → Connectors,授权 Microsoft 365 / macOS 日历,邮件可选)。
|
|
70
|
+
> **纯 Qoder IDE / CLI 没有连接器 → 本段不生效,健康度照常按上表纯本地数据计算,不受影响。**
|
|
71
|
+
> 探测方式:仅当运行环境提供了「日历」工具可直接读取时才用。
|
|
72
|
+
|
|
73
|
+
若日历连接器可用,让「按时交付」「团队同步」两个维度打分更贴近现实:
|
|
74
|
+
- **按时交付**:对照日历里真实的截止事件 / 里程碑会议节点,判断任务是否赶在节点前 finish,比纯靠 task.json 计划期更准
|
|
75
|
+
- **团队同步**:若邮件连接器也可用,把"上级 / 相关方近期是否收到过进度"纳入(近 N 天有无发出进度邮件)
|
|
76
|
+
|
|
77
|
+
> 仍是可选增强:连接器数据**只用于校准这两个维度的得分**,其余四个维度算法不变。
|
|
78
|
+
> 无连接器时,这两个维度维持原算法(按 task.json 计划期 / team_sync status 计算)。
|
|
79
|
+
|
|
80
|
+
## 输出规则
|
|
81
|
+
|
|
82
|
+
一段总览 + 三个分维度小节。健康度分数醒目显示。发现问题(如索引过期、
|
|
83
|
+
未同步堆积、EVA 合格率低)在结尾列"建议动作"清单。
|
|
@@ -1,58 +1,132 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: wl-task
|
|
3
|
-
description: "任务管理 + RICE
|
|
4
|
-
trigger: "用户说'建任务''排优先级''开始做''做完了''看任务''归档''/wl-task'"
|
|
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
|
-
`create
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
1
|
+
---
|
|
2
|
+
name: wl-task
|
|
3
|
+
description: "任务管理 + RICE 优先级 + 依赖排期。7 站流水线的'任务'站,产品在这里把 PRD 落成任务。Task management with RICE prioritization. 用户说'建任务''排优先级''开始做这个''任务做完了''列一下任务''归档''排期'时触发。"
|
|
4
|
+
trigger: "用户说'建任务''建个任务''排优先级''开始做''做完了''看任务''列任务''归档''排期''甘特图''/wl-task'"
|
|
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-task — 任务管理(7 站之「任务」站 · 产品工位)
|
|
17
|
+
|
|
18
|
+
> 这是 `/wl-task` 命令的 skill 入口(让 QoderWork 的 `/` 列表也能用)。
|
|
19
|
+
> 完整执行规则见命令 `.qoder/commands/wl-task.md`。
|
|
20
|
+
> **模块契约**(输入/输出/校验):`.qoder/contracts/task.md`
|
|
21
|
+
> **第一性原理:又快又准。** 快 = 并行评估 RICE + 一次取全任务;准 = PRD 衔接不丢字段 + 三道检查。
|
|
22
|
+
|
|
23
|
+
## 🚦 动作路由(看用户说啥)
|
|
24
|
+
|
|
25
|
+
| 用户说什么 | 动作 | 跑什么 |
|
|
26
|
+
|-----------|------|--------|
|
|
27
|
+
| "建个任务 XXX" / "把刚才需求建成任务" / "create" | **create** | `task.py create`(带 PRD 衔接) |
|
|
28
|
+
| "列一下任务" / "我的任务" / "有哪些任务" / "list" | **list** | `task.py list` |
|
|
29
|
+
| "接下来做啥" / "能做的有哪些" | **list --ready** | 只看能立刻开始的 |
|
|
30
|
+
| "卡住的有哪些" / "哪些被阻塞" | **list --blocked** | 只看有未完成依赖的 |
|
|
31
|
+
| "看下 XXX 任务" / "XXX 怎么样了" / "show" | **show** | `task.py show <名>` |
|
|
32
|
+
| "开始做 XXX" / "启动 XXX" / "start" | **start** | `task.py start <名>` |
|
|
33
|
+
| "这个任务做完了" / "完成了" / "finish" | **finish** | `task.py finish` |
|
|
34
|
+
| "归档 XXX" / "archive" | **archive** | `task.py archive <名>` |
|
|
35
|
+
| "排优先级" / "排一下" / "rank" | **rank** | RICE 评估(AI 层) |
|
|
36
|
+
| "排期" / "甘特图" / "排个日期" / "plan" | **plan** | `task.py gantt` + set-due |
|
|
37
|
+
| 模糊 / 拿不准 | 先 list 给全貌 | 再问要操作哪个 |
|
|
38
|
+
|
|
39
|
+
## ⚙️ 自取上下文(Quest / QoderWork 无 hook 注入,必须自读)
|
|
40
|
+
|
|
41
|
+
- `.qoder/.developer` — 当前开发者(assignee 默认值)
|
|
42
|
+
- `.qoder/.current-task` — 当前活动任务("开始做""完成了"默认对它操作)
|
|
43
|
+
- 列出已有任务:`python "$R/.qoder/scripts/task.py" list`
|
|
44
|
+
- 衔接 PRD:扫 `workspace/members/{dev}/drafts/REQ-*.md` + `data/docs/prd/REQ-*.md`
|
|
45
|
+
|
|
46
|
+
## 🔒 三道前置检查(任何动作前先做,保证健壮)
|
|
47
|
+
|
|
48
|
+
1. **身份检查**:`.developer` 缺失 → 停下,提示先 `/wl-init`,不继续(否则 create 会把 assignee 写空)。
|
|
49
|
+
2. **空数据兜底**:tasks 目录不存在/空 → 读操作友好提示"还没有任务",不报错;create 直接建。
|
|
50
|
+
3. **脚本退出码**:`task.py` 返回非 0 → 原样读 stderr 告诉用户。`4`=权限不足(零信任 ACL),`1`=任务不存在/JSON 缺失。**绝不绕过 ACL。**
|
|
51
|
+
|
|
52
|
+
## 执行
|
|
53
|
+
|
|
54
|
+
按选中动作,读 `.qoder/commands/wl-task.md` 对应段落执行。核心纪律:
|
|
55
|
+
|
|
56
|
+
**create(最高频)—— PRD 衔接不丢字段:**
|
|
57
|
+
- 有 PRD → 从 PRD 提取标题/模块/验收点,**别让用户重述**;把 REQ-ID 记进 task.json 的 `tags`。
|
|
58
|
+
- 无 PRD → 用用户给的一句话当标题。
|
|
59
|
+
- 建完 push:`python "$R/.qoder/scripts/team_sync.py" push`
|
|
60
|
+
|
|
61
|
+
**rank(RICE)—— 一次取全,别逐个问:**
|
|
62
|
+
1. `task.py list --status planning` 拿全待排任务
|
|
63
|
+
2. AI 基于 PRD **先估**每个的 R/I/C/E(标注信心来源)
|
|
64
|
+
3. 算 RICE 排序展示,问用户要调整哪个
|
|
65
|
+
4. 写回每个 task.json 的 `rice` 字段(Edit 工具)
|
|
66
|
+
|
|
67
|
+
**plan(排期/依赖)—— 脚本已支持增强能力:**
|
|
68
|
+
- `task.py set-due <任务> <YYYY-MM-DD>` 截止日期
|
|
69
|
+
- `task.py block <A> <B>` / `unblock <A> <B>` 依赖(循环依赖自动检测)
|
|
70
|
+
- `task.py gantt [--weeks 4]` 甘特图(只排有日期的,自动标逾期)
|
|
71
|
+
|
|
72
|
+
## RICE 公式与口径
|
|
73
|
+
|
|
74
|
+
RICE = Reach × Impact × Confidence ÷ Effort
|
|
75
|
+
|
|
76
|
+
| 维度 | 估法 | 分值参考 |
|
|
77
|
+
|------|------|----------|
|
|
78
|
+
| R 触达 | 影响多少用户/订单(看 PRD 用户画像) | 1=少 / 10=全员 |
|
|
79
|
+
| I 影响 | 对核心目标贡献度(看 PRD 目标指标) | 0.5=弱 / 3=强 |
|
|
80
|
+
| C 信心 | 有数据/竞品支撑?还是拍脑袋? | 50%=猜 / 100%=有据 |
|
|
81
|
+
| E 工作量 | 几个人周(看 PRD 功能点数量) | 1=小 / 5=大 |
|
|
82
|
+
|
|
83
|
+
排不动时的兜底:任务缺 PRD → 诚实说估不准,建议补 PRD 或手动 P0-P3。
|
|
84
|
+
|
|
85
|
+
## 🔒 create 的三道质量检查(建完顺手提醒,非阻塞)
|
|
86
|
+
|
|
87
|
+
| 检查 | 查什么 | 不过怎么办 |
|
|
88
|
+
|------|--------|-----------|
|
|
89
|
+
| ① 衔接锁 | tags 有 REQ-ID?标题对上 PRD? | 补 REQ-ID,提示从 PRD 复制验收点 |
|
|
90
|
+
| ② 归属锁 | assignee 是谁? | 为空 → 问"指派给谁?" |
|
|
91
|
+
| ③ 阻塞锁 | 依赖标对了吗? | 列可能依赖,问"要不要 block 上?" |
|
|
92
|
+
|
|
93
|
+
## Storage
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
任务目录 → workspace/tasks/{MM-DD-slug}/
|
|
97
|
+
├── task.json (状态/优先级/RICE/依赖/assignee/tags[REQ-ID])
|
|
98
|
+
├── prd.md (PRD 模板或引用已有 PRD)
|
|
99
|
+
├── implement.jsonl / check.jsonl
|
|
100
|
+
归档 → .qoder/archive/{YYYY-MM}/{MM-DD-slug}/
|
|
101
|
+
活跃指针 → .qoder/.current-task
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## 完成后同步
|
|
105
|
+
|
|
106
|
+
`create` / `finish` / `archive` 改了任务状态,都要推给团队(用户永不碰 git):
|
|
107
|
+
```bash
|
|
108
|
+
python "$R/.qoder/scripts/team_sync.py" push
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## 🧩 QoderWork 增强:待办双向同步(可选 · 无连接器则自动回退)
|
|
112
|
+
|
|
113
|
+
> 依赖 **QoderWork 桌面端连接器**(Settings → Connectors,授权 Microsoft 365 待办 / OneNote,或 macOS 提醒事项)。
|
|
114
|
+
> **纯 Qoder IDE / CLI 没有连接器 → 本段不生效,任务只在本地 task.json 管理,完全够用。**
|
|
115
|
+
> 探测方式:仅当运行环境提供了「待办 / To-Do」工具可直接读写时才用。
|
|
116
|
+
|
|
117
|
+
若待办连接器可用,让任务在本地之外也可见、可提醒(非必须,纯锦上添花):
|
|
118
|
+
- `create` 带截止时间的任务后 → 同步为一条待办,标题 `【WL】<任务名>`,截止日用 task.json 的 due
|
|
119
|
+
- `finish` 任务后 → 把对应待办标记为已完成
|
|
120
|
+
- `archive` 任务 → 归档对应待办(不删除,留痕)
|
|
121
|
+
|
|
122
|
+
> 回退保证:同步失败 / 无连接器**绝不影响本地任务状态**,只补一句 `[待办未同步:非 QoderWork 或未授权连接器]` 提示。
|
|
123
|
+
> 本地 task.json 永远是唯一事实源(single source of truth),连接器只是它的一个"投影"。
|
|
124
|
+
|
|
125
|
+
## 输出规则
|
|
126
|
+
|
|
127
|
+
- `list` 结果用表格呈现(优先级 | 状态 | 任务 | 负责人 | 标题 | 备注),当前任务标 `*`
|
|
128
|
+
- `create` 后告诉用户任务目录路径 + 下一步建议("接 /wl-prd-full 写需求" 或 "/wl-code 写代码")
|
|
129
|
+
- `finish` 后提示是否归档 + 看下个 `--ready` 的任务
|
|
130
|
+
- 任何脚本非 0 退出 → 原样转述错误,不吞
|
|
131
|
+
|
|
132
|
+
详细执行规则见 `.qoder/commands/wl-task.md`。
|