关于 direct
direct 是 Stardust 的设计技能,可将自由形式的改版需求转化为项目设计规范和推理记录,供后续原型制作或迁移使用。它会区分忠于现有品牌的刷新与明确要求的品牌重塑。
主要功能
- 01将改版意图转为设计规范
- 02生成 PRODUCT.md、DESIGN.md 和 DESIGN.json
- 03在 direction.md 中记录设计推理
- 04支持品牌忠实模式与品牌重塑模式
- 05无需重做意图分析即可添加变体
适用场景
- 01在制作原型前确定网站视觉方向
- 02为网站迁移准备设计输入
- 03保留现有方向并探索设计变体
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ adobe/ skills --skill direct安装后在 Claude Code 中输入/direct确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
reference/add-variant.mdcross-site-brand-inputs.mddirection-format.mdimprovements-list.mdmode-a-plus.mdmulti-variant.mdpalette-picker.mdprep-mode.mdreference/palettes/library.jsonREADME.md详细介绍
stardust:direct
将用户自由形式的重设计意图转化为完整的目标规范:项目根目录中的 PRODUCT.md 和 DESIGN.md(格式无可挑剔)、带有差异审计轨迹的 DESIGN.json 附属文件,以及包含完整推理轨迹的 stardust/direction.md。
direct 会生成供 prototype 和 migrate 使用的规范。它不会编写原型或迁移页面——这些工作由下游子命令执行。
输入
<phrase>— 可选的位置参数。用户的自由形式意图(“让它更好”“更像 Linear、少些 Salesforce”“在小屏幕上显得更高级”)。如果省略,请向用户询问。--re-direct— 可选。用新方向替换当前方向。根据skills/stardust/reference/state-machine.md,会将已原型化/已批准/已迁移的页面标记为过时。不带此标志时,默认行为为增量式:如果方向已存在,Agent 会在替换前询问。--rebrand— 可选。强制进入品牌重塑模式(全面滚动生成差异种子,不继承模式 A)。不带此标志时,只要捕获的信号为signal-strong,默认采用忠实于品牌的模式(§ 模式检测优先级)。--prep— 可选。以迁移准备模式运行:确认类型目录,最终确定模块目录,记录颜色预留和品牌级元数据默认值,并根据更广泛的爬取结果重新评估方向。参见下文的 § 准备模式。通常通过prepare-migration编排器调用。--add-variant <name>— 可选。基于现有方向添加一个新变体,不重新运行意图推理或模式检测。在项目根目录写入DESIGN-<name>.{md,json},并在stardust/direction.md中追加每个变体对应的章节;现有原型不会被标记为过时。参见下文的 § 添加变体模式。
设置
- 执行主技能的设置流程(
skills/stardust/SKILL.md§ 设置)——严格检查 impeccable 依赖、加载上下文并读取状态。 - 确认
stardust/state.json存在,且至少包含一个extracted页面。如果没有,请停止并建议先运行$stardust extract <url>。 - 读取
stardust/current/_brand-extraction.json。如果文件不存在,请停止——extract 未完成品牌表层提取;请重新运行 extract。 3b. 跨站品牌输入(如有)。state.json.designSource(设计来源模式:模式 A 的固定项会绑定到供体推导出的系统)以及_brand-extraction.json.origins[](关联属性的证据:会扩大可强化的内容范围,但不会扩大固定项范围)。阅读reference/cross-site-brand-inputs.md,了解固定项和证据规则;在计划中说明当前生效的模式。 - 如果
stardust/direction.md存在,则读取它。如果已有先前方向且未传入--re-direct,请询问用户是要完善现有方向,还是替换方向。 - 验证来源(仅准备模式)。启用
--prep时,请在类型或模块检测前,根据reference/prep-mode.md执行来源验证。 - **对捕获的品牌信号进行分类。**读取
_brand-extraction.json,并标记为以下一种:signal-strong— 调整近似重复项分组并排除纯黑/纯白(如果它们是唯一条目)后,调色板至少有 3 种不同颜色,并且type.headingFamily.name或type.bodyFamily.name中至少有一个捕获的字体系列名称。这是任何已提取商业网站的常见情况。signal-thin— 调色板有 2 种颜色,或未捕获任何字体系列,或type.scaleAudit.kind === "ad-hoc"且不同的标题字号少于 3 种。品牌信息存在,但不足以完全支撑改版。signal-absent— 调色板有 1 种或 0 种颜色,或_brand-extraction.json._provenance.notes表明提取失败、被登录墙阻挡或主要内容来自 iframe。 该分类会影响第 2 阶段的模式检测优先级。如果该分类会改变默认模式,请在计划中说明。
流程
第 1 阶段 — 推理
按照完整流程执行意图推理,详见
skills/stardust/reference/intent-reasoning.md。步骤 1–6:用维度词汇重述
该短语,识别移动方向,识别缺口,提出至多两个澄清问题,映射到
无可挑剔的命令序列,并向用户展示计划。
skills/stardust/reference/intent-examples.md 中的示例可用于校准风格。
问题数量上限为两个:每轮都不得例外。
零移动不是一种方向——移交给 replica。 重述之前,检查该短语是否将每个轴都固定为不变:例如“完全复刻”“相同设计”“像素级精准”“忠实还原”“保留当前设计”“1:1”“仅重新搭建平台”“原样保留”,或将 ia-fidelity: verbatim 与固定的调色板、字体和密度同时指定。这属于相同设计迁移,direct 无事可决:在 stardust/direction.md 中写一段说明(“零移动短语——相同设计迁移;方向是 replica 第 2 阶段中的机械式升级”),如果 state.json.flow 尚未设置,则将其标记为 "replica"(参见 ../stardust/reference/state-machine.md § Flow keys),然后停止并提示“运行 $stardust replica <url>”。对于此类短语,绝不能继续制定重新设计方向、--prep 模块目录或计划——即使处于免打扰模式也一样:下文的“什么都不问”绝不意味着“遇到复刻短语时继续执行”。(记录:曾在用户输入“完全复刻——原样保留”时调用 direct,却继续执行;最终发布了 2,207 个页面,像素差异达 24–28%,是复刻验收标准的四到五倍。)
免打扰模式(依据 skills/stardust/SKILL.md § Hands-off mode,
state.json.handsOff: true):不提问,也不等待——但不得跳过上述零移动检查。
根据已收集的证据推导原本要通过提问获取的所有答案——根据记录的默认值和触发条件确定密度和 ia-fidelity,根据已收集的页面表面确定受众和语体——并在 direction.md § Movements 中将每一项记录为明确标注的假设(例如:density: balanced (hands-off default — multi-audience floor fired))。仍须编写计划;执行时跳过确认关卡。下文提到“询问用户”的问题额度和关卡也采用相同处理方式:推导答案、标记假设,然后继续。
密度调整(一次性,仅在未移动时)
当用户的短语没有改变 density 轴(依据
reference/intent-dimensions.md § 4),且解析出的语体为
brand 时,提出一个简短的后续问题——计入两个问题的上限:
密度调整——(a)疏朗(《纽约时报·观点》级别的留白,约 96px 的区块内边距);(b)均衡(舒缓但紧凑,约 64–72px);(c)紧凑(数据密集,约 40–48px)。对于采用品牌语体且 IA 面向多种受众的网站,默认选项为**(b)均衡**;只有当页面以编辑内容为主导,且各区块内容密度较高时才选择(a)。
如果用户回答了,将所选等级按 density: <tier> 的格式标记在 direction.md §
Movements 中。如果用户未回答,则品牌语体默认选用均衡(而非疏朗),并标记为
density: balanced (default)。
以下情况完全跳过此问题:
- 用户的短语已经改变了
density(“更密集”“留白更多”“紧凑”“精简”“宽敞”等都算作改变)。 - 语体为
product(依据 § 4,默认值为packed)。 - 语体为
ambiguous,且在推理早期确定语体比询问密度更有价值——将密度问题留到下一轮,而不要占用本轮的问题名额。
第 4 阶段读取已标记的等级以设置 spacing.sectionPadding;
不会再次询问。
IA 保真度调优(仅在尚未确定时询问一次)
当用户的措辞没有自动锁定 ia-fidelity(根据
reference/intent-dimensions.md § 9,也就是说,既没有出现 "verbatim"、
"same IA"、"keep the structure"、"swap the surface"、
"don't rethink the IA",也没有出现 "reimagine"、"rethink"、
"deeper redesign"、"what if"),请简短追问一次
——计入最多两个问题的限制:
IA 保真度——(a)逐字保留(章节顺序和内容要点相同;变体仅探索表层:颜色、字体、密度、动效),还是(b)重新构想(变体可以弱化 / 突出 / 删除章节、调整 IA 优先级,并围绕页面主线提出“如果这样呢”的设想)。 对于常见的焕新需求,默认选(b);当客户要求网站结构完全不变、只更换表层时,选(a)。
如果用户作出回答,在 direction.md § Movements 中将所选层级标记为 ia-fidelity: <tier>。如果用户未回答,则默认选重新构想,并标记为 ia-fidelity: reimagined (default)。
以下情况完全跳过此问题:
- 用户的措辞已自动锁定该轴(§ 9 中的任一触发短语——"same IA, swap the surface" → 逐字保留;"what if we rethought the home page" → 重新构想)。
- 正在优化现有的
direction.md(沿用当前层级,除非用户明确重新锁定)。
Phase 4 会将该层级写入 iaPriorities[].mutability;后续的 prototype 会读取此值。
如果密度调优问题和 IA 保真度问题都尚未确定,请将这两个问题一起提出——"在确定方案前还有两点需要确认:(1)密度……,(2)IA 保真度……"——以遵守最多两个问题的限制。如果品牌 / 产品语气的确认也尚未完成,则优先确认语气;将密度 / IA 保真度中的一个问题留到下一轮。
在继续之前,等待用户确认("go",或提出对计划的修改)。
Phase 2 — 确定差异化输入
确认计划后,根据 skills/stardust/reference/divergence-toolkit.md 确定差异化工具包的输入。在生成种子之前,先按以下模式检测优先级,判断是否需要生成种子。
模式判定优先级(先运行)
direct 的默认模式取决于是否存在包含可用信号的提取品牌表层,而不是仅由用户的自由表达决定。含糊的焕新表述(“让它更现代”“令人惊艳的新版”“治好设计疲劳”)属于迁移类需求,而非触发重新品牌设计的信号。这里的优先级刻意采用非对称设计:更安全的模式(模式 A——忠于品牌)会涵盖含糊表述;风险更高的重新品牌设计模式则要求用户明确提出。
-
网站迁移 / 焕新——默认模式。 如果 § Setup 步骤 6 中记录的品牌信号为
signal-strong,则默认启用模式 A。用户的表述会调整模式 A 中的表现力、独特性、语气和信息密度轴,但配色和字体将固定为提取到的品牌表层,并遵守图像复用约定(见下文)。**标志性元素也会保留:**提取到的标志性主视觉媒介(背景视频 / 画布 / Lottie / 滚动动效,记录在_brand-extraction.json#voice.heroMedium中)或全站使用的图案将予以复现,而不会被简化——遵循skills/stardust/reference/intent-dimensions.md§ 8b,且不计入surprise预算。在计划中说明: “已启用忠于品牌模式——配色和字体固定为提取到的品牌表层。传入--rebrand可覆盖此设置。” -
重新品牌设计——明确选择加入。 当以下任一触发条件成立时,将覆盖模式 A:
- 用户的表述包含明确的重新品牌设计信号:
rebrand、new brand、clean slate、start over、from scratch、replace the brand、not brand-faithful、editorial reimagination、completely new、redo the brand中的任意一项。 - 传入了
--rebrand标志。 - 提取到的信号为
signal-absent(没有可用的继承依据)。将此情况作为自动切换并说明原因;用户可以纠正。
在重新品牌设计模式下,按照下文“默认模式(无约束)”执行标准的差异化种子抽取。在计划中说明: “已启用重新品牌设计模式——完整执行差异化种子抽取。因 <原因>,已跳过模式 A。”
- 用户的表述包含明确的重新品牌设计信号:
-
忠于品牌 + 定向探索。 当用户要求 N 个变体(例如*“3 个变体”、“4 个方向”*),且模式 A 已启用时,适用
reference/multi-variant.md中的变体角色约定(触发条件:§ Phase 2.6)。变体 A 固定为严格模式 A(配色和字体固定、保留信息架构、应用改进清单中的每一项)。变体 B 及后续变体可以强化一个提取到的特征(图案、照片处理方式,或当前网站未充分体现的信息架构优先级),但不得:- 引入提取到的品牌表层之外的字体,
- 引入提取到的品牌配色之外的颜色,
- 改变 PRODUCT.md 中的风格基调。
-
信号不足时的回退。 如果提取到的信号为
signal-thin,则启用模式 A,但会发出警告:*“提取到的品牌表层信息不足——{原因}。变体将继承现有信息;部分维度需要通过差异化工具包补充。”*用户可以使用更广的抓取范围重新运行提取(--cap 25),也可以降低保真度后继续。
模式判定完成后,按适用情况运行下文中现有的模式定义(模式 A 流程、模式 B 锚点参考优先级、模式 C 基础家族覆盖规则)。
模式 A — 忠于品牌模式
当捕获到的品牌信号为
signal-strong 且没有触发重新品牌模式覆盖(参见上文
§ 模式检测优先级)时自动触发;或者用户固定了字体和配色
(通过明确表述:“保留字体和配色”、“保留现有品牌”、“忠于品牌的重新设计”;或通过将两者都列为锚点的约束)。
在此模式下,direct 不会重新抽取种子中的字体或配色维度—— 它们已锁定。
模式流程:
-
记录
font_deck.name = "brand-inherited"和font_deck.picked_by = "user-constraint"。不要调用reference/palette-picker.md。 -
记录
palette.source = "inherited from _brand-extraction.json"和palette.picked_by = "user-constraint"。如果继承的名称违反品牌原生规则,则按照工具包 § 4 重命名角色(这仍然有用——角色重命名属于呈现调整,而非偏离选择)。 -
仍然要为未锁定的维度重新抽取种子(十年、语域,以及适用时的基底系列,见下文模式 C)。这些维度仍会推动差异化——即使字体和配色已固定,视觉语域和时代特征仍可变化。
-
按照
reference/direction-format.md§ 忠于品牌的反转,自动生成extensions.divergence中的brand_faithful_inversions[]块。 该列表大多可机械生成(规范模式请参见direction-format.md中的 § 忠于品牌的反转)。 -
在用户报告中指出哪些维度发挥了作用,哪些没有:
Divergence (brand-faithful mode): decade ✓ rolled → 2025-now craft ✓ rolled → Riso print register ✓ rolled → Memoir-adjacent ground-family inherited → stark-white (brand-native) font deck inherited → existing site stack palette inherited → existing 5-color set -
图像复用约定。 捕获的图像通过其公开 URL(或由提取阶段 2 写入
stardust/current/assets/media/的本地副本),在与源站相同的语义位置 复用。主视觉仍是主视觉。故事卡片肖像仍是故事卡片肖像。 项目卡片图像仍是项目卡片图像。背景图案仍是背景图案。这是忠于品牌继承的一部分:将捕获的肖像换成占位图,或把主视觉照片降为缩略图,都会抹去品牌最重要的信任信号。
在模式 A 下,只有以下情况可以偏离语义位置保留原则:
- 捕获的图像已损坏(404、被
referrer-policy阻止、受 CORS 限制,或记录为localPath: null且带有downloadError)。 - 品牌审核指出该图像存在问题(例如新增的
T-stock-photography——标记出捕获图像明显是模板化图库素材,品牌团队无论如何都会替换)。 - 改进清单(阶段 2.5)明确指出该图像需要调整裁切或位置——此时应在修正后的裁切或位置复用同一图像。
- 捕获的图像已损坏(404、被
模式 A 下禁止使用合成占位图。当捕获的图像无法复用时,原型形态说明必须明确声明这一缺口,渲染后的原型则应显示带特征元素的占位图,让审核者看到缺口,而非伪造的照片。
用户可以在计划确认环节修正模式(例如“其实让我调整一下配色”或“其实重新打造品牌”),然后再锁定。
模式 A+ — 品牌邻近式优化(有界、证据门控)
介于模式 A 的严格固定与 --rebrand 之间的中间层级:当改进清单(阶段 2.5)根据证据指出捕获到的字体或颜色存在不足时,允许进行有界且分类不变的升级——每项升级都必须记录在 extensions/divergence. brand_adjacent_refinements[] 中,且默认不启用。应用任何优化之前,请先阅读
reference/mode-a-plus.md。
模式 B — 锚点参考优先
当用户提供锚点参考(Q1/Q2 的回答,例如
“Pentagram 非营利组织、This American Life、NYT Opinion 长篇文章”)时,
这些参考已经隐含了种子维度(Pentagram →
年代 2025-now 编辑风格;This American Life → 近似
Memoir 的语体)。不要重新抽取这些参考已隐含的维度。
Agent 来源的锚点(用户未提供时的默认方式)。
模式 B 不再等待用户提供参考:运行
参考调研流程
(skills/stardust/reference/reference-research.md),为品牌的类别、语体和
已确定的方向变化搜集 3–5 个真实世界的锚点。调研所得的锚点与用户提供的锚点具有相同的
隐含维度权重,并记录为 picked_by: "reasoned: <anchor>",完整引用则记录在
extensions.divergence.references_used[] 中。
若发生冲突,用户提供的参考始终优先于调研所得的参考。如果无法进行调研(按 reference-research.md § 1 用尽调研层级),
模式 B 将退化为仅对未隐含维度进行确定性抽取。
优先级规则:
- 如果存在锚点参考,提取其隐含维度:
- 年代:根据参考的时代(Pentagram → 2025-now; 复古 Penguin → 1960s)。
- 工艺:根据参考的媒介(TAL → 音频编辑风格, 本身不算一种工艺,但 Bandcamp → 网页印刷混合;Riso 印刷 选集 → Riso)。
- 语体:根据文化参考组合(Memoir、Tabloid、Catalogue 等)。
- 底色类别:根据这些参考的典型底色(NYT Opinion → 奶油色/羊皮纸色;Pentagram 非营利组织 → 纯白或单色调色)。
- 将每个隐含维度标记为
picked_by = "anchor-reference: <ref-name>"。 - 仅对未隐含的维度抽取种子。
- 将锚点到维度的映射记录在
extensions.divergence.seed.anchors[]中。
模式 B 可与模式 A 结合:锚点参考缩小种子范围, 忠于品牌的约束锁定字体/调色板,剩余抽取仅涉及锚点尚未隐含的内容。
模式 C — 忠于品牌的底色类别覆盖
当模式 A 激活且种子的 ground_family 抽取结果
与品牌现有底色不一致时(例如种子抽到
monochrome-tint,但品牌采集到的背景是
#ffffff 纯白),以品牌底色为准。种子抽取结果不会被
舍弃,而是用于替代区块的表面(依据
divergence-toolkit.md § 4 颜色角色)。在
extensions.divergence.seed.ground_family.override 中记录覆盖,并注明以下三种原因之一:
brand-faithful— 模式 A 已激活,且品牌有固定底色。print-paper— 用于印刷/纸张类别的手动覆盖 (现有工具包规则)。direction-driven— 采用种子结果(默认;不覆盖)。
这三种原因互斥;在面向用户的报告中说明所选原因。
默认模式(无约束)
当 Mode A 和 Mode B 均不适用时(品牌重塑或弱信号运行,且没有用户提供的锚点),流程为研究优先,随机生成兜底:
- **优先进行参考研究。**运行
skills/stardust/reference/reference-research.md,为品牌类别和已确定的方向寻找锚点,并推导这些锚点所暗示的维度(picked_by: "reasoned: <basis>")。 这是将 Mode B 的机制应用于 Agent 搜集的锚点——参见上文 § Mode B。 - **随机生成作为兜底和决胜手段。**按照工具包 § 2 的说明,随机生成 4 维种子
(年代 × 工艺 × 语域 × 基底系列),仅用于研究未能暗示的维度;如果无法开展研究,则用于所有维度。如果自审发现模型尽管做过研究仍在复现其默认模式,也可以用随机生成来有意打破趋同。逐个维度记录
picked_by。 - **字体组合。**从 10 个命名组合中选择(参见 § 3),让研究锚点以种子暗示的同样方式影响选择(例如,编辑类衬线字体锚点集 →
serif-luxury)。如果研究和种子都未暗示字体组合,则根据哈希确定性地选择。 - 配色方案。如果已确定的方向调整了色彩能量轴,或将现有配色方案列为问题的一部分:基于主要研究锚点或库中的候选方案,推导出完整的角色分级配色方案(文本、底色、边框、强调色、状态色)——该库(
skills/direct/reference/palette-picker.md)是一个锚点库,而非封闭的选项菜单;模型负责设计色阶,并在将其纳入令牌前验证每组文本与底色搭配均符合 WCAG AA 标准(该确定的地方要确定——数学计算;不该限制的地方不限制——审美判断)。在extensions.divergence.palette_source中记录推导依据。否则,沿用stardust/current/_brand-extraction.json中的现有配色方案;如果继承的名称违反品牌原生规则,则按照工具包 § 4 重命名角色。
始终执行
- **反工具箱审计。**无论模式如何,都要对已确定的方向进行自审(工具包 § 1「执行 + 自审」)。每项反工具箱命中都需要品牌专属的理由,否则就予以移除。
按照 divergence-toolkit.md 底部的 v2 存储格式,在 DESIGN.json.extensions.divergence 中记录每项决策。
阶段 2.5 — 改进清单(仅限 Mode A)
在下游渲染任何变体之前,创建
stardust/prototypes/<slug>-improvements.md,列出在所捕获网站中观察到的 3–5 个具体弱点。这是变体 A 渲染所依据的简要说明:不规定具体要求(无视觉目标),而是描述现有网站与该品牌在 2026 年的合格实现之间的差距。变体 B 及后续变体将此清单视为最低要求(可以进一步改进,但不得与清单矛盾)。
当已确定的模式为品牌重塑时,跳过此阶段——改进清单以忠实继承品牌为前提,而品牌重塑是替换网站,而非修复网站。
**复用审计结果。**如果该来源对应的 stardust/audit/<domain-slug>/audit.json 已存在(由 stardust audit 技能生成),则将其中的设计发现作为候选改进项,而不是从头重新推导——在每项的证据引用中保留发现 ID。
以下具体性标准仍适用于每项沿用的发现。
列表内容
列表涵盖五类内容。每一项都应足够具体,以便后续的 prototype 形状简报可以按编号引用。
- 已过时的设计模式——指出具体模式及其所属时期,而非表达感受。
- 信息架构杂乱——层级不清、行动号召(CTA)弱或重复、转化漏斗支离破碎。
- 对比度问题、无障碍缺陷、密度问题——如有,从
brand-review.html的 Tensions 中提取(例如T-color-imbalance、T-img-alt-empty等)。 - 陈词滥调的惯例——品牌可以摆脱这些惯例,同时仍保持鲜明的品牌辨识度。
- 错失的机会——现有网站未能充分利用的机会。
各类别的示例:
reference/improvements-list.md。
具体性标准
当一项缺陷引用以下内容时,才算足够具体:
- 一项可衡量的观察结果(尺寸、比例、对比度值、数量或具名的张力 ID),来自各页面 JSON、品牌评审或品牌提取;
- 有问题的设计模式(须明确命名,例如“居中主视觉 + 双 CTA”);
- A 变体简报将采用的一项具体修复方案。
“主视觉需要改进”三项都不符合。“在宽度为 1440 的视口中,主视觉照片被裁切为 280×180,而捕获的原图支持 1440×810 的 16:9 全幅显示;A 变体修复方案:以全幅显示,并将标题移至左对齐的双栏叠加布局”则三项都符合。
格式
使用 Markdown,并按照 artifact-map 约定添加 _provenance 前置元数据块。每项都用带编号的列表条目,包含类别标签、缺陷描述和一行修复方案。完整示例见 reference/improvements-list.md § 格式示例。
停止条件
如果阅读品牌评审、各页面 JSON 和品牌提取后,Agent 仍无法列出 3 项符合具体性标准的缺陷,则停止。A 变体没有简报,“更好”的说法也就不成立。参见 § 失败模式 (d)。
Agent 不应牵强附会——“主视觉过时了”不算一项,“排版可以更现代”也不算一项。当捕获的网站在可观察维度上的执行水准已经很高时,列表确实可能为空。在这种情况下,应如实呈现空列表,并建议缩小范围(仅调整密度和对比度,或改为一个探索性变体,而不是三个)。
Phase 2.6 — 多变体分支(当 N > 1 时)
当用户请求 N 个变体(措辞包含 “3 个变体”、“4 个方向” 或类似表述)时,变体槽位按角色区分,而非按种子区分。根据 Phase 1 标记的 ia-fidelity 层级进行分支:verbatim 下创建表面调整分支 A1/A2/A3;reimagined 下采用角色区分的 A + B + C(忠实还原 + 改进 / 放大一项捕获的特征 / 放大另一项捕获的特征)。阅读 reference/multi-variant.md,并在确定任何变体前,遵循其中的变体角色约定、差异化约定(每对变体至少有 2 项实质性改动)、表面分支规则和拒绝渲染条件。
第 3 阶段 — 编写目标 PRODUCT.md
在项目根目录编写 PRODUCT.md,使用 impeccable 的
reference/init.md § Write PRODUCT.md 作为格式规范(而非要调用的运行时命令;init(原名 teach)会进行访谈)。直接编写是有意为之:到
direct 运行时,impeccable 访谈可能提出的所有问题,都已通过上文 stardust 的意图推理 + 差异解决流程得到解答。
文件顺序:先放 stardust 的 块 (根据 `../stardust/reference/artifact-map.md` § Provenance,与每个 stardust 编写的产物相同),然后是 `# Product`,再逐字放入 注释,这样 impeccable 才会将文件读取为当前产品记录,而不是旧记录。
宁可省略某个章节,也不要用泛泛的文字填充。需要填写的章节:
- Platform — 仅填写值
web。 - Users — 根据已解决的受众元组,以及从提取的品牌表层信息中获取的语气信号。
- Product Purpose — 根据用户的短语 + 提取的主视觉文案 + 已确定的语气,先写一行价值陈述,再写一行范围说明。
- Positioning — 根据提取的主视觉和证明性文案,写出网站提出的、邻近网站无法如实照搬的主张。如果文案未明确说明,标注为推断。
- Capabilities and Constraints — 已解决的约束集(
a11y-first、RTL-required、平台或内容约束),以及用户明确确定的任何产品事实。 - Brand Commitments — 有约束力的身份决策:已确定的
register轴、根据已确定的表达轴 + 语气 + 参考集合推导出的品牌个性(用户明确调整过的轴优先于继承值),以及反向参考——用户提出的反向参考 加上 与已确定方向相关的反工具箱护栏(例如,“现代化”会触发 Generic-2026-SaaS 外观护栏;明确列出,使 prototype 和 polish 能够落实)。 - Evidence on Hand —
stardust/current/下已收集的文案、图像和证明材料,附路径;以及后续工作不得虚构的缺失内容(未收集到客户评价、没有定价信息等)。 - Product Principles — 3-5 条长期有效的战略原则,每条对应一个具体的轴向变化。格式:一条以动词开头的原则,加一行阐述。不要写视觉方案;这些内容属于 DESIGN.md。
- Accessibility & Inclusion — 当约束集包含
a11y-first、RTL-required或类似约束时填写。否则省略,并沿用 impeccable 的默认设置。
如果无法有把握地根据输入填写某个章节,则标注 ``,并附上一句说明依据的句子。切勿凭空编造策略。
第 4 阶段 — 编写目标 DESIGN.md 和 DESIGN.json(仅限站点级)
在项目根目录编写 DESIGN.md,使用 impeccable 的
reference/document.md 作为格式规范——Stitch YAML frontmatter 加上按固定顺序排列的 6 个规范章节。
仅限站点级。 direct 编写的是设计系统,而非页面级部署。页面特定的布局决策应写入 prototype 第 1 阶段编写的 stardust/prototypes/<slug>-shape.md——参见 skills/prototype/reference/page-shape-brief.md。
边界是抽象角色与具体部署:
| 在 DESIGN.md / DESIGN.json(站点系统)中 | 在 <slug>-shape.md(页面部署)中 |
|---|---|
| Token 词汇表(颜色、字体排版、间距、圆角) | 每页的区块列表和顺序 |
| 语气规则(“Mixed-Case-Headlines”)、反向参考 | 每个区块的实际文案(来源于 current/pages/.json) |
| 反工具箱审查、差异追踪 | 页面专属的布局决策(“首页的主视觉区采用 5/3 分栏”) |
抽象组件词汇表:button-primary、button-secondary、card、input、badge、link(默认样式、密度、尺寸——不得包含页面专属尺寸或内容) | 区块级组件尺寸(the211Panel 在各视口中为 320×260,并带有停靠点) |
命名系统组件的角色(存在 header、footer、cta-band 模式) | 系统组件的部署(固定顺序的实际卡片标签、链接目标、文案变体) |
| 每个抽象组件的默认视觉样式 | 每页的组合方式(statRow 中包含实际文案“100 YEARS · 18,400 PEOPLE HOUSED · …”) |
| 语气示例(该做与不该做、语气范例) | 每页的交互模型和关键状态 |
以下是不得出现在 DESIGN.md / DESIGN.json 中的具体示例:
- 系统组件模式的实际卡片标签。
- 区块级像素尺寸、停靠点、特定断点的宽度。
- 统计数字、地址、引言、人物姓名。
- “首页的主视觉区是 X”——这属于首页部署。
- 每页的文案变体(“捐赠页面上的 CTA 文案为 Y”)。
如果重新设计要求指定区块级尺寸或看起来像全站设定的实际标签(“每页右下角都停靠一个 211 面板”),请在 DESIGN.json
中将其编码为抽象角色(例如 extensions.systemComponentRoles.persistent-help,包含用途/位置类别,但不含实际文案或尺寸),并让每页的形状说明指定其部署方式。
Token 来源:
-
colors——来自选定的调色板(palette-picker.md 输出), 或通过角色重命名继承的调色板。角色名称必须 符合 toolkit § 4(贴合品牌,不得仅使用Primary/Secondary/Alarm等作为角色名称)。 -
typography——来自选定的字体组合。字号根据 已确定的表现力轴进行缩放(浓烈 → 比例 ≥ 1.333;明确 → 比例 1.25;克制 → 比例 1.125-1.2)。标题与正文的 对应关系继承自字体组合。 -
rounded——根据提取的品牌表面borderRadius.primary模式确定,除非设计方向将独特性转向singular(此时根据字体组合的同调字体重新推导)。 -
spacing——以 4pt 为基础的比例;sectionPadding根据 Phase 1 中标注的密度等级确定(reference/intent-dimensions.md§ 4):airy→sectionPadding.desktop: 96px、tablet: 72px、mobile: 48pxbalanced→sectionPadding.desktop: 64px、tablet: 48px、mobile: 32px← 品牌语域默认值packed→sectionPadding.desktop: 48px、tablet: 36px、mobile: 24px← 产品语域默认值
Agent 不会在此处重新询问密度问题——该等级已在 Phase 1 中确定(当短语未能推动轴向时只询问一次;若未得到回答,品牌语域默认采用 balanced)。 根据标注确定性地选取数值。 硬性下限约束。 当捕获的页面清单显示
5 个版块或 >2 条受众路径(依据
reference/intent-dimensions.md§ 4 →“品牌风格多受众网站的 硬性下限”)时,所有变体(包括差异度最高的变体)的sectionPadding.desktop均限制在 ≤ 64px 且 ≥ 40px。如果 Phase 1 在触发条件满足时仍标记为airy,则在编写令牌前指出这一冲突——“已选择密度层级airy,但捕获的清单触发了多受众硬性下限;请选择 (a) 覆盖下限(在 direction.md 中设置density: airy (user-pinned)),或 (b) 接受下限(sectionPadding 上限为 64px)。” 如果用户未回复,默认选择 (b)。 -
components— 4-6 个规范组件(button-primary、button-secondary、card、input、badge、link),其值 基于提取的品牌表层componentStyle填充,并根据方向调整。
使用以下内容编写 DESIGN.json(schemaVersion 2):
-
extensions.colorMeta、typographyMeta、shadows、motion、breakpoints— 从与 DESIGN.md 相同的来源填充。motion区块承载风格选择(可在原型阶段应用电影感动效):"motion": { "register": "arrival | kinetic-display | live-systems | editorial | kinetic-grid", "registerRationale": "<one-line citation back to PRODUCT.md Brand Personality trait that selected this register>", "easings": { "entrance": "...", "transition": "...", "expo": "..." }, "durations": { "enter": <ms>, "stagger": <ms> }, "parallax": { "translate": <vh>, "fade": <0-1>, "rangeStart": <%>, "range": <%> } }根据
skills/prototype/reference/motion-registers.md§ Selection heuristic 中的风格选择启发式进行选择,并读取已确定的PRODUCT.md§ 品牌个性:个性特征(任一匹配) 风格 civic-formal+(institutional或place-led)arrivalsignage-led或wayfinding-first或display-typography-signaturekinetic-displayoperationally-transparent或data-led或dashboard-registerlive-systemseditorial或slow-paced或publication-registereditorialproduct或SaaS或transactional或modular-cataloguekinetic-grid(含义模糊/无明确匹配) arrival各风格的令牌默认值取自
skills/prototype/reference/motion-registers.md§ The five registers;除非用户在意图推理期间提供了覆盖值,否则direct会将这些值原样复制到motion区块中。registerRationale字段记录一行理由,供审核者检查选择依据。direct不会应用动效——动效会在原型阶段通过--cinematic应用。direct仅选择风格。 如果页面重新设计不需要动效,可以不设置register;之后在电影感原型渲染时会询问,或根据启发式进行选择。按变体放置(当 N > 1 个变体时)。
motion区块应写入特定变体的DESIGN-<id>.json文件, 而不是站点级的DESIGN.json——未设置register的变体将以静态方式渲染。参见reference/multi-variant.md§ 按变体放置动效。 当用户的意图短语包含明确的运动方向 (“make it cinematic”“feel alive”“move like signage”)时,direct会选择对应的表达风格,并在registerRationale中将来源记为"user-phrase: <verbatim>"。 -
extensions.divergence— 根据divergence-toolkit.md中的 v2 存储结构 保留完整的审计轨迹。包含忠于品牌的反转日志(参见reference/direction-format.md§ Divergence inputs), 记录保留纯色或十六进制格式的情况。 -
extensions.componentStyle— v1 的抽象字段 (buttons、cards、inputs、dualCTAPattern)。每个组件的 默认处理方式,不包含页面级尺寸或实际文案。 -
extensions.systemComponentRoles— 命名跨页面模式(例如persistent-help、cta-band、header、footer)的抽象角色。每个角色都包含用途、位置类别 以及任何全站约束——不包含实际文案、尺寸 或各视口的停靠点(这些属于页面部署,记录在<slug>-shape.md中)。 -
extensions.voice— 根据_brand-extraction.json中的语气样本和 确定的语调提取的建议做法和禁忌。 -
narrative.northStar、overview、keyCharacteristics、rules、dos、donts— 根据已确定的方向生成。Toolkit § 7 中的 Optional House Standards 写入此处的narrative.rules[]。
components[] 中的每个组件 HTML/CSS 代码片段都必须
独立完整,使用 ds- 类名前缀,并遵守 impeccable 的
硬性规则(仅使用 OKLCH,不使用纯黑/纯白、不使用玻璃拟态、不使用
侧条纹、不使用渐变文本;品牌表达风格的字号比例 ≥ 1.25)。
IA 优先级保留审计(模式 A)
撰写完令牌后、将其写入变体 DESIGN
文件之前,按照
reference/intent-dimensions.md § 8 执行 IA 优先级保留审计。对于每个满足
触发条件的已捕获信号(商业转化、搜索主导的 IA、
捐赠漏斗、危机入口、受众分流),在 DESIGN.json 中记录一条
extensions.iaPriorities[]:
[
{
"signal": "crisis-affordance",
"evidence": "pages/home.json#landmarks[hero] contains heading 'Looking for immediate shelter?' + phone 801-990-9999",
"preserveAs": "first-viewport",
"scope": "site-wide",
"mutability": "movable"
}
]
每条记录都是下游 prototype 和 migrate 必须遵守的约束——如果某个变体的首页形态简报未在首屏中体现危机
入口,则该变体未通过审计,必须予以拒绝。
此审计是 § 8 的结构性保障;没有它,保留 IA
优先级就只是指导原则,而非硬性约定。
mutability 字段反映 Phase 1 中的 ia-fidelity 标记(参见
reference/intent-dimensions.md § 9):在 verbatim 模式下为
locked(变体完全不得调整优先级——A1/A2/A3 是表层分支),
在 reimagined 模式下为 movable(变体可以降低或提高优先级,
也可以调整其部署形态,但仍须满足 § 8 的底线要求)。
该字段仅在 Phase 4 标记一次,是 prototype 读取时的事实来源。
多变体 DESIGN 文件(N > 1 时)
启用 Phase 2.6 时,Phase 4 会写入 PRODUCT.md(共享文件),
以及每个变体各自的 DESIGN-{A,B,C,…}.{md,json},而不是一组
单独的文件;每个变体都会继承共享的 extensions.iaPriorities[]
审计记录。在 rebrand 模式下,PRODUCT.md 也可能因变体而异。
参见 reference/multi-variant.md § Multi-variant DESIGN files。
阶段 5 — 编写 direction.md 并更新状态
按照 skills/direct/reference/direction-format.md 编写
stardust/direction.md。完整记录推理过程:短语、复述、调整、
差距、问题与答案、已确定的维度、分歧输入、拟议的命令
序列、用户确认,以及所有采用默认值的假设。重新确定方向时,
将内容作为新章节追加到文件中;保留先前方向作为历史记录。
更新 stardust/state.json:
direction.resolvedAt= 当前时间direction.phrase= 用户的原始短语direction.directionFile="stardust/direction.md"- 对范围内的每个页面:将
status从extracted改为directed - 使用
--re-direct时,对每个已处于prototyped/approved/migrated状态的页面:设置stale: true,并设置staleReason: "direction changed at <ts>"。不要更改 状态本身;磁盘上的产物仍然有效,只是与当前方向不一致。
打印一屏摘要报告,并推荐下一步:
direction resolved
==================
Phrase: "make it more expressive for a young audience"
Audience: Gen Z college / first-job (resolved via Q1)
Register: brand (inherited from current/PRODUCT.md)
Movements:
expressive axis restrained -> committed
distinctiveness familiar -> distinctive
tone serious -> playful
density (unchanged)
audience (resolved: Gen Z college / first-job)
Divergence:
seed 1970s x Riso print x zine x monochrome-tint
font deck zine-maximalist
palette "Brutalist Dawn" (picked from library)
Wrote:
PRODUCT.md, DESIGN.md, DESIGN.json
stardust/direction.md
State:
25 pages: extracted -> directed
0 stale prototypes (none exist yet)
Next: $stardust prototype (defaults to home page)
输出
| 路径 | 用途 |
|---|---|
PRODUCT.md | 目标策略(impeccable 格式)。在模式 A 下,若 N > 1,则各变体共用。 |
DESIGN.md | 目标视觉系统(Stitch frontmatter + 6 个章节)。仅用于单变体运行。 |
DESIGN.json | 包含扩展项(divergence、componentStyle、voice、iaPriorities)和叙述内容的附属文件。仅用于单变体运行。 |
DESIGN-{A,B,C,…}.md | 用户请求 N > 1 个变体时使用的各变体 DESIGN 文件(阶段 2.6 生效)。 |
DESIGN-{A,B,C,…}.json | 与 .md 文件对应的各变体 DESIGN 附属文件。 |
stardust/prototypes/<slug>-improvements.md | 改进列表(仅模式 A,在阶段 2.5 编写)。这是变体 A 的关键产物。 |
stardust/direction.md | 已确定的方向 + 完整推理过程 + N > 1 时各变体的确定结果。 |
stardust/state.json | 更新方向、各页面状态变更,以及 N > 1 时的 direction.variantMode + direction.variants[]。 |
失败模式
- 未提取到状态。 中止并建议运行
$stardust extract。 - 经过两次提问后,短语仍然过于含糊。 将部分推理保存到
stardust/direction.md的# Pending部分,要求用户进一步细化;不要根据不完整的推理编写PRODUCT.md/DESIGN.md/DESIGN.json。 - 重新定向时已有获批或迁移后的页面。 标记为过时前务必确认。此标记对用户可见,并且可以撤销(成功重新运行 prototype 或 migrate 后会自动清除),但重新定向会使用户可能已签字认可的工作失效。
- 反工具箱审查移除了过多设计手法。 如果审查剔除无法论证的命中项后,确定的方向退化成默认方案,请告知用户,并在写入 tokens 前重新询问参考锚点。
- (b) 品牌信号不足以支持 N 个变体。 捕获的界面中可放大的鲜明特征少于 3 个(或为
signal-thin)→ 在 Mode A 下拒绝 N ≥ 3,并建议改为 1–2 个变体;完整约定见reference/multi-variant.md§ Failure mode。 - (c) 硬性规则冲突。 当 Mode A 处于启用状态,并且用户的短语要求违反 Mode A 的固定要求时(例如,迁移模式下用户要求 “完全不同的调色板”,但没有传入
--rebrand),请停止。明确指出冲突:“你要求保留品牌,同时更改调色板——这两者无法兼顾。你的意思是 (a) 保留当前调色板,只更新执行效果,(b) 重新打造品牌 (--rebrand) 并采用新调色板,还是 (c) 使用 Mode A 对调色板进行定向调整(只为单个角色重新着色,其余保持固定)?” 等待用户明确答复。 - (d) 改进项列表为空。 如果 Phase 2.5 找到的、达到具体性要求的弱点少于 3 个,请在渲染任何变体前停止。变体 A 的设计说明依赖此列表;没有列表,“更好”的说法便无法成立。坦诚告知用户:“在可观察的维度上,捕获的网站已经达到了合格的执行水平——变体 A 只能调整间距和对比度。” 询问用户是否要 (a) 以缩小后的范围继续(仅调整密度和对比度),(b) 提取更多页面(
extract --cap 25或更高),以发现更多弱点,或 (c) 转为重新打造品牌模式 (--rebrand),该模式不受品牌保真度下限的约束。
准备模式(--prep)
使用 --prep 调用时,direct 会执行扩展流程,完成 migrate 所需的清单数据结构:类型目录确认、模块目录定稿、颜色预留、更全面的方向重新评估,以及站点级元数据默认值。请阅读 reference/prep-mode.md,并在标准流程的基础上遵循其中的说明。探索模式的运行方式不变。
添加变体模式(--add-variant)
当用户已批准(或已渲染)变体 A,并要求添加 B / C 等备选方案时,--re-direct 的改动范围过大——用户是在扩展现有方向,而非更改方向。--add-variant <name> 会跳过 Phase 1–2(沿用当前方向的模式、种子、调色板和基础类别),根据变体角色约定确定新变体的角色,并写入 DESIGN-<name>.{md,json} 以及 direction.md 中的 ## Variant <name> 部分,不会将任何页面标记为过时。请先阅读 reference/add-variant.md,并遵循其中的流程、父子关系与各字段继承规则,以及失败模式,再编写任何内容。
参考资料
skills/stardust/reference/intent-dimensions.md— 8 个维度 (7 个维度加上 § 8 IA 优先级保留;当捕获到商业转化、危机或受众引导信号时,将触发 Mode A 约束)。skills/stardust/reference/intent-reasoning.md— 流程。skills/stardust/reference/intent-examples.md— 完整示例。skills/stardust/reference/impeccable-command-map.md— 何时使用各个 impeccable 命令(用于制定计划时)。skills/stardust/reference/reference-research.md— 研究优先的锚定流程(refero MCP → WebSearch → 种子回退),供 Mode B 和默认模式使用;包含证据形式和预算。skills/stardust/reference/divergence-toolkit.md— 反平庸输入,以及审计轨迹的 v2 存储格式。包含多变体操作的反工具箱补充项(C-cliff overshoot、Anonymous middle variant、Variant homogeneity)和通用强化项(Fabricated content、Hero text on photographic background without contrast scrim、Editorial-register vocabulary applied to non-editorial brands)。skills/stardust/reference/artifact-map.md— 溯源格式。reference/direction-format.md—stardust/direction.md的架构。reference/palette-picker.md— 调色板解析流程。reference/prep-mode.md—--prep扩展流程(溯源验证、类型/模块目录、颜色预留、元数据)。reference/add-variant.md—--add-variant流程(步骤、变体从属关系、逐字段继承、失败模式)。reference/multi-variant.md— N > 1 分支:变体角色约定、差异化约定、界面分支、C-cliff。reference/improvements-list.md— Phase 2.5 改进列表的完整示例(类别和格式)。reference/mode-a-plus.md— 有限的品牌相关优化。reference/cross-site-brand-inputs.md— 设计供体和同系列来源的证据规则。