@chengzhao-dev/dsh-quarto-book 0.6.7 → 0.6.8

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.en.md CHANGED
@@ -29,7 +29,7 @@ Both skills are discovered from the package's `skills/` directory and loaded on
29
29
  2. Open a session in the book repository. `_quarto.yml` needs a standalone `type: book` line, and the book needs at least one `.qmd` or `.md` chapter source; only then do both skill names appear.
30
30
  3. Call a skill: `writing-quarto` for prose, `designing-theme` for the theme.
31
31
 
32
- Replace `--profile` with the profile you actually run. The desktop app always runs the `desktop` profile, and that profile is owned by the app, so `dsh --profile desktop` is rejected; install or upgrade with `dsh plugin --profile desktop add <package>`, and use the app's Settings → Plugins → Add plugin only if the app refuses that write. To pin a version, write `npm:@chengzhao-dev/dsh-quarto-book@0.6.7`; to follow a GitHub tag, write `github:chengzhao-dev/dsh-quarto-book#v0.6.7`.
32
+ Replace `--profile` with the profile you actually run. The desktop app always runs the `desktop` profile, and that profile is owned by the app, so `dsh --profile desktop` is rejected; install or upgrade with `dsh plugin --profile desktop add <package>`, and use the app's Settings → Plugins → Add plugin only if the app refuses that write. To pin a version, write `npm:@chengzhao-dev/dsh-quarto-book@0.6.8`; to follow a GitHub tag, write `github:chengzhao-dev/dsh-quarto-book#v0.6.8`.
33
33
 
34
34
  Upgrading from the old unscoped package `dsh-quarto-book` (removed from npm with 0.3.4, so this only affects profiles that installed it earlier): remove it from the same profile first with `dsh plugin --profile <profile> remove dsh-quarto-book`, then add the scoped package. Keeping both installed registers `writing-quarto` and `designing-theme` twice at the same rank 550.
35
35
 
package/README.md CHANGED
@@ -29,7 +29,7 @@
29
29
  2. 在书仓库里打开会话。`_quarto.yml` 要有独立一行的 `type: book`,书根至少有一个 `.qmd` 或 `.md` 章节源文件;两个技能名这时才会出现。
30
30
  3. 调用技能:写正文用 `writing-quarto`,改主题用 `designing-theme`。
31
31
 
32
- `--profile` 换成你实际运行的那个 profile。桌面应用固定跑 `desktop` profile,且该 profile 由应用独占管理,`dsh --profile desktop` 直接启动会被拒绝;安装或升级用 `dsh plugin --profile desktop add <包>`,应用拒绝写入时再走「设置 → 插件 → 添加插件」。需要固定版本时写 `npm:@chengzhao-dev/dsh-quarto-book@0.6.7`,跟 GitHub 标签时写 `github:chengzhao-dev/dsh-quarto-book#v0.6.7`。
32
+ `--profile` 换成你实际运行的那个 profile。桌面应用固定跑 `desktop` profile,且该 profile 由应用独占管理,`dsh --profile desktop` 直接启动会被拒绝;安装或升级用 `dsh plugin --profile desktop add <包>`,应用拒绝写入时再走「设置 → 插件 → 添加插件」。需要固定版本时写 `npm:@chengzhao-dev/dsh-quarto-book@0.6.8`,跟 GitHub 标签时写 `github:chengzhao-dev/dsh-quarto-book#v0.6.8`。
33
33
 
34
34
  从旧的无作用域包 `dsh-quarto-book` 升级(该包已随 0.3.4 从 npm 删除,只影响之前装过它的 profile):先在同一个 profile 里 `dsh plugin --profile <profile> remove dsh-quarto-book`,再装新包。两个包同时留着会以相同的 rank 550 各注册一遍 `writing-quarto` 和 `designing-theme`。
35
35
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chengzhao-dev/dsh-quarto-book",
3
- "version": "0.6.7",
3
+ "version": "0.6.8",
4
4
  "description": "把一份 Quarto Book 写成可读、可查、可发布的中文技术书:九步章节写作、结构/链接/图表检查、统一主题与渲染验收。 · Write, check, and publish a Chinese Quarto Book: nine-step chapter writing, structure/link/figure checks, a consistent theme, and render acceptance.",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -19,7 +19,15 @@ metadata:
