@nathan33/nao-skill 0.9.4 → 0.10.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/.agents/checklists/deliverable-docs.md +64 -16
- package/.agents/checklists/pm.md +2 -2
- package/.agents/common/output-format.md +1 -0
- package/.agents/common/release-notes.md +58 -0
- package/.agents/scripts/intercom-probe.mts +15 -1
- package/.agents/skills/github-flow.md +1 -1
- package/.agents/templates/AGENTS.md.example +1 -1
- package/.agents/templates/release-notes.md.example +53 -0
- package/README.md +10 -0
- package/package.json +8 -3
|
@@ -14,15 +14,13 @@ description: 交付文档写作规范(PRD/ADR/报告/调研:简洁、可读
|
|
|
14
14
|
3. **写决策不写过程,写差异不复述**:与代码 / 上游文档重复的内容一律用指针(`路径#小节`)。
|
|
15
15
|
4. **超预算就删,不是加长**:每份文档有长度上限;超了先删「常识 / 过程 / 全量罗列」,仍超才另附文件。
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
| 发布说明 | ≤60 行 | 版本号、**用户可读**行为变化、升级/回滚说明 | 复述提交日志全文、纯编号/类名 |
|
|
25
|
-
| 任务回报 | ≤50 行 | 变更清单、门禁数字、未过项、风险 | 复述需求、贴 diff |
|
|
17
|
+
- **PRD**:上限 ≤150 行;必须留下 9 模块结论、范围/非范围、AC;禁止 抄竞品原文、贴代码。
|
|
18
|
+
- **ADR**:上限 ≤60 行;必须留下 决策、对照模式、参考来源;禁止 大段代码、教程式背景。
|
|
19
|
+
- **评审报告**:上限 ≤60 行;必须留下 可行性、风险、取舍、待拍板点;禁止 复述 PRD。
|
|
20
|
+
- **测试报告**:上限 ≤80 行;必须留下 范围、结果数字、缺陷、风险、建议;禁止 日志/截图全文。
|
|
21
|
+
- **调研报告**:上限 ≤120 行;必须留下 结论摘要、来源、适配三栏;禁止 无来源断言。
|
|
22
|
+
- **发布说明**:上限 ≤60 行;必须留下 版本号、**用户可读**行为变化、升级/回滚说明;禁止 复述提交日志全文、纯编号/类名。写法见 @.agents/common/release-notes.md。
|
|
23
|
+
- **任务回报**:上限 ≤50 行;必须留下 变更清单、门禁数字、未过项、风险;禁止 复述需求、贴 diff。
|
|
26
24
|
|
|
27
25
|
**一律下沉**(写进正文就违规):全部用例(测试)、方案全文与压测数据(ADR)、抓取正文(调研)、背景长叙与竞品原文(PRD)、通过项罗列(报告类)——需要时另存文件给指针。
|
|
28
26
|
|
|
@@ -35,18 +33,19 @@ description: 交付文档写作规范(PRD/ADR/报告/调研:简洁、可读
|
|
|
35
33
|
```
|
|
36
34
|
|
|
37
35
|
- 结尾一行修订:`- 修订:YYYY-MM-DD <一句话>`;**只在结论变化时新增**,不记措辞调整。
|
|
38
|
-
-
|
|
39
|
-
-
|
|
36
|
+
- 压缩对比**优先用列表**;引用代码用 `path/file.ext:12`,**不贴代码块**(超过 10 行必改引用)。
|
|
37
|
+
- **确需表格时**(例外与判据见 §七):列数 **≤4**、行数 **≤5**;单元格只放短结论(约 ≤20 字),长内容下沉为列表;**消息/线程里表格 ≤3 列**(否则终端折行错乱);表内不放代码块。
|
|
40
38
|
- 术语首次出现给半句话解释;中文;不写「我们认为 / 如上所述 / 众所周知」。
|
|
41
39
|
|
|
42
|
-
## 三、PRD(9
|
|
40
|
+
## 三、PRD(9 模块不删,每项设上限)
|
|
43
41
|
|
|
44
|
-
> 9
|
|
42
|
+
> 9 模块是**验收闸门**,不得删;简洁靠「每项 1–3 句 + 允许不适用」实现。
|
|
45
43
|
|
|
46
44
|
- 首屏 TL;DR(≤5 行):做什么 · 给谁 · 成功标准 · 不做什么
|
|
47
|
-
- 9
|
|
45
|
+
- 9 模块:**每模块一小节**,内容用列表承载(**不用表格**);每项 **≤3 句 / ≤60 字**;不适用项写「不适用:<一行理由>」,**不许留空、不许写废话**
|
|
48
46
|
- AC 逐条 Given/When/Then,一条一行
|
|
49
47
|
- 推演细节(RICE 打分过程、5 Whys 展开、同类产品调研明细)落 `docs/research/` 或附录,**正文只留结论 + 指针**
|
|
48
|
+
- **⛔ PRD 正文不使用表格** ⇒ 改用**有序 / 无序列表 + 加粗字段名**(如 `- **版本**:1.12.3`)。最常被误写成表格的三处:**需求清单(用户故事 / 条目)· 验收标准(AC)· 范围 / 非范围**。
|
|
50
49
|
|
|
51
50
|
## 四、ADR(≤60 行)
|
|
52
51
|
|
|
@@ -77,10 +76,59 @@ description: 交付文档写作规范(PRD/ADR/报告/调研:简洁、可读
|
|
|
77
76
|
|
|
78
77
|
- 抓取正文**不进正文**;协议与边界见 @.agents/skills/research.md。
|
|
79
78
|
|
|
80
|
-
##
|
|
79
|
+
## 七、排版:默认不使用表格
|
|
80
|
+
|
|
81
|
+
- **默认不用表格**:内容一多就难以阅读(列被挤压 / 需横向滚动 / 移动端尤甚),且在 **diff 中难以审阅**。
|
|
82
|
+
- **适用文档类型(全角色文档产物)**:**PRD** · ADR · 评审 / 测试报告 · 调研报告 · 发版说明 · 评审回执 · `tasks-state` · 缺陷池 等 —— 一视同仁。
|
|
83
|
+
- **首选替代**:有序列表 / 无序列表(首选)· 分级小标题 · **加粗字段名 + 正文**(`- **版本**:1.12.3`)· 引用块(注意事项)· 代码块(命令 / 配置)。
|
|
84
|
+
- **允许表格的例外(窄口径,须给判据)**:① **严格二维对照**且**规模很小**(建议 **≤5 行且 ≤4 列**);② **逐列比较**确有必要(如版本对照、参数矩阵)且**读者需要并排比较**;③ **机器可读 / 需被解析**的结构化清单。
|
|
85
|
+
- **表格若必须用 ⇒ 硬要求**:列数少 · 单元格短(⛔ 不塞长句 / 多段)· 表头自解释 · ⛔ **不得用表格承载「需要解释的推理 / 因果」**。
|
|
86
|
+
- **不追溯改写历史文档**:本规则只对**之后新写 / 新改**的文档生效 ⇒ ⛔ 不得据此大规模重排既有文档(避免无谓 diff 与破坏归档)。
|
|
87
|
+
|
|
88
|
+
**同一内容的两种写法(照此改)**
|
|
89
|
+
|
|
90
|
+
⛔ **坏**(表格塞长句,列被挤压、难以并排阅读):
|
|
91
|
+
|
|
92
|
+
```text
|
|
93
|
+
| 模块 | 内容 | 说明 |
|
|
94
|
+
| 登录 | 支持手机号+验证码 | 验证码 60s 有效,失败 3 次锁定 |
|
|
95
|
+
| 导出 | 支持 CSV/JSON | 单次上限 1 万行,超出分批 |
|
|
96
|
+
| 通知 | 站内信 + 邮件 | 可在设置里逐类关闭 |
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
✅ **好**(有序列表 + 加粗字段名):
|
|
100
|
+
|
|
101
|
+
```text
|
|
102
|
+
1. **登录** —— 支持手机号 + 验证码;验证码 60s 有效,失败 3 次锁定。
|
|
103
|
+
2. **导出** —— 支持 CSV / JSON;单次上限 1 万行,超出分批。
|
|
104
|
+
3. **通知** —— 站内信 + 邮件;可在设置里逐类关闭。
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**PRD 场景对照(需求条目)**
|
|
108
|
+
|
|
109
|
+
⛔ **坏**(需求清单做成表格):
|
|
110
|
+
|
|
111
|
+
```text
|
|
112
|
+
| 编号 | 用户故事 | 验收标准 |
|
|
113
|
+
| R1 | 作为用户我要筛选任务 | 能按标签/状态/时间筛,结果实时刷新 |
|
|
114
|
+
| R2 | 作为用户我要批量删除 | 多选后一键删,可撤销,二次确认 |
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
✅ **好**(有序列表 + 加粗字段名 + 每条 AC 一行):
|
|
118
|
+
|
|
119
|
+
```text
|
|
120
|
+
1. **R1 筛选任务**
|
|
121
|
+
- 用户故事:作为用户,我要按标签 / 状态 / 时间筛选任务。
|
|
122
|
+
- AC:筛选结果实时刷新;清空条件后恢复全量。
|
|
123
|
+
2. **R2 批量删除**
|
|
124
|
+
- 用户故事:作为用户,我要多选后一键删除。
|
|
125
|
+
- AC:删除前二次确认;删除后可撤销。
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## 八、反模式
|
|
81
129
|
|
|
82
130
|
- 把「过程」当内容:讨论、尝试、失败路径、工具输出。
|
|
83
131
|
- 同一内容出现在多处(该用指针)。
|
|
84
132
|
- 全量罗列:全部通过项、全部用例、全部日志。
|
|
85
133
|
- 用篇幅证明工作量——**文档的价值是让别人少读,不是多读**。
|
|
86
|
-
- 宽表(≥
|
|
134
|
+
- 宽表(≥5 列,或单元格塞长句)——按 §七 改分条列表。
|
package/.agents/checklists/pm.md
CHANGED
|
@@ -56,7 +56,7 @@ description: PM 交付核对清单(按需,交付/派发前读取)
|
|
|
56
56
|
- [ ] Issue 与 `docs/` 双源(正文抄进 Issue,或状态只留平台)?
|
|
57
57
|
- [ ] 未过验收 / 门禁未绿就打 tag 或 release,或 tag 指向非 main 合并提交?(见 `github-flow.md`)
|
|
58
58
|
- [ ] `git push --force` 到 main/共享分支(未经用户明确授权并指明分支)?
|
|
59
|
-
- [ ] release notes 不可读(纯编号/类名/路径),或未落盘 `docs/releases
|
|
59
|
+
- [ ] release notes 不可读(纯编号/类名/路径),或未落盘 `docs/releases/`?(规范:@.agents/common/release-notes.md —— 面向用户简明版置顶、内部信息下沉、正文不用表格)
|
|
60
60
|
- [ ] 降级(无 `gh` / 无远端)未在 `tasks-state` 与回执中标注?
|
|
61
61
|
|
|
62
62
|
## 交付检查清单(完整 36 项)
|
|
@@ -94,7 +94,7 @@ description: PM 交付核对清单(按需,交付/派发前读取)
|
|
|
94
94
|
- [ ] Issue 已建(或降级已标注):body 为摘要 + 指针,正文在 `docs/prds/`;同步仅 5 个节点
|
|
95
95
|
- [ ] 验收在 PR 上完成:AC 逐条评论核对 + QA 门禁数字;**验收通过后才授权合并**
|
|
96
96
|
- [ ] 合并由 RD 执行(`--squash`);main 上本需求恰好 1 条提交且无 `wip()`;需求分支已删除
|
|
97
|
-
- [ ] 发布(若有):版本号符合 SemVer/项目约定;tag 指向 main 合并提交;release notes 用户可读且落盘 `docs/releases
|
|
97
|
+
- [ ] 发布(若有):版本号符合 SemVer/项目约定;tag 指向 main 合并提交;release notes 用户可读且落盘 `docs/releases/`(核 @.agents/common/release-notes.md)
|
|
98
98
|
- [ ] `gh` 可用则已用 `gh`,降级已注明;发布后 `tasks-state` 版本/Tag 行已更新
|
|
99
99
|
- [ ] 通过上面全部红线
|
|
100
100
|
|
|
@@ -16,6 +16,7 @@ description: 全角色共用输出与沟通红线(常驻;模板按需)
|
|
|
16
16
|
- 消息只回:`路径 + ≤150字摘要 + 结论/阻塞`。
|
|
17
17
|
- **引用而非复制**:派发/评审一律给路径(如 `docs/prds/<file>.md#<section>`),禁止把长文全文或附件推进线程——接收方自己读文件,发起方上下文不留副本。
|
|
18
18
|
- **正文规范**:PRD / ADR / 报告 / 调研等交付文档统一按 @.agents/checklists/deliverable-docs.md 写(首屏结论、长度上限、必写/可省/禁写三档)——**写文档前读取**。
|
|
19
|
+
- **排版(强约束)**:交付文档**默认不使用表格**(内容一多即难阅读、难 diff),改用有序 / 无序列表 + 加粗字段名;例外与硬要求见 @.agents/checklists/deliverable-docs.md §七。
|
|
19
20
|
|
|
20
21
|
## 检查清单
|
|
21
22
|
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 发版说明写作规范(面向用户、说人话;写 / 验收 release notes 前读取)
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# 发版说明写作规范(通用)
|
|
6
|
+
|
|
7
|
+
> 适用:**任何面向用户交付的仓库**(应用 / 组件库 / CLI 工具…)的每一次发版。
|
|
8
|
+
> 触发:**写 release notes 前**(发布执行人)与**验收发布前**(PM)读取。
|
|
9
|
+
> 权威单处:本文件。`skills/github-flow.md`、`checklists/`、`templates/` 只给指针,不复制正文。
|
|
10
|
+
> 骨架见 @.agents/templates/release-notes.md.example;文档通用写法见 @.agents/checklists/deliverable-docs.md。
|
|
11
|
+
|
|
12
|
+
## 一、硬约束(必须遵守)
|
|
13
|
+
|
|
14
|
+
1. **必须有「面向用户的简明版」,且置于正文最前。**
|
|
15
|
+
- GitHub Release 正文 与 仓库 `docs/releases/vX.Y.Z.md` 的**顶部口径一致**(同一份文字、同一版本)。
|
|
16
|
+
- 读者 = **最终用户**,不是开发者;看完前几行就知道「这版对我有什么变化」。
|
|
17
|
+
2. **正文 ⛔ 不得出现内部术语 / 编号。** 一律不写:任务或缺陷编号(`DEF-xx` / `Txxx` / `#123`)、提交哈希、文件名与函数名、内部属性名(如 `aria-disabled` / `dirty`)、测试例数与通过率、守卫名、内部模块名。
|
|
18
|
+
- 需要保留 ⇒ 统一移入**末尾「技术细节(可略过)」**段,或**链接仓库文档**(README / CHANGELOG / 详细说明)。
|
|
19
|
+
3. **行为变更必须写「用户视角的后果」。**
|
|
20
|
+
- 只写内部机制(改了哪个函数 / 状态)不合格;要写**用户会看到什么、能做什么、不能做什么**。
|
|
21
|
+
- 例:_点过之后按钮会变「已撤销」且不可再点_(✅)—— 而非「按钮加 `aria-disabled`」(⛔)。
|
|
22
|
+
4. **口径与落盘一致**:`docs/releases/<version>.md` 是权威落盘;`gh release create --notes-file <该文件>` 与之一同源,禁止两处各写各的。
|
|
23
|
+
|
|
24
|
+
## 二、建议结构(顺序固定,用不上的段可省)
|
|
25
|
+
|
|
26
|
+
1. **一句话概括** —— 这版一句话能记住的变化(不可省)。
|
|
27
|
+
2. **✨ 更好用了** —— 新能力 / 体验提升。
|
|
28
|
+
3. **🐛 修好了** —— 修掉的问题(用户视角现象 → 现在)。
|
|
29
|
+
4. **⚠️ 请留意** —— 行为变更 / 需要用户配合的事。
|
|
30
|
+
5. **📦 更小更快** —— 体积 / 性能 / 启动等可感知收益。
|
|
31
|
+
6. **已知但本期未处理** —— 已知问题与后续计划。
|
|
32
|
+
7. **技术细节(可略过)** —— 编号 / 哈希 / 依赖版本 / 门禁数字 / 文档链接。
|
|
33
|
+
|
|
34
|
+
- **纯内部仓**(无面向用户交付)可省略第 2–5 段的「面向用户」写法,但**结构保留**(仍按「概括 → 变化 → 技术细节」分层)。
|
|
35
|
+
- **排版**:本文件与其他文档同受 @.agents/checklists/deliverable-docs.md 「默认不使用表格」约束 —— release notes 正文尤其不要用表格。
|
|
36
|
+
|
|
37
|
+
## 三、好 / 坏对照
|
|
38
|
+
|
|
39
|
+
- ✅ **好**:**撤销更好用了** —— 拖动改期后点「撤销」可还原;**点过之后按钮会变成「已撤销」且不可再点**。
|
|
40
|
+
- ⛔ **坏**:新增 `calendar.undo.*` i18n 键并接入 `NueMessage` 扩展插槽,成功态置 `aria-disabled`(`T362`)。
|
|
41
|
+
|
|
42
|
+
完整可套用骨架(含逐段占位与好/坏示例)见 @.agents/templates/release-notes.md.example。
|
|
43
|
+
|
|
44
|
+
## 四、发布前核对
|
|
45
|
+
|
|
46
|
+
- [ ] 正文最前有**面向用户的简明版**(用户看得懂)。
|
|
47
|
+
- [ ] 正文**无**编号 / 哈希 / 文件名 / 函数名 / 内部属性名 / 测试例数 / 守卫名 / 内部模块名。
|
|
48
|
+
- [ ] 行为变更写了**用户视角的后果**(不是内部机制)。
|
|
49
|
+
- [ ] 结构完整(一句话 → 变化 → 已知 → 技术细节);内部信息集中在「技术细节」段。
|
|
50
|
+
- [ ] 正文**未使用表格**(改用有序 / 无序列表;见 @.agents/checklists/deliverable-docs.md)。
|
|
51
|
+
- [ ] `docs/releases/<version>.md` 与 GitHub Release 正文同源。
|
|
52
|
+
|
|
53
|
+
## 五、红线
|
|
54
|
+
|
|
55
|
+
- [ ] 只写内部机制、用户看不懂?
|
|
56
|
+
- [ ] 正文里直接出现编号 / 哈希 / 类名 / 属性名 / 测试例数?
|
|
57
|
+
- [ ] 没有「面向用户简明版」,或它不在最前?
|
|
58
|
+
- [ ] 盘上 release notes 与 Release 正文两处不一致?
|
|
@@ -14,8 +14,22 @@
|
|
|
14
14
|
//
|
|
15
15
|
// 兼容性:pi-intercom 内部 API 若变化 → 本探针非 0 退出,nao-fleet 回退官方 CLI
|
|
16
16
|
// (无 tmuxPane)再叠加「仓库内未认领 pi pane 唯一兜底」,不静默 no-op。
|
|
17
|
+
//
|
|
18
|
+
// 类型自检:`npm run check:agents`(tsconfig.agents.json)。动态 import 使 list 结果为
|
|
19
|
+
// any,下游 TS 项目(nao-todo/nue-ui 的 `vp check` 扫 `.agents/**`)会报 TS7006,
|
|
20
|
+
// 故此处用本地 ProbeSession 给 filter/map 显式定型(strict/noImplicitAny 下必需)。
|
|
17
21
|
import { join } from "node:path";
|
|
18
22
|
|
|
23
|
+
type ProbeSession = {
|
|
24
|
+
id: string;
|
|
25
|
+
name?: string;
|
|
26
|
+
model?: string;
|
|
27
|
+
status?: string;
|
|
28
|
+
cwd: string;
|
|
29
|
+
tmuxPane?: string;
|
|
30
|
+
pid?: number;
|
|
31
|
+
};
|
|
32
|
+
|
|
19
33
|
const agentDir = process.argv[2];
|
|
20
34
|
if (!agentDir) {
|
|
21
35
|
process.stderr.write("usage: intercom-probe.mts <pi-agent-dir>\n");
|
|
@@ -39,7 +53,7 @@ try {
|
|
|
39
53
|
name: PROBE_NAME,
|
|
40
54
|
status: "idle",
|
|
41
55
|
});
|
|
42
|
-
const sessions = await client.listSessions();
|
|
56
|
+
const sessions = (await client.listSessions()) as ProbeSession[];
|
|
43
57
|
const rows = sessions
|
|
44
58
|
.filter((s) => s.id !== client.sessionId)
|
|
45
59
|
.map((s) => ({
|
|
@@ -54,7 +54,7 @@ PM 在**立项 / 终签 / 发布**时读取;RD 在**起分支 / 开 PR / 合
|
|
|
54
54
|
- 门禁:AC 全过 + 验收闭环 + main 门禁全绿 + 工作区干净 + PR 已合并。
|
|
55
55
|
- **优先 `gh`**:`gh release create <tag> --title "<用户可读标题>" --notes-file docs/releases/<version>.md`。
|
|
56
56
|
- 探测:`gh auth status` 按 **exit code** 判定(`keyring` 警告但 exit 0 **仍可用**,可 `gh api user` 复核);**不自动 `gh auth login`**(涉用户凭证)。
|
|
57
|
-
- release notes 落盘 `docs/releases/<version>.md
|
|
57
|
+
- release notes 落盘 `docs/releases/<version>.md`(**写作规范(强约束):@.agents/common/release-notes.md** —— 面向用户简明版置顶、内部编号 / 文件名 / 属性名一律下沉「技术细节」、正文不用表格;骨架见 @.agents/templates/release-notes.md.example)。
|
|
58
58
|
- 回滚:未 push → `git tag -d`;已 push → **不删远端 tag**,改发下一个 PATCH 修正(用户明确要求才删)。
|
|
59
59
|
|
|
60
60
|
## 离线 / 无远端降级
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
- <命令纪律,如:禁 cat 全文读代码,用 CodeGraph 或 sed 行段>
|
|
25
25
|
- <依赖限制 / 禁止事项>
|
|
26
26
|
- **Git 流程(GitHub Flow)**:一个需求一条分支 `feat/<issue-id>-<slug>`;工作期 `wip()` 小步提交 + 路径级暂存(禁 `git add -A`);**PM 验收通过后由 RD 在 PR 上 squash 合并**(main = 1 条/需求);**禁直推 main**。
|
|
27
|
-
- **发布与仓库治理**:PM 负责 Issue / PR 验收评论 / tag / release / `.github/` 模板(优先 `gh`,不可用降级 `git
|
|
27
|
+
- **发布与仓库治理**:PM 负责 Issue / PR 验收评论 / tag / release / `.github/` 模板(优先 `gh`,不可用降级 `git`);**发版说明写法遵循 `@.agents/common/release-notes.md`**(面向用户简明版置顶、内部信息下沉、正文不用表格)。
|
|
28
28
|
|
|
29
29
|
## 与 nao 机制衔接
|
|
30
30
|
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
release notes 骨架 —— 复制为 docs/releases/<version>.md 后逐段填空。
|
|
3
|
+
权威规范:@.agents/common/release-notes.md
|
|
4
|
+
用法:把「面向用户的简明版」放在最前;内部信息一律下沉「技术细节(可略过)」。
|
|
5
|
+
⛔ 自查:正文无编号 / 哈希 / 文件名 / 函数名 / 内部属性名 / 测试例数 / 守卫名 / 内部模块名;正文不要用表格。
|
|
6
|
+
-->
|
|
7
|
+
|
|
8
|
+
# 简明版(面向用户)
|
|
9
|
+
|
|
10
|
+
**<一句话概括这版最大的变化;用用户能听懂的话。>**
|
|
11
|
+
|
|
12
|
+
## ✨ 更好用了
|
|
13
|
+
|
|
14
|
+
- **<功能名>**:<用户现在能做什么 / 体验哪里更顺>。
|
|
15
|
+
(例:拖动改期后,提示条上点「撤销」就能还原到原来的日期。)
|
|
16
|
+
|
|
17
|
+
## 🐛 修好了
|
|
18
|
+
|
|
19
|
+
- **<用户看到的现象>**:<现在变成什么样>。
|
|
20
|
+
(例:处理完冲突后,左下角不再一直显示「冲突 N」,全部处理完就自动消失。)
|
|
21
|
+
|
|
22
|
+
## ⚠️ 请留意(这一版行为有变化)
|
|
23
|
+
|
|
24
|
+
- <行为变更 + **用户视角的后果**>。
|
|
25
|
+
(例:点过之后按钮会变成「已撤销」且不可再点;失败会显示「重试」。)
|
|
26
|
+
|
|
27
|
+
## 📦 更小更快
|
|
28
|
+
|
|
29
|
+
- <体积 / 性能 / 启动等可感知收益>。<!-- 没有就整节删除 -->
|
|
30
|
+
|
|
31
|
+
## 已知但本期未处理
|
|
32
|
+
|
|
33
|
+
- <已知问题 + 计划>。<!-- 没有就写「无」 -->
|
|
34
|
+
|
|
35
|
+
## 技术细节(可略过)
|
|
36
|
+
|
|
37
|
+
- 版本号:<包名旧版本 → 新版本>(如涉及多个包,逐条列出)
|
|
38
|
+
- 关联编号 / 提交:<DEF-xx / Txxx / 短哈希>(**仅此处允许**出现)
|
|
39
|
+
- 依赖升级 / 守卫变化 / 门禁数字:<…>
|
|
40
|
+
- 升级方式:`<安装 / 更新命令>`
|
|
41
|
+
- 回滚:`git revert <本次发布合并提交>`
|
|
42
|
+
- 完整说明:<仓库文档链接或 `docs/...md`>
|
|
43
|
+
|
|
44
|
+
- 修订:<YYYY-MM-DD> 首版。
|
|
45
|
+
|
|
46
|
+
<!--
|
|
47
|
+
好 / 坏对照(自查用,发布时连同本注释一起删除):
|
|
48
|
+
|
|
49
|
+
✅ 好:**撤销更好用了** —— 拖动改期后点「撤销」可还原;点过之后按钮会变成「已撤销」且不可再点。
|
|
50
|
+
⛔ 坏:新增 calendar.undo.* i18n 键并接入 NueMessage 扩展插槽,成功态置 aria-disabled(T362)。
|
|
51
|
+
|
|
52
|
+
(坏例问题:术语与编号外泄、只讲内部机制、用户看不懂。)
|
|
53
|
+
-->
|
package/README.md
CHANGED
|
@@ -112,6 +112,16 @@ PM:在 PR 核 AC 并评论 → 验收通过(授权合并)→ rd-be squash
|
|
|
112
112
|
└── scripts/ # nao-fleet.sh 等小工具
|
|
113
113
|
```
|
|
114
114
|
|
|
115
|
+
**同步后在 fmt 校验里看到 `.agents/` 的格式差异?** 这是已知的**发布形态**,不是缺陷——`.agents/**` 以上游原始存储形态发布,**不要就地格式化**(会破坏下游同步的 sha 一致性校验)。完整约定见下一节。
|
|
116
|
+
|
|
117
|
+
## `.agents/` 的发布形态(fmt 边界)
|
|
118
|
+
|
|
119
|
+
**`.agents/**` 的发布形态 = 本仓库里的原始存储形态**:其中部分 YAML / Markdown / MTS 未按 oxfmt / prettier 归一(实测命中如 `.agents/roles.yaml`、`.agents/scripts/intercom-probe.mts`)。因此下游把 `.agents/**` 纳入完整格式化校验(`vp check`、`prettier --check`、`oxfmt --check`…)时会看到几处格式差异——**属已知形态,不是缺陷**。
|
|
120
|
+
|
|
121
|
+
- **⛔ 不要为了通过 fmt 而格式化 `.agents/**`。** 下游同步的**唯一完整性判据**是「**脚本与上游逐字节 sha 一致**」(跨仓同步正是靠它证明机制文件没漏没改);一旦就地格式化,sha 不再相等,同步完整性就无法再证明。规避方式二选一:把 `.agents/**` 排除出 fmt 校验范围,或接受这几处差异。
|
|
122
|
+
- **类型安全另有保障**:`.agents/scripts/**/*.mts|ts` 由本仓 `npm run check:agents`(strict `tsc`,配置 `tsconfig.agents.json`)把关,并已串入 `test` 与 `prepack` ⇒ **每次发布前必过**。这来自 `0.9.4` 的教训(`DEF-66`):探针 2 处 `TS7006` 曾让下游 TS 仓(nao-todo / nue-ui)required `check` 变红,`0.9.5` 修复并把该自检固化在上游。
|
|
123
|
+
- **变更纪律**:将来若要「上游统一格式化」,必须作为**一次明确的基线变更**执行——改形态 + 通知**全部下游**重同步 + 说明 sha 基线变化;**不得顺手格式化**。
|
|
124
|
+
|
|
115
125
|
## 想深入
|
|
116
126
|
|
|
117
127
|
README 只讲怎么用。真正的机制都在上面那个 `.agents/` 里,想改就从这几处入手:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nathan33/nao-skill",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "nao 多角色 AI 开发舰队:角色卡 / 技能 / 协作协议 / 工具链,一键接入项目(pi / Claude / 任意 Agent)",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -32,8 +32,13 @@
|
|
|
32
32
|
"node": ">=18"
|
|
33
33
|
},
|
|
34
34
|
"scripts": {
|
|
35
|
-
"test": "bash .agents/scripts/nao-fleet.sh check",
|
|
36
|
-
"
|
|
35
|
+
"test": "bash .agents/scripts/nao-fleet.sh check && npm run check:agents",
|
|
36
|
+
"check:agents": "tsc -p tsconfig.agents.json",
|
|
37
|
+
"prepack": "npm test"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@types/node": "^20.19.0",
|
|
41
|
+
"typescript": "^5.4.5"
|
|
37
42
|
},
|
|
38
43
|
"repository": {
|
|
39
44
|
"type": "git",
|