yuanfang-design
Shared design library providing:
- base.css — 30+ token CSS variables (colors, fonts, sizes, space, radius, shadow, decor, feature flags)
- themes/ — 12 theme overrides, each as a single CSS file using
[data-theme="..."]selectors - layout-types/ — Reusable HTML blocks (cover.html, future bullets/kpi-grid/etc.)
- showcase/ — Visual QA tool: 12 themes × 6 platforms = 72 iframes in a grid
- references/authoring-guide.md — Rules for adding new themes/layout-types
When to use
Use this skill when:
- The user wants to add a new visual style → create a new theme file
- The user wants to add a new layout type (e.g., bullets, kpi-grid) → create new HTML block
- The user wants to view all themes/layouts at once → open the showcase
- The user wants to understand the design system → read authoring-guide.md
Structure
yuanfang-design/
├── base.css # All token defaults (no literals in .cover rules)
├── themes/<name>.css # Each theme = token override set
├── layout-types/<name>.html
├── animations.css # Shared animation library (placeholder for now)
├── references/authoring-guide.md
└── showcase/cover-showcase.html
How themes work
A theme is a single CSS file that overrides base.css tokens:
[data-theme="dark-gold"] {
--bg: #1A1A2E;
--text: #F5E6D3;
--accent: #E2B714;
/* ... */
}
The cover.html layout-type references tokens only. Swapping the theme = reskinning the entire layout.
How to add a new theme
- Copy
themes/_template.csstothemes/<name>.css - Override tokens for: colors, fonts, sizes, decor, feature flags
- Test:
npm run render -- --theme <name> --layout cover --platforms xiaohongshu-v - Update showcase/cover-showcase.html to include the new theme
How to add a new layout-type
- Create
layout-types/<name>.htmlwith{{}}placeholders for content - Add corresponding
.layout-<name>rules to base.css (or new file) - Test:
npm run render -- --theme minimal-white --layout <name> --platforms all - Add to showcase