19
19
 
20
20
  ## 任务路由
21
21
 
22
- 任何主题任务先读 `references/theme-spine.md`(步骤唯一入口),再按其中每一步登记的文件与 `##` 行进。
22
+ 任何主题任务先读 `references/theme-spine.md`(步骤唯一入口)。增量任务只走被改组件所在的那一步,再加第 6 步「通过检查」;从定表面到通过检查依次走完只用于新主题或用户明确要求整体调整。
23
+
24
+ ## 加载与结束
25
+
26
+ - 只改 `_quarto.yml` 实际引用的主题文件;不打开章节正文,也不打开章节以外的实现文件。
27
+ - 一次激活只开本文件、`theme-spine.md`、被改组件对应的那一节与那一份 CSS;同轮不把其余组件 CSS 和知识文件一起打开。
28
+ - 同一文件最多退回上一步一次;第二次仍失败就停在检查输出上,不重走整段。
29
+ - `scripts/checking-layout.py` 通过并完成一次整本渲染后,在同一轮结束 goal,不把没失败的步骤留到下一轮。
30
+ - 不探测同 profile 的其他插件,也不把它们写成依赖;子会话按自己的 cwd 重新判定门禁。
23
31
 
24
32
  | 任务 | 读取 |
25
33
  | --- | --- |
@@ -11,9 +11,12 @@
11
11
  width: 100% 让表与代码块占满同一正文栏。横向滚动交给 .table-responsive。 */
12
12
  display: table;
13
13
  table-layout: fixed;
14
+ /* 与代码块同宽:占满正文栏、边框算在宽度内、左右不留外边距。 */
14
15
  width: 100%;
15
16
  max-width: 100%;
17
+ box-sizing: border-box;
16
18
  margin-block: 1.35rem 1.5rem;
19
+ margin-inline: 0;
17
20
  border: none;
18
21
  border-radius: 0;
19
22
  font-variant-numeric: tabular-nums;
@@ -31,23 +34,24 @@
31
34
  width: max-content;
32
35
  min-width: 100%;
33
36
  }
34
- .table > :not(caption) > * > * {
35
- padding: 0.625rem 1rem;
37
+ #quarto-document-content .table > :not(caption) > * > * {
38
+ /* 左右 1.25rem 让首列离开表的左缘,上下 0.7rem 保持行距;四边对称。 */
39
+ padding: 0.7rem 1.25rem;
36
40
  /* 多行单元格从顶部起排,同一行里短格子不被拉到垂直居中。 */
37
41
  vertical-align: top;
38
42
  /* 长 API 名与长句允许在格内折行,避免把整张表撑出内容列。 */
39
43
  overflow-wrap: break-word;
40
44
  border-bottom: 0;
41
45
  }
42
- .table thead th {
46
+ #quarto-document-content .table thead th {
43
47
  /* 表头用加粗与一道极浅底色标出层级;不套 .compact-table,列宽仍随内容。 */
44
48
  background-color: color-mix(in srgb, var(--table-border) 24%, transparent);
45
49
  font-weight: 700;
46
50
  /* 表头比表体小 1px(17px → 15px),层级靠字重、字号与底色,不靠更粗的线。 */
47
51
  font-size: 0.9375rem;
48
52
  line-height: 1.6;
49
- /* 表头是短标签,水平与垂直都居中;表体长句保持左对齐、顶对齐。 */
50
- text-align: center;
53
+ /* 表头跟随该列:默认左对齐,数字列由 Pandoc 的行内 text-align 右对齐。 */
54
+ text-align: left;
51
55
  vertical-align: middle;
52
56
  border-top: 1px solid var(--table-border);
53
57
  border-bottom: 1px solid var(--table-border);
@@ -56,17 +60,12 @@
56
60
  border-bottom: 1px solid var(--table-border);
57
61
  }
58
62
 
59
- /* 短对照表保持全宽左对齐(与正文同宽,不居中收窄);左对齐便于中文术语扫读。
63
+ /* 短对照表保持全宽(与正文同宽,不居中收窄);对齐与内边距已由 .table 统一。
60
64
  宽表由 .table 默认规则负责,不要给多列/长单元格表套本类。 */
