@fxri/toolkit 1.11.7 → 1.12.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.
- package/CHANGELOG.md +37 -0
- package/README.md +1 -1
- package/SPEC.md +129 -128
- package/dist/cli.cjs +75 -67
- package/dist/cli.js +75 -67
- package/dist/index.cjs +39 -34
- package/dist/index.js +39 -34
- package/package.json +1 -1
- package/skills/README.md +102 -102
- package/skills/fxri-plan-to-task/SKILL.md +123 -122
- package/skills/fxri-plan-to-task/references/conventions-spec.md +379 -215
- package/skills/fxri-plan-to-task/references/task-spec.md +114 -114
- package/skills/fxri-session-recap/SKILL.md +7 -7
|
@@ -1,114 +1,114 @@
|
|
|
1
|
-
# 任务文件规范(通用版)
|
|
2
|
-
|
|
3
|
-
> 面向多人 + AI 协作,任何语言项目可直接使用,仅依赖文件读写能力。本文件为 SKILL.md 的配套规范,是 @fxri/toolkit 仓库 `SPEC.md` 的通用裁剪版(去实现化,供非 toolkit 项目直接使用);两者重叠段以 `SPEC.md` 为单一事实源,本文件新增或改动须回写 `SPEC.md`。
|
|
4
|
-
|
|
5
|
-
## 1. 目录结构
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
.tasks/
|
|
9
|
-
├── active/ # 进行中的任务
|
|
10
|
-
│ └── {YYYYMM}/ # 月份子目录,如 202609
|
|
11
|
-
│ └── {YYYYMMDD}-{用户名}-{任务简述}.md
|
|
12
|
-
├── archive/ # 已终结任务归档
|
|
13
|
-
│ └── {YYYYMM}/
|
|
14
|
-
│ └── {YYYYMMDD}.md # 按完成日期归组的归档文件
|
|
15
|
-
└── conventions/ # 项目协作规范载体(可选,从任务提炼的规范沉淀地)
|
|
16
|
-
├── index.md # 唯一入口与唯一权威(首行为形态标记):端清单 + 每条一行指针(首列稳定 ID)
|
|
17
|
-
├── history.md # 规范演进记录(仅追加、不改旧行;只记规范语义变更)
|
|
18
|
-
├── common.md # 全端通用条文(按需创建)
|
|
19
|
-
└── <端名>.md # 各端专有条文,端名 = 任务 scope 取值(按需创建)
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
目录名 `.tasks` 为默认约定,项目可自定(如集中式任务库按项目分子目录),内部子结构不变。
|
|
23
|
-
|
|
24
|
-
`index.md` 首行为形态标记(`<!-- toolkit-conventions:
|
|
25
|
-
|
|
26
|
-
`conventions/` 不是任务文件:tasks 各子命令不读其内容,check 不会因内容告警(仅在载体形态异常与入口层现场异常时软告警,口径见 `conventions-spec.md`);它只作为 AI 协作时的规范源,由 fxri-plan-to-task 归档时与 fxri-session-recap 收尾时维护(写入前需用户确认)。
|
|
27
|
-
|
|
28
|
-
## 2. active 任务文件
|
|
29
|
-
|
|
30
|
-
### 2.1 命名
|
|
31
|
-
|
|
32
|
-
`{YYYYMMDD}-{用户名}-{任务简述}.md`
|
|
33
|
-
|
|
34
|
-
- 年月日 = 任务创建日,`YYYYMMDD` 直接拼接(不加 `-`)
|
|
35
|
-
- 用户名 = git 用户名;任务简述 = 不含空格的短语
|
|
36
|
-
|
|
37
|
-
### 2.2 frontmatter
|
|
38
|
-
|
|
39
|
-
```yaml
|
|
40
|
-
---
|
|
41
|
-
owner: 唐启云 # 负责人(git 用户名)
|
|
42
|
-
status: 进行中 # 待办 / 进行中 / 已完成 / 阻塞 / 已放弃
|
|
43
|
-
created: 20260902 # 创建日 YYYYMMDD,须等于文件名日期前缀
|
|
44
|
-
updated: 20260902 # 最近更新日 YYYYMMDD
|
|
45
|
-
completed: '' # 完成时间 YYYY-MM-DD HH:mm;仅终结态必填
|
|
46
|
-
depends_on: [] # 依赖的任务文件名(可带 .md),目标必须存在且不得成环
|
|
47
|
-
scope: app # 影响范围;只标本仓内的端 / 面(跨仓库改造时不含另一仓);多值以半角加号分隔(web+server),标签内不使用加号;顿号/逗号列表属误写会触发 check 软告警,中文列表请改用加号
|
|
48
|
-
---
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
- `已完成` / `已放弃` 为终结态:进入时必须补 `completed`(真实收工时间)。⚠️ `completed` 按**四级时间源**取证,禁止凭记忆估算、取对话时间或做时区换算:
|
|
52
|
-
1. **当场打点**(首选):任务完成时立即执行命令取真实时间(Windows `Get-Date -Format "yyyy-MM-dd HH:mm"`,macOS/Linux `date "+%Y-%m-%d %H:%M"`)
|
|
53
|
-
2. **聊天记录准确时间戳**:用户贴过的日志/终端输出时间戳、用户口述的确定时刻
|
|
54
|
-
3. **任务改动 git 提交时间**:`git log --format="%h %ci" <file>` 按提交时间取证
|
|
55
|
-
4. **系统当前时间兜底**:前三级皆不可得时当场取时,并在正文标注「时间为收尾补记」
|
|
56
|
-
|
|
57
|
-
工具对「完成时间晚于当前系统时间」会告警(时间源错误的典型症状)——为免跨时区误报,工具留最大正偏移(UTC+14)容差,实则晚于当前时刻 14 小时以上才告警;完成时间恰为零点整(如 `2026-09-05 00:00`,只填日期被自动补零的典型特征)亦会告警,需人工核实。归档块完成时间早于归档动作时间属正常(补档/历史修正场景),迁移由 `normalize --fix` 自动完成
|
|
58
|
-
- 正文以 `# 任务标题` 开头;游离待办子项必须拆为独立任务文件
|
|
59
|
-
|
|
60
|
-
## 3. 归档文件
|
|
61
|
-
|
|
62
|
-
- 命名 `{YYYYMMDD}.md`,日期 = 任务完成时间日期;放入 `archive/{YYYYMM}/`
|
|
63
|
-
- 文件头:`# {YYYYMMDD} 归档` + 引言(如自动生成说明)
|
|
64
|
-
- 每个任务块:
|
|
65
|
-
|
|
66
|
-
```markdown
|
|
67
|
-
## {YYYYMMDD}-{用户名}-{任务简述}
|
|
68
|
-
|
|
69
|
-
> 负责人:{owner} 状态:{status} 范围:{scope} 完成时间:{completed}
|
|
70
|
-
|
|
71
|
-
(任务正文)
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
- 块间以 `---` 分隔;**全文件按完成时间降序**(最新在前)
|
|
75
|
-
- 元数据行以 `> ` 开头、四字段齐全、以全角空格分隔
|
|
76
|
-
|
|
77
|
-
## 4. 手工归档步骤(有序)
|
|
78
|
-
|
|
79
|
-
1. 确认任务 status 为终结态且 `completed` 已填
|
|
80
|
-
2. 计算目标文件 `archive/{completed 的 YYYYMM}/{completed 的 YYYYMMDD}.md`
|
|
81
|
-
3. 读取已有归档文件(不存在则新建含文件头),把任务块加入
|
|
82
|
-
4. 全文件按 `completed` 降序重排,块间补 `---` 分隔
|
|
83
|
-
5. 写回归档文件
|
|
84
|
-
6. 删除 active 源文件;月份子目录与 `active/` 若已空则一并删除
|
|
85
|
-
|
|
86
|
-
⚠️ 多人同天归档、`pull` 后归档文件残留 git 冲突标记(`<<<<<<<` / `=======` / `>>>>>>>`,diff3 风格另有 `|||||||` base 段)时,按步骤 3-5 取冲突两侧任务块**并集、去重**后重新降序写回,删除全部标记行与 base 段即可;可跑 `toolkit tasks normalize --fix` 自动完成(按并集去重 + 完成时间降序确定性解决,无需人工逐块合并)。
|
|
87
|
-
|
|
88
|
-
## 5. 自查清单(校验)
|
|
89
|
-
|
|
90
|
-
- [ ] frontmatter 存在且七字段齐全
|
|
91
|
-
- [ ] status 为五枚举之一;终结态已填 completed
|
|
92
|
-
- [ ] completed 为 `YYYY-MM-DD HH:mm` 且日期真实存在,且不晚于当前系统时间(时间按四级时间源取证:当场打点 / 聊天记录时间戳 / git 提交时间 / 兜底标注补记,非估算)
|
|
93
|
-
- [ ] created 为 YYYYMMDD 且等于文件名日期前缀
|
|
94
|
-
- [ ] 文件名符合 `{YYYYMMDD}-{用户名}-{任务简述}.md`
|
|
95
|
-
- [ ] 任务文件放在 `active/{YYYYMM}/` 月份子目录,不直放 active 根目录
|
|
96
|
-
- [ ] `.tasks/` 下无游离于 active/ 之外的任务文件(直放 `.tasks` 根目录或漏建 active/ 层的 `{YYYYMM}/` 均不会被校验与归档;`conventions/` 属规范文件不受此限)
|
|
97
|
-
- [ ] active 内无跨文件同名任务
|
|
98
|
-
- [ ] depends_on 目标存在且无循环依赖
|
|
99
|
-
- [ ] 正文无「待实施 / 待核对 / 待评估 / TODO」等游离标记与未勾选的 `- [ ]`
|
|
100
|
-
- [ ] 归档后已做任务级规范沉淀检查(有可升格候选则经用户确认写入 conventions 载体,无则跳过)
|
|
101
|
-
- [ ] 若按项目约定提交代码:确认 `.tasks/` 全部改动(本次归档文件 + conventions 载体变更 + active 剩余任务)已纳入 git 提交范围,与代码变更同批提交
|
|
102
|
-
|
|
103
|
-
## 6. 协作约定
|
|
104
|
-
|
|
105
|
-
- 任务区是多写者共享区:先查后写,同一需求共用一个任务文件;建档与执行时遵守 conventions 载体(`.tasks/conventions/index.md`,存在时)中的项目规范,旧单文件 `conventions.md` 亦兼容读取
|
|
106
|
-
- **多人同天归档冲突**:归档文件按完成日期聚合、整文件重写,两个写者落在同一日必冲突;`pull` 后残留 git 冲突标记时跑 `toolkit tasks normalize --fix` 按并集去重 + 完成时间降序**确定性**解决(保留两侧任务块、丢弃 diff3 的 `\|\|\|\|\|\|\|` base 段与全部标记行),无需人工逐块合并
|
|
107
|
-
- **动手前置建档评估**:涉及仓库文件改动的任务,动手前先查 active/archive 判同主题(完整判别表见 SKILL.md 工作流第 1 步);active 有同主题则更新原文件;archive 有同主题且本次不产生仓库文件改动(重复提议 / 重复执行)则不重复建档,本次产生仓库文件改动(延续 / 扩展 / 重新实现)则重新建档并标注来源链
|
|
108
|
-
- **仓库文件改动口径**:需写入版本控制的工作区文件的增 / 改 / 删(源码、配置、文档、技能、任务区自身均计入);纯读取、纯执行、纯汇报不计入;拿不准时列出差异问用户,不猜
|
|
109
|
-
- **动作不算,改动才算**:收尾动作(提交、发版、推送、部署)本身及其固有产物(版本号、更新日志、标签)不构成任务、不单独建档;这些动作过程中若出现需改仓库文件才能解决的缺陷(如打包配置错误、发布渠道错误),该修复按普通任务建档
|
|
110
|
-
- **跨仓库改动各自归档(本仓自述)**:任务档是仓库自述,只记本仓的改动与动机;跨仓库是会话属性而非仓库属性,同一会话涉及多仓时各仓各自建档归档,不在一仓记录里承载另一仓的工作痕迹。判据取**视角**(描述的是不是本仓的改动与动机),非词表——依赖包名 / 被调接口名等属本仓事实者照写
|
|
111
|
-
- **归档块不可变**:已归档块是终结记录(唯一键 + 完成时间已固定),不追加新的工作内容;延续 / 扩展需求走新任务并标注来源链。唯一例外是**事实更正**——后续核实推翻原块结论、或协作口径变更导致历史事实字段需更正时,在其正文末尾追加「修订记录」(保留原结论、附更正时刻与依据);口径变更类更正可改受影响的**事实字段**(如 `scope`),但唯一键 / 完成时间 / 状态 / 负责人仍冻结。与 conventions 载体「废弃不删行」同属留痕优于抹除
|
|
112
|
-
- **验收与 CI 同源,不手写清单**:项目的验收步骤清单只允许一份真源——一条聚合命令(如 `pnpm verify`)背后由脚本定义步骤,本地与全部 CI 流水线共用它;禁止在规则文件、CI 配置里另抄一份步骤枚举。多份手写清单必然漂移,征兆就是「本地自检通过、CI 才报错」,出现该征兆先查清单是否已经漂移
|
|
113
|
-
- 强制约束到**沉淀**为止:归档 + 规范沉淀即流程终点;提交、发版、推送不是必经步骤,是否执行取决于用户的全局 / 个人 / 项目规则;若提交代码,按「归档与沉淀 → 跑项目验收命令 → git commit」的顺序执行,任务记录(归档文件 + conventions 载体)与代码变更落在同一提交
|
|
114
|
-
- **验收须晚于归档**:归档会改写任务区(写归档文件、删 active 源文件、清理空月份目录),而归档本身不做阻断式校验——早于归档跑验收就覆盖不到终态,归档产物等于无人校验。同理,归档块「完成情况」只记改动事实与所用验证命令,不逐条抄写验收输出(归档在前、验收在后,抄结果就成了先写结论后验证)
|
|
1
|
+
# 任务文件规范(通用版)
|
|
2
|
+
|
|
3
|
+
> 面向多人 + AI 协作,任何语言项目可直接使用,仅依赖文件读写能力。本文件为 SKILL.md 的配套规范,是 @fxri/toolkit 仓库 `SPEC.md` 的通用裁剪版(去实现化,供非 toolkit 项目直接使用);两者重叠段以 `SPEC.md` 为单一事实源,本文件新增或改动须回写 `SPEC.md`。
|
|
4
|
+
|
|
5
|
+
## 1. 目录结构
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
.tasks/
|
|
9
|
+
├── active/ # 进行中的任务
|
|
10
|
+
│ └── {YYYYMM}/ # 月份子目录,如 202609
|
|
11
|
+
│ └── {YYYYMMDD}-{用户名}-{任务简述}.md
|
|
12
|
+
├── archive/ # 已终结任务归档
|
|
13
|
+
│ └── {YYYYMM}/
|
|
14
|
+
│ └── {YYYYMMDD}.md # 按完成日期归组的归档文件
|
|
15
|
+
└── conventions/ # 项目协作规范载体(可选,从任务提炼的规范沉淀地)
|
|
16
|
+
├── index.md # 唯一入口与唯一权威(首行为形态标记):端清单 + 每条一行指针(首列稳定 ID)
|
|
17
|
+
├── history.md # 规范演进记录(仅追加、不改旧行;只记规范语义变更)
|
|
18
|
+
├── common.md # 全端通用条文(按需创建)
|
|
19
|
+
└── <端名>.md # 各端专有条文,端名 = 任务 scope 取值(按需创建)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
目录名 `.tasks` 为默认约定,项目可自定(如集中式任务库按项目分子目录),内部子结构不变。
|
|
23
|
+
|
|
24
|
+
`index.md` 首行为形态标记(`<!-- toolkit-conventions: v3 -->`),索引表首列是稳定 ID(`C-<n>`);无标记的 v1、标记为 `v2` 的旧形态仍合法、`check` 不告警,可用 `toolkit conventions upgrade` 升级。载体结构、端名规则、分层读写判定与存量迁移见 `conventions-spec.md`。
|
|
25
|
+
|
|
26
|
+
`conventions/` 不是任务文件:tasks 各子命令不读其内容,check 不会因内容告警(仅在载体形态异常与入口层现场异常时软告警,口径见 `conventions-spec.md`);它只作为 AI 协作时的规范源,由 fxri-plan-to-task 归档时与 fxri-session-recap 收尾时维护(写入前需用户确认)。
|
|
27
|
+
|
|
28
|
+
## 2. active 任务文件
|
|
29
|
+
|
|
30
|
+
### 2.1 命名
|
|
31
|
+
|
|
32
|
+
`{YYYYMMDD}-{用户名}-{任务简述}.md`
|
|
33
|
+
|
|
34
|
+
- 年月日 = 任务创建日,`YYYYMMDD` 直接拼接(不加 `-`)
|
|
35
|
+
- 用户名 = git 用户名;任务简述 = 不含空格的短语
|
|
36
|
+
|
|
37
|
+
### 2.2 frontmatter
|
|
38
|
+
|
|
39
|
+
```yaml
|
|
40
|
+
---
|
|
41
|
+
owner: 唐启云 # 负责人(git 用户名)
|
|
42
|
+
status: 进行中 # 待办 / 进行中 / 已完成 / 阻塞 / 已放弃
|
|
43
|
+
created: 20260902 # 创建日 YYYYMMDD,须等于文件名日期前缀
|
|
44
|
+
updated: 20260902 # 最近更新日 YYYYMMDD
|
|
45
|
+
completed: '' # 完成时间 YYYY-MM-DD HH:mm;仅终结态必填
|
|
46
|
+
depends_on: [] # 依赖的任务文件名(可带 .md),目标必须存在且不得成环
|
|
47
|
+
scope: app # 影响范围;只标本仓内的端 / 面(跨仓库改造时不含另一仓);多值以半角加号分隔(web+server),标签内不使用加号;顿号/逗号列表属误写会触发 check 软告警,中文列表请改用加号
|
|
48
|
+
---
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
- `已完成` / `已放弃` 为终结态:进入时必须补 `completed`(真实收工时间)。⚠️ `completed` 按**四级时间源**取证,禁止凭记忆估算、取对话时间或做时区换算:
|
|
52
|
+
1. **当场打点**(首选):任务完成时立即执行命令取真实时间(Windows `Get-Date -Format "yyyy-MM-dd HH:mm"`,macOS/Linux `date "+%Y-%m-%d %H:%M"`)
|
|
53
|
+
2. **聊天记录准确时间戳**:用户贴过的日志/终端输出时间戳、用户口述的确定时刻
|
|
54
|
+
3. **任务改动 git 提交时间**:`git log --format="%h %ci" <file>` 按提交时间取证
|
|
55
|
+
4. **系统当前时间兜底**:前三级皆不可得时当场取时,并在正文标注「时间为收尾补记」
|
|
56
|
+
|
|
57
|
+
工具对「完成时间晚于当前系统时间」会告警(时间源错误的典型症状)——为免跨时区误报,工具留最大正偏移(UTC+14)容差,实则晚于当前时刻 14 小时以上才告警;完成时间恰为零点整(如 `2026-09-05 00:00`,只填日期被自动补零的典型特征)亦会告警,需人工核实。归档块完成时间早于归档动作时间属正常(补档/历史修正场景),迁移由 `normalize --fix` 自动完成
|
|
58
|
+
- 正文以 `# 任务标题` 开头;游离待办子项必须拆为独立任务文件
|
|
59
|
+
|
|
60
|
+
## 3. 归档文件
|
|
61
|
+
|
|
62
|
+
- 命名 `{YYYYMMDD}.md`,日期 = 任务完成时间日期;放入 `archive/{YYYYMM}/`
|
|
63
|
+
- 文件头:`# {YYYYMMDD} 归档` + 引言(如自动生成说明)
|
|
64
|
+
- 每个任务块:
|
|
65
|
+
|
|
66
|
+
```markdown
|
|
67
|
+
## {YYYYMMDD}-{用户名}-{任务简述}
|
|
68
|
+
|
|
69
|
+
> 负责人:{owner} 状态:{status} 范围:{scope} 完成时间:{completed}
|
|
70
|
+
|
|
71
|
+
(任务正文)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
- 块间以 `---` 分隔;**全文件按完成时间降序**(最新在前)
|
|
75
|
+
- 元数据行以 `> ` 开头、四字段齐全、以全角空格分隔
|
|
76
|
+
|
|
77
|
+
## 4. 手工归档步骤(有序)
|
|
78
|
+
|
|
79
|
+
1. 确认任务 status 为终结态且 `completed` 已填
|
|
80
|
+
2. 计算目标文件 `archive/{completed 的 YYYYMM}/{completed 的 YYYYMMDD}.md`
|
|
81
|
+
3. 读取已有归档文件(不存在则新建含文件头),把任务块加入
|
|
82
|
+
4. 全文件按 `completed` 降序重排,块间补 `---` 分隔
|
|
83
|
+
5. 写回归档文件
|
|
84
|
+
6. 删除 active 源文件;月份子目录与 `active/` 若已空则一并删除
|
|
85
|
+
|
|
86
|
+
⚠️ 多人同天归档、`pull` 后归档文件残留 git 冲突标记(`<<<<<<<` / `=======` / `>>>>>>>`,diff3 风格另有 `|||||||` base 段)时,按步骤 3-5 取冲突两侧任务块**并集、去重**后重新降序写回,删除全部标记行与 base 段即可;可跑 `toolkit tasks normalize --fix` 自动完成(按并集去重 + 完成时间降序确定性解决,无需人工逐块合并)。
|
|
87
|
+
|
|
88
|
+
## 5. 自查清单(校验)
|
|
89
|
+
|
|
90
|
+
- [ ] frontmatter 存在且七字段齐全
|
|
91
|
+
- [ ] status 为五枚举之一;终结态已填 completed
|
|
92
|
+
- [ ] completed 为 `YYYY-MM-DD HH:mm` 且日期真实存在,且不晚于当前系统时间(时间按四级时间源取证:当场打点 / 聊天记录时间戳 / git 提交时间 / 兜底标注补记,非估算)
|
|
93
|
+
- [ ] created 为 YYYYMMDD 且等于文件名日期前缀
|
|
94
|
+
- [ ] 文件名符合 `{YYYYMMDD}-{用户名}-{任务简述}.md`
|
|
95
|
+
- [ ] 任务文件放在 `active/{YYYYMM}/` 月份子目录,不直放 active 根目录
|
|
96
|
+
- [ ] `.tasks/` 下无游离于 active/ 之外的任务文件(直放 `.tasks` 根目录或漏建 active/ 层的 `{YYYYMM}/` 均不会被校验与归档;`conventions/` 属规范文件不受此限)
|
|
97
|
+
- [ ] active 内无跨文件同名任务
|
|
98
|
+
- [ ] depends_on 目标存在且无循环依赖
|
|
99
|
+
- [ ] 正文无「待实施 / 待核对 / 待评估 / TODO」等游离标记与未勾选的 `- [ ]`
|
|
100
|
+
- [ ] 归档后已做任务级规范沉淀检查(有可升格候选则经用户确认写入 conventions 载体,无则跳过)
|
|
101
|
+
- [ ] 若按项目约定提交代码:确认 `.tasks/` 全部改动(本次归档文件 + conventions 载体变更 + active 剩余任务)已纳入 git 提交范围,与代码变更同批提交
|
|
102
|
+
|
|
103
|
+
## 6. 协作约定
|
|
104
|
+
|
|
105
|
+
- 任务区是多写者共享区:先查后写,同一需求共用一个任务文件;建档与执行时遵守 conventions 载体(`.tasks/conventions/index.md`,存在时)中的项目规范,旧单文件 `conventions.md` 亦兼容读取
|
|
106
|
+
- **多人同天归档冲突**:归档文件按完成日期聚合、整文件重写,两个写者落在同一日必冲突;`pull` 后残留 git 冲突标记时跑 `toolkit tasks normalize --fix` 按并集去重 + 完成时间降序**确定性**解决(保留两侧任务块、丢弃 diff3 的 `\|\|\|\|\|\|\|` base 段与全部标记行),无需人工逐块合并
|
|
107
|
+
- **动手前置建档评估**:涉及仓库文件改动的任务,动手前先查 active/archive 判同主题(完整判别表见 SKILL.md 工作流第 1 步);active 有同主题则更新原文件;archive 有同主题且本次不产生仓库文件改动(重复提议 / 重复执行)则不重复建档,本次产生仓库文件改动(延续 / 扩展 / 重新实现)则重新建档并标注来源链
|
|
108
|
+
- **仓库文件改动口径**:需写入版本控制的工作区文件的增 / 改 / 删(源码、配置、文档、技能、任务区自身均计入);纯读取、纯执行、纯汇报不计入;拿不准时列出差异问用户,不猜
|
|
109
|
+
- **动作不算,改动才算**:收尾动作(提交、发版、推送、部署)本身及其固有产物(版本号、更新日志、标签)不构成任务、不单独建档;这些动作过程中若出现需改仓库文件才能解决的缺陷(如打包配置错误、发布渠道错误),该修复按普通任务建档
|
|
110
|
+
- **跨仓库改动各自归档(本仓自述)**:任务档是仓库自述,只记本仓的改动与动机;跨仓库是会话属性而非仓库属性,同一会话涉及多仓时各仓各自建档归档,不在一仓记录里承载另一仓的工作痕迹。判据取**视角**(描述的是不是本仓的改动与动机),非词表——依赖包名 / 被调接口名等属本仓事实者照写
|
|
111
|
+
- **归档块不可变**:已归档块是终结记录(唯一键 + 完成时间已固定),不追加新的工作内容;延续 / 扩展需求走新任务并标注来源链。唯一例外是**事实更正**——后续核实推翻原块结论、或协作口径变更导致历史事实字段需更正时,在其正文末尾追加「修订记录」(保留原结论、附更正时刻与依据);口径变更类更正可改受影响的**事实字段**(如 `scope`),但唯一键 / 完成时间 / 状态 / 负责人仍冻结。与 conventions 载体「废弃不删行」同属留痕优于抹除
|
|
112
|
+
- **验收与 CI 同源,不手写清单**:项目的验收步骤清单只允许一份真源——一条聚合命令(如 `pnpm verify`)背后由脚本定义步骤,本地与全部 CI 流水线共用它;禁止在规则文件、CI 配置里另抄一份步骤枚举。多份手写清单必然漂移,征兆就是「本地自检通过、CI 才报错」,出现该征兆先查清单是否已经漂移
|
|
113
|
+
- 强制约束到**沉淀**为止:归档 + 规范沉淀即流程终点;提交、发版、推送不是必经步骤,是否执行取决于用户的全局 / 个人 / 项目规则;若提交代码,按「归档与沉淀 → 跑项目验收命令 → git commit」的顺序执行,任务记录(归档文件 + conventions 载体)与代码变更落在同一提交
|
|
114
|
+
- **验收须晚于归档**:归档会改写任务区(写归档文件、删 active 源文件、清理空月份目录),而归档本身不做阻断式校验——早于归档跑验收就覆盖不到终态,归档产物等于无人校验。同理,归档块「完成情况」只记改动事实与所用验证命令,不逐条抄写验收输出(归档在前、验收在后,抄结果就成了先写结论后验证)
|
|
@@ -3,14 +3,14 @@ name: fxri-session-recap
|
|
|
3
3
|
description: 会话收尾的工作记忆沉淀 + 新会话开场恢复 + 历史任务时间修正:收尾时把整场会话的全部任务完整建档归档,按四级时间源还原真实完成时间,沉淀规范进 conventions 载体;新会话开场按三层恢复(全量索引 + active 精读 + 近窗归档)重建现场并核对规范;也可批量修正历史归档时间。当用户表达会话收尾意图(如今天先到这、收个尾、归档本次会话、把结论记下来)、接续意图(如恢复上下文、继续上次、上次做到哪)、或修正历史任务时间时使用。不用于会话中途的常规方案建档(那是 fxri-plan-to-task 的职责)、与工作交接无关的代码技术总结。
|
|
4
4
|
license: MIT
|
|
5
5
|
metadata:
|
|
6
|
-
version: "1.
|
|
6
|
+
version: "1.4.1"
|
|
7
7
|
author: fxri
|
|
8
8
|
source: https://github.com/fxri-net/toolkit
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# 会话归档、上下文恢复与历史修正
|
|
12
12
|
|
|
13
|
-
> 本技能版本 1.
|
|
13
|
+
> 本技能版本 1.4.1(随 @fxri/toolkit 同批分发)。被问版本时即报此值——不读磁盘、不跑 CLI:报出的值就是本会话上下文里已加载内容的版本,可与 `toolkit skills status` 打印的磁盘基准值对照,不一致即说明会话上下文已过期,开新会话即可。
|
|
14
14
|
|
|
15
15
|
## 何时使用
|
|
16
16
|
|
|
@@ -60,23 +60,23 @@ metadata:
|
|
|
60
60
|
|
|
61
61
|
### R3 规范落点:`.tasks/conventions/` 载体(两级沉淀同一载体)
|
|
62
62
|
|
|
63
|
-
- 唯一落点 `.tasks/conventions/`(纯 Markdown 随 git 走):`index.md` 唯一入口(形态标记 + 端清单 +
|
|
63
|
+
- 唯一落点 `.tasks/conventions/`(纯 Markdown 随 git 走):`index.md` 唯一入口(形态标记 + 端清单 + 活跃索引表,首列为稳定 ID `C-<n>`),`history.md` 承载语义演进记录(独立文件、仅追加),`retired.md` 承载退休台账(条目作废时迁入、冻结语义,按需创建),`common.md` 承载所有端通用条文,`<端名>.md`(或分类标签分册)承载各端专属条文;每条规范带来源任务与日期,可审计
|
|
64
64
|
- **任务级**(fxri-plan-to-task 归档时):单任务产出可升格规范才追加,无则完全静默
|
|
65
65
|
- **会话级**(本技能收尾时):聚合全会话候选,与已有规范**合并去重**——跨任务重复模式在此补,用户明示规则兜底
|
|
66
66
|
- **归属判定**:先问「是否**所有端都适用**」→ 是则归 `common`;否则逐端确认后写入命中的端分册。⚠️ 禁止跨端合并归属(真全端才升 `common`,只适用几端则各端各记一条);`common` 的语义是「所有端」不是「不确定归哪端」的暂存区
|
|
67
|
-
- **端名**:与任务 frontmatter `scope` 取值**逐字一致**(任务写 `scope: web+server` → 读 `web.md` + `server.md
|
|
67
|
+
- **端名**:与任务 frontmatter `scope` 取值**逐字一致**(任务写 `scope: web+server` → 读 `web.md` + `server.md`,无论命中与否**恒叠加 `common.md`**;`scope` 中非端值且存在同名分册者按分类标签分册加载);`index.md` 顶部「端清单」是端的**唯一权威**,不扫目录
|
|
68
68
|
- 写前**必须用户确认**;同义规范不重复记录,只补差异或合并增强
|
|
69
69
|
- **表格形态**:载体与任务区表格一律**紧凑形态**(单元格间只留一个空格,不做列对齐填充);手工写表不为对齐补空格,已有填充用 `toolkit conventions format` 归一(幂等、跳过代码块、不改语义),源头由 `toolkit init` 托管的 `.prettierignore` 排除任务区
|
|
70
70
|
- 一次性决策留在任务正文,不进规范(升格标准:重复出现 ≥2 次,或用户明示「以后都要这样」)
|
|
71
|
-
- **内容修订 vs
|
|
71
|
+
- **内容修订 vs 形态迁移**:语义变更走「`history.md` 追加留痕 + index 行更新」;条目作废走**迁出 + 三层清理**(索引行删除并迁入 `retired.md` 冻结语义、物理删除分册内该条小节、外部单一事实源同步删改,不留「已废弃」占位);使用者项目存旧单文件 `conventions.md` 且要求迁移时走**迁移三段式**(建目录搬原文 → 逐条提归属建议 → 用户确认后拆分册);载体为 v1 / v2(无首行形态标记,或标记为 `v2` / 索引表首列非 `ID` / 缺 `history.md`)时走 **v1 / v2→v3 升级**——优先 `toolkit conventions upgrade`(可 `--dry-run` 预演),亦可按链路手工执行;均可中断不丢内容;已成 v3 标记却残留 v2 独有列(「状态」「确立来源任务」)或 `history.md` / `retired.md` 表头首格非 `ID` 者属**形态残留**(非升级触发),`toolkit tasks check` / `toolkit conventions status` 软告警提示人工归一
|
|
72
72
|
- ⚠️ 兼容读:先找 `conventions/index.md`,不存在再看旧单文件 `conventions.md`(提示可迁移);两者并存时以目录形态为准
|
|
73
|
-
-
|
|
73
|
+
- 完整细则(三分区结构、形态标记与稳定 ID、`index.md` 表列定义、`history.md` / `retired.md` 结构、分层读写判定、内容修订、表格形态(紧凑)、两种形态、迁移与 v1 / v2→v3 升级步骤、自查清单)见 `../fxri-plan-to-task/references/conventions-spec.md`;fxri-plan-to-task 未一并安装、该兄弟路径不存在时,改读包内真源——`toolkit skills status` 打印的「技能源」目录下 `fxri-plan-to-task/references/conventions-spec.md`
|
|
74
74
|
|
|
75
75
|
### 规范提炼子流程(三模式共用)
|
|
76
76
|
|
|
77
77
|
1. 对照 conventions 载体收集候选:会话中用户明示的规则、与已有规范重复印证的决策、跨任务重复模式
|
|
78
78
|
2. 输出候选清单(每条含来源任务、建议归属与理由),交用户确认
|
|
79
|
-
3. 用户确认后写入载体:`index.md` 补索引行(首列稳定 ID `C-<n>` /
|
|
79
|
+
3. 用户确认后写入载体:`index.md` 补索引行(首列稳定 ID `C-<n>` / 归属),条文归位到 `common.md` 或命中的端分册 / 分类标签分册;语义变更先在 `history.md` 追加一行留痕,条目作废按三层清理迁入 `retired.md`
|
|
80
80
|
4. 无候选时完全静默,不强加流程
|
|
81
81
|
|
|
82
82
|
## 模式一:沉淀本次会话
|