task-ledger 1.2.2 → 1.2.3
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/README.md +2 -1
- package/SKILL.md +2 -2
- package/package.json +1 -1
- package/references/state-model.md +6 -5
- package/scripts/progress.py +2 -2
package/README.md
CHANGED
package/SKILL.md
CHANGED
|
@@ -34,7 +34,7 @@ allowed-tools: Read,Write,Bash,Grep
|
|
|
34
34
|
| 「谁在做 X」「有哪些在办」 | `list`;在等认领的加 `--status open` |
|
|
35
35
|
| 「这个任务到哪一步了」「这轮做了什么」 | `show --id`(任务 JSON + worklog 全文) |
|
|
36
36
|
| 「某件老活什么时候做的」「谁做过哪些活」 | `history`(可按 `--owner` / `--since` 筛) |
|
|
37
|
-
| 「哪些任务停太久」 | `list --json`:`updated` 满 3 天=停滞、`started` 满
|
|
37
|
+
| 「哪些任务停太久」 | `list --json`:`updated` 满 3 天=停滞、`started` 满 14 天=超期、`created` 满 30 天仍 `open`=积压(看板算,别改状态) |
|
|
38
38
|
| 「新建一个任务」 | `new`(`--self` = 建完即认领) |
|
|
39
39
|
| 「这活我领了」 | `claim`(只对 `open` 有效) |
|
|
40
40
|
| 「开始做 / 接着做 X」 | 还是 `open` 就先 `claim`;已是 `doing` 就直接改正文 + `log` |
|
|
@@ -61,7 +61,7 @@ python3 <本 SKILL.md 所在目录>/scripts/progress.py <子命令> --repo <当
|
|
|
61
61
|
|
|
62
62
|
## 铁律
|
|
63
63
|
|
|
64
|
-
- **状态只有 `open` / `doing`**;`done` 只能由 `close` 产生。**没有 `blocked`
|
|
64
|
+
- **状态只有 `open` / `doing`**;`done` 只能由 `close` 产生。**没有 `blocked` 状态**:超期 = `started` 满 14 天、停滞 = `updated` 满 3 天、积压 = `created` 满 30 天且仍 `open`,都由看板按时间算,`progress.json` 里不存、不手改;卡在哪写进正文。
|
|
65
65
|
- **`log` 就是刷新 `updated` 的动作**:该记不记,任务会被看板标成停滞。
|
|
66
66
|
- **owner = 当前 `git config user.name`**,不能由外部传入;读不到就报错(先让用户配 git)。**只能动自己名下**的任务(`open` 的先 `claim`),不是你的直接拒绝 —— 不要绕过脚本改 JSON。
|
|
67
67
|
- **换人只能「释放 → 认领」**:skill 不提供交接,随便写的名字都是假的。
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "task-ledger",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.3",
|
|
4
4
|
"description": "Task-ledger skill for coding agents: per-workspace progress tracking (ledger/progress.json, history, worklog) driven by a CLI script. Standalone install for CodeBuddy and other agents; also bundled inside the dsh-task-ledger DSH plugin.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"skill",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 状态与时间模型
|
|
2
2
|
|
|
3
|
-
> TL;DR:状态只有 `open` / `doing`;`done` 由 `close`
|
|
3
|
+
> TL;DR:状态只有 `open` / `doing`;`done` 由 `close` 产生。超期 = `started` 满 14 天、停滞 = `updated` 满 3 天、积压 = `created` 满 30 天仍 `open`,看板算、不存字段。`updated` 由 `new/claim/set/log` 刷新。owner 只取当前 git 身份。
|
|
4
4
|
|
|
5
5
|
## 状态机
|
|
6
6
|
|
|
@@ -12,15 +12,16 @@ doing ──set --status open──> open # 释放认领,执行记录
|
|
|
12
12
|
- `open`:已建、等认领。`doing`:已认领、在做。`done` 只由 `close` 产生。
|
|
13
13
|
- **没有 `blocked` 状态**(2026-10-19 取消)。旧数据里残留的 `blocked` 读侧当进行中:`list --status blocked` 可捞出,用 `set --status doing` 归位;新写入一律拒绝。
|
|
14
14
|
|
|
15
|
-
##
|
|
15
|
+
## 三个标记(看板计算,不是状态)
|
|
16
16
|
|
|
17
17
|
| 标记 | 依据 | 阈值 |
|
|
18
18
|
|---|---|---|
|
|
19
|
-
|
|
|
19
|
+
| 积压 | `created`(建了)至今仍 `open`(没人认领) | 满 30 天 |
|
|
20
|
+
| 超期 | `started`(接任务)至今,中途更新不影响 | 满 14 天 |
|
|
20
21
|
| 停滞 | `updated`(最后推进)至今 | 满 3 天 |
|
|
21
22
|
|
|
22
|
-
- 真源:`packages/plugin/src/host/services/home.service.ts` 的 `OVERDUE_DAYS =
|
|
23
|
-
-
|
|
23
|
+
- 真源:`packages/plugin/src/host/services/home.service.ts` 的 `BACKLOG_DAYS = 30` / `OVERDUE_DAYS = 14` / `STALE_DAYS = 3`;看板随响应下发三个天数,界面文案不硬编码。
|
|
24
|
+
- 脚本不算这三个值,`progress.json` 里也不存;agent 要回答「哪些停太久」时用 `list --json` 的 `created` / `updated` / `started` 与当前时间比。
|
|
24
25
|
- 老数据没有 `updated` 时,读侧回退到 `started`,再到 `created`。
|
|
25
26
|
|
|
26
27
|
## 时间
|
package/scripts/progress.py
CHANGED
|
@@ -38,7 +38,7 @@ except ImportError:
|
|
|
38
38
|
msvcrt = None
|
|
39
39
|
|
|
40
40
|
STATUSES = ("open", "doing")
|
|
41
|
-
# 旧数据只读兼容:早期版本有 blocked
|
|
41
|
+
# 旧数据只读兼容:早期版本有 blocked 状态(手动标「卡住」)。现在超期按时间判定
|
|
42
42
|
# (接任务满 7 天),不再允许新写入;list / validate / 看板仍能吃老文件。
|
|
43
43
|
LEGACY_STATUSES = ("blocked",)
|
|
44
44
|
PROGRESS_REL = Path("ledger/progress.json")
|
|
@@ -1364,7 +1364,7 @@ def cmd_set(args: argparse.Namespace) -> None:
|
|
|
1364
1364
|
)
|
|
1365
1365
|
if status == "blocked":
|
|
1366
1366
|
raise Fail(
|
|
1367
|
-
"没有 blocked
|
|
1367
|
+
"没有 blocked 状态:超期由时间自动判定(接任务满 14 天仍未结案),"
|
|
1368
1368
|
"状态只有 open / doing;卡在哪里请写进 worklog。"
|
|
1369
1369
|
)
|
|
1370
1370
|
if status == "done":
|