@fxri/toolkit 1.7.4 → 1.8.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 +17 -0
- package/README.md +4 -3
- package/SPEC.md +11 -8
- package/package.json +1 -1
- package/skills/README.md +2 -2
- package/skills/fxri-plan-to-task/SKILL.md +47 -12
- package/skills/fxri-plan-to-task/references/task-spec.md +31 -19
- package/skills/fxri-release-changelog/SKILL.md +6 -5
- package/skills/fxri-session-recap/SKILL.md +94 -31
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# 方弦工具集
|
|
2
2
|
|
|
3
|
+
## 1.8.0
|
|
4
|
+
|
|
5
|
+
> 2026-09-06 发布
|
|
6
|
+
|
|
7
|
+
### ✨ 新增功能
|
|
8
|
+
|
|
9
|
+
- 技能:fxri-plan-to-task 升级 1.0.7——completed 按四级时间源取证;归档后做任务级规范沉淀(写入 conventions.md),能力终点由「归档」升级为「归档 + 沉淀」;先查后写时读取并遵守 conventions.md
|
|
10
|
+
- 技能:fxri-plan-to-task 升级 1.1.0——「先查后写」强化为「动手前置建档评估」流程落点(所有仓库改动前必做),补同主题判别表:active 同主题更新原文件、archive 同主题无增量提示不重复建档、有增量重建并标注来源链、归档任务不可变
|
|
11
|
+
- 技能:fxri-session-recap 升级 1.1.0——会话收尾全量沉淀(先核对清单防漏档)、四级时间源还原真实完成时间、新会话三层恢复覆盖全部任务(含已归档,近窗超阈值自动降级统计)、历史任务时间批量修正、规范沉淀进 `.tasks/conventions.md`
|
|
12
|
+
|
|
13
|
+
### 🐛 补丁修复
|
|
14
|
+
|
|
15
|
+
- 文档:AI 全局规则模板收尾改自动提交——任务收尾的 git 提交自动执行(作者个人收紧,可参考可裁剪),推送与发版仍需用户明确
|
|
16
|
+
- 文档:新增独立「操作手册」页(按场景列出该说什么/做什么,覆盖首次使用到发版升级全闭环);ai-rules.md 全局规则收敛为薄壳——可变细节进 skills,升级 skills 后无需再手动同步规则全文
|
|
17
|
+
- 技能:fxri-release-changelog 升级 1.0.5——触发词扩充为语义化意图描述(发一版/出个版本/记一下这次改动等近义表达均可触发,不要求字面一致)
|
|
18
|
+
- 技能:fxri-release-changelog 升级 1.0.6——description 与「何时使用」补反例排除:「提交个版本/先提交一版/commit」指 git 提交当前改动而非发版,仅在用户明确表达发布/生成 CHANGELOG 时才进入本技能
|
|
19
|
+
|
|
3
20
|
## 1.7.4
|
|
4
21
|
|
|
5
22
|
> 2026-09-05 发布
|
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ pnpm exec toolkit init
|
|
|
31
31
|
pnpm exec toolkit tasks
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
-
之后:方案确认后登记为 `.tasks/` 任务文件 → `pnpm exec toolkit tasks check` 校验 → 完成后 `pnpm exec toolkit tasks archive`
|
|
34
|
+
之后:方案确认后登记为 `.tasks/` 任务文件 → `pnpm exec toolkit tasks check` 校验 → 完成后 `pnpm exec toolkit tasks archive` 归档并做规范沉淀。完整步骤见 [新手指南](./docs/getting-started.md)。
|
|
35
35
|
|
|
36
36
|
## ✨ 能力矩阵
|
|
37
37
|
|
|
@@ -49,6 +49,7 @@ pnpm exec toolkit tasks
|
|
|
49
49
|
| 文档 | 适合谁 |
|
|
50
50
|
| --- | --- |
|
|
51
51
|
| [新手指南](./docs/getting-started.md) | 第一次接触,想 30 秒跑起来(含零基础术语表) |
|
|
52
|
+
| [操作手册](./docs/handbook.md) | 日常照着做:每个场景该说什么、做什么 |
|
|
52
53
|
| [完整攻略](./docs/guide.md) | 日常使用:工作流、Git 纳管、项目级激活、多语言 CHANGELOG |
|
|
53
54
|
| [CLI 参考](./docs/cli.md) | 查命令、参数、默认值、退出码 |
|
|
54
55
|
| [API 参考](./docs/api.md) | 作为库引入 Node 项目 |
|
|
@@ -63,9 +64,9 @@ pnpm exec toolkit tasks
|
|
|
63
64
|
pnpm dlx skills add fxri-net/toolkit # npm 用户:npx skills add fxri-net/toolkit
|
|
64
65
|
```
|
|
65
66
|
|
|
66
|
-
- [fxri-plan-to-task](./skills/fxri-plan-to-task/SKILL.md)
|
|
67
|
+
- [fxri-plan-to-task](./skills/fxri-plan-to-task/SKILL.md):方案确认后落盘为任务文件(动手前建档评估、check、归档 + 任务级规范沉淀为强制终点)
|
|
67
68
|
- [fxri-release-changelog](./skills/fxri-release-changelog/SKILL.md):发版时创建变更集、格式化多语言 CHANGELOG
|
|
68
|
-
- [fxri-session-recap](./skills/fxri-session-recap/SKILL.md)
|
|
69
|
+
- [fxri-session-recap](./skills/fxri-session-recap/SKILL.md):会话收尾全量沉淀、新会话三层恢复、历史任务时间批量修正(1.7.0 新增,1.8.0 扩展)
|
|
69
70
|
|
|
70
71
|
skills 与工具的关系、只在公司项目激活等说明见 [FAQ](./docs/faq.md) 与 [完整攻略](./docs/guide.md#ai-技能包-skills)。
|
|
71
72
|
|
package/SPEC.md
CHANGED
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
|
|
9
9
|
任务区是**多写者共享**的:同一 `.tasks/` 可能被多人或多个 AI 参与。为避免互相覆盖,归档、归一化修复等工具内部写操作以排他锁(`.archive.lock`)防并发覆盖;人 / AI 的直接编辑遵循「先查后写」约定。约定:
|
|
10
10
|
|
|
11
|
-
1. **先查后写**:新建、更新或归档任务前,先 `toolkit tasks` 查看 active 总览,并核对 archive
|
|
11
|
+
1. **先查后写**:新建、更新或归档任务前,先 `toolkit tasks` 查看 active 总览,并核对 archive 是否已有同主题任务;active 已有同主题任务则更新原文件,禁止重复建档。archive 已有同主题任务(已归档完成)时按增量判别:无增量(重复提议)不建档、有增量(延续/扩展)则重新建档并在正文首行标注来源链 `延续 {原归档任务名}(见 archive/{YYYYMM}/{YYYYMMDD}.md)`、仅修正旧记录错误走历史修正(fxri-session-recap 模式三)不建档。**归档任务不可变**:已归档块是终结记录,不追加新内容,延续需求一律走新任务。
|
|
12
12
|
2. **任务唯一键**:`{年月日}-{用户名}-{任务简述}` 唯一标识一个任务;多人对同一需求不得各自建档,应共用同一文件。
|
|
13
|
-
3.
|
|
13
|
+
3. **收尾边界到沉淀**:强制约束到「归档 + 规范沉淀」为止——终结态任务归档后做任务级规范沉淀(写入 conventions.md),归档 + 沉淀即流程终点;提交、发版、推送不是必经步骤,是否执行取决于用户的全局 / 个人 / 项目规则。若提交代码,先归档与沉淀、后提交,任务记录与代码变更落在同一 git 提交。
|
|
14
14
|
4. **可执行项必须落地为任务**:方案正文里的「待办 / 待实施 / 待核对」等子项,应拆分为独立 active 任务,不留游离待办;`toolkit tasks check` 会扫描此类未闭合标记。
|
|
15
15
|
|
|
16
16
|
## 1. 目录结构
|
|
@@ -20,11 +20,14 @@
|
|
|
20
20
|
├── active/ # 实时任务(未完成)
|
|
21
21
|
│ └── {年月}/ # YYYYMM,如 202609
|
|
22
22
|
│ └── {年月日}-{用户名}-{任务简述}.md
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
├── archive/ # 任务归档(已完成)
|
|
24
|
+
│ └── {年月}/
|
|
25
|
+
│ └── {年月日}.md # 某天归档
|
|
26
|
+
└── conventions.md # 项目协作规范(可选):从任务提炼的规范沉淀地,非任务文件
|
|
26
27
|
```
|
|
27
28
|
|
|
29
|
+
`conventions.md` 由 AI 协作流程(fxri-plan-to-task 归档时 / fxri-session-recap 收尾时)维护,写入前需用户确认;tasks 命令不读取它、check 不因它告警。
|
|
30
|
+
|
|
28
31
|
## 2. active 任务文件
|
|
29
32
|
|
|
30
33
|
### 2.1 命名
|
|
@@ -33,7 +36,7 @@
|
|
|
33
36
|
|
|
34
37
|
- `年月日` = 任务创建日,`YYYYMMDD` 直接拼(不加 `-`)
|
|
35
38
|
- `用户名` = git 用户名
|
|
36
|
-
- `任务简述` =
|
|
39
|
+
- `任务简述` = 简短短语(不加空格;建议团队统一语言)
|
|
37
40
|
|
|
38
41
|
### 2.2 内容
|
|
39
42
|
|
|
@@ -59,7 +62,7 @@ scope: app
|
|
|
59
62
|
| status | enum | `待办` / `进行中` / `已完成` / `阻塞` / `已放弃` |
|
|
60
63
|
| created | string | 创建日 `YYYYMMDD`,应等于文件名日期前缀;缺失/不一致/格式错误时 `check` 软告警 |
|
|
61
64
|
| updated | string | 更新日 `YYYYMMDD` |
|
|
62
|
-
| completed | string | 完成时间 `YYYY-MM-DD HH:mm`,`status` 为 `已完成`/`已放弃`
|
|
65
|
+
| completed | string | 完成时间 `YYYY-MM-DD HH:mm`,`status` 为 `已完成`/`已放弃` 时必填;按四级时间源取证:当场打点(任务完成时取真实时间,首选)/ 聊天记录准确时间戳 / 任务改动 git 提交时间 / 系统当前时间兜底(须标注「收尾补记」);纯日期写法(`YYYY-MM-DD`)会被补齐 `00:00`,仅日期未补全完整时间会软告警 |
|
|
63
66
|
| depends_on | array | 依赖任务文件名,引用可带 `.md` 扩展名(校验时自动归一为不含扩展名的 basename) |
|
|
64
67
|
| scope | string | 影响范围 |
|
|
65
68
|
|
|
@@ -99,7 +102,7 @@ scope: app
|
|
|
99
102
|
3. `待办` / `进行中` / `阻塞` 均不归档。
|
|
100
103
|
4. 归档文件按 `completed` 的日期(`YYYYMMDD`)划分。
|
|
101
104
|
5. 归档文件内任务按 `completed` **降序**排序(最新在前,`YYYY-MM-DD HH:mm` 定宽字符串比较即时间序)。
|
|
102
|
-
6. **完成时间口径**:`completed`
|
|
105
|
+
6. **完成时间口径**:`completed` 只填真实收工时间(四级时间源取证),日期应与归档文件日期一致;不一致属「日期漂移」,`toolkit tasks normalize` 会检出,`--fix` 自动把漂移块迁移到对应日期文件(迁移前可用 `normalize` 只读检查);归档文件放错月份目录(如 `archive/202608/20260903.md`)时 `--fix` 会将其移动到正确月份目录。⚠️ 补档 / 历史时间修正场景下,归档块的完成时间早于归档动作时间是正常的——修正块时间后执行 `normalize --fix` 即完成迁移。
|
|
103
106
|
7. **疑似任务块**:任务块判定要求标题后首个非空行为含「完成时间」的元数据行;形如 `{年月日}-{负责人}-{简述}` 的 `## ` 标题后跟 `> ` 元数据但缺「完成时间」时,会被视为疑似任务块并在 `normalize` 检出提示人工确认(不自动修复)。
|
|
104
107
|
8. **并发归档防护**:归档采用排他锁(`.archive.lock`),检测到并发归档时跳过并告警;`--dry-run` 可预演归档动作而不落盘。
|
|
105
108
|
|
package/package.json
CHANGED
package/skills/README.md
CHANGED
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
|
|
9
9
|
| 技能 | 用途 |
|
|
10
10
|
| --- | --- |
|
|
11
|
-
| [fxri-plan-to-task](./fxri-plan-to-task/SKILL.md) |
|
|
11
|
+
| [fxri-plan-to-task](./fxri-plan-to-task/SKILL.md) | 方案落盘:建档评估(先查后写)→ 建档 → 校验 → 归档 → 任务级规范沉淀(能力终点) |
|
|
12
12
|
| [fxri-release-changelog](./fxri-release-changelog/SKILL.md) | changesets 发版与多语言 CHANGELOG 维护 |
|
|
13
|
-
| [fxri-session-recap](./fxri-session-recap/SKILL.md) |
|
|
13
|
+
| [fxri-session-recap](./fxri-session-recap/SKILL.md) | 会话收尾全量沉淀 / 新会话三层恢复 / 历史任务时间批量修正 |
|
|
14
14
|
|
|
15
15
|
## 安装
|
|
16
16
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fxri-plan-to-task
|
|
3
|
-
description:
|
|
3
|
+
description: 将已确认的实施方案落盘为标准任务文件并跟踪至归档:动手前建档评估(查 active/archive 判同主题)、按模板建档、状态机更新、四级时间源取证、自查校验、任务级规范沉淀与手工归档。当用户确认方案后表达「开始落地/登记记录」的意图,或即将动手改仓库文件时使用——含建档、任务登记、落盘、归档、任务校验等说法及其口语近义表达(如按这个做吧、记一下、建个任务跟踪)均触发。不用于方案未确认的对话、会话收尾整场沉淀(fxri-session-recap 模式一)、与任务记录无关的普通 TODO、issue 管理或日常提交信息撰写。
|
|
4
4
|
license: MIT
|
|
5
5
|
metadata:
|
|
6
|
-
version: "1.0
|
|
6
|
+
version: "1.1.0"
|
|
7
7
|
author: fxri
|
|
8
8
|
source: https://github.com/fxri-net/toolkit
|
|
9
9
|
---
|
|
@@ -12,22 +12,48 @@ metadata:
|
|
|
12
12
|
|
|
13
13
|
## 何时使用
|
|
14
14
|
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
- 用户确认实施方案后,表达开始落地/登记记录的意图(语义触发,不要求字面一致):建档 / 任务登记 / 落盘 / 归档 / 任务校验 / 按这个做吧 / 记一下 / 建个任务跟踪
|
|
16
|
+
- **即将动手改仓库文件前**(方案已确认、准备执行改动)也是本技能适用场景——动手前先做建档评估(见工作流第 1 步),避免跳过建档直接执行
|
|
17
|
+
- 触发前置条件:**方案已确认**。用户说「开始/开工」但方案尚未确认时,先出方案等确认,不建档
|
|
18
|
+
- **何时不使用**:方案未确认的对话;会话收尾的整场沉淀与归档(那是 fxri-session-recap 模式一);与方案落盘无关的普通 TODO、issue 管理、日历待办、日常提交信息撰写
|
|
19
19
|
|
|
20
20
|
## 核心约定
|
|
21
21
|
|
|
22
22
|
任务文件规范(目录结构、命名、frontmatter 字段、归档格式、手工归档步骤、自查清单)全部以 `references/task-spec.md` 为准,本文件只写流程。执行任何写操作前先读它。
|
|
23
23
|
|
|
24
|
+
## 核心规则
|
|
25
|
+
|
|
26
|
+
### 四级时间源(completed 取证唯一口径)
|
|
27
|
+
|
|
28
|
+
终结态补 `completed` 时按以下优先级取证,禁止凭记忆估算或做时区换算:
|
|
29
|
+
|
|
30
|
+
| 级 | 时间源 | 取证 |
|
|
31
|
+
| --- | --- | --- |
|
|
32
|
+
| 0 | 任务完成当场打点 | 完成时立即执行命令取时间(Windows `Get-Date -Format "yyyy-MM-dd HH:mm"`,macOS/Linux `date "+%Y-%m-%d %H:%M"`)——首选 |
|
|
33
|
+
| 1 | 聊天记录可见的准确时间戳 | 用户贴过的日志/输出时间戳、用户口述的确定时刻 |
|
|
34
|
+
| 2 | 任务改动的 git 提交时间 | `git log --format="%h %ci" <file>` |
|
|
35
|
+
| 3 | 系统当前时间兜底 | 当场取时 + 正文标注「时间为收尾补记」 |
|
|
36
|
+
|
|
37
|
+
详细口径与告警语义见 `references/task-spec.md`。
|
|
38
|
+
|
|
24
39
|
## 工作流
|
|
25
40
|
|
|
26
|
-
### 1.
|
|
41
|
+
### 1. 动手前置:建档评估(先查后写的流程落点,所有仓库文件改动前必做,防漏建档/重复建档)
|
|
27
42
|
|
|
28
43
|
- 无 `.tasks/` 任务区时先执行 `toolkit init` 建骨架(幂等,已存在不覆盖)
|
|
29
44
|
- 列出任务目录 `active/` 下全部 `.md`(含一层 `{YYYYMM}/` 月份子目录),并核对 `archive/` 是否已有同主题任务
|
|
30
|
-
-
|
|
45
|
+
- 读 `.tasks/conventions.md`(存在时):项目协作规范在建档与执行时须遵守;规范文件本身不属于任务,不为其建档
|
|
46
|
+
- **同主题判别表**(建档前必须按此决策):
|
|
47
|
+
| 现状 | 增量情况 | 处理 |
|
|
48
|
+
| --- | --- | --- |
|
|
49
|
+
| active 有同主题 | 补充/细化(同需求未完) | **更新原文件**正文,updated 同步,不新建 |
|
|
50
|
+
| active 有同主题 | 已分叉成不同范围 | 问用户:拆新任务 or 合并更新 |
|
|
51
|
+
| active 无、archive 有(已归档完成) | 无增量(重复提议同一件事) | 提示「同主题任务已归档于 {日期}」,不重复建档,直接执行 |
|
|
52
|
+
| active 无、archive 有 | 有增量(延续/扩展) | **重新建档**,正文首行标注来源链 `延续 {原归档任务名}(见 archive/{YYYYMM}/{YYYYMMDD}.md)` |
|
|
53
|
+
| active 无、archive 有 | 仅修正旧记录的时间/内容 | 走 fxri-session-recap 模式三(历史修正),**不是建档** |
|
|
54
|
+
| active 与 archive 均无 | — | **建档后再动手**(硬前置,不建档不许改文件) |
|
|
55
|
+
- **增量判别口径**(不靠感觉):新方案含原任务中不存在的新需求点/变更点/范围 = 有增量;完全同描述同范围 = 无增量;拿不准 → 列出差异问用户,不猜
|
|
56
|
+
- **归档任务不可变**:已归档块是终结记录,不向其追加新内容(追加会破坏完成时间/范围的可信度);延续需求一律走新任务
|
|
31
57
|
- 任务唯一键:`{年月日}-{用户名}-{任务简述}`;多人对同一需求共用一个文件
|
|
32
58
|
|
|
33
59
|
### 2. 建档
|
|
@@ -39,7 +65,7 @@ metadata:
|
|
|
39
65
|
### 3. 过程更新
|
|
40
66
|
|
|
41
67
|
- status 五态流转:待办 → 进行中 → 阻塞 →(已完成 | 已放弃);后两者为终结态
|
|
42
|
-
- 进入终结态必须补 `completed: YYYY-MM-DD HH:mm
|
|
68
|
+
- 进入终结态必须补 `completed: YYYY-MM-DD HH:mm`(按四级时间源取证)
|
|
43
69
|
- 方案正文出现「待实施 / 待核对 / 待评估」等游离子项时,拆分为独立任务文件,不在正文留游离待办
|
|
44
70
|
|
|
45
71
|
### 4. 校验
|
|
@@ -48,11 +74,19 @@ metadata:
|
|
|
48
74
|
|
|
49
75
|
### 5. 归档
|
|
50
76
|
|
|
51
|
-
按 `references/task-spec.md` 的「手工归档步骤」执行:合并归档块 → 降序重排 → 写回 → 删 active 源文件 →
|
|
77
|
+
按 `references/task-spec.md` 的「手工归档步骤」执行:合并归档块 → 降序重排 → 写回 → 删 active 源文件 → 清理空月份目录。可 `toolkit tasks archive` 自动化。
|
|
78
|
+
|
|
79
|
+
### 5.5 任务级规范沉淀(新增,归档后执行)
|
|
80
|
+
|
|
81
|
+
归档完成后按以下轻量步骤提炼本任务产出的规范(与会话收尾的会话级提炼同落点、互不重复):
|
|
82
|
+
|
|
83
|
+
- 读 `.tasks/conventions.md`,判断本任务是否产出可升格规范:用户明示「以后都要这样」的规则、与已有规范重复印证的决策
|
|
84
|
+
- 有候选 → 输出给用户确认 → 写入 conventions.md(带 `来源:{任务文件}` 标注);无候选 → **完全静默**
|
|
85
|
+
- 一次性决策不进规范,留在任务正文
|
|
52
86
|
|
|
53
|
-
### 6.
|
|
87
|
+
### 6. 收尾边界(硬约束到沉淀)
|
|
54
88
|
|
|
55
|
-
|
|
89
|
+
**归档 + 规范沉淀即本技能流程终点**(先归档、后沉淀)。提交、发版、推送不是必经步骤,是否执行取决于用户的全局 / 个人 / 项目规则;若提交代码,先归档与沉淀、后提交,任务归档文件与 conventions.md 变更、代码变更落在**同一个 git 提交**(顺序不可颠倒),避免任务完成却滞留 `active/` 未归档,或归档单独成一条提交。
|
|
56
90
|
|
|
57
91
|
## 失败模式
|
|
58
92
|
|
|
@@ -62,6 +96,7 @@ metadata:
|
|
|
62
96
|
| completed 日期与文件名创建日不一致 | 核对是否填错;确为跨天完成则以 completed 日期归档 |
|
|
63
97
|
| depends_on 引用的任务已归档 | 正常,依赖随之解除;引用拼写错误则修正 |
|
|
64
98
|
| 并发写归档文件互相覆盖 | 归档前确认无其他写者同时操作;冲突时以重排后完整合并为准 |
|
|
99
|
+
| completed 填了收尾时刻而非真实完成时刻 | 按四级时间源重新取证(git log / 聊天记录时间戳) |
|
|
65
100
|
|
|
66
101
|
## 可选加速(不构成依赖)
|
|
67
102
|
|
|
@@ -9,13 +9,16 @@
|
|
|
9
9
|
├── active/ # 进行中的任务
|
|
10
10
|
│ └── {YYYYMM}/ # 月份子目录,如 202609
|
|
11
11
|
│ └── {YYYYMMDD}-{用户名}-{任务简述}.md
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
├── archive/ # 已终结任务归档
|
|
13
|
+
│ └── {YYYYMM}/
|
|
14
|
+
│ └── {YYYYMMDD}.md # 按完成日期归组的归档文件
|
|
15
|
+
└── conventions.md # 项目协作规范(可选,从任务提炼的规范沉淀地)
|
|
15
16
|
```
|
|
16
17
|
|
|
17
18
|
目录名 `.tasks` 为默认约定,项目可自定(如集中式任务库按项目分子目录),内部子结构不变。
|
|
18
19
|
|
|
20
|
+
`conventions.md` 不是任务文件:tasks 各子命令不读取它,check 不会因它告警;它只作为 AI 协作时的规范源,由 fxri-plan-to-task 归档时与 fxri-session-recap 收尾时维护(写入前需用户确认)。
|
|
21
|
+
|
|
19
22
|
## 2. active 任务文件
|
|
20
23
|
|
|
21
24
|
### 2.1 命名
|
|
@@ -39,7 +42,13 @@ scope: app # 影响范围
|
|
|
39
42
|
---
|
|
40
43
|
```
|
|
41
44
|
|
|
42
|
-
- `已完成` / `已放弃` 为终结态:进入时必须补 `completed`(真实收工时间)。⚠️ `completed`
|
|
45
|
+
- `已完成` / `已放弃` 为终结态:进入时必须补 `completed`(真实收工时间)。⚠️ `completed` 按**四级时间源**取证,禁止凭记忆估算、取对话时间或做时区换算:
|
|
46
|
+
1. **当场打点**(首选):任务完成时立即执行命令取真实时间(Windows `Get-Date -Format "yyyy-MM-dd HH:mm"`,macOS/Linux `date "+%Y-%m-%d %H:%M"`)
|
|
47
|
+
2. **聊天记录准确时间戳**:用户贴过的日志/终端输出时间戳、用户口述的确定时刻
|
|
48
|
+
3. **任务改动 git 提交时间**:`git log --format="%h %ci" <file>` 按提交时间取证
|
|
49
|
+
4. **系统当前时间兜底**:前三级皆不可得时当场取时,并在正文标注「时间为收尾补记」
|
|
50
|
+
|
|
51
|
+
工具对「完成时间晚于当前系统时间」会告警(时间源错误的典型症状);完成时间恰为零点整(如 `2026-09-05 00:00`,只填日期被自动补零的典型特征)亦会告警,需人工核实。归档块完成时间早于归档动作时间属正常(补档/历史修正场景),迁移由 `normalize --fix` 自动完成
|
|
43
52
|
- 正文以 `# 任务标题` 开头;游离待办子项必须拆为独立任务文件
|
|
44
53
|
|
|
45
54
|
## 3. 归档文件
|
|
@@ -70,19 +79,22 @@ scope: app # 影响范围
|
|
|
70
79
|
|
|
71
80
|
## 5. 自查清单(校验)
|
|
72
81
|
|
|
73
|
-
- [ ] frontmatter 存在且七字段齐全
|
|
74
|
-
- [ ] status 为五枚举之一;终结态已填 completed
|
|
75
|
-
- [ ] completed 为 `YYYY-MM-DD HH:mm`
|
|
76
|
-
- [ ] created 为 YYYYMMDD 且等于文件名日期前缀
|
|
77
|
-
- [ ] 文件名符合 `{YYYYMMDD}-{用户名}-{任务简述}.md`
|
|
78
|
-
- [ ] 任务文件放在 `active/{YYYYMM}/` 月份子目录,不直放 active 根目录
|
|
79
|
-
- [ ] `.tasks/` 下无游离于 active/ 之外的任务文件(直放 `.tasks` 根目录或漏建 active/ 层的 `{YYYYMM}/`
|
|
80
|
-
- [ ] active 内无跨文件同名任务
|
|
81
|
-
- [ ] depends_on 目标存在且无循环依赖
|
|
82
|
+
- [ ] frontmatter 存在且七字段齐全
|
|
83
|
+
- [ ] status 为五枚举之一;终结态已填 completed
|
|
84
|
+
- [ ] completed 为 `YYYY-MM-DD HH:mm` 且日期真实存在,且不晚于当前系统时间(时间按四级时间源取证:当场打点 / 聊天记录时间戳 / git 提交时间 / 兜底标注补记,非估算)
|
|
85
|
+
- [ ] created 为 YYYYMMDD 且等于文件名日期前缀
|
|
86
|
+
- [ ] 文件名符合 `{YYYYMMDD}-{用户名}-{任务简述}.md`
|
|
87
|
+
- [ ] 任务文件放在 `active/{YYYYMM}/` 月份子目录,不直放 active 根目录
|
|
88
|
+
- [ ] `.tasks/` 下无游离于 active/ 之外的任务文件(直放 `.tasks` 根目录或漏建 active/ 层的 `{YYYYMM}/` 均不会被校验与归档;`conventions.md` 属规范文件不受此限)
|
|
89
|
+
- [ ] active 内无跨文件同名任务
|
|
90
|
+
- [ ] depends_on 目标存在且无循环依赖
|
|
82
91
|
- [ ] 正文无「待实施 / 待核对 / 待评估 / TODO」等游离标记与未勾选的 `- [ ]`
|
|
83
|
-
- [ ]
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
-
|
|
92
|
+
- [ ] 归档后已做任务级规范沉淀检查(有可升格候选则经用户确认写入 conventions.md,无则跳过)
|
|
93
|
+
- [ ] 若按项目约定提交代码:确认 `.tasks/` 全部改动(本次归档文件 + conventions.md 变更 + active 剩余任务)已纳入 git 提交范围,与代码变更同批提交
|
|
94
|
+
|
|
95
|
+
## 6. 协作约定
|
|
96
|
+
|
|
97
|
+
- 任务区是多写者共享区:先查后写,同一需求共用一个任务文件;建档与执行时遵守 `.tasks/conventions.md`(存在时)中的项目规范
|
|
98
|
+
- **动手前置建档评估**:涉及仓库文件改动的任务,动手前先查 active/archive 判同主题(完整判别表见 SKILL.md 工作流第 1 步);active 有同主题则更新原文件,archive 有同主题且无增量则不重复建档
|
|
99
|
+
- **归档任务不可变**:已归档块是终结记录(唯一键 + 完成时间已固定),不向其追加新内容;延续/扩展需求走新任务并标注来源链
|
|
100
|
+
- 强制约束到**沉淀**为止:归档 + 规范沉淀即流程终点;提交、发版、推送不是必经步骤,是否执行取决于用户的全局 / 个人 / 项目规则;若提交代码,先归档与沉淀、后 git commit,任务记录(归档文件 + conventions.md)与代码变更落在同一提交
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fxri-release-changelog
|
|
3
|
-
description: 基于 changesets 的发版与多语言 CHANGELOG 维护流程:创建变更集、消费发版、把分组标题与条目转为项目语言风格、清理变更集、打标签发布;无 changesets
|
|
3
|
+
description: 基于 changesets 的发版与多语言 CHANGELOG 维护流程:创建变更集、消费发版、把分组标题与条目转为项目语言风格、清理变更集、打标签发布;无 changesets 的项目提供同格式手工模式。当用户表达发版或记录变更意图——含创建变更集、changeset、发版、version、CHANGELOG 格式化等说法及其口语近义表达(如发一版、出个版本、记一下这次改动、生成更新日志)时使用。⚠️ 注意区分:用户说「提交个版本 / 先提交一版 / commit」通常指 git 提交当前改动(走任务收尾后提交),**不是发版**。不用于日常 commit message 撰写、git 提交操作或与发版无关的文档修改。
|
|
4
4
|
license: MIT
|
|
5
5
|
metadata:
|
|
6
|
-
version: "1.0.
|
|
6
|
+
version: "1.0.6"
|
|
7
7
|
author: fxri
|
|
8
8
|
source: https://github.com/fxri-net/toolkit
|
|
9
9
|
---
|
|
@@ -12,10 +12,11 @@ metadata:
|
|
|
12
12
|
|
|
13
13
|
## 何时使用
|
|
14
14
|
|
|
15
|
-
- 记录变更(创建变更集)、消费变更集发版、格式化 CHANGELOG
|
|
16
|
-
-
|
|
15
|
+
- 记录变更(创建变更集)、消费变更集发版、格式化 CHANGELOG(语义触发,不要求字面一致):changeset / 变更集 / 发版 / version / CHANGELOG 格式化 / 发一版 / 出个版本 / 记一下这次改动 / 生成更新日志
|
|
16
|
+
- 触发前置条件:**用户明确表达发版或记录变更意图**。⚠️ **git 提交 ≠ 发版**:用户说「提交个版本 / 先提交一版 / 提交一下 / commit 这版」通常指把当前改动 git 提交(涉及任务时先走 fxri-plan-to-task / fxri-session-recap 收尾再提交),**不触发本技能**;纯日常对话出现「版本」字样也不触发
|
|
17
|
+
- 拿不准用户意图时向用户确认,不猜
|
|
17
18
|
|
|
18
|
-
**何时不使用**:日常 commit message
|
|
19
|
+
**何时不使用**:日常 commit message 撰写、git 提交操作、与发版无关的文档修改。
|
|
19
20
|
|
|
20
21
|
## 前置检查
|
|
21
22
|
|
|
@@ -1,66 +1,129 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fxri-session-recap
|
|
3
|
-
description:
|
|
3
|
+
description: 会话收尾的工作记忆沉淀 + 新会话开场恢复 + 历史任务时间修正:收尾时把整场会话的全部任务完整建档归档,按四级时间源还原真实完成时间,沉淀规范进 conventions.md;新会话开场按三层恢复(全量索引 + active 精读 + 近窗归档)重建现场并核对规范;也可批量修正历史归档时间。当用户表达会话收尾意图(如今天先到这、收个尾、归档本次会话、把结论记下来)、接续意图(如恢复上下文、继续上次、上次做到哪)、或修正历史任务时间时使用。不用于会话中途的常规方案建档(那是 fxri-plan-to-task 的职责)、与工作交接无关的代码技术总结。
|
|
4
4
|
license: MIT
|
|
5
5
|
metadata:
|
|
6
|
-
version: "1.0
|
|
6
|
+
version: "1.1.0"
|
|
7
7
|
author: fxri
|
|
8
8
|
source: https://github.com/fxri-net/toolkit
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
#
|
|
11
|
+
# 会话归档、上下文恢复与历史修正
|
|
12
12
|
|
|
13
13
|
## 何时使用
|
|
14
14
|
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
15
|
+
- **沉淀模式(模式一)**:会话接近尾声,用户表达收尾意图——「今天先到这 / 收个尾 / 先这样吧 / 把结论记下来 / 归档本次会话 / 总结本次」,或其近义表达(不要求字面一致)
|
|
16
|
+
- **恢复模式(模式二)**:新会话开场,用户表达接续意图——「恢复上下文 / 继续上次 / 上次做到哪了 / 接着上次的干」,或其近义表达
|
|
17
|
+
- **修正模式(模式三)**:用户发现历史任务时间不准,要批量修正——「修正历史任务时间 / 历史归档时间不对」
|
|
18
|
+
- ⚠️ 触发识别靠语义不靠字面:用户说「收个尾」可能指收尾工作也可能指会话收尾,需结合上下文判断;无法判断时向用户确认,不猜
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
**何时不使用**:会话中途的常规方案建档与归档(fxri-plan-to-task);对某段代码的技术总结(与会话交接无关,不落 .tasks);日常对话。
|
|
20
21
|
|
|
21
|
-
##
|
|
22
|
+
## 能力边界
|
|
22
23
|
|
|
23
24
|
- 所有 agent 的共性约束:新会话读不到其他会话的内部上下文,对话记录本身不可跨会话传递
|
|
24
|
-
-
|
|
25
|
-
-
|
|
25
|
+
- 本技能解法是把记忆**沉淀进仓库文件**(`.tasks/`);个别 agent 可直读历史会话转录,属非通用高级路径,不依赖
|
|
26
|
+
- 本技能**不直接执行 git 提交**:归档 + 沉淀即流程终点,提交/推送/发版由用户全局规则决定(见「收尾边界」)
|
|
26
27
|
|
|
27
|
-
##
|
|
28
|
+
## 核心规则(先读这段)
|
|
28
29
|
|
|
29
|
-
|
|
30
|
+
### R1 四级时间源(沉淀一切时间字段的唯一口径)
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
32
|
+
「会话当时的真实时间」不可凭空估算。任何时间字段(created/completed/updated)按以下优先级取证:
|
|
33
|
+
|
|
34
|
+
| 级 | 时间源 | 取证 | 适用 |
|
|
35
|
+
| --- | --- | --- | --- |
|
|
36
|
+
| 0 | 任务完成当场打点 | 任务完成时立即执行命令取时间(Windows `Get-Date -Format "yyyy-MM-dd HH:mm"`,macOS/Linux `date "+%Y-%m-%d %H:%M"`) | 会话内即时归档(首选,源头消灭补记) |
|
|
37
|
+
| 1 | 聊天记录可见的准确时间戳 | 用户贴过的日志/终端输出时间戳、用户口述的确定时刻 | 收尾补档且上下文有可信时间 |
|
|
38
|
+
| 2 | 任务改动的 git 提交时间 | `git log --format="%h %ci" <file>` 按提交时间取证 | 任务有对应提交 |
|
|
39
|
+
| 3 | 系统当前时间兜底 | 当场执行命令取时,**正文标注「时间为收尾补记」** | 前三级皆不可得 |
|
|
40
|
+
|
|
41
|
+
规则:
|
|
42
|
+
- 第 3 级是兜底不是默认——能用前三级必须用;用第 3 级必须显式标注,避免「看似精确实则编造」的时间
|
|
43
|
+
- 归档块完成时间可以早于归档动作时间,这是特性不是异常(补档/历史修正场景)
|
|
44
|
+
- 完成时间晚于当前系统时间或恰为零点整会被 CLI 告警,说明时间源取错,需重新取证
|
|
45
|
+
|
|
46
|
+
### R2 统一收尾链路(能力终点 = 沉淀)
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
任务终结 → 归档 → 规范沉淀(硬终点) → 提交/发版/推送(可选,需用户确认)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
- 归档是中间步骤,**规范沉淀才是流程终点**
|
|
53
|
+
- 沉淀时机固定:归档完成后、任何 git 操作前,规范与归档文件同批落盘
|
|
54
|
+
- 提交、发版、推送**不是必经步骤**,是否执行取决于用户全局/个人/项目规则;若提交代码:先归档、后提交,归档文件与代码变更落在同一 git 提交
|
|
55
|
+
|
|
56
|
+
### R3 规范落点:`.tasks/conventions.md`(两级沉淀同一文件)
|
|
57
|
+
|
|
58
|
+
- 唯一落点 `conventions.md`(`.tasks/` 根层,纯 Markdown 随 git 走);每条规范带来源任务与日期,可审计
|
|
59
|
+
- **任务级**(fxri-plan-to-task 归档时):单任务产出可升格规范才追加,无则完全静默
|
|
60
|
+
- **会话级**(本技能收尾时):聚合全会话候选,与已有规范**合并去重**——跨任务重复模式在此补,用户明示规则兜底
|
|
61
|
+
- 写前**必须用户确认**;同义规范不重复记录,只补差异或合并增强
|
|
62
|
+
- 一次性决策留在任务正文,不进规范(升格标准:重复出现 ≥2 次,或用户明示「以后都要这样」)
|
|
63
|
+
|
|
64
|
+
### 规范提炼子流程(三模式共用)
|
|
65
|
+
|
|
66
|
+
1. 对照 conventions.md 收集候选:会话中用户明示的规则、与已有规范重复印证的决策、跨任务重复模式
|
|
67
|
+
2. 输出候选清单(每条含来源任务与建议),交用户确认
|
|
68
|
+
3. 用户确认后写入 conventions.md(按现有条目归组,带 `来源:{任务文件}` 标注)
|
|
69
|
+
4. 无候选时完全静默,不强加流程
|
|
70
|
+
|
|
71
|
+
## 模式一:沉淀本次会话
|
|
72
|
+
|
|
73
|
+
> 目标:会话结束后,任何人(或新会话 AI)只看仓库就能还原本次做了什么、为什么、还剩什么,且时间与会话真实发生时刻一致。
|
|
74
|
+
|
|
75
|
+
1. **全量回放**:按时间线完整回放本会话,产出**全部任务候选清单**(含结论、决策及理由、代码改动、未尽事项、用户明示要求记录的内容;与工作产出无关的闲聊不记)。⚠️ 决策及其理由必须记——决策散在对话里,会话一关就丢
|
|
76
|
+
2. **事前核对(新增,防漏档的关口)**:把任务候选清单(每条附时间证据来源:0/1/2/3 级)**先输出给用户确认无遗漏**,确认后才开始落盘——用户切会话漏档的痛点在结构上解决
|
|
77
|
+
3. **逐条落盘**(先查后写;格式与目录规范见 `../fxri-plan-to-task/references/task-spec.md`,技能独立安装时按仓库根 SPEC.md):
|
|
78
|
+
- 会话工作有对应任务 → 更新原文件:正文追加结论与决策,时间字段按 R1 校准
|
|
79
|
+
- 无对应任务但有独立成果 → 按 fxri-plan-to-task 规范建档,created 取任务真实创建日
|
|
80
|
+
- 未尽事项 → 拆独立任务文件(status: 待办),不在正文留游离待办
|
|
81
|
+
4. **归档**:终结态任务按 task-spec「手工归档步骤」执行(合并归档块 → 降序重排 → 写回 → 删源文件 → 清理空月份目录),或 `toolkit tasks archive` 自动化
|
|
82
|
+
5. **规范沉淀(终点)**:按「规范提炼子流程」执行会话级提炼,写入 conventions.md
|
|
83
|
+
6. **收尾边界**:沉淀即本技能流程终点。提交、发版、推送不是必经步骤,是否执行取决于用户规则;若提交代码,先归档、后提交,任务归档文件 + conventions.md 与本次代码变更落在**同一个 git 提交**;提交前向用户展示待提交内容供确认
|
|
84
|
+
7. **回报**:向用户列出本次沉淀的任务清单、归档位置与规范变更,确认无遗漏后再结束
|
|
40
85
|
|
|
41
86
|
## 模式二:恢复上下文
|
|
42
87
|
|
|
43
|
-
>
|
|
88
|
+
> 目标:新会话快速重建现场。恢复范围覆盖全部任务(含已归档),但按层级控制上下文成本。
|
|
89
|
+
|
|
90
|
+
1. **L0 全量索引**:`toolkit tasks --view all`(无 CLI 时读目录)——active 全部 + archived 全部历史一行一条 + `toolkit tasks stats` 周期统计;一眼看清全貌,不漏任何历史任务
|
|
91
|
+
2. **L1 工作层精读**:逐文件读 `.tasks/active/` 全部任务(决策、进展、阻塞)。⚠️ **搁置识别**:active 任务 `updated` 距今 >1 年时标注「疑似搁置(距今 X 年)」,建议用户确认收尾或放弃,不当「进行中」呈现
|
|
92
|
+
3. **L2 近窗精读**:读最近归档。**近窗按时间连续性判定,不按数量**:先定位最新归档块的完成时间,只精读从该时刻向前连续活跃的归档(归档月份 ≤ 6 个月或归档块 ≤ 200 条时精读全文);**被 ≥1 年空洞隔断的旧归档一律只入 L0 索引,不精读、不列为「最近完成」**;超阈值降级为统计(按月/负责人汇总 + 近期明细),防止历史膨胀撑爆上下文
|
|
93
|
+
4. **按需拉取**:更早历史(含空洞隔断的旧归档)不主动展开,在 L0 索引可见;用户点名、或 AI 判断相关时用 `--owner`/`--date` 过滤检索;用户明确说「全部恢复」才全量列出
|
|
94
|
+
5. **规范核对与提炼**:读 conventions.md(存在时)纳入现场;对照近期任务按「规范提炼子流程」提议增改——⚠️ 恢复主体只读,写 conventions.md 是用户确认后的独立动作
|
|
95
|
+
6. **输出**:全部任务索引摘要 → 进行中/阻塞任务(含搁置标注)→ 最近完成(连续活跃期内,不含空洞旧档)→ 未完事项 → 规范现场 → **建议的下一步**
|
|
96
|
+
7. 全程不写任务区文件;对存疑内容向用户确认后再动
|
|
97
|
+
|
|
98
|
+
## 模式三:批量修正历史任务时间
|
|
99
|
+
|
|
100
|
+
> 目标:旧规则沉淀的归档时间与真实发生时刻不符时批量修正。识别靠证据,CLI 只做结构迁移不推断时间。
|
|
44
101
|
|
|
45
|
-
1.
|
|
46
|
-
2.
|
|
47
|
-
3.
|
|
48
|
-
4.
|
|
102
|
+
1. **取证**:对照 git log(`git log --format="%h %ci"`)与聊天记录时间戳,列出疑似错时任务清单,每条附证据(属于 R1 哪一级)
|
|
103
|
+
2. **确认**:清单交用户逐条确认正确时间,不自行推断
|
|
104
|
+
3. **改值**:active 任务直接改文件 completed;已归档任务改归档块元数据行的完成时间
|
|
105
|
+
4. **迁移核验**:`toolkit tasks normalize --fix` 自动把改动后的归档块迁移到正确日期文件(已完成能力:按 completed 合并降序、清理空文件空目录);再 `toolkit tasks normalize` 只读核验 0 漂移
|
|
106
|
+
5. **规范观察**:批量回读历史任务时发现的重复模式,按「规范提炼子流程」列为候选(确认后写入,与修正动作同批)
|
|
107
|
+
6. **收尾边界**:同上(沉淀终点,提交可选需确认)
|
|
49
108
|
|
|
50
109
|
## 失败模式
|
|
51
110
|
|
|
52
111
|
| 症状 | 处置 |
|
|
53
112
|
| --- | --- |
|
|
54
|
-
|
|
|
55
|
-
| 未尽事项塞进已完成任务正文 |
|
|
113
|
+
| 会话收尾时多个任务混在一起说不清 | 按任务逐条对应拆开写;对应不上的问用户 |
|
|
114
|
+
| 未尽事项塞进已完成任务正文 | 必须拆独立任务,保持已完成任务归档块干净 |
|
|
115
|
+
| completed 填了收尾时刻而非真实完成时刻 | 按 R1 四级时间源重新取证(git log / 聊天记录时间戳) |
|
|
56
116
|
| 恢复时 active 有游离文件(不在月份目录) | 先按规范移入 `active/{YYYYMM}/` 再读 |
|
|
57
|
-
|
|
|
117
|
+
| 归档历史量太大撑爆上下文 | 走 L2 降级:只出统计 + 近期明细,按需拉取更早 |
|
|
118
|
+
| 新会话仍说「找不到上下文」 | 检查归档文件是否已 git 提交、是否落在正确月份目录、conventions.md 是否随仓库同步 |
|
|
58
119
|
|
|
59
120
|
## 可选加速(不构成依赖)
|
|
60
121
|
|
|
61
122
|
⚠️ 工具探测顺序(先项目内、后全局):先 `pnpm exec toolkit --help`(项目 devDependency,npm 项目等价 `npx toolkit`),失败再 `toolkit --help`(全局安装);两者都不可用即工具未安装,按各步手工继续,**不安装、不阻塞**。探测成功后用对应前缀执行下列命令:
|
|
62
123
|
|
|
63
|
-
- `toolkit tasks
|
|
64
|
-
- `toolkit tasks
|
|
124
|
+
- `toolkit tasks`:模式二 L0 全量索引(替代人工翻目录)
|
|
125
|
+
- `toolkit tasks stats`:模式二周期统计
|
|
126
|
+
- `toolkit tasks archive`:模式一第 4 步自动化(含排他锁防并发;可 `--dry-run` 预演)
|
|
127
|
+
- `toolkit tasks normalize`:模式三迁移核验(`--fix` 迁移 / 只读检查)
|
|
65
128
|
- `toolkit tasks check`:落盘后校验
|
|
66
129
|
- 任务目录非默认 `.tasks` 时加 `--dir <path>`
|