Conversation
GUIDE.md defines what every card MUST do and style-library/SKILL.md warns the catalog holds 'draft resources, not a promise that every card has passed rendered QA'. Nothing checked the contract itself, so a card that cannot mount, or whose default copy overflows its own declared slot, surfaces only at render. Checks root attributes, exactly one timeline keyed to the composition id, slots declared both ways, default copy against its own maxChars, determinism, tier background discipline, standalone GSAP loading, and token use. Run against the shipped library it reports 21 failures (detail in the PR body). Those are left for you to judge - raising a cap and shortening copy are different calls, and seeding a particle field changes its look. Two are fixed here because they are unambiguous and both live in _blueprint, so every scaffolded style inherits them: - cards used gsap without loading it, so they could not render standalone - the tier2 card hardcoded rgba(0,0,0,0.55) instead of a token After both, a freshly scaffolded style passes clean. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds
npm run check:cards, a mechanical gate for the card contract instyle-library/GUIDE.md.style-library/SKILL.mdalready warns that the catalog holds "draft resources, not a promise that every card has passed rendered QA". Nothing checked the contract itself, so a card that Agent 3 cannot mount — or whose own default copy overflows the slot limit it declares — only surfaces at render time.It checks: root attributes, exactly one timeline keyed to the composition id, slots declared in both directions, default copy against its own
maxChars, determinism, tier background discipline, standalone GSAP loading, and token use.What it found in the shipped library — 21 failures across 406 cards
15 × slot-overflow. A card's own default copy exceeds the
maxCharsitsstyle.jsonentry declares, so Agent 3 is told a limit the card already breaks:01-vox-explainer/.../t2-lb-definition.htmldetail01-vox-explainer/.../t2-lb-spotlight.htmldetail01-vox-explainer/.../t1-stat-footnote.htmlfootnote01-vox-explainer/.../t2-lb-pullquote.htmlterm01-vox-explainer/.../t1-overview-grid6.htmlg1(ten more, all in
01-vox-explainer)3 × undeclared slot. Present in the HTML, absent from
style.json, so they can never be filled:t1-stat-trend.html→sign-wedget1-stat-tape.html→headline-displayt1-stat-spotlight.html→stat-blur3 × determinism. GUIDE requires cards be deterministic — no
Date.now(), no unseededMath.random():02-kallaway/.../t1-section-drift-grid.html—Math.random()02-kallaway/.../t1-section-particles.html—Math.random()02-kallaway/.../t2-lt-clockname.html—Date.now()These 21 are reported, not fixed. Raising a declared cap and shortening the default copy are different calls, and seeding a particle field changes how it looks — those are yours to make.
What this PR does fix
Two defects that are unambiguous and both live in
_blueprint, so every scaffolded style inherits them:gsapwithout loading it. Every shipped card in01/02pullsgsap@3.14.2from jsDelivr; the blueprint omits it, so a card scaffolded from it cannot preview or render standalone — which is exactly what GUIDE says a card must be able to do.rgba(0, 0, 0, 0.55)instead of a token, against its own "never hardcode" rule. Added--scrimto the blueprint tokens; output is identical.After both, a freshly scaffolded style passes
check:cardswith 0 failures and 0 warnings.Known limits
hardcodedwarning is noisy on the existing styles (510 hits, mostly literalrgbainside gradients). It is a warning, never a failure — the signal is in the failures.data-slotin JavaScript at runtime (14 instances) are reported as unverifiable warnings rather than failures, since a static scan cannot see them.docs/SHORT-FORM.mdalready says validators "do not prove a compelling hook, factual claims, rights to footage, correct visual cropping, or audible sync" — that still stands, and the script says so on every run.No new dependencies.
npm run checkandnpm testboth still pass.