@fxri/toolkit 1.6.5 → 1.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/CHANGELOG.md +32 -0
- package/LICENSE +21 -21
- package/NOTICE +4 -3
- package/README.md +102 -365
- package/SPEC.md +115 -117
- package/TRADEMARK.md +41 -41
- package/dist/cli.cjs +42 -34
- package/dist/cli.js +41 -33
- package/dist/index.cjs +35 -35
- package/dist/index.js +34 -34
- package/package.json +21 -17
- package/skills/README.md +56 -53
- package/skills/fxri-plan-to-task/SKILL.md +74 -73
- package/skills/fxri-plan-to-task/assets/active-task-template.md +13 -13
- package/skills/fxri-plan-to-task/references/task-spec.md +87 -86
- package/skills/fxri-release-changelog/SKILL.md +56 -54
- package/skills/fxri-release-changelog/references/changelog-format.md +41 -41
- package/skills/fxri-session-recap/SKILL.md +66 -0
|
@@ -1,73 +1,74 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: fxri-plan-to-task
|
|
3
|
-
description:
|
|
4
|
-
license: MIT
|
|
5
|
-
metadata:
|
|
6
|
-
version: "1.0.
|
|
7
|
-
author: fxri
|
|
8
|
-
source: https://github.com/fxri-net/toolkit
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# 方案落盘:任务建档与归档
|
|
12
|
-
|
|
13
|
-
## 何时使用
|
|
14
|
-
|
|
15
|
-
- 用户确认实施方案后,需要把方案登记为任务文件持续跟踪
|
|
16
|
-
- 触发词:方案落盘 / 建档 / 任务登记 / 归档 / 任务校验
|
|
17
|
-
|
|
18
|
-
**何时不使用**:与方案落盘无关的普通 TODO、issue 管理、日历待办。
|
|
19
|
-
|
|
20
|
-
## 核心约定
|
|
21
|
-
|
|
22
|
-
任务文件规范(目录结构、命名、frontmatter 字段、归档格式、手工归档步骤、自查清单)全部以 `references/task-spec.md` 为准,本文件只写流程。执行任何写操作前先读它。
|
|
23
|
-
|
|
24
|
-
## 工作流
|
|
25
|
-
|
|
26
|
-
### 1. 先查后写(防重复建档)
|
|
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
|
-
|
|
|
62
|
-
|
|
|
63
|
-
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
- `toolkit tasks
|
|
71
|
-
- `toolkit tasks
|
|
72
|
-
- `toolkit tasks
|
|
73
|
-
-
|
|
1
|
+
---
|
|
2
|
+
name: fxri-plan-to-task
|
|
3
|
+
description: 将已确认的实施方案落盘为标准任务文件并跟踪至归档:先查后写防重复建档、按模板建档、状态机更新、自查校验与手工归档。当用户确认方案后要求登记或落盘任务、提到建档、任务登记、归档、任务校验时使用。不用于与方案落盘无关的普通 TODO、issue 管理或日常提交信息撰写。
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
version: "1.0.6"
|
|
7
|
+
author: fxri
|
|
8
|
+
source: https://github.com/fxri-net/toolkit
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# 方案落盘:任务建档与归档
|
|
12
|
+
|
|
13
|
+
## 何时使用
|
|
14
|
+
|
|
15
|
+
- 用户确认实施方案后,需要把方案登记为任务文件持续跟踪
|
|
16
|
+
- 触发词:方案落盘 / 建档 / 任务登记 / 归档 / 任务校验
|
|
17
|
+
|
|
18
|
+
**何时不使用**:与方案落盘无关的普通 TODO、issue 管理、日历待办。
|
|
19
|
+
|
|
20
|
+
## 核心约定
|
|
21
|
+
|
|
22
|
+
任务文件规范(目录结构、命名、frontmatter 字段、归档格式、手工归档步骤、自查清单)全部以 `references/task-spec.md` 为准,本文件只写流程。执行任何写操作前先读它。
|
|
23
|
+
|
|
24
|
+
## 工作流
|
|
25
|
+
|
|
26
|
+
### 1. 先查后写(防重复建档)
|
|
27
|
+
|
|
28
|
+
- 无 `.tasks/` 任务区时先执行 `toolkit init` 建骨架(幂等,已存在不覆盖)
|
|
29
|
+
- 列出任务目录 `active/` 下全部 `.md`(含一层 `{YYYYMM}/` 月份子目录),并核对 `archive/` 是否已有同主题任务
|
|
30
|
+
- 已有同主题任务:更新原文件,禁止新建
|
|
31
|
+
- 任务唯一键:`{年月日}-{用户名}-{任务简述}`;多人对同一需求共用一个文件
|
|
32
|
+
|
|
33
|
+
### 2. 建档
|
|
34
|
+
|
|
35
|
+
- 整段复制 `assets/active-task-template.md` 再填空,不要凭记忆组装 frontmatter
|
|
36
|
+
- 文件放入 `active/{YYYYMM}/`;目录不存在时按规范创建
|
|
37
|
+
- `created` 必须等于文件名日期前缀;`updated` 随每次修改同步
|
|
38
|
+
|
|
39
|
+
### 3. 过程更新
|
|
40
|
+
|
|
41
|
+
- status 五态流转:待办 → 进行中 → 阻塞 →(已完成 | 已放弃);后两者为终结态
|
|
42
|
+
- 进入终结态必须补 `completed: YYYY-MM-DD HH:mm`(真实收工时间)
|
|
43
|
+
- 方案正文出现「待实施 / 待核对 / 待评估」等游离子项时,拆分为独立任务文件,不在正文留游离待办
|
|
44
|
+
|
|
45
|
+
### 4. 校验
|
|
46
|
+
|
|
47
|
+
按 `references/task-spec.md` 的「自查清单」逐项核对,发现问题当场修复后再进入下一步。
|
|
48
|
+
|
|
49
|
+
### 5. 归档
|
|
50
|
+
|
|
51
|
+
按 `references/task-spec.md` 的「手工归档步骤」执行:合并归档块 → 降序重排 → 写回 → 删 active 源文件 → 清理空月份目录。
|
|
52
|
+
|
|
53
|
+
### 6. 收尾边界(硬约束到归档)
|
|
54
|
+
|
|
55
|
+
任务归档即本技能流程终点。提交、发版、推送不是必经步骤,是否执行取决于用户的全局 / 个人 / 项目规则;若提交代码,先归档、后提交,任务归档文件必须与本次代码变更落在**同一个 git 提交**(顺序不可颠倒),避免任务完成却滞留 `active/` 未归档,或归档单独成一条提交。
|
|
56
|
+
|
|
57
|
+
## 失败模式
|
|
58
|
+
|
|
59
|
+
| 症状 | 处置 |
|
|
60
|
+
| --- | --- |
|
|
61
|
+
| active 下出现同名任务文件 | 重复建档,合并为一个后删除多余 |
|
|
62
|
+
| completed 日期与文件名创建日不一致 | 核对是否填错;确为跨天完成则以 completed 日期归档 |
|
|
63
|
+
| depends_on 引用的任务已归档 | 正常,依赖随之解除;引用拼写错误则修正 |
|
|
64
|
+
| 并发写归档文件互相覆盖 | 归档前确认无其他写者同时操作;冲突时以重排后完整合并为准 |
|
|
65
|
+
|
|
66
|
+
## 可选加速(不构成依赖)
|
|
67
|
+
|
|
68
|
+
⚠️ 工具探测顺序(先项目内、后全局):先 `pnpm exec toolkit --help`(项目 devDependency,npm 项目等价 `npx toolkit`),失败再 `toolkit --help`(全局安装);两者都不可用即工具未安装,按各步手工继续,**不安装、不阻塞**。探测成功后用对应前缀执行下列命令:
|
|
69
|
+
|
|
70
|
+
- `toolkit tasks`:查 active 总览(替代第 1 步人工翻目录)
|
|
71
|
+
- `toolkit tasks check`:自动校验(替代第 4 步自查清单)
|
|
72
|
+
- `toolkit tasks archive`:自动归档(替代第 5 步,含排他锁防并发;可 `--dry-run` 预演)
|
|
73
|
+
- `toolkit tasks normalize`:归档后核验归档块(元数据完整性/日期漂移/排序),可 `--fix` 自动修复
|
|
74
|
+
- 任务目录非默认 `.tasks` 时加 `--dir <path>`
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
---
|
|
2
|
-
owner: <负责人 git 用户名>
|
|
3
|
-
status: 待办
|
|
4
|
-
created: <创建日 YYYYMMDD>
|
|
5
|
-
updated: <创建日 YYYYMMDD,随每次修改同步>
|
|
6
|
-
completed: ''
|
|
7
|
-
depends_on: []
|
|
8
|
-
scope: <影响范围>
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# 任务标题
|
|
12
|
-
|
|
13
|
-
(方案正文:背景、实施方案、影响范围、验证方式)
|
|
1
|
+
---
|
|
2
|
+
owner: <负责人 git 用户名>
|
|
3
|
+
status: 待办
|
|
4
|
+
created: <创建日 YYYYMMDD>
|
|
5
|
+
updated: <创建日 YYYYMMDD,随每次修改同步>
|
|
6
|
+
completed: ''
|
|
7
|
+
depends_on: []
|
|
8
|
+
scope: <影响范围>
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# 任务标题
|
|
12
|
+
|
|
13
|
+
(方案正文:背景、实施方案、影响范围、验证方式)
|
|
@@ -1,87 +1,88 @@
|
|
|
1
|
-
# 任务文件规范(通用版)
|
|
2
|
-
|
|
3
|
-
> 面向多人 + AI 协作,任何语言项目可直接使用,仅依赖文件读写能力。本文件为 SKILL.md 的配套规范;fxri 生态内实现级权威版本见 toolkit 仓库 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
|
-
```
|
|
16
|
-
|
|
17
|
-
目录名 `.tasks` 为默认约定,项目可自定(如集中式任务库按项目分子目录),内部子结构不变。
|
|
18
|
-
|
|
19
|
-
## 2. active 任务文件
|
|
20
|
-
|
|
21
|
-
### 2.1 命名
|
|
22
|
-
|
|
23
|
-
`{YYYYMMDD}-{用户名}-{任务简述}.md`
|
|
24
|
-
|
|
25
|
-
- 年月日 = 任务创建日,`YYYYMMDD` 直接拼接(不加 `-`)
|
|
26
|
-
- 用户名 = git 用户名;任务简述 = 不含空格的短语
|
|
27
|
-
|
|
28
|
-
### 2.2 frontmatter
|
|
29
|
-
|
|
30
|
-
```yaml
|
|
31
|
-
---
|
|
32
|
-
owner: 唐启云 # 负责人(git 用户名)
|
|
33
|
-
status: 进行中 # 待办 / 进行中 / 阻塞 / 已完成 / 已放弃
|
|
34
|
-
created: 20260902 # 创建日 YYYYMMDD,须等于文件名日期前缀
|
|
35
|
-
updated: 20260902 # 最近更新日 YYYYMMDD
|
|
36
|
-
completed: '' # 完成时间 YYYY-MM-DD HH:mm;仅终结态必填
|
|
37
|
-
depends_on: [] # 依赖的任务文件名(可带 .md),目标必须存在且不得成环
|
|
38
|
-
scope: app # 影响范围
|
|
39
|
-
---
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
- `已完成` / `已放弃` 为终结态:进入时必须补 `completed
|
|
43
|
-
- 正文以 `# 任务标题` 开头;游离待办子项必须拆为独立任务文件
|
|
44
|
-
|
|
45
|
-
## 3. 归档文件
|
|
46
|
-
|
|
47
|
-
- 命名 `{YYYYMMDD}.md`,日期 = 任务完成时间日期;放入 `archive/{YYYYMM}/`
|
|
48
|
-
- 文件头:`# {YYYYMMDD} 归档` + 引言(如自动生成说明)
|
|
49
|
-
- 每个任务块:
|
|
50
|
-
|
|
51
|
-
```markdown
|
|
52
|
-
## {年月日}-{用户名}-{任务简述}
|
|
53
|
-
|
|
54
|
-
> 负责人:{owner} 状态:{status} 范围:{scope} 完成时间:{completed}
|
|
55
|
-
|
|
56
|
-
(任务正文)
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
- 块间以 `---` 分隔;**全文件按完成时间降序**(最新在前)
|
|
60
|
-
- 元数据行以 `> ` 开头、四字段齐全、以全角空格分隔
|
|
61
|
-
|
|
62
|
-
## 4. 手工归档步骤(有序)
|
|
63
|
-
|
|
64
|
-
1. 确认任务 status 为终结态且 `completed` 已填
|
|
65
|
-
2. 计算目标文件 `archive/{completed 的 YYYYMM}/{completed 的 YYYYMMDD}.md`
|
|
66
|
-
3. 读取已有归档文件(不存在则新建含文件头),把任务块加入
|
|
67
|
-
4. 全文件按 `completed` 降序重排,块间补 `---` 分隔
|
|
68
|
-
5. 写回归档文件
|
|
69
|
-
6. 删除 active 源文件;月份子目录与 `active/` 若已空则一并删除
|
|
70
|
-
|
|
71
|
-
## 5. 自查清单(校验)
|
|
72
|
-
|
|
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 目标存在且无循环依赖
|
|
1
|
+
# 任务文件规范(通用版)
|
|
2
|
+
|
|
3
|
+
> 面向多人 + AI 协作,任何语言项目可直接使用,仅依赖文件读写能力。本文件为 SKILL.md 的配套规范;fxri 生态内实现级权威版本见 toolkit 仓库 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
|
+
```
|
|
16
|
+
|
|
17
|
+
目录名 `.tasks` 为默认约定,项目可自定(如集中式任务库按项目分子目录),内部子结构不变。
|
|
18
|
+
|
|
19
|
+
## 2. active 任务文件
|
|
20
|
+
|
|
21
|
+
### 2.1 命名
|
|
22
|
+
|
|
23
|
+
`{YYYYMMDD}-{用户名}-{任务简述}.md`
|
|
24
|
+
|
|
25
|
+
- 年月日 = 任务创建日,`YYYYMMDD` 直接拼接(不加 `-`)
|
|
26
|
+
- 用户名 = git 用户名;任务简述 = 不含空格的短语
|
|
27
|
+
|
|
28
|
+
### 2.2 frontmatter
|
|
29
|
+
|
|
30
|
+
```yaml
|
|
31
|
+
---
|
|
32
|
+
owner: 唐启云 # 负责人(git 用户名)
|
|
33
|
+
status: 进行中 # 待办 / 进行中 / 阻塞 / 已完成 / 已放弃
|
|
34
|
+
created: 20260902 # 创建日 YYYYMMDD,须等于文件名日期前缀
|
|
35
|
+
updated: 20260902 # 最近更新日 YYYYMMDD
|
|
36
|
+
completed: '' # 完成时间 YYYY-MM-DD HH:mm;仅终结态必填
|
|
37
|
+
depends_on: [] # 依赖的任务文件名(可带 .md),目标必须存在且不得成环
|
|
38
|
+
scope: app # 影响范围
|
|
39
|
+
---
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
- `已完成` / `已放弃` 为终结态:进入时必须补 `completed`(真实收工时间)。⚠️ `completed` 必须当场执行命令取真实系统时间(Windows `Get-Date -Format "yyyy-MM-dd HH:mm"`,macOS/Linux `date "+%Y-%m-%d %H:%M"`),禁止凭记忆估算、取对话时间或做时区换算——工具对「完成时间晚于当前系统时间」会告警(时间源错误的典型症状);完成时间恰为零点整(如 `2026-09-05 00:00`,只填日期被自动补零的典型特征)亦会告警,需人工核实
|
|
43
|
+
- 正文以 `# 任务标题` 开头;游离待办子项必须拆为独立任务文件
|
|
44
|
+
|
|
45
|
+
## 3. 归档文件
|
|
46
|
+
|
|
47
|
+
- 命名 `{YYYYMMDD}.md`,日期 = 任务完成时间日期;放入 `archive/{YYYYMM}/`
|
|
48
|
+
- 文件头:`# {YYYYMMDD} 归档` + 引言(如自动生成说明)
|
|
49
|
+
- 每个任务块:
|
|
50
|
+
|
|
51
|
+
```markdown
|
|
52
|
+
## {年月日}-{用户名}-{任务简述}
|
|
53
|
+
|
|
54
|
+
> 负责人:{owner} 状态:{status} 范围:{scope} 完成时间:{completed}
|
|
55
|
+
|
|
56
|
+
(任务正文)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
- 块间以 `---` 分隔;**全文件按完成时间降序**(最新在前)
|
|
60
|
+
- 元数据行以 `> ` 开头、四字段齐全、以全角空格分隔
|
|
61
|
+
|
|
62
|
+
## 4. 手工归档步骤(有序)
|
|
63
|
+
|
|
64
|
+
1. 确认任务 status 为终结态且 `completed` 已填
|
|
65
|
+
2. 计算目标文件 `archive/{completed 的 YYYYMM}/{completed 的 YYYYMMDD}.md`
|
|
66
|
+
3. 读取已有归档文件(不存在则新建含文件头),把任务块加入
|
|
67
|
+
4. 全文件按 `completed` 降序重排,块间补 `---` 分隔
|
|
68
|
+
5. 写回归档文件
|
|
69
|
+
6. 删除 active 源文件;月份子目录与 `active/` 若已空则一并删除
|
|
70
|
+
|
|
71
|
+
## 5. 自查清单(校验)
|
|
72
|
+
|
|
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
82
|
- [ ] 正文无「待实施 / 待核对 / 待评估 / TODO」等游离标记与未勾选的 `- [ ]`
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
-
|
|
83
|
+
- [ ] 若按项目约定提交代码:确认 `.tasks/` 全部改动(本次归档文件 + active 剩余任务)已纳入 git 提交范围,与代码变更同批提交
|
|
84
|
+
|
|
85
|
+
## 6. 协作约定
|
|
86
|
+
|
|
87
|
+
- 任务区是多写者共享区:先查后写,同一需求共用一个任务文件
|
|
88
|
+
- 强制约束到归档为止:提交、发版、推送不是必经步骤,是否执行取决于用户的全局 / 个人 / 项目规则;若提交代码,先归档、后 git commit,任务记录与代码变更落在同一提交
|
|
@@ -1,54 +1,56 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: fxri-release-changelog
|
|
3
|
-
description: 基于 changesets 的发版与多语言 CHANGELOG 维护流程:创建变更集、消费发版、把分组标题与条目转为项目语言风格、清理变更集、打标签发布;无 changesets 的项目提供同格式手工模式。当用户提到创建变更集、changeset、发版、version、整理或格式化 CHANGELOG 时使用。不用于日常 commit message 撰写或与发版无关的文档修改。
|
|
4
|
-
license: MIT
|
|
5
|
-
metadata:
|
|
6
|
-
version: "1.0.
|
|
7
|
-
author: fxri
|
|
8
|
-
source: https://github.com/fxri-net/toolkit
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# 发版与 CHANGELOG
|
|
12
|
-
|
|
13
|
-
## 何时使用
|
|
14
|
-
|
|
15
|
-
- 记录变更(创建变更集)、消费变更集发版、格式化 CHANGELOG
|
|
16
|
-
- 触发词:changeset / 变更集 / 发版 / version / CHANGELOG 格式化
|
|
17
|
-
|
|
18
|
-
**何时不使用**:日常 commit message 撰写、与发版无关的文档修改。
|
|
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
|
-
- `toolkit changelog
|
|
54
|
-
- `toolkit changelog
|
|
1
|
+
---
|
|
2
|
+
name: fxri-release-changelog
|
|
3
|
+
description: 基于 changesets 的发版与多语言 CHANGELOG 维护流程:创建变更集、消费发版、把分组标题与条目转为项目语言风格、清理变更集、打标签发布;无 changesets 的项目提供同格式手工模式。当用户提到创建变更集、changeset、发版、version、整理或格式化 CHANGELOG 时使用。不用于日常 commit message 撰写或与发版无关的文档修改。
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
version: "1.0.3"
|
|
7
|
+
author: fxri
|
|
8
|
+
source: https://github.com/fxri-net/toolkit
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# 发版与 CHANGELOG
|
|
12
|
+
|
|
13
|
+
## 何时使用
|
|
14
|
+
|
|
15
|
+
- 记录变更(创建变更集)、消费变更集发版、格式化 CHANGELOG
|
|
16
|
+
- 触发词:changeset / 变更集 / 发版 / version / CHANGELOG 格式化
|
|
17
|
+
|
|
18
|
+
**何时不使用**:日常 commit message 撰写、与发版无关的文档修改。
|
|
19
|
+
|
|
20
|
+
## 前置检查
|
|
21
|
+
|
|
22
|
+
- ⚠️ 发版不是必经步骤:仅在用户明确要求,或用户全局 / 个人 / 项目规则约定时才进入本技能,不主动发版
|
|
23
|
+
- `.tasks/active/` 存在未归档任务 → 先完成归档再发版(任务归档是发版的前置顺序)
|
|
24
|
+
- 项目根存在 `.changeset/` 目录 → 走「changesets 流程」
|
|
25
|
+
- 不存在 → 走「手工模式」(规范见 `references/changelog-format.md`)
|
|
26
|
+
|
|
27
|
+
## changesets 流程
|
|
28
|
+
|
|
29
|
+
1. 记录变更:`npx changeset`(或项目包管理器等价脚本),按影响选 patch / minor / major 并写变更描述
|
|
30
|
+
2. 消费发版:`npx changeset version`——自动写版本号与 CHANGELOG
|
|
31
|
+
3. 格式化:按 `references/changelog-format.md` 转换分组标题、润色条目为项目语言风格(中文示例:`### Patch Changes` → `### 🐛 补丁修复`)
|
|
32
|
+
4. 清理:删除已消费的 `.changeset/*.md`
|
|
33
|
+
5. 发布:提交版本与 CHANGELOG 改动 → 打 `vX.Y.Z` 标签 → 按项目渠道发布(如 `npm publish`)
|
|
34
|
+
|
|
35
|
+
⚠️ 自动生成的条目必须人工核对润色,与仓库既有 CHANGELOG 风格保持一致。
|
|
36
|
+
|
|
37
|
+
## 手工模式(无 changesets 项目)
|
|
38
|
+
|
|
39
|
+
版本号与 CHANGELOG 全部手工维护:版本标题、发布日期行、分组标题与条目格式见 `references/changelog-format.md`;多语言三段结构(标题替换映射 / 依赖更新文案 / 发布日期后缀)同文件。
|
|
40
|
+
|
|
41
|
+
## 失败模式
|
|
42
|
+
|
|
43
|
+
| 症状 | 处置 |
|
|
44
|
+
| --- | --- |
|
|
45
|
+
| version 后 CHANGELOG 分组标题仍是英文 | 按 references 的映射表补一次格式化 |
|
|
46
|
+
| 条目与仓库既有风格不一致 | 人工润色为项目语言与句式,勿保留机器直译 |
|
|
47
|
+
| 变更集遗漏(发版后才发现功能未记录) | 补建变更集随下次发版;本次在发布说明中人工补充 |
|
|
48
|
+
|
|
49
|
+
## 可选加速(不构成依赖)
|
|
50
|
+
|
|
51
|
+
⚠️ 工具探测顺序(先项目内、后全局):先 `pnpm exec toolkit --help`(项目 devDependency,npm 项目等价 `npx toolkit`),失败再 `toolkit --help`(全局安装);两者都不可用即工具未安装,按各步手工继续,**不安装、不阻塞**。探测成功后用对应前缀执行下列命令:
|
|
52
|
+
|
|
53
|
+
- `toolkit changelog`:创建变更集(等价 changeset)
|
|
54
|
+
- `toolkit changelog version`:发版并自动做中文分组标题格式化
|
|
55
|
+
- `toolkit changelog format`:仅格式化既有 CHANGELOG
|
|
56
|
+
- `toolkit changelog --lang <语言> …`:切换输出语言(内置 zh / en,其余可配置扩展)
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
# CHANGELOG 格式规范
|
|
2
|
-
|
|
3
|
-
## 1. 文件结构(中文示例)
|
|
4
|
-
|
|
5
|
-
```markdown
|
|
6
|
-
## 1.5.3
|
|
7
|
-
|
|
8
|
-
> 2026-09-03 发布
|
|
9
|
-
|
|
10
|
-
### 🐛 补丁修复
|
|
11
|
-
|
|
12
|
-
- 修复 xxx:……
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
规则:
|
|
16
|
-
|
|
17
|
-
- 版本标题 `## {版本号}`;隔一行后接引用行 `> {YYYY-MM-DD} 发布`(标题与日期行之间保留一个空行)
|
|
18
|
-
- 分组标题 = emoji + 组名,一行一组,按 major → minor → patch 顺序
|
|
19
|
-
- 条目一行一条,项目语言句式(中文条目句末不加句号),与仓库既有风格一致
|
|
20
|
-
|
|
21
|
-
## 2. 分组标题映射(zh 内置)
|
|
22
|
-
|
|
23
|
-
| 源标题(changesets 输出) | 目标标题 |
|
|
24
|
-
| --- | --- |
|
|
25
|
-
| `### Major Changes` | `### 🚨 重大变更` |
|
|
26
|
-
| `### Minor Changes` | `### ✨ 新增功能` |
|
|
27
|
-
| `### Patch Changes` | `### 🐛 补丁修复` |
|
|
28
|
-
| `### Dependent Changes` | `### 🔗 依赖变更` |
|
|
29
|
-
| `- Updated dependencies` | `- 更新依赖` |
|
|
30
|
-
|
|
31
|
-
英文基准分组:`### Major Changes` / `### Minor Changes` / `### Patch Changes` / `### Dependent Changes`。
|
|
32
|
-
|
|
33
|
-
## 3. 多语言扩展
|
|
34
|
-
|
|
35
|
-
每种语言约定三段结构:
|
|
36
|
-
|
|
37
|
-
- `replacements`:源标题 → 目标标题映射表(覆盖分组标题与依赖条目)
|
|
38
|
-
- `deps`:依赖更新条目固定文案
|
|
39
|
-
- `released`:发布日期行后缀(中文为「发布」,英文为「released」)
|
|
40
|
-
|
|
41
|
-
新增语言时先补全三段,再按映射转换标题、润色条目。
|
|
1
|
+
# CHANGELOG 格式规范
|
|
2
|
+
|
|
3
|
+
## 1. 文件结构(中文示例)
|
|
4
|
+
|
|
5
|
+
```markdown
|
|
6
|
+
## 1.5.3
|
|
7
|
+
|
|
8
|
+
> 2026-09-03 发布
|
|
9
|
+
|
|
10
|
+
### 🐛 补丁修复
|
|
11
|
+
|
|
12
|
+
- 修复 xxx:……
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
规则:
|
|
16
|
+
|
|
17
|
+
- 版本标题 `## {版本号}`;隔一行后接引用行 `> {YYYY-MM-DD} 发布`(标题与日期行之间保留一个空行)
|
|
18
|
+
- 分组标题 = emoji + 组名,一行一组,按 major → minor → patch 顺序
|
|
19
|
+
- 条目一行一条,项目语言句式(中文条目句末不加句号),与仓库既有风格一致
|
|
20
|
+
|
|
21
|
+
## 2. 分组标题映射(zh 内置)
|
|
22
|
+
|
|
23
|
+
| 源标题(changesets 输出) | 目标标题 |
|
|
24
|
+
| --- | --- |
|
|
25
|
+
| `### Major Changes` | `### 🚨 重大变更` |
|
|
26
|
+
| `### Minor Changes` | `### ✨ 新增功能` |
|
|
27
|
+
| `### Patch Changes` | `### 🐛 补丁修复` |
|
|
28
|
+
| `### Dependent Changes` | `### 🔗 依赖变更` |
|
|
29
|
+
| `- Updated dependencies` | `- 更新依赖` |
|
|
30
|
+
|
|
31
|
+
英文基准分组:`### Major Changes` / `### Minor Changes` / `### Patch Changes` / `### Dependent Changes`。
|
|
32
|
+
|
|
33
|
+
## 3. 多语言扩展
|
|
34
|
+
|
|
35
|
+
每种语言约定三段结构:
|
|
36
|
+
|
|
37
|
+
- `replacements`:源标题 → 目标标题映射表(覆盖分组标题与依赖条目)
|
|
38
|
+
- `deps`:依赖更新条目固定文案
|
|
39
|
+
- `released`:发布日期行后缀(中文为「发布」,英文为「released」)
|
|
40
|
+
|
|
41
|
+
新增语言时先补全三段,再按映射转换标题、润色条目。
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fxri-session-recap
|
|
3
|
+
description: 会话收尾与新会话开场的工作记忆交接:结束时把本次会话的结论、决策、改动与未尽事项沉淀进 .tasks/ 任务文件并走归档流程;新会话开头读取任务区与最近归档重建工作现场。当用户说会话要结束了、归档本次会话、总结本次、恢复上下文、继续上次的工作时使用。不用于会话中途的常规方案落盘(那是 fxri-plan-to-task 的职责)。
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
version: "1.0.3"
|
|
7
|
+
author: fxri
|
|
8
|
+
source: https://github.com/fxri-net/toolkit
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# 会话归档与上下文恢复
|
|
12
|
+
|
|
13
|
+
## 何时使用
|
|
14
|
+
|
|
15
|
+
- **归档模式**:一场会话接近尾声,需要把结论带出对话
|
|
16
|
+
- **恢复模式**:新会话开场,需要接上上次的工作现场
|
|
17
|
+
- 触发词:会话要结束了 / 归档本次会话 / 总结本次 / 恢复上下文 / 继续上次
|
|
18
|
+
|
|
19
|
+
**何时不使用**:会话中途的常规方案落盘与任务建档(用 fxri-plan-to-task);与工作交接无关的对话总结。
|
|
20
|
+
|
|
21
|
+
## 能力边界(先读这段)
|
|
22
|
+
|
|
23
|
+
- 所有 agent 的共性约束:新会话读不到其他会话的内部上下文,对话记录本身不可跨会话传递
|
|
24
|
+
- 本技能的解法是把记忆**沉淀进仓库文件**(`.tasks/`),依赖「每次会话结束前归档」的纪律
|
|
25
|
+
- 个别 agent(如 Claude Code)可直读历史会话转录,属非通用的高级路径,本技能不依赖它
|
|
26
|
+
|
|
27
|
+
## 模式一:归档本次会话
|
|
28
|
+
|
|
29
|
+
> 目标:会话结束后,任何人(或新会话的 AI)只看仓库就能还原本次做了什么、为什么、还剩什么。
|
|
30
|
+
|
|
31
|
+
1. **回顾盘点**:梳理本会话的结论、关键决策、代码改动、未尽事项;与工作产出无关的闲聊不记。⚠️ 对话中产生的**决策及其理由必须记**(如「为什么选方案 B 不选 A」)——决策散落在对话里,会话一关就丢;用户明确要求记录的内容即使看似闲聊也照记
|
|
32
|
+
2. **逐条落盘**到任务文件(先查后写;文件格式与目录规范见 `../fxri-plan-to-task/references/task-spec.md`,技能独立安装时按仓库根 SPEC.md):
|
|
33
|
+
- 会话工作有对应任务 → 更新原文件:正文追加结论与决策,`updated` 同步
|
|
34
|
+
- 无对应任务但有独立成果 → 按 fxri-plan-to-task 规范建档
|
|
35
|
+
- 未尽事项 → 拆独立任务文件(`status: 待办`),不在正文留游离待办
|
|
36
|
+
3. **状态收尾**:整场完成且验收过的任务置 `status: 已完成` 并补 `completed: YYYY-MM-DD HH:mm`——completed 必须当场执行命令取真实系统时间(Windows `Get-Date -Format "yyyy-MM-dd HH:mm"`,macOS/Linux `date "+%Y-%m-%d %H:%M"`),禁止凭记忆估算或做时区换算;未做完的保持原状态并写清当前进展
|
|
37
|
+
4. **归档**:终结态任务按 task-spec「手工归档步骤」执行(合并归档块 → 降序重排 → 写回 → 删源文件 → 清理空月份目录)
|
|
38
|
+
5. **收尾边界(硬约束到归档)**:任务归档即本技能流程终点。提交、发版、推送不是必经步骤,是否执行取决于用户的全局 / 个人 / 项目规则;若提交代码,先归档、后提交,任务归档文件必须与本次代码变更落在**同一个 git 提交**(顺序不可颠倒)
|
|
39
|
+
6. **回报**:向用户列出本次沉淀的任务清单与归档位置,确认无遗漏后再结束会话
|
|
40
|
+
|
|
41
|
+
## 模式二:恢复上下文
|
|
42
|
+
|
|
43
|
+
> 目标:新会话快速重建现场,只读不改。
|
|
44
|
+
|
|
45
|
+
1. 读 `.tasks/active/` 全部任务文件(含 `{YYYYMM}/` 月份子目录)
|
|
46
|
+
2. 读最近归档:`archive/` 下最新月份文件,看尾部最新归档块(归档块降序排列)
|
|
47
|
+
3. 输出现场摘要:进行中/阻塞的任务、最近完成的任务、未完事项、建议的下一步
|
|
48
|
+
4. 全程只读,不做任何写操作;对存疑内容向用户确认后再动
|
|
49
|
+
|
|
50
|
+
## 失败模式
|
|
51
|
+
|
|
52
|
+
| 症状 | 处置 |
|
|
53
|
+
| --- | --- |
|
|
54
|
+
| 会话结束时多个任务混在一起说不清 | 按任务逐条对应拆开写;对应不上的问用户 |
|
|
55
|
+
| 未尽事项塞进已完成任务正文 | 必须拆独立任务,保持已完成任务的归档块干净 |
|
|
56
|
+
| 恢复时 active 有游离文件(不在月份目录) | 先按规范移入 `active/{YYYYMM}/` 再读 |
|
|
57
|
+
| 新会话仍说「找不到上下文」 | 检查归档文件是否已 git 提交、是否落在正确月份目录 |
|
|
58
|
+
|
|
59
|
+
## 可选加速(不构成依赖)
|
|
60
|
+
|
|
61
|
+
⚠️ 工具探测顺序(先项目内、后全局):先 `pnpm exec toolkit --help`(项目 devDependency,npm 项目等价 `npx toolkit`),失败再 `toolkit --help`(全局安装);两者都不可用即工具未安装,按各步手工继续,**不安装、不阻塞**。探测成功后用对应前缀执行下列命令:
|
|
62
|
+
|
|
63
|
+
- `toolkit tasks`:恢复模式查总览(替代人工翻目录)
|
|
64
|
+
- `toolkit tasks archive`:归档模式第 4 步自动化(含排他锁防并发;可 `--dry-run` 预演)
|
|
65
|
+
- `toolkit tasks check`:落盘后校验
|
|
66
|
+
- 任务目录非默认 `.tasks` 时加 `--dir <path>`
|