61
65
  .compact-table {
62
66
  width: 100%;
63
67
  overflow-x: auto;
64
68
  }
65
- .compact-table .table th,
66
- .compact-table .table td {
67
- text-align: left;
68
- padding-inline: 1.25rem;
69
- }
70
69
 
71
70
  /* 表题:Pandoc 输出 <caption>,Bootstrap 默认把它放表下(caption-side: bottom),
72
71
  这里统一提到表上、左对齐,与图注一样小一号。 */
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## 主题步骤
6
6
 
7
- 从定表面到通过检查依次走完;后一步发现前一步没做完,退回那一步,不在当前步补。每一步只打开登记的那一个文件和那一个 `##`。
7
+ 增量任务只走被改组件所在的那一步,再加第 6 步通过检查;从定表面到通过检查依次走完只用于新主题或用户明确要求整体调整。后一步发现前一步没做完,退回那一步一次;同一文件第二次仍失败就停在检查输出上。每一步只打开登记的那一个文件和那一个 `##`。
8
8
 
9
9
  | 步骤 | 动作与产出 | 登记的文件与一节 |
10
10
  | --- | --- | --- |
@@ -81,7 +81,7 @@
81
81
  - **章节翻页**:一条顶线 + 左右两个文字链接,不用边框卡片;箭头用 `<` / `>`,hover 才转 `--accent`,下一页右对齐。箭头用字符而不用 SVG 是量过的:Bright 的 `<` `>` 墨迹中心在 0.23em,与同行西文同一轴,没有面包屑 `>` 那种偏高,换 SVG 反而要另配基线。
82
82
  - **章节线**:标题不画线。全书只有一种横线——通栏 1px `--card-border` 发丝线,只出现在顶栏底边、引用块上下边、表格 booktabs、首页目录每行顶线、翻页顶线、页脚顶线、答案折叠线;`h2::after` 的 2.25rem 短发丝线已删除(连同首页 `.feature-grid` 例外),章节节奏只靠 H2 的 `margin-top: 3.25rem` 与字号台阶。约定改动时同步本节与 `css/base.css`。
83
83
  - **引用块**:上下各一条 1px `--card-border` 横线、正文色、无底色、无左右竖条;与 Callout 的 2px 左色条区分开(后者是类型标记,不是分隔线)。
84
- - **表格**:`display: table` + `table-layout: fixed` 吃 `tbl-colwidths`,`width: 100%` 让表与代码块占满同一正文栏;表头水平与垂直居中,表体左对齐、顶对齐,四边 padding 一致、首列不贴边。`display: block` 不行:外层块占 100%,里面的匿名表按内容收缩,表会变窄。宽表由 Quarto `.responsive` 类包成 `.table-responsive` 外层滚动容器;包内表改回 `table-layout: auto` + `width: max-content`,否则 fixed + 100% 永远不会溢出、滚动条是死的。不需要 JS 量列宽。表题走 `caption-side: top`、左对齐、14px `--text-secondary`;`table-striped` 压平成与普通行同底。
84
+ - **表格**:`display: table` + `table-layout: fixed` 吃 `tbl-colwidths`;`width: 100%` + `box-sizing: border-box` + `margin-inline: 0` 让表外框与代码块外框同宽、左右边缘对齐;单元格 `padding: 0.7rem 1.25rem`,首列因此离开表的左缘。表头与表体同一列对齐:文本列左对齐,数字列右对齐,表头跟随该列;垂直方向表体格子顶对齐(`vertical-align: top`),表头文字在格内居中(`vertical-align: middle`)。`display: block` 不行:外层块占 100%,里面的匿名表按内容收缩,表会变窄。宽表由 Quarto `.responsive` 类包成 `.table-responsive` 外层滚动容器;包内表改回 `table-layout: auto` + `width: max-content`,否则 fixed + 100% 永远不会溢出、滚动条是死的。不需要 JS 量列宽。表题走 `caption-side: top`、左对齐、14px `--text-secondary`;`table-striped` 压平成与普通行同底。
85
85
  - **脚注**:区块顶部一条 1px `--card-border`、`margin-top: 3rem`、14px / lh 1.7、`--text-secondary`;回跳箭头随正文链接色。
86
86
  - **任务列表**:`input[type=checkbox]` 用 `accent-color: var(--action-color)`,不用系统蓝。
87
87
  - **图片**:正文图与坐标图圆角一律 `--radius-sm`(3px),不用 6px 大圆角;图注选择器同时覆盖 `figure figcaption`、`.quarto-float-caption`、`.figure-caption`(`lang: zh` 后 Quarto 生成「图 3.1: …」,`lang` 必须写在 `_quarto.yml`,否则图/表题回落英文 Figure/Table)。
@@ -7,7 +7,7 @@ metadata:
7
7
 
8
8
  # Skill: writing-quarto
9
9
 
10
- 承载 `.qmd` 章节的写法流程与 Book 结构约定。正文只有九步:每一步只打开 `steps/` 里同号的一个文件;判不准才打开 `examples/` 里同号的案例;要排图、查渲染或全仓重构才打开 `quarto/`。不读插件包内的 `docs/`,也不读书里的旧通用副本。
10
+ 承载 `.qmd` 章节的写法流程与 Book 结构约定。正文只有九步:增量任务只打开与这次改动对应的一个 `steps/` 文件;九步同走只用于新章、新阶段,或用户明确要求全章重构。判不准才打开步骤点名的那一个 `examples/` 案例;要排图、查渲染才打开 `quarto/`。不读插件包内的 `docs/`,也不读书里的旧通用副本。
11
11
 
12
12
  ## 适用场景
13
13
 
@@ -16,6 +16,15 @@ metadata:
16
16
  - 项目带有 `.agents/skills/quarto-book-project/SKILL.md` 时,读完本技能再读它,并只按它指向的 `writing/` 文件读章节对照;没有就跳过,不要凭猜测补书名、章节名和术语。书内 `context/` 下的旧通用副本不再打开,写法以本技能为准。
17
17
  - 书仓库根目录的 `README.md` 只走第 5–8 步:它是仓库说明页,不是章节;不套第 1–4 步的任务与结构骨架,不写「常见错误」「自测问题」,不调 `quarto_render_check`。第 8 步发现问题只退回第 5、6、7 步。`README.en.md` 同样处理;`CHANGELOG.md`、`LICENSE`、`AGENTS.md` 不在写作范围。这条只在书仓库里适用(技能本身由 Book 门禁触发)。
18
18
 
19
+ ## 加载与结束
20
+
21
+ - 一次激活只做一类文件:章节或主题。写章节时只打开项目技能或 `_quarto.yml` 点名的章节;围栏保持原样,不为逐字核对去读实现文件。
22
+ - 项目提供作用域命令就先跑它,只读它列出的文件;渲染产物、构建目录与 Quarto 缓存不读。
23
+ - 增量任务只开本文件、当前一步与这一步点名的一个文件;同轮不把同号案例、其余步骤和条文一起打开。
24
+ - 同一文件最多退回上一步一次;第二次仍失败就停在检查输出上,不重走整段。
25
+ - 项目技能列出检查命令时只跑那一条;没有就跑本技能 `scripts/` 下的内容与链接检查。退出码为 0 就在同一轮结束 goal,不把没失败的步骤留到下一轮。
26
+ - 不探测同 profile 的其他插件,也不把它们写成依赖;子会话按自己的 cwd 重新判定门禁,不把技能正文塞进子代理提示。
27
+
19
28
  ## 整书走法
20
29
 
21
30
  改多章或排目录时,先读 `references/book-journey.md`:先定全书主线与章节次序,再逐章走九步,最后做全书一致性回读。只润色一章时不读它。
@@ -24,11 +33,11 @@ metadata:
24
33
 
25
34
  ## 两种走法
26
35
 
