关于 craft
ui-craft 的子技能,按既定配方和验收检查构建仪表盘、落地页及身份验证界面。它涵盖规划、实现和验证,包括界面状态与键盘支持。
主要功能
- 01提供仪表盘、落地页和身份验证配方
- 02加载匹配的界面规格
- 03规划构图与主题
- 04构建界面状态和键盘支持
- 05执行配方验收检查
适用场景
- 01按既定配方构建仪表盘
- 02选择构图方案制作落地页
- 03实现登录或注册界面
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ educlopez/ ui-craft --skill craft安装后在 Claude Code 中输入/craft确认已加载。
详细介绍
背景: 此子技能是更广泛的 ui-craft 技能的一个视角。如果也安装了 ui-craft 技能,请先阅读其 SKILL.md,了解 Discovery + Anti-Slop + Craft Test,然后再应用以下特定视角。
加载 ui-craft 技能。此命令会构建——最终生成可正常运行、并通过配方验收标准的代码。
可用配方:dashboard → references/recipe-dashboard.md · landing → references/recipe-landing.md · auth(登录/注册)→ references/recipe-auth.md。如果 $ARGUMENTS 指定的界面尚无配方(设置、文档、电商),请说明这一点,并使用最接近的参考资料回退到标准构建模式——不要凭空编造配方。
步骤 0 — 加载规范(如有)
在执行任何其他操作之前:如果 .ui-craft/spec.md 存在,且其中包含一个 ## Surface: <name> 部分,其名称与 $ARGUMENTS 匹配,则立即加载该部分。对于后续所有步骤,该部分中选定的布局、组件清单、状态矩阵和验收标准均优先于配方默认值。注明哪些验收标准来自规范,哪些来自配方默认值。
步骤 1 — 输入
运行 Stack Detection + Discovery Step 1(现有设计令牌、.ui-craft/brief.md)。
加载 references/craft-intent.md。
在一个简短提示中询问配方的 Step 0 问题,并预先填入 $ARGUMENTS 或 brief 中已有的答案。如果用户拒绝、说“你来决定”,或已在本次会话中回答过:默默采用配方默认值,并说明采用了哪些默认值。不要重复提问,也不要因此停下。
除非用户或 brief 另有指定,否则根据该界面类型的 craft-intent 默认值设置 DESIGN_VARIANCE。
步骤 2 — 品味梳理 + 锁定计划
在编写任何代码之前,输出 Craft Read(craft-intent §1 中规定的一行内容)。包括:界面类型、受众、产品语言还是营销语言、主题/强调色、变化度、标志性亮点。
根据答案确定:布局 + 主题预设(或现有设计令牌)+ 信息密度 + 变化度 + 标志性亮点。如果没有品牌方向,轮换一个维度(craft-intent §6),并说明是哪一个。
落地页界面——推演首屏,不要直接挑选。 调用 fold_candidates MCP 工具,并将 .ui-craft/brief.md 中 ## Fold classes used 下已列出的所有布局类别作为 used 传入。从返回的三个候选中确定一个,并明确说出该类别所要求的取舍,因为正是这种取舍让页面拥有自己的风格。
不要把候选方案折中糅合在一起,也不要因为左右布局能包容所有内容,就退回到左侧文本、右侧视觉元素的分栏方案。它看似包容一切,实则什么都没有承诺:此技能的 10 次盲建中,有 10 次都采用了这种首屏布局,涉及两个互不相关的产品;而 18 个参考落地页中,只有 3 个使用了这种布局。
如果 MCP 服务未接入,请说明这一点,并从 scripts/fold/classes.mjs 中挑选 brief 尚未使用过的类别——重点在于抽选,而不在于工具。
输出一份简短计划(5–7 行):Craft Read、布局类别及其取舍、主题、标志性亮点、首屏内容、延后处理的内容——然后继续,除非用户提出异议。
步骤 3 — 构建
严格遵循配方的构建顺序(设计令牌 → 外壳 → 主视觉层级 → 主要区域 → 其余层级 → 状态 → 键盘操作 → 完成)。加载每个步骤指定的参考资料,以及适用于此界面类型的 craft-intent.md 模式。在本轮构建中实现标志性亮点——不要留到之后。
状态和键盘操作都是构建步骤,不是润色工作——缺少空状态/加载状态/错误状态的界面尚未完成。
第 4 步——验收标准
按照配方中的验收清单检查已构建的界面。报告之前,修复所有未勾选的项目——这条标准就是完成的定义,而非建议。
**视觉自检(可使用截图工具时):**如果可以使用 Playwright/浏览器 MCP 或类似工具,请以桌面宽度截取已构建界面的截图,并在报告之前查看——渲染结果能暴露代码审查无法发现的间距冲突、层级模糊和空白区域。根据截图运行相似提示自测(craft-intent §1):如果把品牌换成该类别中的另一个品牌,这个页面原样照搬还能通过吗?如果能,请在报告前强化其标志性设计。没有可用工具 → 静默跳过,绝不因此受阻。
落地页界面——检查你实际构建的首屏。提供页面服务,并调用 check_fold,传入 URL、你绘制的类别作为 expected_class,以及你决定投入的高成本细节。它会在你已有的浏览器中渲染页面,并返回截图及其解读。其中有两项值得采取行动:偏移,表示你绘制的是一种类别,构建的却是另一种——通常是 split,因为模型会在没有提示时回到这种首屏;还有总体评估指出首屏毫无突出之处,这不是故障,而是提示你查看截图,因为它也会标记 18 个参考落地页中的 7 个。
它返回的其他所有内容都是没有结论的测量结果,应按此理解。只有两项不变量会被评判,而且都不是几何方面的。
**记录投入内容:**将你构建的类别追加到 .ui-craft/brief.md 中的 ## Fold classes used,如果该部分不存在,则创建它。这个列表能让本项目下一次执行 /craft 时绘制不同的内容。没有它,绘制就没有记忆,项目会再次趋于一致。
向用户报告:
- Craft Read(重复)
- 绘制的构图类别,以及为此做出的牺牲
- 构建了哪项标志性设计押注
- 清单结果
- 用户明确豁免的任何项目
先说明意图,不要一上来就罗列发现。本轮只对已修复的问题使用 Review Format 表格。
当 CRAFT_LEVEL ≥ 8 时,完成完整的 /finalize 检查,而不是仅执行配方要求的最低轮次。
下一步:/finalize——运行发货前检查(第 3 级)。如果此项目还没有 brief,则先运行 /brief(第 2 级)。