brand
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseBrand Extraction
品牌标识提取
Extract brand identity from guidelines and produce a visual brand board for designer approval.
从品牌规范中提取品牌标识内容,并生成可视化品牌看板供设计师审批。
When to use this skill
适用场景
- The user provides brand guidelines (URL, PDF, or conversational description) and asks to extract, create, or capture brand identity.
- The user asks to change, refine, review, critique, or iterate on ,
stardust/brand-profile.json, orstardust/brand-board.html..impeccable.md - The user types .
/stardust:brand
- 用户提供品牌规范(URL、PDF或对话描述),并要求提取、创建或捕获品牌标识。
- 用户要求修改、优化、审核、点评或迭代、
stardust/brand-profile.json或stardust/brand-board.html文件。.impeccable.md - 用户输入指令。
/stardust:brand
Do NOT use this skill
不适用场景
- For page copy, headlines, or intent — those live in briefings. Hand off to .
briefings - For visual layout, spacing, or prototype styling — those belong to .
prototype - To render wireframes. Hand off to .
wireframes
- 页面文案、标题或意图相关内容——这些属于briefings范畴,移交至处理。
briefings - 视觉布局、间距或原型样式相关内容——这些属于范畴。
prototype - 线框图渲染——移交至处理。
wireframes
Pre-flight
前置检查
Run the procedure in first.
is optional input; if absent this skill may create it.
../_shared/preflight.md.impeccable.md首先执行中的流程。
为可选输入文件;若不存在,此功能可创建该文件。
../_shared/preflight.md.impeccable.mdContract
约定
Needs (reads if present):
- Brand URL, PDF, or conversational description from the user
- (design personality, if any)
.impeccable.md
Produces:
stardust/brand-profile.jsonstardust/brand-board.html- (extracted or synthesized)
stardust/assets/logo.<ext> - (created or updated)
.impeccable.md
If missing:
- No URL/PDF/anchor-set/description → deliver the "no reference" warning in the Inputs section below before synthesizing. If the designer proceeds without any reference, roll a deterministic random seed from §2, stamp
../_shared/divergence-toolkit.mdon the profile, and use the seed as a hard constraint on visual decisions. Stamp provenance per_divergence.divergence_warning = true.../_shared/skill-contract.md - No → prefer the designer-authored path (see Phase 3). Only fall back to synthesis after the "last chance" prompt has been declined, and stamp
.impeccable.mdin frontmatter.authored_by: synthesized
所需输入(若存在则读取):
- 用户提供的品牌规范URL、PDF或对话描述
- (若有设计个性相关内容)
.impeccable.md
输出内容:
stardust/brand-profile.jsonstardust/brand-board.html- (提取或合成的Logo文件)
stardust/assets/logo.<ext> - (创建或更新)
.impeccable.md
缺失处理:
- 无URL/PDF/参考锚点集/描述 → 在开始合成前,先输出输入项部分的“无参考”警告。若设计师仍选择无参考继续,从第2节生成确定性随机种子,在品牌档案中标记
../_shared/divergence-toolkit.md,并将该种子作为视觉决策的硬性约束。按照_divergence.divergence_warning = true标记来源信息。../_shared/skill-contract.md - 无文件 → 优先采用设计师编写路径(见第3阶段)。仅在“最后机会”提示被拒绝后,才回退至合成方式,并在文件前置元数据中标记
.impeccable.md。authored_by: synthesized
Inputs
输入项
The designer provides ONE of:
- Brand guidelines URL — a web-based brand guide (Corebook, Frontify, Brandfolder) or a live marketing site.
- Brand guidelines PDF — uploaded document.
- Reference anchor set — a moodboard URL (Are.na, Pinterest, Dribbble collection) OR 3–5 uploaded reference images with short context notes. This is NOT a brand guideline — it is a visual anchor that keeps the extraction honest.
- No reference (conversational) — the explicit escape hatch. See warning below.
设计师需提供以下任意一种输入:
- 品牌规范URL — 基于网页的品牌指南(Corebook、Frontify、Brandfolder)或营销官网。
- 品牌规范PDF — 上传的文档。
- 参考锚点集 — 情绪板URL(Are.na、Pinterest、Dribbble合集)或3–5张带简短背景说明的上传参考图片。这并非品牌规范,而是确保提取准确性的视觉锚点。
- 无参考(对话描述) — 明确的无参考选项,详见下方警告。
When the designer has no reference
当设计师无参考时
The skill defaults to requiring at least option 3 (anchor set). Before proceeding without any reference, stop and say, verbatim:
Without a reference, visual decisions will be synthesized from the assistant's defaults. The assistant has known recurring moves (see§1) that tend to appear across unrelated brands.../_shared/divergence-toolkit.mdOptions:
- Provide a reference anchor set (option 3 above) — 2 minutes, biggest divergence payoff.
- Run
yourself first — produces a personal/impeccable teachthat pushes back on assistant defaults..impeccable.md- Proceed anyway with
. The profile will be stamped with a divergence warning and the skill will roll a random seed persource: conversation§2.../_shared/divergence-toolkit.md
If the designer proceeds anyway, set and in the emitted . The skill then rolls a deterministic random seed from §2 of the toolkit (decade × craft × register) and uses it as a hard constraint on visual synthesis. Downstream skills read both flags and adjust.
_provenance.source = "conversation"_divergence.divergence_warning = truebrand-profile.json此功能默认要求至少提供选项3(锚点集)。在无参考继续前,需停止操作并输出以下原文:
若无参考,视觉决策将基于助手默认值生成。助手存在已知的重复设计倾向(详见第1节),这些倾向可能出现在不同品牌设计中。../_shared/divergence-toolkit.md可选操作:
- 提供参考锚点集(上述选项3)——耗时2分钟,可最大程度降低设计偏差。
- 先自行运行
指令——生成个人/impeccable teach文件,抵消助手默认值的影响。.impeccable.md- 选择
继续操作。品牌档案将标记偏差警告,并按照source: conversation第2节生成随机种子。../_shared/divergence-toolkit.md
若设计师仍选择继续,在输出的中设置和。随后从工具包第2节生成确定性随机种子(年代×工艺×风格),并将其作为视觉合成的硬性约束。下游功能将读取这两个标记并调整处理方式。
brand-profile.json_provenance.source = "conversation"_divergence.divergence_warning = truePhase 1: Extract
阶段1:提取
If guidelines URL or PDF provided:
若提供品牌规范URL或PDF:
Always use a real browser (Playwright or equivalent) to extract brand signals from a URL. Do NOT rely on WebFetch or raw HTML — it misses JS-rendered copy, computed styles, and the visual identity cues that actually make a brand recognizable.
WebFetch inference produces generic brand profiles ("Inter body, pill buttons, deep blue accent") that could describe any product. The goal here is specificity — the quirks that make the brand itself, not a generic version of its category.
务必使用真实浏览器(Playwright或同类工具)从URL中提取品牌信号。请勿依赖WebFetch或原始HTML——它们会遗漏JS渲染的文案、计算样式以及真正体现品牌辨识度的视觉标识线索。
WebFetch推断生成的品牌档案较为通用(如“正文用Inter字体、胶囊按钮、深蓝色强调色”),无法区分不同品牌。此阶段的目标是获取专属细节——让品牌独一无二的特质,而非同类品牌的通用版本。
1. Drive a real browser
1. 启动真实浏览器
Use Playwright (Chromium, viewport 1440×900, deviceScaleFactor 2) to load the URL, wait for network idle + ~1.5s, then both:
- Take screenshots — a hero clip (1440×900) and a full-page screenshot. Save to a scratch dir.
- Evaluate computed styles in the page context and capture:
- /
:rootCSS custom properties (brand often exposes design tokens here)html - computed
<body>,background-color,colorfont-family - All unique values in use (walk
font-family)body, body * - First 10 headings: tag, text, ,
font-family,font-weight,font-size,line-height,letter-spacingcolor - First body sample with the same style props — note
<p>carefully (Arc usescolor, not pure ink)rgba(0,0,0,0.65) - ,
<em>, or<i>elements — the italic display accent often lives here and is brand-specific (Exposure VAR, etc.)[class*="italic"] - First 8 CTAs (,
a[class*="button"],button): text,[class*="cta"],background-color,color,border-radius,padding,font-family. Capture multiple CTA variants — primary/inverted/inked patterns matter.font-weight - Section background colors (walk ) — surface a variant cream, a variant ink, or an off-white you'd otherwise miss
section, header, main > div - and
<img>with logo/brand/hero classes — source paths<svg> - Meta tags, especially (the brand's official color),
theme-color,descriptionog:* - Hero copy text (first 6 h1/h2/p contents)
使用Playwright(Chromium内核,视口1440×900,设备缩放因子2)加载URL,等待网络空闲+约1.5秒后,执行以下两项操作:
- 截图 — 截取首屏区域(1440×900)和全页截图,保存至临时目录。
- 在页面上下文内计算样式并捕获:
- /
:root的CSS自定义属性(品牌通常在此暴露设计令牌)html - 的计算
<body>、background-color、colorfont-family - 页面中所有唯一的值(遍历
font-family)body, body * - 前10个标题:标签、文本、、
font-family、font-weight、font-size、line-height、letter-spacingcolor - 第一个正文样本及相同样式属性——仔细记录
<p>(如Arc使用color而非纯黑色)rgba(0,0,0,0.65) - 、
<em>或<i>元素——品牌专属的斜体强调样式通常在此(如Exposure VAR等)[class*="italic"] - 前8个CTA按钮(、
a[class*="button"]、button):文本、[class*="cta"]、background-color、color、border-radius、padding、font-family。需捕获多种CTA变体——主按钮/反转按钮/纯色按钮的样式模式至关重要。font-weight - 各区块背景色(遍历)——留意可能被忽略的浅米色、深色或灰白色变体
section, header, main > div - 带有logo/brand/hero类的和
<img>——资源路径<svg> - 元标签,尤其是(品牌官方颜色)、
theme-color、descriptionog:* - 首屏文案(前6个h1/h2/p内容)
2. Identify identity traits, not just tokens
2. 识别品牌特质,而非仅提取令牌
After extraction, explicitly look for and record:
- Signature border-radius — brands often pick a specific non-round value (10px, 14px). Record it as .
componentStyle.borderRadius.default - Body text opacity — is body copy at full ink or softened (e.g. 65%)? This is a recurring brand trait.
- Display metrics — if headings run tight (,
line-height < 1.0), capture both values verbatim. These feel-of-type details are what separate a real brand from a generic clone.letter-spacing < -0.03em - Multiple CTA patterns — if you see inked-black, branded-color, and inverted buttons, record all three with their exact styles.
- Color variants for context — capture "cream on blue" as a separate color if the value differs from "cream on cream" (e.g. vs
#FFFADD).#FFFCEC - Visual motifs beyond logos/colors — look at the screenshot and name them: dashed dividers, aurora gradients, squiggle separators, noise textures, hand-drawn elements. Add a array to the brand profile with
motifs,name,description. These motifs are what signal the brand before a word is read.usage
提取完成后,需明确查找并记录:
- 标志性圆角半径 — 品牌通常会选择特定的非圆形数值(如10px、14px),将其记录为。
componentStyle.borderRadius.default - 正文文本透明度 — 正文文案是纯黑色还是半透明(如65%不透明度)?这是品牌的常见特质。
- 标题排版指标 — 若标题字距紧凑(、
line-height < 1.0),需如实记录这两个数值。这些排版细节是区分真实品牌与通用克隆版本的关键。letter-spacing < -0.03em - 多种CTA样式模式 — 若存在纯黑、品牌色、反转按钮,需记录所有三种按钮的精确样式。
- 场景化颜色变体 — 若“蓝色背景上的米色”与“米色背景上的米色”颜色值不同(如vs
#FFFADD),需将其作为单独颜色捕获。#FFFCEC - Logo和色彩之外的视觉元素 — 查看截图并命名这些元素:虚线分隔线、极光渐变、波浪分隔符、噪点纹理、手绘元素等。在品牌档案中添加数组,包含
motifs、name、description字段。这些元素能在用户阅读文字前传递品牌信号。usage
2.5 Locate and save the real logo
2.5 定位并保存真实Logo
The logo is a real asset — download it, don't synthesize it. Walk this fixed order and stop at the first hit:
- Inline inside the page header or
<svg>— look for<nav>,header svg,nav svg. Serialize the outer HTML and save as[class*="logo" i] svg.stardust/assets/logo.svg - with a logo-shaped src or class —
<img>,header img,nav img,img[src*="logo" i],img[class*="logo" i]. Download the resolved URL. Prefer SVG; fall back to the highest-resolution PNG or WebP.img[alt*="logo" i] - ,
<link rel="icon">,<link rel="apple-touch-icon">— in that order. These are branded marks even if not full wordmarks.og:image - Favicon — or
/favicon.icoat the site root. Last resort./favicon.svg - No logo found — create a minimal placeholder SVG with the brand name as text, save to , and add
stardust/assets/logo.svgto"logo: synthesized placeholder — no mark found on source"._provenance.synthesized_inputs
Save all downloads to (not — the design phase is platform-agnostic; is a convention some downstream systems use, e.g. AEM Edge Delivery Services, which would leak structure into stardust).
stardust/assets/icons/icons/Record the outcome in the brand profile's object:
logojson
"logo": {
"path": "stardust/assets/logo.svg",
"format": "svg",
"source": "inline svg in <header> | <img src=...> | apple-touch-icon | favicon | synthesized"
}For the PDF path, extract embedded images — prefer vector — and save the same way.
For the conversational path, synthesize a placeholder as described above and stamp .
_provenance.synthesized_inputsLogo是真实资产——需下载而非合成。按照以下固定顺序查找,找到第一个匹配项即停止:
- 页面头部或内的内嵌
<nav>— 查找<svg>、header svg、nav svg。序列化外部HTML并保存为[class*="logo" i] svg。stardust/assets/logo.svg - 带有Logo形状或类名的—
<img>、header img、nav img、img[src*="logo" i]、img[class*="logo" i]。下载解析后的URL。优先选择SVG格式;若无则选择最高分辨率的PNG或WebP格式。img[alt*="logo" i] - 、
<link rel="icon">、<link rel="apple-touch-icon">— 按此顺序查找。即使不是完整文字Logo,这些也是品牌标识。og:image - 网站图标 — 网站根目录下的或
/favicon.ico。最后备选方案。/favicon.svg - 未找到Logo — 创建包含品牌名称文本的极简占位SVG,保存至,并在
stardust/assets/logo.svg中添加_provenance.synthesized_inputs。"logo: synthesized placeholder — no mark found on source"
将所有下载文件保存至(而非——设计阶段与平台无关;是部分下游系统的约定,如AEM Edge Delivery Services,若使用会破坏stardust的结构独立性)。
stardust/assets/icons/icons/在品牌档案的对象中记录结果:
logojson
"logo": {
"path": "stardust/assets/logo.svg",
"format": "svg",
"source": "inline svg in <header> | <img src=...> | apple-touch-icon | favicon | synthesized"
}若输入为PDF,提取嵌入图片——优先选择矢量图,并按相同方式保存。
若为对话输入,按上述方式合成占位Logo,并标记。
_provenance.synthesized_inputs3. Voice examples from live copy
3. 从真实文案中提取语气示例
Pull real copy from the rendered page (hero headlines, CTAs, micro-copy) for . Real examples beat invented ones. Note rhetorical devices — em-dashes, rhythmic triplets, single-word italic accents — and call them out in .
voice.examples.dovoice.rules从渲染页面中提取真实文案(首屏标题、CTA、微文案)作为的内容。真实示例优于虚构内容。注意修辞手法——破折号、节奏性三连词、单字斜体强调——并在中注明。
voice.examples.dovoice.rules4. PDFs and non-URL sources
4. PDF及非URL来源处理
If the input is a PDF or uploaded asset, read it directly (PDF viewer / Read tool) and extract palette, typography, and voice cues inline from the rendered pages. Playwright is the primary path for URLs; direct read is the path for static assets.
若输入为PDF或上传资产,直接读取(使用PDF查看器/读取工具),并从渲染页面中提取调色板、排版和语气线索。URL优先使用Playwright路径;静态资产使用直接读取路径。
5. Write the profile
5. 编写品牌档案
Map everything to the brand profile schema — consult brand-profile-schema.md.
Every MUST start with a block per . Populate:
brand-profile.json_provenance../_shared/skill-contract.mdgenerated_by: "brand"- — today, ISO format
date - — URL, PDF path, or
source"conversation" - — the actual method used (e.g. Playwright string, PDF read, conversation only)
extraction_method - — enumerate every field the skill filled in but did not extract from source. Examples: "personas (mottos, values) — composed from extracted voice signals, not read from the page"; "contentPillars descriptions — inferred from nav + hero copy"; "voice.examples.dont — LLM-composed to match extracted voice rules". If you genuinely extracted every field from source, pass an empty array and note it.
synthesized_inputs - — scratch paths
screenshots
Readers use to decide what to trust. Be honest and specific. "Some fields" is not acceptable — list each one.
synthesized_inputsDo not emit a separate block. All source-of-extraction info lives inside .
extraction_provenancePay special attention to:
- Voice examples — do/don't copy pairs. Critical for content generation. Extract from live copy.
- Photography direction — style rules, composition, subject matter. Feeds image generation.
- Logo variants — primary mark always saved to (see Step 2.5). Additional variants (white-on-dark, mono, stacked) also go under
stardust/assets/logo.<ext>with descriptive names likestardust/assets/.logo-white.svg - Color roles — don't just capture hex, capture what each color is FOR (CTAs, headings, backgrounds, on-blue text).
- Motifs — the non-obvious visual gestures. Without these the board reads as a generic palette.
将所有内容映射至品牌档案 schema — 参考brand-profile-schema.md。
每个必须以块开头,遵循的要求。填充以下字段:
brand-profile.json_provenance../_shared/skill-contract.mdgenerated_by: "brand"- — 今日日期,ISO格式
date - — URL、PDF路径或
source"conversation" - — 实际使用的提取方法(如Playwright抓取、PDF读取、仅对话输入)
extraction_method - — 列出所有由功能填充但未从来源提取的字段。示例:"personas(座右铭、价值观)——从提取的语气信号组合生成,未从页面读取";"contentPillars描述——从导航+首屏文案推断";"voice.examples.dont——由LLM生成以匹配提取的语气规则"。若所有字段均从来源提取,则传递空数组并注明。
synthesized_inputs - — 临时目录路径
screenshots
用户会根据判断内容可信度。需诚实且具体地列出,"部分字段"的表述不可接受——需逐个列出。
synthesized_inputs请勿单独输出块。所有提取来源信息均需包含在内。
extraction_provenance需特别关注:
- 语气示例 — 正确/错误文案对比。这对内容生成至关重要,需从真实文案中提取。
- 摄影风格方向 — 风格规则、构图、主题。将为图片生成提供依据。
- Logo变体 — 主标识始终保存至(见步骤2.5)。其他变体(深色背景白标、单色、堆叠版)也保存至
stardust/assets/logo.<ext>,并使用描述性名称如stardust/assets/。logo-white.svg - 颜色用途 — 不仅要捕获十六进制值,还要记录每种颜色的用途(CTA、标题、背景、蓝色背景上的文本等)。
- 视觉元素 — 非显而易见的视觉设计细节。缺失这些元素,看板将沦为通用调色板展示。
If no guidelines (conversational):
若无品牌规范(对话输入):
-
Run the soft-deps discovery decision before asking anything inline:Ifis registered in this session (detect per
/brainstorm): hand off to../_shared/soft-deps.mdwith a seeded prompt naming the brand (if known) and the discovery topics below. Wait for its output; use the result to populate/brainstorm. Do NOT run an inline interview once this delegation is made.brand-profile.jsonOtherwise (superpowers not installed): announce the fallback exactly once per session, using the verbatim text from("superpowers announcement"). Then run the inline interview.../_shared/soft-deps.mdEither path covers the same topics: brand name, mission, target audience, personality (3-5 adjectives), colors they like/dislike, typography preference (serif/sans/mixed), photography style, competitive positioning.The user must be able to tell which path ran — either by's visible hand-off UI or by the one-time announcement. Silent inline interviews are a bug./brainstorm -
From the conversation, constructwith whatever was discussed.
stardust/brand-profile.json -
Mark optional fields as null — the designer can fill them in later.
-
在进行内联询问前,先执行软依赖发现判断:若会话中已注册(按照
/brainstorm检测):将任务移交至../_shared/soft-deps.md,传递包含品牌名称(若已知)及以下发现主题的种子提示。等待其输出结果;使用结果填充/brainstorm。移交后请勿再执行内联访谈。brand-profile.json若未安装该功能:按照中的原文输出一次回退提示("功能增强公告")。随后执行内联访谈。../_shared/soft-deps.md两种路径均需覆盖以下主题:品牌名称、使命、目标受众、个性(3-5个形容词)、喜欢/讨厌的颜色、排版偏好(衬线/无衬线/混合)、摄影风格、竞争定位。用户需明确知晓当前执行的路径——要么通过的可见移交界面,要么通过一次性公告。静默内联访谈属于错误操作。/brainstorm -
根据对话内容,构建。
stardust/brand-profile.json -
将可选字段标记为null——设计师可后续补充。
Phase 2: Palette Selection
阶段2:调色板选择
Before writing the palette into , the designer picks from a set of candidate palettes pulled from the bundled library at . Every candidate palette's colors come from coolors.co/palettes/trending and carry a source URL back to the original — zero assistant-invented hexes.
brand-profile.json../_shared/palettes/See for the full classifier vocabulary, filter scoring rules, and HSL helpers. See for the UI structure and template.
../_shared/palette-picker.mdreference/pick-ui-template.md在将调色板写入前,设计师需从的内置库中选择候选调色板。所有候选调色板的颜色均来自coolors.co/palettes/trending,并附带指向原始来源的URL——无助手自定义的十六进制颜色值。
brand-profile.json../_shared/palettes/完整的分类词汇、过滤评分规则及HSL工具参考。UI结构及模板参考reference/pick-ui-template.md。
../_shared/palette-picker.mdSkip this phase when
跳过此阶段的情况
- The brand has authoritative guidelines and the URL/PDF extraction produced a real palette — use the extracted palette as-is (record ).
_divergence.palette_source.method = "extracted-from-source" - The designer explicitly provides a palette file at — use it verbatim (
stardust/palettes/brand.json).method = "designer-provided" - Running in fully-automated pipeline mode with no description — fall back to auto-classification from brand voice + seed ().
method = "auto-classified"
Otherwise, run all six steps below.
- 品牌有权威规范,且URL/PDF提取已生成真实调色板——直接使用提取的调色板(记录)。
_divergence.palette_source.method = "extracted-from-source" - 设计师明确提供调色板文件——直接使用该文件(
stardust/palettes/brand.json)。method = "designer-provided" - 在全自动流水线模式下运行且无描述——回退至基于品牌语气+种子的自动分类()。
method = "auto-classified"
否则,执行以下全部六个步骤。
Step A · Derive the palette description
步骤A · 生成调色板描述
-
If the designer provides a natural-language palette brief (e.g. "freaking bold and shocking", "clean and superbly engineered", "muted sage, considered"), use it verbatim.
-
Otherwise synthesize one short descriptor from:
- the brand's content pillars,
- the brand voice traits,
- the seed triple from (decade × craft × register),
_divergence.seed - any ground-family hint from .
_divergence.seed.ground
Example: for a Lagos dance collective with seed, a reasonable synthesized description is "bold youthful outdoor, 1960s travel brochure, saturated".1960s × folded-paper × travel-brochure × saturated
Stamp the description in .
_divergence.palette_source.description_used-
若设计师提供自然语言调色板说明(如*"极其大胆亮眼"、"简洁且精致考究"、"柔和鼠尾草绿,风格沉稳"*),直接使用该描述。
-
否则,从以下内容合成简短描述:
- 品牌的内容支柱
- 品牌语气特质
- 中的三元组(年代×工艺×风格)
_divergence.seed - 中的底色家族提示
_divergence.seed.ground
示例:针对拉各斯舞蹈团体,种子为,合理的合成描述为*"大胆年轻户外风,1960年代旅行手册风格,高饱和度"*。1960s × folded-paper × travel-brochure × saturated
将描述标记在中。
_divergence.palette_source.description_usedStep B · Classify the description
步骤B · 对描述进行分类
Apply the keyword vocabulary from § 1 to extract the five descriptor dimensions:
../_shared/palette-picker.md- (1–5)
energy - (1–5)
contrast - (1–5)
saturation_level - (hot / warm / mustard / green / teal / cool / violet / neutral / rainbow)
hue_bias - (cream / stark-white / pale-gray / saturated / dark / monochrome-tint)
ground_family
Any dimension the description doesn't trigger keywords for stays (no constraint). Keyword matching is whole-word, case-insensitive. Record the full classification in .
null_divergence.palette_source.classification应用第1节的关键词词汇,提取五个描述维度:
../_shared/palette-picker.md- (1–5)
energy - (1–5)
contrast - (1–5)
saturation_level - (hot / warm / mustard / green / teal / cool / violet / neutral / rainbow)
hue_bias - (cream / stark-white / pale-gray / saturated / dark / monochrome-tint)
ground_family
描述未触发关键词的维度设为(无约束)。关键词匹配为全词匹配,不区分大小写。将完整分类记录在中。
null_divergence.palette_source.classificationStep C · Filter and score the library
步骤C · 过滤并评分库中调色板
Load palettes from — either from the consolidated or by walking each file. Apply the filter scoring from § 2:
../_shared/palettes/library.json<ground-family>/*.json../_shared/palette-picker.md- exact match: +100
ground_family - exact match: +50 / loose match (hue group): +20
hue_bias - difference:
saturation_levelmax(0, 30 − 10·diff) - difference:
energymax(0, 20 − 8·diff)
Keep palettes with score > 0. Sort descending by score. Take the top 5 as candidates.
Compute the recommended pick via of mod . This is the default the designer can accept with a single keypress; the others are alternatives at the same score tier.
byte[0]MD5(description + YYYY-MM-DD)len(top_5)从加载调色板——可从合并的加载,也可遍历每个文件。应用第2节的过滤评分规则:
../_shared/palettes/library.json<ground-family>/*.json../_shared/palette-picker.md- 完全匹配:+100
ground_family - 完全匹配:+50 / 宽松匹配(色相组):+20
hue_bias - 差异:
saturation_levelmax(0, 30 − 10·diff) - 差异:
energymax(0, 20 − 8·diff)
保留评分>0的调色板,按评分降序排序,取前5个作为候选。
通过的值对候选数量取模,计算推荐选项。设计师可一键接受该默认选项;其他选项为同评分层级的备选。
MD5(description + YYYY-MM-DD)byte[0]Step D · Render the pick UI
步骤D · 渲染选择UI
Write following the template structure in :
stardust/_palette-pick.htmlreference/pick-ui-template.md- Shows the description and the classifier output at the top
- Renders the 5 candidates as numbered cards (1 = recommended, 2–5 = alternatives)
- Card 1 gets a gold border and larger swatches
- Each card: swatches with hex labels, anchor marker (★), cream-family flag if present, palette name linked to Coolors source, classification tags
- Footer instruction: "Tell the assistant a number (1–5), a palette name, or 'refine' to change the description."
Immediately after writing the file, open it in the designer's default browser per Opening HTML artifacts. On macOS: . Do not require the designer to open it manually.
../_shared/skill-contract.mdopen stardust/_palette-pick.htmlThen say:
"Your palette pick UI is open. Five candidate palettes from the library. Tell me a number (1–5), a palette name, or 'refine' to change the description."
按照reference/pick-ui-template.md的模板结构,编写:
stardust/_palette-pick.html- 顶部显示描述及分类结果
- 将5个候选调色板渲染为编号卡片(1=推荐,2–5=备选)
- 卡片1添加金色边框和更大的色板
- 每张卡片:带十六进制标签的色板、锚点标记(★)、米色家族标识(若有)、链接至Coolors来源的调色板名称、分类标签
- 页脚说明:"告知助手编号(1–5)、调色板名称,或输入'refine'修改描述。"
写入文件后立即按照中的“打开HTML产物”要求,在设计师的默认浏览器中打开该文件。macOS系统执行:。无需设计师手动打开。
../_shared/skill-contract.mdopen stardust/_palette-pick.html随后输出:
"调色板选择UI已打开。库中提供了5个候选调色板。请告知我编号(1–5)、调色板名称,或输入'refine'修改描述。"
Step E · Designer picks
步骤E · 设计师选择
Wait for the designer's input. Valid responses:
- Integer 1–5 → pick that card
- Palette name substring match → pick the matching card
- /
refine→ re-ask Step A for a new description, re-run B–Dnone - / Enter → accept the recommended (index 1)
pick
Pipeline automation: when invoked as part of a full end-to-end pipeline run (no interactive designer), auto-accept the recommended pick and continue.
等待设计师输入。有效响应包括:
- 整数1–5 → 选择对应卡片
- 调色板名称子串匹配 → 选择匹配的卡片
- /
refine→ 返回步骤A重新获取描述,重新执行B–D步骤none - / 回车 → 接受推荐选项(编号1)
pick
流水线自动化:当作为完整端到端流水线的一部分调用(无交互设计师),自动接受推荐选项并继续。
Step F · Record and write to brand-profile
步骤F · 记录并写入品牌档案
Write the chosen palette into the in-memory brand profile (not yet on disk — Phase 4 writes the file). Each Coolors hex becomes a entry:
colors.primary[]json
{
"name": "Ankara Burnt Orange", // brand-native if the designer names it, else derived from Coolors palette name + swatch-role
"hex": "#DD5B26", // from the picked palette
"role": "Ankara", // brand-native role (see brand-profile-schema.md token-level enforcement)
"use": "primary saturated ground, CTA fill" // technical qualifier
}Role-naming rule from Role Naming — enforced applies: no / / / / tokens in the field. If the designer hasn't provided brand-native role names, derive from the brand's subject matter (e.g., "Bar Beach", "Grove", "Lamination").
reference/brand-profile-schema.mdPrimaryAccentBrandBackgroundNeutralroleRecord the full chain in :
_divergence.palette_sourcejson
"palette_source": {
"method": "library-pick",
"library_version": "v0.6.0",
"library_source": "coolors.co/palettes/trending (scraped 2026-04-24)",
"description_used": "freaking bold and shocking",
"classification": {
"energy": 5, "contrast": 5,
"saturation_level": null, "hue_bias": null,
"ground_family": "saturated"
},
"candidates_shown": [
{ "index": 1, "name": "...", "source": "https://coolors.co/..." },
{ "index": 2, "name": "...", "source": "..." },
"...up to 5..."
],
"recommended_index": 1,
"picked_index": 1,
"picked_palette_name": "Autumn Glow",
"picked_palette_source": "https://coolors.co/780116-f7b538-db7c26-d8572a-c32f27"
}Leave the file on disk as an audit record.
_palette-pick.html将选中的调色板写入内存中的品牌档案(暂不写入磁盘——第4阶段写入文件)。每个Coolors十六进制值成为的一项:
colors.primary[]json
{
"name": "Ankara Burnt Orange", // 若设计师命名则使用品牌专属名称,否则从Coolors调色板名称+色板用途派生
"hex": "#DD5B26", // 来自选中的调色板
"role": "Ankara", // 品牌专属用途(见brand-profile-schema.md令牌级约束)
"use": "primary saturated ground, CTA fill" // 技术说明
}rolereference/brand-profile-schema.mdPrimaryAccentBrandBackgroundNeutral在中记录完整流程:
_divergence.palette_sourcejson
"palette_source": {
"method": "library-pick",
"library_version": "v0.6.0",
"library_source": "coolors.co/palettes/trending (scraped 2026-04-24)",
"description_used": "freaking bold and shocking",
"classification": {
"energy": 5, "contrast": 5,
"saturation_level": null, "hue_bias": null,
"ground_family": "saturated"
},
"candidates_shown": [
{ "index": 1, "name": "...", "source": "https://coolors.co/..." },
{ "index": 2, "name": "...", "source": "..." },
"...最多5个..."
],
"recommended_index": 1,
"picked_index": 1,
"picked_palette_name": "Autumn Glow",
"picked_palette_source": "https://coolors.co/780116-f7b538-db7c26-d8572a-c32f27"
}保留文件作为审计记录。
_palette-pick.htmlPhase 3: Design Personality
阶段3:设计个性
.impeccable.md.impeccable.mdAuthorship matters
作者身份至关重要
.impeccable.md- Designer-authored (via or the inline interview answered by the designer) — strong quality gate. Downstream skills enforce its rules.
/impeccable teach - Synthesized (fallback, LLM-authored without designer input) — weak hint. Downstream skills render a visible banner on brand boards and prototypes: "Design personality was synthesized by the assistant, not authored by the designer. The rules below reflect assistant defaults. Run to replace."
/impeccable teach
Every file MUST open with frontmatter that declares authorship:
.impeccable.mdyaml
---
authored_by: designer # or: synthesized
author_date: YYYY-MM-DD
source: "/impeccable teach interview" # or: "brand skill inline interview" | "brand skill synthesis fallback"
strength: strong # designer → strong; synthesized → weak
---Downstream skills key off . A file without this frontmatter is treated as weak.
strength.impeccable.md- 设计师编写(通过或设计师参与的内联访谈)——强质量校验标准。下游功能将严格执行其规则。
/impeccable teach - 合成生成(回退方式,无设计师输入由LLM生成)——弱提示。下游功能会在品牌看板和原型上显示可见横幅:"设计个性由助手合成,非设计师编写。以下规则反映助手默认值。运行指令替换。"
/impeccable teach
每个文件必须以声明作者身份的前置元数据开头:
.impeccable.mdyaml
---
authored_by: designer # 或: synthesized
author_date: YYYY-MM-DD
source: "/impeccable teach interview" # 或: "brand skill inline interview" | "brand skill synthesis fallback"
strength: strong # designer → strong; synthesized → weak
---下游功能以字段为判断依据。无此前置元数据的文件将被视为弱提示。
strengthPath selection
路径选择
This phase is delegated when possible; otherwise it runs a lighter inline interview.
If the plugin is installed ( is registered), pause and recommend to the designer:
impeccable/impeccable teachBefore we render the brand board, runin the prompt. It will interview you about design personality (references, do's and don'ts, taste) and write/impeccable teach. Downstream quality gates read this file..impeccable.mdThis is optional but recommended. You can also skip it — we can always runlater and re-refine. Reply "skip" to continue without it, or run the command now and then ask me to continue./impeccable teach
Wait for the designer to either run (then resume) or explicitly say "skip". When runs, it stamps . On "skip" without running, proceed to the "last chance" prompt below.
/impeccable teachteachauthored_by: designerteachIf is not installed, use the "For brand discovery" variant in to run a short personality interview. The designer answers — stamp , .
impeccable../_shared/fallback-brainstorm.mdauthored_by: designersource: "brand skill inline interview"此阶段优先移交至其他功能处理;否则执行简化版内联访谈。
若已安装插件(已注册指令),暂停操作并向设计师推荐:
impeccable/impeccable teach在渲染品牌看板前,请在提示符中运行指令。它将访谈您关于设计个性的偏好(参考案例、喜好与忌讳、审美倾向)并生成/impeccable teach文件。下游质量校验功能将读取此文件。.impeccable.md此操作可选但推荐。您也可跳过此步骤——后续随时可运行并重新优化。回复"skip"继续操作,或立即运行该指令后告知我继续。/impeccable teach
等待设计师选择运行(随后恢复流程)或明确回复"skip"。运行指令后,文件将标记。若回复"skip"且未运行,则执行下方的“最后机会”提示。
/impeccable teachteachauthored_by: designerteach若未安装插件,使用中的“品牌发现”变体执行简短个性访谈。设计师回答后,标记、。
impeccable../_shared/fallback-brainstorm.mdauthored_by: designersource: "brand skill inline interview"Last-chance prompt before synthesis
合成前的最后机会提示
Before the skill synthesizes on its own (no designer interview), stop and ask:
.impeccable.mdBefore I synthesizemyself, would you rather answer three quick questions? References you like, things that annoy you, one rule you want broken. Three minutes, and the file reflects your taste instead of my defaults. Reply "ok" to do the interview, or "synthesize" to proceed without..impeccable.md
- Reply "ok" → run the three-question inline interview, write the file with .
authored_by: designer - Reply "synthesize" → write the file with ,
authored_by: synthesized, and include the banner language in its body so downstream skills surface it.strength: weak
Never invent content from the brand profile alone without declaring it synthesized — that provides no signal beyond what's already captured, and stamping it as "designer" would mislead downstream quality gates into enforcing assistant defaults as if they were designer taste.
.impeccable.md在功能自行合成(无设计师访谈)前,需停止操作并询问:
.impeccable.md在我自行合成前,您是否愿意回答三个简单问题?您喜欢的参考案例、讨厌的设计点、希望打破的一条规则。耗时3分钟,生成的文件将反映您的审美偏好而非助手默认值。回复"ok"进行访谈,或"synthesize"继续合成。.impeccable.md
- 回复"ok" → 执行三个问题的内联访谈,生成文件并标记。
authored_by: designer - 回复"synthesize" → 生成文件并标记、
authored_by: synthesized,并在文件正文中包含横幅文本,以便下游功能显示。strength: weak
禁止仅从品牌档案中虚构内容而不标记为合成——这无法提供品牌档案之外的额外信号,若标记为"designer"会误导下游质量校验功能将助手默认值当作设计师偏好执行。
.impeccable.mdSkip this phase when
跳过此阶段的情况
- already exists. (Read its frontmatter; do not overwrite.)
.impeccable.md - Invoked as part of a full end-to-end pipeline run — but still present the last-chance prompt before synthesis unless the designer has explicitly opted out of it for the pipeline run.
- 已存在。(读取其前置元数据;请勿覆盖。)
.impeccable.md - 作为完整端到端流水线的一部分调用——但仍需在合成前显示最后机会提示,除非设计师明确选择在流水线中跳过此步骤。
Phase 4: Render Brand Board
阶段4:渲染品牌看板
- Read .
stardust/brand-profile.json - Generate following the template in
stardust/brand-board.html. Render the data contract sections in the canonical order.reference/brand-board-template.md - The board must:
- Use the brand's own extracted colors and fonts
- Derive the page ground from the brand palette (see § 2.5 Ground-color seed). Do not default to cream or any cream rebrand (vellum, kami, bone, ivory, eggshell).
../_shared/divergence-toolkit.md - Include sticky navigation for section jumping on long boards
- Render only sections that have data (omit sections for null fields)
- Be self-contained HTML with embedded CSS (no external JS)
- Render the logo with per
<img src="assets/logo.svg">— never inline the SVG.reference/brand-board-template.md - Open the file in the designer's default browser per Opening HTML artifacts. On macOS:
../_shared/skill-contract.md.open stardust/brand-board.html - Then say: "Your brand board is open. Review and approve, or tell me what to change."
- In SLICC: the board also renders in the browser panel automatically; the open command is harmless.
- In pipeline-automation mode (end-to-end auto-approve): skip the open.
- 读取。
stardust/brand-profile.json - 按照reference/brand-board-template.md的模板生成。按标准顺序渲染数据约定中的各个板块。
stardust/brand-board.html - 看板必须满足:
- 使用品牌自身提取的颜色和字体
- 从品牌调色板派生页面底色(参考第2.5节底色种子)。请勿默认使用米色或米色变体(如牛皮纸、kami纸、骨色、象牙白、蛋壳色)。
../_shared/divergence-toolkit.md - 包含粘性导航,方便在长看板中跳转板块
- 仅渲染有数据的板块(省略字段为null的板块)
- 为独立HTML文件,内嵌CSS(无外部JS)
- 按照使用
reference/brand-board-template.md渲染Logo——请勿内嵌SVG。<img src="assets/logo.svg"> - 按照中的“打开HTML产物”要求,在设计师的默认浏览器中打开该文件。macOS系统执行:
../_shared/skill-contract.md。open stardust/brand-board.html - 随后输出:"品牌看板已打开。请审核并确认,或告知我需要修改的内容。"
- 在SLICC中:看板将自动在浏览器面板中渲染;打开指令不会产生影响。
- 在流水线自动化模式(端到端自动确认):跳过打开操作。
Phase 5: Approval Gate
阶段5:审核确认
This is a hard gate in interactive mode. Do not proceed until the designer approves.
Pipeline automation: When invoked as part of a full pipeline run (e.g., the user asked to run all stardust stages end-to-end with auto-approve), skip the interactive approval loop. Auto-approve and continue to the next stage. The user can always come back to refine later.
Present the brand board and ask: "Does this accurately represent your brand? What needs to change?"
Common feedback and how to handle it:
- "That color is wrong" → Update the hex in brand-profile.json, re-render the board
- "The voice feels too [formal/casual/etc]" → Update voice traits and examples, re-run to update .impeccable.md
/teach - "Missing our secondary font" → Add to typography section, re-render
- "Photography direction is off" → Update photography rules, re-render
Iterate until the designer says the board looks right. Then:
- Confirm the brand profile is saved
- Confirm .impeccable.md exists
- Tell the designer: "Brand extraction complete. Run to see your next step. Briefings (
/stardust) can be written in parallel; once brand and briefings are ready, choose/stardust:briefingsfor a grey structural pass, or jump straight to/stardust:wireframes."/stardust:prototype
在交互模式下,这是一个硬性校验环节。需等待设计师确认后再继续。
流水线自动化:当作为完整流水线的一部分调用(如用户要求自动运行所有stardust阶段并自动确认),跳过交互审核环节。自动确认并进入下一阶段。用户后续可随时返回优化。
展示品牌看板并询问:"此看板是否准确代表您的品牌?需要修改哪些内容?"
常见反馈及处理方式:
- "颜色不对" → 更新brand-profile.json中的十六进制值,重新渲染看板
- "语气太[正式/随意等]" → 更新语气特质及示例,重新运行指令更新.impeccable.md
/teach - "缺少我们的次要字体" → 添加至排版板块,重新渲染
- "摄影风格方向不符" → 更新摄影风格规则,重新渲染
迭代至设计师确认看板无误。随后:
- 确认品牌档案已保存
- 确认.impeccable.md已存在
- 告知设计师:"品牌标识提取完成。运行查看下一步操作。Briefings(
/stardust)可并行编写;品牌档案和briefings准备就绪后,可选择/stardust:briefings生成灰色结构线框图,或直接跳转至/stardust:wireframes生成原型。"/stardust:prototype
Artifacts Written
生成的产物
| File | Description |
|---|---|
| Structured brand tokens (source of truth) |
| Visual brand board (rendered view) |
| Design personality for quality gates |
| Primary logo mark — SVG preferred, PNG fallback. Additional variants also under |
| 文件 | 描述 |
|---|---|
| 结构化品牌令牌(事实来源) |
| 可视化品牌看板(渲染视图) |
| 用于质量校验的设计个性文件 |
| 主Logo标识——优先SVG格式,PNG为备选。其他变体也保存至 |