27
- 增量润色沿九步走,只改判为不合格的地方,其余保持原样。全章重构仍是这九步,但第 1–2 步先定删留、不动句子,第 3–4 步只拆块和段,第 5–7 步才逐句改。
36
+ 增量任务只走与改动对应的步骤,只改判为不合格的地方,其余保持原样;九步同走只用于新章、新阶段或用户明确要求全章重构。全章重构仍是这九步,但第 1–2 步先定删留、不动句子,第 3–4 步只拆块和段,第 5–7 步才逐句改。
28
37
 
29
38
  两条走法共守同一组不变量,写在这里,不重复进各步:不新增原文没有的事实、数字、命令、性能结论、引文和出处;不把「可能」「通常」「在本书里」这类留有余地的说法改成确定说法;保留否定、条件、范围、时间和归属;围栏里的代码、命令、路径、URL 与 YAML 不改。增量润色只删除和换词,不扩写、不补论证;全章重构可删可换序,但不能发明事实,也不能把限定说成确定。
30
39
 
31
- 后一步发现前一步没做完,退回那一步重做,不跳到更后面的步骤补救。
40
+ 后一步发现前一步没做完,退回那一步改一次;同一文件第二次仍失败就停在检查输出上,不重走整段。
32
41
 
33
42
  ## 九步
34
43
 
@@ -47,7 +56,8 @@ metadata:
47
56
 
48
57
  ## 完成判据
49
58
 
50
- - [ ] 九步走完,每一步的产出都落在正文里。
59
+ - [ ] 本轮点名的文件走完它对应的步骤,改动落在正文里;不要求九步全走。
60
+ - [ ] 本轮检查命令退出码为 0;通过后按「加载与结束」在同一轮结束 goal。
51
61
  - [ ] 内容与链接核对通过:项目技能列了检查命令时按它执行,否则跑本技能 `scripts/verifying-content.py` 与 `checking-links.py`。
52
62
  - [ ] 新人能按正文独立完成任务:前置、动作、结果与失败出口齐全,术语首用有解释;清单见 `quarto/readability.md`。
53
63
  - [ ] 混排自查通过:`scripts/checking-prose.py --root <book>` 无高置信问题。
@@ -31,7 +31,7 @@
31
31
  ```
32
32
 
33
33
  比例按内容分配:名称与接口列 18–26,返回列 22–32,说明列 34–50,三项合计 100。三列以上时最长列不超过 55,避免其余列被挤成一条线。
34
- - 表格与代码块同宽:主题用 `table-layout: fixed` 吃上面的比例,四边内边距一致,首列不贴边;表头在格内水平、垂直居中,表体左对齐、顶对齐。
34
+ - 表格与代码块同宽:主题用 `table-layout: fixed` 吃上面的比例,`width: 100%`、`box-sizing: border-box` 与左右零外边距让两者外框对齐;单元格 `0.7rem 1.25rem`,首列不贴边。文本列左对齐,数字列右对齐,表头跟随该列。
35
35
  - 宽表在表属性里加 `.responsive`(Quarto 内置类):Quarto 生成外层 `.table-responsive` 滚动容器,主题在该容器里改回按内容宽度排布,内容超过正文栏时才出现横向滚动。窄表可省。
36
36
  - 不写固定宽度(`{width=...}`、`style="width:..."`),也不覆盖 `table-layout`;比例之外的几何由主题负责。
37
37
  - 长单元格先改文案:删重复修饰,把条件与结果按「条件 + 结果」排成一句。仍长时允许格内折行,`overflow-wrap: break-word` 已由主题处理。
@@ -41,7 +41,7 @@
41
41
  - 一格一个事实,对象先行。不写「名词:一句」的伪列表,列已经分出属性名。
42
42
  - 行内代码只放读者要输入的标识符或类型名;一格最多两个,多了会把列撑宽,也让比较点被代码淹没。
43
43
  - 空值与未知写「无」或「不判断」,不写 `-`、`N/A`。
44
- - 数字右对齐、文本左对齐由主题按列决定;不要在单元格里手动空格对齐。
44
+ - 列对齐由管道表的 `---:` 标记决定,主题只给默认左对齐;不要在单元格里手动空格对齐。
45
45
  - 中英混排留半角空格,标点用全角,规则见 `quarto/prose.md`。
46
46
 
47
47
  ## 表题与引用
@@ -18,9 +18,11 @@
18
18
  | `assets/**/meta.md` | 2000 |
19
19
  | 全部技能 Markdown 合计 | 140000 |
20
20
 
21
+ 单次激活上限:`SKILL.md` + 1 个步骤 + 1 个被点名文件(案例、条文或脚本路径)。**九步同走**只用于新章、新阶段或用户明确要求全章重构;同轮不把同号案例与条文一起打开。
22
+
21
23
  ## 怎么用
22
24
 
23
25
  - 新增规则先判断属于哪一层,再写进已有文件;同一判定只成文一处,其他位置写引用。
24
26
  - 文件将超限时,先删重复、合并同源条目,再考虑拆成同目录的新文件;拆文件后同步入口和 `scripts/checking-skill-links.mjs`。
25
- - 单章润色只加载 `SKILL.md` 与当前一步;不要为了省 token 把整本书的规则塞进 `SKILL.md`。
27
+ - 增量任务只加载 `SKILL.md`、当前一步与该步点名的一个文件;不要为了省 token 把整本书的规则塞进 `SKILL.md`。
26
28
  - 预算不是目标:没必要的条文直接删,不靠缩写把句子压成暗语。
@@ -260,4 +260,4 @@ int main() {
260
260
 
261
261
  ## 正反例
262
262
 
263
- 通用情况判得准就不打开。判不准时打开同号案例:`examples/03-block-after.md`、`examples/03-excerpt-lead.md`、`examples/03-qmd-elements.md`。
263
+ 通用情况判得准就不打开。判不准时只开 `examples/03-block-after.md`,按命中的信号读其中一节;`03-excerpt-lead.md` 与 `03-qmd-elements.md` 留到下一次激活。
@@ -213,4 +213,4 @@
213
213
 
214
214
  ## 正反例
215
215
 
216
- 通用情况判得准就不打开。判不准时打开 `examples/04-paragraph-cases.md`、`examples/04-paragraph-opening.md`。
216
+ 通用情况判得准就不打开。判不准时只开 `examples/04-paragraph-cases.md`,按命中的信号读其中一节;`04-paragraph-opening.md` 留到下一次激活。
@@ -233,4 +233,4 @@
233
233
 
234
234
  ## 正反例
235
235
 
236
- 通用情况判得准就不打开。判不准时打开 `examples/05-sentence-frame.md`、`examples/05-sentence-reference.md`、`examples/05-sentence-brevity.md`。
236
+ 通用情况判得准就不打开。判不准时只开 `examples/05-sentence-frame.md`,按命中的信号读其中一节;另外两份 05 案例留到下一次激活。
@@ -59,7 +59,7 @@
59
59
 
60
60
  ### 润色流程:沿着步骤走
61
61
 
62
- 润色任务沿 `SKILL.md` 的写作步骤执行,从定任务走到通过检查,跳步视为未完成;判定标准见 `steps/06-wording.md`。书根 `README.md` 与 `README.en.md` 是仓库说明页,按 `SKILL.md` 的例外只走第 5–8 步,这个例外优先于本步的跳步判定。两种走法共用 1–9:**增量润色**保持最小改动,只改判为不合格的句子,不做风格重塑;**全章重构**按 `SKILL.md`「两种走法」走——章级(1–2)先定删留不动句子,节级(3–4)只拆块和段,句级(5–7)逐句拆开再写回去,该层全部重组,不走最小改动。执行时遵守定段落节的既有判定:分句骨架在定句子判为不合格,不在定段落里顺手改句子。
62
+ 润色任务沿 `SKILL.md` 的路由执行:增量任务只走与改动对应的步骤;新章、新阶段或用户明确要求全章重构才从定任务走到通过检查。判定标准见 `steps/06-wording.md`。书根 `README.md` 与 `README.en.md` 是仓库说明页,按 `SKILL.md` 的例外只走第 5–8 步,这个例外优先于本步的跳步判定。两种走法共用 1–9:**增量润色**保持最小改动,只改判为不合格的句子,不做风格重塑;**全章重构**按 `SKILL.md`「两种走法」走——章级(1–2)先定删留不动句子,节级(3–4)只拆块和段,句级(5–7)逐句拆开再写回去,该层全部重组,不走最小改动。执行时遵守定段落节的既有判定:分句骨架在定句子判为不合格,不在定段落里顺手改句子。
63
63
 
64
64
  **先切模块,再套规则。** 任何一步动笔前先把文本切成单位,围栏、YAML 与链接 URL 跳过(脚本按同一口径统计,计数见 `verifying-content.py` 输出):
65
65
 
@@ -73,13 +73,14 @@
73
73
 
74
74
  「一次对话」不与这些单位并列成切分单位:脚本切得出标题、空行、句号、列表和表格,切不出「一次说话」。它只留在 `steps/05-sentences.md`「一次对话」的判定里——定段落先问这段有几件内容,再决定删、拆或切成几次说话;定句子才改措辞。
75
75
 
76
- 1. **普查建账**:`git ls-files` 按扩展名分类,列出全部含中文自然语言的文件(跳过机器生成物与二进制)。台账写 `temp/`(不入库),逐文件记「审读状态/修改数/备注」;任务结束前每行落到「已审」,无问题也记「未发现」。覆盖率由 `verifying-content.py` 的「中文体检」项背书:台账文件总数与脚本输出的载体组计数对不上即为漏审。
77
- 2. **沿步骤逐篇走**:从定任务到通过检查,每步只改该步判为不合格的句子;后一步发现前一步没做完,退回那一步,不在当前步补结构。某句只在定用词失败,就不重写它的结构;某段在定句子失败,先改骨架,再让定用词看一遍。已合格的句子不重润。
76
+ 1. **确定范围**:用户点名的文件,或本轮已改动的文件;项目提供作用域命令时先跑它,只读它列出的文件。全库中文普查只在用户明确要求审完全部中文文件时做,它自己就是那个 goal 的结束条件,不嵌进单章润色。
77
+ 2. **沿步骤走本次文件**:每个文件只走它对应的步骤,每步只改该步判为不合格的句子;后一步发现前一步没做完,退回那一步一次,不在当前步补结构。某句只在定用词失败,就不重写它的结构;某段在定句子失败,先改骨架,再让定用词看一遍。已合格的句子不重润。
78
78
  3. **改写**:最小改动,只改判为不合格的句子,不做风格重塑。改写不破检查:qmd 导语 token 与句数、段落篇幅、禁用词由 `verifying-content.py` 把关;中文文件保持 UTF-8 无 BOM、LF。代码围栏逐字摘自源文件,本步骤不改围栏;同源复制文件改一处同步其余并 diff 比对。改动触及知识库案例引用句时先 grep 案例文件再同步。
79
- 4. **验收同步**:按改动域跑校验(qmd → `verifying-content.py` + `checking-links.py`;有项目技能时按它列出的命令,跨域收尾跑它的全量 profile)。检查次数与停手见 `steps/09-check.md`「完成判据」。
79
+ 4. **验收同步**:按改动域跑校验(qmd → `verifying-content.py` + `checking-links.py`;有项目技能时只跑它列出的那一条命令,不跑全量 profile)。检查次数与停手见 `steps/09-check.md`「完成判据」。
80
80
 
81
81
  ### 完成前核对
82
82
 
83
+ - [ ] 本轮范围只含用户点名或已改动的文件;没有默认全库台账。
83
84
  - [ ] 信号表逐行扫过,FAIL 清零;WARN 记台账不追清。
84
85
  - [ ] 章节骨架与 `steps/02-structure.md` 一致;引言形态守 `steps/02-structure.md`。
85
86
  - [ ] 与改前文本对照过:没有新增原文没有的事实、遗漏读者需要的信息,或把限定说成确定;判法见本文件「情况:对照改前文本」。
@@ -96,7 +97,7 @@
96
97
 
97
98
  ### 情况:现象落在更早的步骤
98
99
 
99
- 信号表说现象属于哪一步,就退回那一步改,不在第 8 步改写。一次只退一步,改完重新回读。
100
+ 信号表说现象属于哪一步,就退回那一步改,不在第 8 步改写。一次只退一步,改完重新回读;第二次仍失败就停在检查输出上。
100
101
 
101
102
  ### 情况:章级低频问题
102
103