One App, 149 Design Languages
Open Design is a macOS desktop app that does one thing directly: you tell it what kind of page you want, and it assembles a brand-consistent HTML artifact. Inside it are three repositories — 149 brand design systems, 110 page templates, 11 generic craft specs. Every generation picks one from each axis and assembles the final output.
The question: can this logic move into Claude Code as a Skill?
The answer is yes, and it works surprisingly well. But the process isn’t simply “porting features over” — it’s re-understanding the design patterns, then re-expressing them with Claude’s native capabilities.
First, Understand Its Three-Axis Architecture
Open Design’s core is a three-axis composition system:
- Design systems (look) — the visual language of 149 brands, one DESIGN.md per brand, defining 9 dimensions like color, typography, components, and layout
- Templates (shape) — 110 page types, from SaaS landing pages to dashboards to slide decks, one SKILL.md per template
- Craft specs (quality) — 11 generic rule sets: typography, color, anti-AI-slop, state coverage, accessibility, and more
The relationship between the three axes is clear: design systems decide “which tokens to use,” craft specs decide “how to use these tokens,” and templates decide “what shape the output takes.” When there’s a conflict, the brand wins; craft specs fill in what the brand doesn’t cover.
This architecture is itself a design pattern — separation of concerns. Brand visuals decouple from generic quality constraints; template shape decouples from specific content. Only by understanding this can you translate it into a Skill correctly.
Step One of Distillation: Identify the Core Patterns
Before writing the Skill, I spent a lot of time reading Open Design’s source code. Not to copy it line by line, but to find its core design patterns.
Pattern 1: Six-Part Assembly
Open Design’s daemon uses composeSystemPrompt() to build the system prompt, stitching six parts together in order:
1. Identity & Workflow — 定义 agent 角色和工作流
2. Active Design System — 当前品牌的 DESIGN.md 全文
3. Active Craft References — 当前模板需要的工艺规范
4. Active Template Skill — 当前模板的 SKILL.md 工作流
5. Project Metadata — 模式、平台、场景等元信息
6. Output Contract — HTML 输出格式约定
The key to this pattern: each part is independent, swappable, and has a clear responsibility. In a Claude Skill, you don’t need to actually concatenate into one string — the agent reads the files separately with the Read tool, which is equivalent.
Pattern 2: Advisor-Style Interaction
Open Design isn’t a “pick from a menu” tool. Its interaction flow is:
方向 → 5 个深入问题 → 智能推荐 → 确认 → 构建
The 5 questions cover: content, audience, visual style, brand preference, scale. Then a matching algorithm scores templates and design systems, recommending the Top 3 combinations.
The value of this pattern: it gives users the final say, but uses the algorithm to narrow the choices. In a Skill, this flow is implemented natively with the AskUserQuestion tool.
Pattern 3: Token-Preview Hard Gate
Before building, Open Design shows a token preview: background color, accent color, fonts. The user has to explicitly say “go” before generation runs.
This is a HARD-GATE pattern — a confirmation step that prevents wasting tokens. In a Claude Skill, this logic is implemented with conditional checks.
The Skill’s Actual Structure
Landing these three patterns in a Claude Skill, the final structure looks like this:
---
name: open-design
description: |
Use when the user wants to generate brand-consistent web artifacts
using Open Design's three-axis composition system.
allowed-tools:
- Read
- Write
- Edit
- Bash
- Grep
- Glob
- AskUserQuestion
---
The frontmatter defines the Skill’s metadata and available tools. allowed-tools is key — it constrains what the Skill is allowed to call.
The body breaks into several core parts:
1. Identity — defines the agent’s role as “design advisor,” not a menu picker.
2. Resource Map — points to the in-app resource paths:
OD = /Applications/Open Design.app/Contents/Resources/open-design
$OD/design-systems/<brand>/DESIGN.md
$OD/design-templates/<template>/SKILL.md
$OD/craft/<name>.md
3. Arguments — defines the input modes:
| Input | Mode | Behavior |
|---|---|---|
| (empty) | Advisor | Full 5-stage consultation |
brand template | Direct | Skip Q&A |
--browse term | Browse | Search resources |
--compare b1 b2 | Compare | Compare two design systems |
4. Workflow — detailed 5-stage flow, each stage using AskUserQuestion for interaction.
5. Matching Algorithm — scoring formula for templates and design systems, weighted across four dimensions: keywords, scenario, style, scale.
6. Output Contract — HTML must be self-contained, wrapped in an <artifact> tag.
Translating the Matching Algorithm
Open Design’s matching algorithm is an interesting design. It converts the user’s 5 answers into scores for templates and design systems:
模板评分 = 3×关键词匹配 + 2×场景匹配 + 2×风格匹配 + 2×规模匹配 + 1×featured
设计系统评分 = 3×风格匹配 + 3×品牌匹配 + 2×色调匹配
In a Skill, this algorithm needs no code — it’s expressed as a matching index table. The agent reads the user’s answers, scores them against the table, and recommends the Top 3.
This “algorithm-as-table” approach is a unique strength of Claude Skills. A traditional code implementation would need dozens of lines of logic; in a Skill, one structured table is enough.
Reusing the Craft Specs
The 11 craft specs are among the most valuable parts of Open Design. They’re not tied to any brand or template — they’re generic design-quality constraints:
- typography — font-size ratio 1.2/1.25, line-height 1.0–1.6, ALL CAPS tracking ≥ 0.06em, line length 50–75ch
- color — 4-layer palette (neutrals 70–90%, accents 5–10%, semantics 0–5%, effects <1%), max 2 accents per screen
- anti-ai-slop — 7 "sins" to avoid: default indigo, two-color gradients, emoji as icons, fake data, etc.
- state-coverage — 5 required states: Loading / Empty / Error / Populated / Edge
These specs are referenced by template frontmatter (od.craft.requires); the agent applies both brand tokens and craft constraints during generation.
In a Skill, this pattern is implemented as “read + apply” — the agent first reads the craft files the template requires, then follows both brand and craft rules during generation.
What It Does and Doesn’t Do
After converting Open Design into a Claude Skill:
What works:
- Full advisor-style interaction flow
- Smart Top-3 recommendations
- Brand-consistent HTML output
- Automatic craft-spec application
- Browse and Compare modes
What doesn’t:
- Pixel-level device-frame rendering (needs the app’s frame assets)
- Decorative features like community pets
- Live preview (needs the app’s preview pane)
- Complex animations in some templates
The core functionality works fully, but the “app experience” layer can’t be fully migrated. Which proves a principle: a Skill distills logic and patterns, not UI and experience.
A General Method for Distilling Design Patterns
From the Open Design case, here’s a general method for distilling design patterns into Skills:
Step 1: Identify the core architecture Don’t rush to write code. Spend time understanding the app’s core architecture first — what independent parts does it have? How do they relate?
Step 2: Find the design patterns Behind every architectural decision is a design pattern. Separation of concerns, advisor-style interaction, hard gates — these patterns are more valuable than the concrete implementation.
Step 3: Express it with Claude’s native capabilities
A Skill isn’t a translation of code — it’s a re-expression of logic. Use AskUserQuestion instead of UI interaction, tables instead of algorithms, Read instead of file loading.
Step 4: Define boundaries Be explicit about what the Skill can and can’t do. Don’t try to replicate the whole app — distilling the most valuable parts is enough.
Step 5: Test and iterate Use the Skill for real, and adjust when you hit problems. The matching algorithm may need several rounds of tuning; the interaction flow may need simplification.
Closing Thoughts
Open Design’s three-axis architecture — design systems × templates × craft specs — is itself an elegant design pattern. Converting it into a Claude Skill is really about answering one question: which logic deserves to be distilled into reusable agent capabilities?
The answer isn’t “all the features” — it’s “the core design patterns.” Six-part assembly, advisor-style interaction, token-preview hard gates — these patterns outlive any specific implementation.
If you have a complex app you want to turn into a Skill, start by identifying its core design patterns. Code can be rewritten; design patterns are the real assets.
FAQ
What exactly is the three-axis composition?
Design systems (look: the visual language of 149 brands, one DESIGN.md per brand), templates (shape: 110 page types, one SKILL.md per template), craft specs (quality: 11 generic rule sets). Design systems decide “which tokens to use,” craft specs decide “how to use these tokens,” templates decide “what shape the output takes.” When in conflict, the brand wins.
After converting to a Skill, what can’t be ported over?
Things at the “app experience” layer can’t make it over: pixel-level device-frame rendering, live preview, complex animations in some templates. But the full advisor-style interaction flow, Top-3 smart recommendations, brand-consistent HTML output, and automatic craft-spec application all work fine.
How is the matching algorithm implemented in a Skill?
No code needed — it’s expressed as a “matching index table.” For example, template score = 3×keyword match + 2×scenario match + 2×style match + 2×scale match + 1×featured. The agent reads the user’s answers, scores them against the table, and recommends the Top 3 combinations.
What’s the general method for distilling design patterns?
Five steps: first identify the core architecture (which independent parts, how they relate); then find the design patterns; re-express with Claude’s native capabilities (AskUserQuestion instead of UI interaction, tables instead of algorithms); then define boundaries; finally test and iterate.
How is a Skill different from just “porting features over”?
It’s not translating code — it’s re-expressing logic. Don’t try to replicate the whole app; distilling the most valuable parts is enough. Code can be rewritten, but design patterns are the real assets.
一个应用装了 149 套设计语言
Open Design 是一个 macOS 桌面应用,做的事情很直接:你告诉它要做什么类型的页面,它帮你组合出一个品牌一致的 HTML 产物。它的内部有三个仓库 — 149 个品牌设计系统、110 个页面模板、11 套通用工艺规范。每次生成,就是从这三个轴各取一个,拼装成最终输出。
问题是:这套逻辑能不能搬到 Claude Code 里,变成一个 Skill?
答案是可以,而且效果出奇地好。但过程不是简单地”把功能搬过来”,而是要重新理解它的设计模式,然后用 Claude 的原生能力重新表达。
先搞清楚它的三轴架构
Open Design 的核心是一个三轴组合系统:
- 设计系统(外观) — 149 个品牌的视觉语言,每个品牌一个 DESIGN.md,定义色彩、排版、组件、布局等 9 个维度
- 模板(形态) — 110 个页面类型,从 SaaS 落地页到仪表盘到幻灯片,每个模板一个 SKILL.md
- 工艺规范(质量) — 11 套通用规则:排版、配色、反 AI 味、状态覆盖、无障碍等
这三个轴的关系很清晰:设计系统决定”用什么 token”,工艺规范决定”怎么用这些 token”,模板决定”输出什么形态”。冲突时品牌优先,工艺补充品牌没覆盖的部分。
这个架构本身就是一种设计模式 — 关注点分离。品牌视觉和通用质量约束解耦,模板形态和具体内容解耦。理解了这一点,才能正确地把它转化为 Skill。
提炼的第一步:识别核心模式
在动手写 Skill 之前,我花了大量时间阅读 Open Design 的源码。不是为了逐行复制,而是为了找到它的核心设计模式。
模式一:六段拼装
Open Design 的 daemon 用 composeSystemPrompt() 构建系统提示词,把六个部分按顺序拼接:
1. Identity & Workflow — 定义 agent 角色和工作流
2. Active Design System — 当前品牌的 DESIGN.md 全文
3. Active Craft References — 当前模板需要的工艺规范
4. Active Template Skill — 当前模板的 SKILL.md 工作流
5. Project Metadata — 模式、平台、场景等元信息
6. Output Contract — HTML 输出格式约定
这个模式的关键在于:每个部分独立、可替换、有明确职责。在 Claude Skill 中,不需要真的拼成一个字符串 — agent 通过 Read 工具分别读取这些文件,效果等价。
模式二:顾问式交互
Open Design 不是一个”选菜单”式的工具。它的交互流程是:
方向 → 5 个深入问题 → 智能推荐 → 确认 → 构建
5 个问题覆盖:内容、受众、视觉风格、品牌偏好、规模。然后用一个匹配算法对模板和设计系统评分,推荐 Top 3 组合。
这个模式的价值在于:它把选择权交给用户,但用算法缩小选择范围。在 Skill 中,这个流程用 AskUserQuestion 工具原生实现。
模式三:Token 预览硬门控
在构建之前,Open Design 会展示一个 Token 预览:背景色、强调色、字体。用户必须明确说”开始”才执行生成。
这是一个 HARD-GATE 模式 — 用确认步骤防止浪费 token。在 Claude Skill 中,这个逻辑用条件判断实现。
Skill 的实际结构
把这三个模式落地为 Claude Skill,最终结构如下:
---
name: open-design
description: |
Use when the user wants to generate brand-consistent web artifacts
using Open Design's three-axis composition system.
allowed-tools:
- Read
- Write
- Edit
- Bash
- Grep
- Glob
- AskUserQuestion
---
Frontmatter 定义了 Skill 的元信息和可用工具。allowed-tools 很关键 — 它限制了 Skill 能调用的能力边界。
正文分为几个核心部分:
1. Identity — 定义 agent 角色为”设计顾问”,不是菜单选择器。
2. Resource Map — 指向应用内的资源路径:
OD = /Applications/Open Design.app/Contents/Resources/open-design
$OD/design-systems/<brand>/DESIGN.md
$OD/design-templates/<template>/SKILL.md
$OD/craft/<name>.md
3. Arguments — 定义不同输入模式:
| 输入 | 模式 | 行为 |
|---|---|---|
| 空 | 顾问 | 完整 5 阶段咨询 |
brand template | 直接 | 跳过问答 |
--browse term | 浏览 | 搜索资源 |
--compare b1 b2 | 对比 | 比较两个设计系统 |
4. Workflow — 5 个阶段的详细流程,每个阶段用 AskUserQuestion 实现交互。
5. Matching Algorithm — 模板和设计系统的评分公式,用关键词、场景、风格、规模四个维度加权。
6. Output Contract — HTML 必须自包含,用 <artifact> 标签包裹。
匹配算法的转化
Open Design 的匹配算法是一个有趣的设计。它把用户的 5 个回答转化为模板和设计系统的评分:
模板评分 = 3×关键词匹配 + 2×场景匹配 + 2×风格匹配 + 2×规模匹配 + 1×featured
设计系统评分 = 3×风格匹配 + 3×品牌匹配 + 2×色调匹配
在 Skill 中,这个算法不需要写代码 — 它被表达为一个匹配索引表。agent 读取用户的回答,对照索引表打分,然后推荐 Top 3。
这种”用表格表达算法”的方式,是 Claude Skill 的一个独特优势。传统的代码实现需要几十行逻辑,而在 Skill 中,一个结构化的表格就够了。
工艺规范的复用
11 套工艺规范是 Open Design 最有价值的部分之一。它们不是针对某个品牌或模板的,而是通用的设计质量约束:
- typography — 字号比例 1.2/1.25,行高 1.0-1.6,ALL CAPS tracking ≥0.06em,行长 50-75ch
- color — 4 层调色板(中性色 70-90%,强调色 5-10%,语义色 0-5%,效果色 <1%),每屏最多 2 个强调色
- anti-ai-slop — 7 个必须避免的"罪过":默认靛蓝、双色渐变、emoji 做图标、伪造数据等
- state-coverage — 5 个必需状态:Loading / Empty / Error / Populated / Edge
这些规范被模板的 frontmatter 引用(od.craft.requires),agent 在生成时同时应用品牌 token 和工艺约束。
在 Skill 中,这个模式通过”读取 + 应用”实现 — agent 先读取模板需要的 craft 文件,然后在生成时同时遵循品牌和工艺两套规则。
实际效果和局限
把 Open Design 转化为 Claude Skill 后,效果:
能做到的:
- 完整的顾问式交互流程
- 智能推荐 Top 3 方案
- 品牌一致的 HTML 输出
- 工艺规范的自动应用
- Browse 和 Compare 模式
做不到的:
- 设备框架的像素级渲染(需要应用内的 frame 资源)
- 社区宠物等装饰性功能
- 实时预览(需要应用的 preview pane)
- 部分模板的复杂动画效果
核心功能完全可用,但”应用体验”层面的东西无法完全迁移。这恰恰说明了一个原则:Skill 提炼的是逻辑和模式,不是界面和体验。
提炼设计模式的通用方法
从 Open Design 这个案例中,可以总结出提炼设计模式为 Skill 的通用方法:
第一步:识别核心架构 不要急着写代码。先花时间理解应用的核心架构 — 它由哪几个独立部分组成?各部分之间是什么关系?
第二步:找到设计模式 每个架构决策背后都有一个设计模式。关注点分离、顾问式交互、硬门控 — 这些模式比具体实现更有价值。
第三步:用 Claude 原生能力表达
Skill 不是代码的翻译,而是逻辑的重新表达。用 AskUserQuestion 替代 UI 交互,用表格替代算法,用 Read 替代文件加载。
第四步:定义边界 明确 Skill 能做什么、不能做什么。不要试图复制整个应用 — 提炼最有价值的部分就够了。
第五步:测试和迭代 实际使用 Skill,发现问题就调整。匹配算法可能需要多次调优,交互流程可能需要简化。
写在最后
Open Design 的三轴架构 — 设计系统 × 模板 × 工艺规范 — 本身就是一个优雅的设计模式。把它转化为 Claude Skill 的过程,本质上是在回答一个问题:哪些逻辑值得被提炼为可复用的 agent 能力?
答案不是”所有功能”,而是”核心设计模式”。六段拼装、顾问式交互、Token 预览硬门控 — 这些模式的价值超越了具体的应用实现。
如果你也有一个复杂的应用想转化为 Skill,建议从识别它的核心设计模式开始。代码可以重写,但设计模式是真正的资产。
常见问题
三轴组合具体指什么?
设计系统(外观:149 个品牌的视觉语言,每个品牌一个 DESIGN.md)、模板(形态:110 个页面类型,每个模板一个 SKILL.md)、工艺规范(质量:11 套通用规则)。设计系统决定”用什么 token”,工艺规范决定”怎么用这些 token”,模板决定”输出什么形态”;冲突时品牌优先。
转成 Skill 后,哪些功能迁不过来?
设备框架的像素级渲染、实时预览、部分模板的复杂动画这些”应用体验”层的东西做不到。但完整的顾问式交互流程、Top 3 智能推荐、品牌一致的 HTML 输出、工艺规范的自动应用,这些核心功能都没问题。
匹配算法在 Skill 里怎么实现?
不用写代码,用”匹配索引表”表达。比如模板评分 = 3×关键词匹配 + 2×场景匹配 + 2×风格匹配 + 2×规模匹配 + 1×featured,agent 读取用户回答后对照表格打分,推荐 Top 3 组合。
提炼设计模式的通用方法是什么?
五步:先识别核心架构(哪几个独立部分、什么关系);再找到设计模式;然后用 Claude 原生能力重新表达(AskUserQuestion 替代 UI 交互、表格替代算法);接着定义边界;最后测试迭代。
Skill 和”把功能搬过来”有什么区别?
不是翻译代码,是重新表达逻辑。不要试图复制整个应用,提炼最有价值的部分就够了。代码可以重写,但设计模式是真正的资产。