Skip to content

[Decision] Skills optimization program — batch 3 (5 items): DATA-F-07 defineHook() vs the platform's own examples · #13597 Phase-2 — X0 quote policy · CLAUDE.md excerpt form · the four-copy decision frame · cross-file line-budget moves #14685

Description

@os-litant

Decision batch 3 of the skills catalog optimization program #14292 (maintainer mandate 2026-09-02, verbatim: 「审核所有的 skills,进行全面的优化。」). Filed by the skills lane seat (session session_01LraLgQVGq8egUwfYZpbYt1). Five items; a one-line reply (e.g. 1A 2C 3B 4B 5A) executes them. What waits on this: #14297 closes on item 1; #13597 Phase 2 (the internal-corpus cuts — #14445 · #14209 · #14133 and the platform-readings intake) starts on items 2–5. Nothing else in the programme waits: the remaining flights, the stub deletions and the seam card #14559 proceed.

Measured at objectstack origin/main (2026-09-02 ~18:2xZ) and the #13597 Phase-1 tables (Tables 1–6, pinned at a59f78d). No file was edited.


1. DATA-F-07 —— 已发布 data skill 教 defineHook(),平台自己的两个真实 hook 却用裸字面量:改文档,还是改示例?

一句话问题:skills/objectstack-data 在 14 处教 defineHook()(references/data-hooks.md:68「Author it with defineHook()」+ 7 个示例;第 1 轮已把重复陈述合为一处),packages/spec/src/data/hook.zod.ts:1016 导出它(导入期校验)。仓库里 packages/specpackages/cli 之外 0 个文件调用它;两个真实 hook 都是裸字面量 —— examples/app-crm/src/hooks/opportunity.hook.ts:9 export const OpportunityStageHook: Hook = {,examples/app-todo/src/objects/task.hook.ts:50 const taskHook: Hook = {。审计判「处方合理,但平台自己的示例与之矛盾 —— 该维护者定,不是文档编辑」。

选项 × 真实代价

  • A 处方保留;立一张 S 卡把两个示例迁到 defineHook()(2 文件,各包一层;归示例所在车道)。代价:一张卡、一次跨车道派发;skill 零改动。
  • B 删处方,改教裸字面量(与语料一致)。代价:放弃「导入期校验」这条平台能力在目录里的唯一教学点;data-hooks.md 净减约 20 tok。
  • C 两边都不动。代价:矛盾留在对外发布面上 —— 读 skill 的 agent 与读示例的 agent 学到两种写法。

业务含义:A = 客户的 agent 写 hook 时在 import 就被 schema 拒绝,不是在运行时;B = 客户的 agent 照示例写,错误延后到运行时;C = 看谁先被读到。

四维:① 长远合理性 —— defineHook() 是 spec 里活着的导出,处方指向平台已建的校验路径,把示例对齐是收敛不是增生;② 实际拉动 —— 真实 hook 文件 2 个 / 26 个对象文件,量小,但 hook 是写坏最难发现的元数据;③ 防 AI 犯错 —— 矛盾本身就是让 agent 猜的根源,A 消灭矛盾且不减校验;④ 不扩散 —— A 不加文档、只改 2 个示例文件;B 删;C 零成本零收益。

推荐 A;回退 B。置信缺口:defineHook() 是否是维护者认定的正典写法(两个示例可能早于它),本席不重裁。

裁后执行:A ⇒ 立示例迁移卡(未定级,归示例所在车道),#14297 记录后关卡;B ⇒ #14297 第三轮:删 data-hooks.md:68 处方、7 个示例改裸字面量,同文件付账;C ⇒ #14297 记录后直接关卡。


2. #13597 Phase-2 · X0 —— 内部语料逐字内联维护者裁决原话的政策

一句话问题:.claude/skills/pm-dispatch/**.claude/agents/os-dev.md 把维护者裁决原话逐字内联(Phase-1 各表逐文件计了 X0 行:os-dev.md 2 个引用块 / 4 行,CLAUDE.md 0,SKILL.md 与 lanes/* 以「日期 + 原话」散布数十处)。三种政策:

  • A 全部保留(现状)。代价:每次会话都装载裁决史;引用块是 DUP/DEM 之外最大的可削类别。
  • B 只留日期 + 指向裁决评论的指针。代价:原话离开指令面;引用本身就是操作性判据的地方(例如「re-wrap 不得用作筹行」)读者要跳出去才能判。
  • C 只在引用本身就是操作性判据处保留原话,其余改日期 + 指针(Table 1 推荐)。代价:逐处判「原话是否是判据」,Phase-2 每处砍点须写明归类。

四维:① 长远 —— 裁决的权威源是 GitHub 评论,指令面只需可判定的规则;② 拉动 —— 内部面,拉动是每轮 token;③ 防错 —— 判据处原话保留,agent 不会把裁决改述成别的规则;④ 不扩散 —— C 是最小改法。

推荐 C。置信缺口:「操作性判据」的边界由执行 dev 逐处判,ACCEPT 逐条核。


3. #13597 Phase-2 · CLAUDE.md 的摘录形态(86 行,天花板 86)

一句话问题:CLAUDE.md 是每个座位每次会话必被注入的唯一指令文件(本席实测:harness 注入 CLAUDE.md、不注入 AGENTS.md),其中 78 行是四条规则的手抄摘录(Table 4 行 C2–C5),两条已漂移:C4 :50 指向「AGENTS.md §9」而 §9 是「拉 main 后刷新构建状态」(refs/remotes 规则住无编号前言 :395–414);C5 :78「~18 merges … 一个工作日」是锚点没有的统计。

  • A 保留四条摘录,只修两处漂移(+ −2 DEM):86 → ~84。代价:最贵的 78 行照付;手抄摘录会再漂。
  • B 每块降为「⛔ 规则一句 + 钩子/逃生开关 + 指向 AGENTS.md 锚点」:约 30 行。代价:事故叙事离开 CLAUDE.md(仍在 AGENTS.md 锚点);章程句「四条规则内联,因为漏一条就毁别人工作」改写为「四条规则各一句内联」。
  • C 摘录改为机械镜像(像 check-published-list-mirrors 那样由门禁比对锚点):行数不变,漂移归零。代价:新门禁 + AGENTS.md 锚点段落须可切块。

四维:① 长远 —— B 或 C 都终结手抄漂移类;② 拉动 —— 每会话 ~50 行 × 全部座位;③ 防错 —— 规则句不动,agent 行为不变;④ 不扩散 —— B 删、C 加门禁。

推荐 B;回退 A(两处修正无论如何做)。置信缺口:CLAUDE.md 现形态是否维护者刻意为之(章程句 :1–6)。


4. #13597 Phase-2 · 决策框架四份副本(check:skill-frame-sync 锁定)

一句话问题:同一「四轴决策框架」在四处逐字同构:.claude/skills/pm-dispatch/SKILL.md(internal-pm)、.claude/agents/os-dev.md(internal-dev,Table 4 行 O56:DUP 13)、skills/objectstack-pm-dispatch/SKILL.md 两份(published-pm、published-dev;#14660 拆分时因门禁按路径钉住而留在入口)。门禁保证四份同构,也把 3 份重复锁成不可削。

  • A 保持四份(现状)。代价:内部 13 行 + 对外约 630 tok 的重复永久化;拆分后入口仍背 published-dev 块。
  • B 降为两份:internal-pm + published-pm;dev 侧改为占位/指针(rules/dev-template.md 已有 {decision_frame} 占位 —— 派发时由 PM 副本填入)。改 scripts/check-skill-frame-sync.mjsCOPIES(4 → 2)与 freshness 门禁的自检;反休眠指纹扫描继续禁止未申报副本。代价:一次门禁改动 + 自检更新;dev 读到的框架来自 PM 粘贴而非文件。
  • C 降为一份内部 + 一份对外,dev 副本改为「四轴名摘要」(不同构、门禁放行摘要)。代价:门禁要区分「摘要」与「副本」,新类别。

四维:① 长远 —— 框架单源,门禁看两处;② 拉动 —— pm-dispatch 入口再减约 630 tok(published-dev 块),os-dev.md −13 行;③ 防错 —— dev 拿到的是 PM 派发时粘贴的同一块,不会读到过期副本;④ 不扩散 —— B 删 2 份。

推荐 B。置信缺口:published-dev 块是否被 {decision_frame} 之外的读者依赖(本席扫描 skills/**.claude/** 未见)。


5. #13597 Phase-2 · 跨文件行预算搬运

一句话问题:行棘轮按文件、只降不升。Table 3 测出 platform-readings.md 应收编 3 条误置的按仓门禁事实(lanes/cli.md:17–20lanes/services.md:21–22rest-channel.md:78–84,约 +10 行),而它自身 0–14% 可削、天花板无余量;lanes/* 的 DUP 砍点有余量。现规则下这 +10 只能由维护者逐次裁提额。

  • A 允许同一 PR 内跨文件搬运:被搬入文件提额 ≤ 搬出文件同 PR 净减,语料总行数 ≤ 0,提额行注释引本裁决。代价:棘轮多一种合法提额路径(仍须 PR 正文列账)。
  • B 不允许;误置事实留在原处(或在原处砍掉)。代价:按仓事实继续散在 lanes,读者查两处。
  • C 逐次单独裁(现状)。代价:每次 +N 行都是一张决策卡。

四维:① 长远 —— 事实归其单源文件;② 拉动 —— 内部面;③ 防错 —— 单源即少一处过期副本;④ 不扩散 —— A 以「语料总行数不增」为闸,不是放松。

推荐 A。置信缺口:check:ratchet-remedy-authority 把「扩张性补救」标为 MAINTAINER-ONLY —— A 需在该门禁的自述里加一条「本裁决授权的跨文件搬运」例外,由 Phase-2 首个搬运 PR 携带。


Refs: #14292 (program anchor) · #14296 (batch 1, ruled 1A 2A 3A 4A) · #14568 (batch 2, ruled A) · #14297 (item 1) · #13597 (items 2–5; Tables 1–6) · #14660 (the split that left published-dev in the entry).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions