From 025072000a802d723090dd58a475481ce47afa83 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 3 Sep 2026 21:12:05 +0000 Subject: [PATCH] docs(skills): the absence pin a deleting PR writes is tree-scoped MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The retirement playbook's deleting-PR checklist tells an author to write a negative pin, and said nothing about its SCOPE. A file-scoped one can only look where its author thought to look, and the whole failure mode is references the author did not know about — measured on a real removal: five surviving references across three packages, two triage cards, and two of the five written AFTER the deletion by a later PR, which only a pin that runs on every PR can catch. Four lines, inside the existing ratchet headroom (337 lines, ceiling 337). ⛔ No ceiling was raised and nothing was re-wrapped to buy room. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_012zGPuVVX3deAx9LdjK8jCk --- .claude/skills/spec-property-retirement/SKILL.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.claude/skills/spec-property-retirement/SKILL.md b/.claude/skills/spec-property-retirement/SKILL.md index c797e6146b..11bd67fbb0 100644 --- a/.claude/skills/spec-property-retirement/SKILL.md +++ b/.claude/skills/spec-property-retirement/SKILL.md @@ -271,6 +271,10 @@ conversion 是消费者跟的。两个都要写。 (``.toThrow(/.*removed.*use ``/s)`` —— `s` 标志是 house style,因为消息跨行),一条阳性,对非 strict 剥除路径断言 `not.toHaveProperty(key)`。参考 `packages/spec/src/ai/agent.test.ts:69-95`。 + ⭐ **缺席 pin 一律 tree-scoped,永不 file-scoped**:file-scoped 只看得见作者想得 + 到的那个文件,漏网的恰是他不知道的引用(实测五处、三个包、两张卡,其中两处还 + 是删除**之后**新写的)。排除 `**/CHANGELOG.md`、`.changeset/` 与 pin 自身,理由 + 写在旁边,⛔ 不建允许清单文件;⛔ 缺席断言不是陈旧提及,「修好它」即删掉守卫。 - [ ] **Examples** —— `examples/app-showcase/**` 必须停止编写该键。墓碑路线上 `tsc` 替你找齐。 - [ ] **已发布 skills** —— 教这个键的 `skills/*/SKILL.md`(表格、`defineX` 示例)