You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Skills optimization flight — the four small internal skills (+ objectui verify): seven dead references, three rules copied from os-dev.md / SWEEP.md / RUNNER.md, the live-elsewhere gap (#14058), and a versioned Chromium path that breaks on the next image bump #14317
Member card of the skills catalog optimization program #14292 (maintainer mandate 2026-09-02, verbatim: 「审核所有的 skills,进行全面的优化。」). Filed by the skills lane seat (session session_01LraLgQVGq8egUwfYZpbYt1). Read-only audit at objectstack origin/maina59f78d (.claude/skills/** and scripts/pm/** byte-identical at d63c8a2) and objectui 67dadd6. The auditor's harness refused to write a findings file; the findings are recorded here (the dev posts the seat's full audit message as the audit-record comment at claim time — provided in the dispatch brief). Family dispatch: this card also closes #14058 (the live-elsewhere verdict gap in spec-property-retirement) — same file, same fix (SPR-C-05); #14058 keeps its own claim comment pointing at this branch.
Verdicts
skill
ceiling (lines)
verdict
reducible
checklist-author
62
RESTRUCTURE
~15 of 44 body lines are a second copy of SWEEP.md
checklist-test
238
TRIM
~15 lines
dogfood-verification
157
DIET
~25 lines
spec-property-retirement
337
DIET
~35 lines + 4 dead refs + 1 blocking gap
objectui .claude/skills/verify
(unpriced, unguarded)
HEALTHY
one fix
None is a retirement candidate. All four objectstack skills carry metadata.internal: true (enforced by packages/create-objectstack/src/template-consistency.test.ts:601). Usage cadence is not measurable on a shallow clone (dimension E recorded NOT MEASURED).
Findings (id · span · fix)
SPR-C-01spec-property-retirement:329-332 — "check-generated runs behind a paths filter in ci.yml; add the path in the same PR": that job and filter were deleted (lint.yml:3949,4078 "gone (ci.yml 的 generated paths filter 是门输入集合的手工副本、无人对账——三次漂移在案,收编剩余 4 个门后应整个删除 #4291)"; ci.yml has no paths:); AGENTS.md:724-726 states the current truth. DELETE −4.
DOG-C-01dogfood:66-83 (18 lines) — the ablation predict-then-mutate rule duplicates .claude/agents/os-dev.md:274-283 (same criterion, same KNOWN_UNALIASED_TEST_IMPORTS ledger, same two incidents); both texts say the rule is not dogfood's. MERGE-INTO os-dev.md (pointer, 2 lines). −16.
CLA-C-01checklist-author:33-51 — opens 「本技能…不是流程的第二份拷贝」 then restates SWEEP.md:48-68 steps 2–6 one-for-one + SWEEP's angle table. REWRITE to the 3 clauses SWEEP lacks + pointer. −13.
SPR-D-01spec-property-retirement:316-337 — 4 of 7 traps duplicate a binding anchor (stale-dist = AGENTS.md:764-767; | tail -1 = os-dev.md:140-141; sequential masking = AGENTS.md:725-729 and the skill's own :28-31; --check vs bare = AGENTS.md:754-758). Keep the two unique ones. −10.
CLT-B-01checklist-test:78-87 — 「解析器给出的 automated.ref」 is false: scripts/checklist-select.mjs:180 projects {id,priority,surface,since,revision}; the field lives only in areas/*.json, so the Tier-1 batching step is unexecutable as written. Fix the step to read the field from the area file.
SPR-C-04spec-property-retirement:300-311 — a hand-rolled 10-name check:* loop is the "match by hand" AGENTS.md:742-750 forbids; the skill cites AGENTS.md at :255. REWRITE to check:generated + only the pure audits. −8.
VFY-C-01 objectui verify:26-29 — prescribes /opt/pw-browsers/chromium-1194/chrome-linux/chrome; both siblings prescribe the alias /opt/pw-browsers/chromium and warn against exactly this spelling (RUNNER.md:151-160; os-dev.md:142-143). Fix (objectui PR).
DOG-F-01dogfood:31-43 — RUNNER.md:186-208 names dogfood §0 as the origin of the -p <port>-alone trap (self-pinging connectors dial 3000 via SHOWCASE_SELF_URL→OS_PORT→PORT); grep OS_PORT over dogfood → 0. ADD 2 lines, paid by DOG-C-01.
CLT-C-01checklist-test:96-97 — 「派发 runner 子代理时,必须用 opus」 is a memory-sourced blanket tier; pm-dispatch requires 「档位引当次 node scripts/pm/dispatch-gates.mjs --tier 输出,⛔ 不凭记忆」. Rewrite to the --tier rule.
CLA-C-02checklist-author:46-49 — 「六条 waiver 有四条已过期」 is the oldest of three disagreeing numbers; SWEEP.md:76-86 says 6 of 6 retired and check-platform-checklist.mjs reports "0 waived". Fix.
SPR-C-03:313-314 lists 3 of the 5 no-generator audits AGENTS.md:765-770 names · SPR-C-06:145 「~28 个墓碑」 vs 178 retiredKey( sites and a pin floor of 50 · SPR-F-01 §4's changeset row omits the ADR-0087 disposition marker AGENTS.md:1122-1131 requires (pnpm check:adr-0087-registration enforces) · CLT-C-02/C-03:229-235, :102-105 re-copy RUNNER rules 1–2 despite :24-25 disclaiming a second copy (and :230 claims a precedence RUNNER.md:67 denies) · X-02 the no-subagent degradation clause is stated twice near-verbatim (checklist-author:58-62 / checklist-test:98-101, both from skills(pm): give sweep disjunct ① the drain clauses the finding box already has #14152 — keep ONE, note the maintainer provenance in the PR).
Dead references (positive-controlled): SPR:103 scripts/liveness/orphans.mts → packages/spec/scripts/liveness/orphans.mts · SPR:261 packages/cli/src/utils/lint-liveness-properties.ts → packages/lint/src/lint-liveness-properties.ts · SPR:282 .changeset/tool-inert-keys-removed.md → consumed at release; cite a live *-retired.md carrying "The retirement kit:" · SPR:329-332 (above) · CLA:42 README's "deep-test 契约" → README.md:42 ## Item anatomy · CLT:78-87 (above). Incidental (non-skill, report only): SWEEP.md:68 "land the run record under runs/" vs runs/.gitignore = *; .claude/launch.json:18-33pr3505-attach-3477 points at a worktree that does not exist.
X-01 (structural, decide in-flight by pointer): environment facts are split between checklist-test:27-29→dogfood and RUNNER.md:94-260 (7 facts dogfood lacks, incl. OS_PORT; one stated more fully). Rule: RUNNER.md is the environment anchor; dogfood §0 points at it and carries only what RUNNER does not; ⛔ no second copy.
Flight scope
IMPLEMENT: every item above, as TWO PRs — objectstack (.claude/skills/{checklist-author,checklist-test,dogfood-verification,spec-property-retirement}/SKILL.md, shrink-only under the line ratchet; ⛔ do not touch scripts/pm/check-skill-line-ratchet.mjs — it is held by PR #14236; headroom that appears is re-locked in the corpus audit's Phase 3) and objectui (.claude/skills/verify/SKILL.md, one path fix). Fixes #<this card> and Fixes #14058 both on the objectstack PR.
DEFER / report-only: the two incidental non-skill items (file as out-of-scope cards if not already carded); X-02's maintainer provenance (#14152) is noted, not re-litigated.
Flight constraints (binding)
Draft PRs, governed (.claude/** in both repos) ⇒ stay draft; review requests are the seat's step; skip-changeset in objectstack (docs-only); objectui: empty-frontmatter changeset only if its rule asks, ⛔ never request a label.
Line ratchet: no ratcheted file may grow; additions paid by deletions in the same file; ⛔ re-wrap is not payment.
⛔ Do not edit os-dev.md, AGENTS.md, RUNNER.md, SWEEP.md — they are the anchors; a pointer replaces the copy.
Gates: pnpm check:pm-skill-ratchet, pnpm check:pm-skill-id-lint, pnpm check:skill-frame-sync, pnpm check:skill-frame-freshness, the packages/create-objectstack template-consistency test, plus node scripts/pm/dispatch-gates.mjs --commands <changed paths>; record the head sha.
PR body: per-item 落点 | before | after keyed by finding id; line delta per file; Clause-②: no.
Refs: #14292 · #14058 (folded) · #14232 (separate: unlocks at #12800's close) · #13597 (the pm-dispatch corpus — ⛔ not touched by this flight).
Member card of the skills catalog optimization program #14292 (maintainer mandate 2026-09-02, verbatim: 「审核所有的 skills,进行全面的优化。」). Filed by the skills lane seat (session
session_01LraLgQVGq8egUwfYZpbYt1). Read-only audit at objectstackorigin/maina59f78d (.claude/skills/**andscripts/pm/**byte-identical at d63c8a2) and objectui 67dadd6. The auditor's harness refused to write a findings file; the findings are recorded here (the dev posts the seat's full audit message as the audit-record comment at claim time — provided in the dispatch brief). Family dispatch: this card also closes #14058 (thelive-elsewhereverdict gap inspec-property-retirement) — same file, same fix (SPR-C-05); #14058 keeps its own claim comment pointing at this branch.Verdicts
checklist-authorSWEEP.mdchecklist-testdogfood-verificationspec-property-retirement.claude/skills/verifyNone is a retirement candidate. All four objectstack skills carry
metadata.internal: true(enforced bypackages/create-objectstack/src/template-consistency.test.ts:601). Usage cadence is not measurable on a shallow clone (dimension E recorded NOT MEASURED).Findings (id · span · fix)
spec-property-retirement:329-332— "check-generatedruns behind apathsfilter inci.yml; add the path in the same PR": that job and filter were deleted (lint.yml:3949,4078"gone (ci.yml 的 generated paths filter 是门输入集合的手工副本、无人对账——三次漂移在案,收编剩余 4 个门后应整个删除 #4291)";ci.ymlhas nopaths:);AGENTS.md:724-726states the current truth. DELETE −4.dogfood:66-83(18 lines) — the ablation predict-then-mutate rule duplicates.claude/agents/os-dev.md:274-283(same criterion, sameKNOWN_UNALIASED_TEST_IMPORTSledger, same two incidents); both texts say the rule is not dogfood's. MERGE-INTO os-dev.md (pointer, 2 lines). −16.checklist-author:33-51— opens 「本技能…不是流程的第二份拷贝」 then restatesSWEEP.md:48-68steps 2–6 one-for-one + SWEEP's angle table. REWRITE to the 3 clauses SWEEP lacks + pointer. −13.spec-property-retirement:316-337— 4 of 7 traps duplicate a binding anchor (stale-dist=AGENTS.md:764-767;| tail -1=os-dev.md:140-141; sequential masking =AGENTS.md:725-729and the skill's own:28-31;--checkvs bare =AGENTS.md:754-758). Keep the two unique ones. −10.spec-property-retirementskill predates thelive-elsewhereverdict — its ledger-verdict discipline never names the never-remove cross-repo case #14058) — the ledger grew a fifth verdictlive-elsewhere(packages/spec/liveness/README.md:63-64,262-308; gatepackages/spec/scripts/liveness/elsewhere.test.ts; 1 live row of 703): the skill has zero hits for it; §0's four-question checklist and §1's 「dead 裁定是删除的输入」 predate it. ADD a fifth §0 checkbox naming the never-remove cross-repo case, paid by SPR-C-01 + SPR-C-04.checklist-test:78-87— 「解析器给出的automated.ref」 is false:scripts/checklist-select.mjs:180projects{id,priority,surface,since,revision}; the field lives only inareas/*.json, so the Tier-1 batching step is unexecutable as written. Fix the step to read the field from the area file.spec-property-retirement:81— the strict-delete route describes a hand-writtenz.core.$ZodErrorMap; superseded by [finding][spec] #6619's inventory of hand-written$ZodErrorMaps was two short —strictToolErrorandstrictCapabilitiesErrorsurvive the fold, still invisible toalias-integrity.test.ts#6805:shared/strict-object.ts:125-137,257-312guidance:template, audited byalias-integrity.test.ts. Rewrite to name both files.spec-property-retirement:300-311— a hand-rolled 10-namecheck:*loop is the "match by hand"AGENTS.md:742-750forbids; the skill cites AGENTS.md at:255. REWRITE tocheck:generated+ only the pure audits. −8.verify:26-29— prescribes/opt/pw-browsers/chromium-1194/chrome-linux/chrome; both siblings prescribe the alias/opt/pw-browsers/chromiumand warn against exactly this spelling (RUNNER.md:151-160;os-dev.md:142-143). Fix (objectui PR).dogfood:31-43—RUNNER.md:186-208names dogfood §0 as the origin of the-p <port>-alone trap (self-pinging connectors dial 3000 viaSHOWCASE_SELF_URL→OS_PORT→PORT);grep OS_PORTover dogfood → 0. ADD 2 lines, paid by DOG-C-01.checklist-test:96-97— 「派发 runner 子代理时,必须用opus」 is a memory-sourced blanket tier; pm-dispatch requires 「档位引当次node scripts/pm/dispatch-gates.mjs --tier输出,⛔ 不凭记忆」. Rewrite to the--tierrule.checklist-author:46-49— 「六条 waiver 有四条已过期」 is the oldest of three disagreeing numbers;SWEEP.md:76-86says 6 of 6 retired andcheck-platform-checklist.mjsreports "0 waived". Fix.:313-314lists 3 of the 5 no-generator auditsAGENTS.md:765-770names · SPR-C-06:145「~28 个墓碑」 vs 178retiredKey(sites and a pin floor of 50 · SPR-F-01 §4's changeset row omits the ADR-0087 disposition markerAGENTS.md:1122-1131requires (pnpm check:adr-0087-registrationenforces) · CLT-C-02/C-03:229-235,:102-105re-copy RUNNER rules 1–2 despite:24-25disclaiming a second copy (and:230claims a precedenceRUNNER.md:67denies) · X-02 the no-subagent degradation clause is stated twice near-verbatim (checklist-author:58-62/checklist-test:98-101, both from skills(pm): give sweep disjunct ① the drain clauses the finding box already has #14152 — keep ONE, note the maintainer provenance in the PR).SPR:103 scripts/liveness/orphans.mts→packages/spec/scripts/liveness/orphans.mts·SPR:261 packages/cli/src/utils/lint-liveness-properties.ts→packages/lint/src/lint-liveness-properties.ts·SPR:282 .changeset/tool-inert-keys-removed.md→ consumed at release; cite a live*-retired.mdcarrying "The retirement kit:" ·SPR:329-332(above) ·CLA:42README's "deep-test 契约" →README.md:42 ## Item anatomy·CLT:78-87(above). Incidental (non-skill, report only):SWEEP.md:68"land the run record underruns/" vsruns/.gitignore=*;.claude/launch.json:18-33pr3505-attach-3477points at a worktree that does not exist.checklist-test:27-29→dogfood andRUNNER.md:94-260(7 facts dogfood lacks, incl.OS_PORT; one stated more fully). Rule: RUNNER.md is the environment anchor; dogfood §0 points at it and carries only what RUNNER does not; ⛔ no second copy.Flight scope
IMPLEMENT: every item above, as TWO PRs — objectstack (
.claude/skills/{checklist-author,checklist-test,dogfood-verification,spec-property-retirement}/SKILL.md, shrink-only under the line ratchet; ⛔ do not touchscripts/pm/check-skill-line-ratchet.mjs— it is held by PR #14236; headroom that appears is re-locked in the corpus audit's Phase 3) and objectui (.claude/skills/verify/SKILL.md, one path fix).Fixes #<this card>andFixes #14058both on the objectstack PR.DEFER / report-only: the two incidental non-skill items (file as out-of-scope cards if not already carded); X-02's maintainer provenance (#14152) is noted, not re-litigated.
Flight constraints (binding)
.claude/**in both repos) ⇒ stay draft; review requests are the seat's step;skip-changesetin objectstack (docs-only); objectui: empty-frontmatter changeset only if its rule asks, ⛔ never request a label.os-dev.md,AGENTS.md,RUNNER.md,SWEEP.md— they are the anchors; a pointer replaces the copy.pnpm check:pm-skill-ratchet,pnpm check:pm-skill-id-lint,pnpm check:skill-frame-sync,pnpm check:skill-frame-freshness, thepackages/create-objectstacktemplate-consistency test, plusnode scripts/pm/dispatch-gates.mjs --commands <changed paths>; record the head sha.Clause-②: no.Refs: #14292 · #14058 (folded) · #14232 (separate: unlocks at #12800's close) · #13597 (the pm-dispatch corpus — ⛔ not touched by this flight).