Skip to main content

esther-design-system

AI-driven personal brand design system that converts content into consistent, brand-aligned HTML pages with predefined colors, fonts, layouts, and components

跳到安装

来源信息

仓库
reason-machines/design-skills
最近来源活动
2026年6月16日 05:17
检测到的 SKILL.md 语言
英语
星标
4
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
esther-design-system
description
AI-driven personal brand design system that converts content into consistent, brand-aligned HTML pages with predefined colors, fonts, layouts, and components
triggers
["create a landing page using esther design system","generate a tutorial page with my brand style","build an app interface with esther components","design a xiaohongshu card using brand guidelines","convert this content into a branded HTML page","apply esther design system to this layout","make a page following brand DNA rules","use the personal IP design system"]
# Esther Design System > Skill by [ara.so](https://ara.so) — Design Skills collection. Esther Design System is a constraint-based design system for AI agents that transforms content into brand-consistent HTML pages. It enforces strict visual rules (colors, fonts, layouts, components) to ensure every AI-generated page looks cohesive and "not like generic AI output." ## What It Does - **Converts content → branded HTML pages** for 4 scenarios: tutorials, landing pages, apps, social media cards - **Constrains AI creativity** via predefined layouts, components, and strict brand rules - **Enforces quality** through a mandatory 7-step workflow + P0/P1/P2 checklist - **Prevents "AI look"** by banning common patterns (glassmorphism, gradients, default HTML styles) ## Core Philosophy ``` Strict constraints = consistent quality Limited options = faster decisions Explicit rules = predictable output ``` AI can only use pre-approved layouts, colors, fonts, and components. No improvisation allowed. ## Installation 1. **Clone or reference** this repository in your AI agent's context: ```bash git clone https://github.com/esthersjw/esther-design-system.git ``` 2. **Load into AI agent**: - **Cola Skill**: Place in `~/Cola/skills/esther-design-system/` - **Claude Projects**: Upload entire folder - **Cursor**: Add to workspace root and reference in `.cursorrules` 3. **Initialize workflow**: Tell your AI agent to read `SKILL.md` before any design task ## File Structure ``` esther-design-system/ ├── SKILL.md # 7-step workflow (this file) ├── brand-dna.md # Brand colors, fonts, tone, forbidden patterns ├── assets/ │ ├── template-tutorial.html # Starting point for tutorials │ ├── template-landing.html # Starting point for landing pages │ ├── template-app.html # Starting point for app UIs │ ├── template-cards.html # Starting point for social cards │ └── avatar.jpg # Brand avatar └── references/ ├── layouts.md # 15 approved layout patterns with code ├── components.md # 2988-line component library ├── checklist.md # Quality gates (P0/P1/P2) ├── scene-tutorial.md # Tutorial-specific rules ├── scene-landing.md # Landing page rules ├── scene-app.md # App UI rules └── scene-cards.md # Social card rules ``` ## 7-Step Workflow Every design task MUST follow this sequence: ### Step 1: Gather Requirements Ask the user 5 questions before starting: ``` 1. 页面类型?(tutorial/landing/app/cards) 2. 目标受众? 3. 几屏内容? 4. 现有素材?(文字/图片/视频) 5. 特殊约束?(截止日期/技术限制) ``` ### Step 2: Load Brand Rules Read in this order: 1. `brand-dna.md` (global rules) 2. Corresponding scene file (`scene-{type}.md`) 3. `layouts.md` (layout options) 4. `components.md` (component library) ### Step 3: Copy Base Template ```bash # Start from template, NEVER from scratch cp assets/template-{type}.html output.html ``` ### Step 4: Select 3-5 Layouts From `layouts.md`, choose layouts ensuring: - **No two sections use same layout** - Mix alignment (left/right/center) - At least one full-width section - At least one asymmetric section Example selection: ``` Section 1: Hero (Center Dominant) Section 2: Feature Grid (Offset Triple Card) Section 3: Quote (Left Text + Right Visual) Section 4: Process (Timeline Vertical) Section 5: CTA (Split Half) ``` ### Step 5: Build with Components From `components.md`, use ONLY pre-built components: ```html <!-- WRONG: Default HTML --> <blockquote>Some quote</blockquote> <!-- RIGHT: Use brand component --> <div class="quote-block-simple"> <div class="quote-line"></div> <blockquote>Some quote</blockquote> <cite>— Author</cite> </div> ``` ### Step 6: Self-Check Against Checklist Run through `checklist.md`: **P0 (Must Pass All)**: - [ ] Brand color ratio: Blue 60% / Yellow 30% / Red 10% - [ ] Zero forbidden elements (glassmorphism, neon, bounce animations) - [ ] Zero default HTML styles - [ ] Warm background (`#FFFCF5` or similar) - [ ] Serif + sans-serif mix - [ ] Responsive (mobile-first) - [ ] All sections use different layouts - [ ] Fluid sizing with `clamp()` - [ ] Doesn't look "AI-generated" **P1 (Should Pass)**: - [ ] At least one "wow" visual section - [ ] Extreme font size contrast (h1 vs body ≥ 3:1) - [ ] Scroll reveal animations - [ ] Large decorative numbers/English text ### Step 7: Deliver Output a single `.html` file that: - Opens directly in browser (no build step) - Includes all CSS inline or in `<style>` tags - Uses CDN fonts (Google Fonts, etc.) - Has no external dependencies except fonts ## Brand DNA Reference ### Colors ```css /* Primary Palette */ --brand-blue: #2B7FD8; /* 60% usage */ --brand-yellow: #F4D758; /* 30% usage */ --brand-red: #E84A5F; /* 10% usage - accents only */ /* Neutrals */ --warm-bg: #FFFCF5; --text-dark: #1A1A1A; --text-gray: #666666; /* Extension Rules */ /* OK: Tints/shades of brand colors */ --blue-light: rgba(43, 127, 216, 0.1); --yellow-bg: rgba(244, 215, 88, 0.2); /* FORBIDDEN: Purple, neon, black backgrounds */ ``` ### Fonts ```html <!-- Load in <head> --> <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;700&family=Noto+Sans+SC:wght@400;500;700&family=Fraunces:ital,wght@1,400&family=Caveat&family=Fira+Code&display=swap" rel="stylesheet"> ``` ```css /* Usage */ h1, h2, h3 { font-family: 'Noto Serif SC', serif; } body, p { font-family: 'Noto Sans SC', sans-serif; } .decorative-english { font-family: 'Fraunces', serif; font-style: italic; } .handwritten { font-family: 'Caveat', cursive; } code, pre { font-family: 'Fira Code', monospace; } ``` ### Forbidden Patterns ``` ❌ Blue-purple gradients ❌ Glassmorphism (backdrop-filter: blur) ❌ Neon colors ❌ animation: bounce ❌ Inter/Roboto fonts ❌ All sections centered ❌ Default <blockquote>, <ul>, <table> styles ❌ Generic AI templates ``` ## Key Components ### Magazine-Style Card ```html <div class="card-magazine"> <div class="card-eyebrow" style="background: var(--brand-yellow);"> Category </div> <h3>Card Title</h3> <p>Description text here...</p> <a href="#" class="card-link">Learn more →</a> </div> <style> .card-magazine { background: white; padding: 2rem; border-left: 4px solid var(--brand-blue); position: relative; } .card-eyebrow { display: inline-block; padding: 0.25rem 0.75rem; font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 1rem; } </style> ``` ### Terminal Code Block ```html <div class="code-terminal"> <div class="terminal-header"> <span class="terminal-dot" style="background: #E84A5F;"></span> <span class="terminal-dot" style="background: #F4D758;"></span> <span class="terminal-dot" style="background: #2B7FD8;"></span> <span class="terminal-title">bash</span> </div> <pre><code>npm install esther-design-system</code></pre> </div> <style> .code-terminal { background: #1A1A1A; border-radius: 8px; overflow: hidden; font-family: 'Fira Code', monospace; } .terminal-header { background: #2A2A2A; padding: 0.75rem 1rem; display: flex; align-items: center; gap: 0.5rem; } .terminal-dot { width: 12px; height: 12px; border-radius: 50%; } .terminal-title { margin-left: auto; color: #999; font-size: 0.875rem; } .code-terminal pre { padding: 1.5rem; margin: 0; color: #00FF00; } </style> ``` ### Quote Block with Hand-Written Badge ```html <div class="quote-handwritten"> <span class="handwritten-badge">💡 Insight</span> <blockquote> The best design systems are the ones that constrain creativity just enough to ensure consistency. </blockquote> <cite>— Design Principle #3</cite> </div> <style> .quote-handwritten { background: rgba(244, 215, 88, 0.1); border-left: 4px solid var(--brand-yellow); padding: 2rem; position: relative; } .handwritten-badge { position: absolute; top: -0.75rem; left: 2rem; background: white; padding: 0.25rem 0.75rem; font-family: 'Caveat', cursive; font-size: 1.25rem; border: 2px solid var(--brand-yellow); transform: rotate(-2deg); } blockquote { font-size: 1.25rem; line-height: 1.6; margin: 1rem 0 0.5rem; font-style: italic; } cite { font-size: 0.875rem; color: #666; } </style> ``` ## Common Patterns ### Fluid Typography ```css /* Always use clamp() for responsive sizing */ h1 { font-size: clamp(2rem, 5vw + 1rem, 4rem); } p { font-size: clamp(1rem, 2vw + 0.5rem, 1.125rem); } ``` ### Layout Grid ```css .section-container { max-width: 1200px; margin: 0 auto; padding: clamp(2rem, 5vw, 6rem) clamp(1rem, 3vw, 2rem); } /* Three-column grid with gap */ .grid-3col { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2rem; } ``` ### Scroll Reveal Animation ```html <div class="reveal-on-scroll">Content</div> <style> .reveal-on-scroll { opacity: 0; transform: translateY(30px); transition: opacity 0.6s ease, transform 0.6s ease; } .reveal-on-scroll.revealed { opacity: 1; transform: translateY(0); } </style> <script> const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('revealed'); } }); }, { threshold: 0.1 }); document.querySelectorAll('.reveal-on-scroll').forEach(el => { observer.observe(el); }); </script> ``` ## Troubleshooting ### "Output looks too generic" - **Check**: Did you use 3+ different layouts from `layouts.md`? - **Check**: Did you include at least one decorative English/number element? - **Check**: Is there extreme font size contrast (hero vs body)? - **Fix**: Add asymmetry, use `transform: rotate()` on decorative elements ### "Colors feel off" - **Check**: Measure color usage — Blue should dominate (60%), Yellow accents (30%), Red sparingly (10%) - **Fix**: Replace overused yellow with blue tints, reserve red for CTAs only ### "Fails P0 checklist" - **Most common**: Using default `<blockquote>` or `<ul>` styles - **Fix**: Replace ALL default HTML elements with components from `components.md` - **Example**: ```html <!-- WRONG --> <ul> <li>Item 1</li> </ul> <!-- RIGHT --> <div class="custom-list"> <div class="list-item"> <span class="bullet" style="background: var(--brand-blue);"></span> <span>Item 1</span> </div> </div> ``` ### "Not responsive on mobile"
在 GitHub 查看
这个 SKILL.md 很大,SkillsMP 这里只预览前一段内容。 在 GitHub 查看