Skip to content

test(skills): pin the catalog exemption as a capability and lint the templates list - #3838

Merged
miguel-heygen merged 1 commit into
mainfrom
test/skill-exemption-capability
Sep 10, 2026
Merged

test(skills): pin the catalog exemption as a capability and lint the templates list#3838
miguel-heygen merged 1 commit into
mainfrom
test/skill-exemption-capability

Conversation

@miguel-heygen

Copy link
Copy Markdown
Collaborator

Why

Two follow-ups from the review of #3829.

  1. The two skills exempt from the catalog search (embedded-captions, talking-head-recut) were pinned only by the sentence that declares the exemption. The exemption is a capability claim, so the moment either skill gains a way to install a registry item, the sentence would be wrong and nothing would fail.
  2. The templates list in the CLI scaffold reference says it is lint-checked, but the file lacked the marker that arms the registry-snapshot lint, so a misspelt template name passed. That is the drift class the lint exists to catch.

What changed

  • The content test now also asserts that no file in either exempt skill contains an install command or a registry path. data-composition-src is deliberately not the signal: talking-head-recut mounts its own chapters with it, which is not a registry item.
  • The scaffold reference carries the registry-items marker, with its size presets and skill names allowlisted as legitimate non-items.
  • Skills manifest regenerated for the doc change.

Verification

  • Content test: 13 passed. Appending hyperframes add caption-glitch-rgb to an exempt skill's catalog doc fails the test.
  • Skill lint: 32 files and 7 snapshots checked against 408 registry items, no issues. Misspelling nyt-graph as nyt-graphs in the templates list fails the lint.
  • Manifest in sync, mirror unchanged.

…templates list

The two skills exempt from the catalog search were pinned only by the
sentence that declares the exemption, so the exemption would go stale the
day either gained a way to install a registry item. The test now also
asserts neither skill contains an install command or a registry path.

The templates list in the scaffold reference claimed to be lint-checked
but lacked the marker that arms the check, so a misspelt template would
have passed. It now carries the marker with its presets and skill names
allowlisted, and a misspelt template fails the lint.
@miguel-heygen
miguel-heygen enabled auto-merge (squash) September 10, 2026 03:37

@terencecho terencecho left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVE at 3b7dc6b8abb38966ca74e12105b5c5f71e871540. Test + docs follow-up that turns both #3829 follow-up notes into enforceable tripwires.

Author + head. Sole commit by miguel-heygen. 3 files, +20/-7. mergeStateStatus=BLOCKED (missing approval), mergeable=MERGEABLE.

1. Exemption inverse-invariant test (coreSkillContent.test.ts:190-207).
New helper skillTextFiles(dir) recursively enumerates every .md|.mjs|.cjs|.js|.ts|.json|.html file in a skill directory. For each of the two exempt skills (embedded-captions, talking-head-recut) the test iterates every text file and asserts:

expect(readFileSync(file, "utf8")).not.toMatch(/hyperframes add\b|registry\/(blocks|components)\//);

A planted hyperframes add or a registry/blocks/… / registry/components/… path in either exempt skill's directory now fails the test with the offending file cited. Turns the FU-2 capability claim into a load-bearing invariant.

Deliberate omission — data-composition-src is NOT in the ban regex. Miguel's comment explains: talking-head-recut mounts its own chapters with it (card-timeline chunking, not registry mount), so banning it would false-positive. Ban regex is precise, not over-broad.

The \b after add correctly ensures hyperframes address / hyperframes added don't match. The alternation with registry/(blocks|components)/ catches direct path references to registry-item paths.

2. Init-and-scaffold.md lint marker (skills/hyperframes-cli/references/init-and-scaffold.md:3).
Adds <!-- registry-items: allow=blank,landscape-4k,portrait-4k,square-4k,product-launch-video,hyperframes-core,media-use --> — covers the file's Templates list. blank (CLI-hardcoded, not a registry item) explicitly allowlisted alongside the four *-4k presets and three registry examples. A misspelt template in the file now fails the lint with file+line+id per Miguel's tripwire proof on #3829. Closes the exact doc/lint asymmetry I flagged (self-claim of "checked by lint" without the marker).

3. skills-manifest.json. Hash regenerated to match the init-and-scaffold.md change. Mechanical.

Scope. Docs + tests only. No engine/runtime/studio touch. No test removals.

Reviews at head. Empty.

CI. BLOCKED reflects the missing approval; check green-state expected to match #3829's shape (skills lane, no runtime touch).

— tai

@miguel-heygen
miguel-heygen merged commit 622ea5b into main Sep 10, 2026
50 checks passed
@miguel-heygen
miguel-heygen deleted the test/skill-exemption-capability branch September 10, 2026 03:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants