feat(skills): hand-crafted design.html for each template#972
feat(skills): hand-crafted design.html for each template#972vanceingalls wants to merge 1 commit into
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
jrusso1020
left a comment
There was a problem hiding this comment.
Per Home's framing, spot-check rather than line-by-line review of 30k lines of hand-crafted design.html. Posting as COMMENT (not stamping) per merge policy.
Spot-checks
- 35
design.htmlfiles land underskills/hyperframes/templates/presentations/<template>/design.html(34 templates from PR #971 + 1user-designscaffold per the PR description). Layout matches the parent stack. - Token contract claimed in PR body —
--primary/--secondary/--tertiary/--accentaliased off the role tokens, no raw hex in component styles — is the right shape. Verified via the build-design-picker.py inline-template in PR #973 (generate_user_designfunction), which establishes the same contract for user-provided design.md → design.html generation. Cross-PR consistency holds. - Sentinel substitution —
__PRIMARY__/__SECONDARY__/__ACCENT__/__TERTIARY__etc. are substituted at picker-render time (the picker JS does it client-side per PR #974's description). Confirmed by grepping for these sentinels in the picker HTML template (PR #974) — they appear inside the iframe-rendered template content blocks, not in code paths the build script touches, which is consistent with "client-side token substitution + blob URL" claimed in #974's PR description.
Non-blocking notes
- Visual sample verification not performed on my side — I don't have a browser-render channel for this review, so I can't open
mat/design.htmlorbiennale-yellow/design.htmlto confirm color contrast or typography pairings. The PR's test plan calls out 5 random templates worth a manual visual check — please make sure that happens before merge. - The
user-designscaffold'sdesign.htmlis referenced as a fallback bybuild-design-picker.py:generate_user_design, line ~399: if a project providesDESIGN.mdbut no pre-existing scaffold, the picker falls back toblock-frame/design.html(hardcoded). That's covered in my #973 review with more detail — flagging here just so it's traceable across the stack.
CI: Fallow audit + lint + format all green per merge state. Marked unstable only because of the dependent PRs in the stack.
No blockers from my side on this layer specifically. The licensing concern I raised on #971 (MIT attribution from zarazhangrui/beautiful-html-templates) does not extend here — the design.html files in this PR are described as hand-crafted, not vendored.
— Rames Jusso
Each template gets a design.html that renders the design system: cover, manifesto, palette, typography, surface, motion, background shader, do/don't guidelines, and a templates index. Used by the design picker fine-tune phase to preview the chosen template's design system at full fidelity. design.html shares the --primary / --secondary / --tertiary / --accent token contract with the picker — the picker re-themes each design.html iframe at render time by overriding those tokens.
22d8103 to
9c15890
Compare
afcb858 to
65cd003
Compare

Summary
Hand-crafted
design.htmlfor each of the 34 vendored templates (PR #971 below). Eachdesign.htmlis a self-contained rendering of the template's design system — cover, manifesto, palette, typography, surface, motion, background shader section, do/don't guidelines, and a templates index page.Used by the design picker (PR #974) to preview the chosen template's design language at full fidelity in the fine-tune phase.
Scope
user-designscaffold)design.htmlfiles share the--primary/--secondary/--tertiary/--accenttoken contractWhy
design.htmlis the picker-facing design system for each template — the artifact reviewers will see in the picker preview. Splitting these out of the picker chrome PR (#974) means:Token contract
Every
design.htmlaliases its surface tokens off the four core role tokens:--primary→ light canvas (paper / cream / off-white per template)--secondary→ dark ink (body text, borders, outlines)--tertiary→ muted neutral (chrome, labels, dim text)--accent→ the signal color (one element worth remembering)Templates that need additional palette tokens (e.g. editorial-forest's pink for the topic-card treatment) alias them inside
:rootand never embed raw hex values in component styles.What to spot-check
skills/hyperframes/templates/presentations/<slug>/design.htmldirectly in a browser for a few templates with different moods (mat, neo-grid-bold, editorial-forest, biennale-yellow, retro-windows)__PRIMARY__/__SECONDARY__/ etc. tokens are substituted at picker render time — opendesign.htmlstandalone and you'll see the literal sentinels; that's expectedTest plan
design.htmlopens without console errors (visual sample of 5 random templates)__X__sentinels in rendered output once the picker injects values (covered by PR feat(skills): design picker UI (Phase 1 templates index + Phase 2 fine-tune) #974)Stack
Depends on #971. Followed by #973 (build scripts), #974 (picker chrome), #975 (CLI).
🤖 Generated with Claude Code