[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:9export const OpportunityStageHook: Hook = {,examples/app-todo/src/objects/task.hook.ts:50const 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

    , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
     blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
    }
    } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
    })();
    (function(){
    try {
    var __m = "github.com";
    var __re = new RegExp('^' + "github\\.com" + '
    
    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:9export const OpportunityStageHook: Hook = {,examples/app-todo/src/objects/task.hook.ts:50const 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

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
      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:9export const OpportunityStageHook: Hook = {,examples/app-todo/src/objects/task.hook.ts:50const 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

        , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
        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:9export const OpportunityStageHook: Hook = {,examples/app-todo/src/objects/task.hook.ts:50const 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

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
          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:9export const OpportunityStageHook: Hook = {,examples/app-todo/src/objects/task.hook.ts:50const 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

            , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
            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:9export const OpportunityStageHook: Hook = {,examples/app-todo/src/objects/task.hook.ts:50const 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

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              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:9export const OpportunityStageHook: Hook = {,examples/app-todo/src/objects/task.hook.ts:50const 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

                , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                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:9export const OpportunityStageHook: Hook = {,examples/app-todo/src/objects/task.hook.ts:50const 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