Filed out-of-scope from the #7251 skills-optimization flight. Unassigned.
What happened
scripts/check-skills-paths.mjs declares SCAN_ROOT = 'skills'. #7251 moved the two contributor-only files out of the published bundle into a repo-internal skill:
skills/objectui/guides/console-development.md → .claude/skills/objectui-contributor/guides/console-development.mdskills/objectui/rules/no-touch-zones.md → .claude/skills/objectui-contributor/rules/no-touch-zones.md
Both still state in-repo path coordinates in backtick code spans, which is exactly what this gate exists to check. .claude/skills is not under SCAN_ROOT, so they are no longer checked by anything.
Measured, at 4704aa4 before the flight and after it
| before | after |
|---|
| files scanned | 18 | 16 |
| stated paths checked | 93 | 27 |
in console-development.md | 49 | — (moved, unscanned) |
in no-touch-zones.md | 6 | — (moved, unscanned) |
55 of 93 assertions, 59%, left the gate's surface in one commit. Both files stayed green the whole time; nothing turned red, because the gate simply stopped looking.
Why this matters more than the raw count
The gate was built for this file. Its own docblock says so: the cost was paid twice before it existed — #3713 / PR #3729 and #3730 / PR #3734, the latter 13 real symbols given at coordinates that did not exist — both in console-development.md, both found by eye while reading. The docblock also names why the class recurs by construction: the app-shell extraction commits moved code with nothing anywhere to say the guides had gone stale.
That file is still 49 coordinates deep, still describes a tree that moves, and is now unguarded.
The change
Make SCAN_ROOT a list and add .claude/skills. The script's own header is explicit that this kind of widening is a decision with a measurement attached, not a rider on someone else's change:
Widen it on purpose, with the measurement re-run, not as a rider.
so it wants its own change, with a before/after count and whatever red the new surface brings cleared in the same PR. Note .claude/skills/verify/SKILL.md also states paths and would come under the gate at the same time.
What #7251 did instead, and what it left
It could not do this widening inside its own file surface, so it did the honest minimum and recorded the gap:
scripts/skills-path-baseline.json's single entry was keyed to the moved guide; the gate demanded its deletion in its own words (1 baseline entry the scan never met ... Delete the entry), and it was deleted. The map is now empty.scripts/__tests__/check-skills-paths.test.ts's checked floor dropped from > 50 to > 20, with the reason and this follow-up recorded in the comment beside it.- The
objectui#3713 / #3730 pin block can no longer assert result.missing on that guide, since scan(repoRoot) does not see it. It now pins that the file still exists, is still dense in stated paths (> 40), and is not covered by the gate — that last assertion is written to be deleted the day SCAN_ROOT widens.
So the work here is: widen the root, clear whatever red appears, then restore those pins to their real form.
Filed out-of-scope from the #7251 skills-optimization flight. Unassigned.
What happened
scripts/check-skills-paths.mjsdeclaresSCAN_ROOT = 'skills'. #7251 moved the two contributor-only files out of the published bundle into a repo-internal skill:skills/objectui/guides/console-development.md→.claude/skills/objectui-contributor/guides/console-development.mdskills/objectui/rules/no-touch-zones.md→.claude/skills/objectui-contributor/rules/no-touch-zones.mdBoth still state in-repo path coordinates in backtick code spans, which is exactly what this gate exists to check.
.claude/skillsis not underSCAN_ROOT, so they are no longer checked by anything.Measured, at
4704aa4before the flight and after itconsole-development.mdno-touch-zones.md55 of 93 assertions, 59%, left the gate's surface in one commit. Both files stayed green the whole time; nothing turned red, because the gate simply stopped looking.
Why this matters more than the raw count
The gate was built for this file. Its own docblock says so: the cost was paid twice before it existed — #3713 / PR #3729 and #3730 / PR #3734, the latter 13 real symbols given at coordinates that did not exist — both in
console-development.md, both found by eye while reading. The docblock also names why the class recurs by construction: the app-shell extraction commits moved code with nothing anywhere to say the guides had gone stale.That file is still 49 coordinates deep, still describes a tree that moves, and is now unguarded.
The change
Make
SCAN_ROOTa list and add.claude/skills. The script's own header is explicit that this kind of widening is a decision with a measurement attached, not a rider on someone else's change:so it wants its own change, with a before/after count and whatever red the new surface brings cleared in the same PR. Note
.claude/skills/verify/SKILL.mdalso states paths and would come under the gate at the same time.What #7251 did instead, and what it left
It could not do this widening inside its own file surface, so it did the honest minimum and recorded the gap:
scripts/skills-path-baseline.json's single entry was keyed to the moved guide; the gate demanded its deletion in its own words (1 baseline entry the scan never met ... Delete the entry), and it was deleted. The map is now empty.scripts/__tests__/check-skills-paths.test.ts'scheckedfloor dropped from> 50to> 20, with the reason and this follow-up recorded in the comment beside it.objectui#3713 / #3730pin block can no longer assertresult.missingon that guide, sincescan(repoRoot)does not see it. It now pins that the file still exists, is still dense in stated paths (> 40), and is not covered by the gate — that last assertion is written to be deleted the daySCAN_ROOTwidens.So the work here is: widen the root, clear whatever red appears, then restore those pins to their real form.