web-artifacts-builder:用 React 栈让 Agent 产出可交付的前端 HTML 产物

前言

在 AI 编程工具里让 Agent「画个页面」,你多半拿到过这样的东西:一个几百行的单文件 HTML,样式靠内联 CSS 硬凑,组件一多就乱,状态一复杂就崩。稍微上点强度——多 Tab 切换、表单联动、弹窗抽屉——Agent 往往要么反复改错,要么堆出一坨难以维护的 JSX 字符串。

如果你希望 Agent 按现代前端工程的方式干活,而不是临时拼页面,Anthropic 官方仓库里的 web-artifacts-builder Skill 值得装一份。它把 React 18、TypeScript、Vite、Tailwind CSS、shadcn/ui 和打包脚本打包成一套可重复的工作流:初始化脚手架、正常写组件、最后产出一个自包含的单 HTML 文件,方便在对话里直接预览或分享。

这是什么

web-artifacts-builderAnthropic skills 仓库 中的示例 Skill,面向「需要多组件、状态管理或 shadcn/ui 组件库」的复杂 Web 产物,不适用于简单的单文件 HTML/JSX 场景。

官方定位很直白:用一套脚本帮 Agent 搭建完整前端项目,开发完成后打包成 bundle.html,可直接作为 claude.ai 的 Artifact 展示;在 Cursor、Claude Code 等支持 Agent Skills 的工具里,逻辑同样适用。

技术栈(官方 SKILL.md 原文):

  • React 18 + TypeScript + Vite
  • Tailwind CSS 3.4.1 + shadcn/ui(预装 40+ 组件)
  • Parcel + html-inline(打包为单 HTML)

核心功能与亮点

1. 一键初始化现代前端脚手架

Skill 自带 scripts/init-artifact.sh,执行后会:

  • pnpm create vite 创建 React + TypeScript 项目
  • 自动检测 Node 版本(要求 Node 18+;Node 18 会 pin Vite 5.4.11,Node 20+ 用最新 Vite)
  • 配置 Tailwind CSS、PostCSS、shadcn/ui 主题变量
  • 解压预置的 shadcn-components.tar.gz,一次性装入 accordion、dialog、form、table、tabs 等 40+ 组件
  • 配置 @/ 路径别名与 Vite resolve

开发者熟悉的栈,Agent 写起来也有章可循。

2. 单文件 HTML 打包

开发完成后运行 scripts/bundle-artifact.sh

  • 用 Parcel 构建(支持路径别名)
  • 通过 html-inline 把 JS、CSS、依赖全部内联
  • 输出根目录下的 bundle.html,体积会随功能增长,但无需额外服务器即可在浏览器打开

3. 明确的设计约束

官方在 SKILL.md 里专门提醒:避免「AI slop」式审美——过度居中布局、紫色渐变、统一大圆角、Inter 字体泛滥。这对产出「能看、能用」的界面很有帮助。

4. 与简单 HTML 产物的边界

Skill 的 description 写得很清楚:需要状态管理、路由或 shadcn/ui 组件时才启用;单页静态展示用普通 HTML/JSX 更轻。别用大炮打蚊子。

安装与启用

Claude Code

Anthropic 官方 README 给出的方式:

/plugin marketplace add anthropics/skills
/plugin install example-skills@anthropic-agent-skills

安装 example-skills 插件后,对话里提到相关需求即可触发;也可直接说明「使用 web-artifacts-builder Skill」。

Claude.ai

官方说明:仓库中的示例 Skill 已对付费计划开放;自定义 Skill 上传见 Using skills in Claude

Cursor

Cursor 从项目或用户目录自动发现 Skill。把官方目录整份放到:

  • 项目级:.cursor/skills/web-artifacts-builder/
  • 全局:~/.cursor/skills/web-artifacts-builder/

目录内需包含 SKILL.md 以及 scripts/(含 init-artifact.shbundle-artifact.shshadcn-components.tar.gz)。Agent 会根据 description 自动匹配,或在 Agent 对话里输入 /web-artifacts-builder 手动调用。

克隆方式示例:

git clone --depth 1 https://github.com/anthropics/skills.git /tmp/anthropics-skills
cp -r /tmp/anthropics-skills/skills/web-artifacts-builder .cursor/skills/

环境要求

  • Node.js 18 及以上(init 脚本会检测并拒绝更低版本)
  • pnpm(脚本检测不到时会尝试 npm install -g pnpm

典型用法

官方 SKILL.md 定义的标准流程如下。

第一步:初始化项目

在 Skill 的 scripts 目录所在环境中执行(Agent 通常会代劳):

bash scripts/init-artifact.sh my-dashboard
cd my-dashboard

完成后可本地预览:

pnpm dev

组件导入方式与常规 shadcn/ui 项目一致:

import { Button } from '@/components/ui/button'
import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'

第二步:开发产物

编辑 src/ 下文件,按 React 组件方式组织页面。需要路由、全局状态时,在生成的 Vite 项目里按常规方式添加依赖即可——Skill 的价值在于脚手架和打包链路已就绪,而不是限制你只能写单页。

第三步:打包为单 HTML

在项目根目录(需有 index.html)执行:

bash scripts/bundle-artifact.sh

成功后会生成 bundle.html。本地验证:

# 直接用浏览器打开 bundle.html

第四步:交付与可选测试

bundle.html 提供给用户或在对话中展示。官方说明:测试是可选步骤,默认不必在交付前跑 Playwright/Puppeteer,以免增加延迟;若用户反馈有问题再补测。

适用场景与注意事项

适合:

  • 仪表盘、配置面板、多步骤表单、带 Tab/Dialog 的交互式小应用
  • 希望产出物能在浏览器单文件打开、便于分享预览
  • 团队已在用 React + Tailwind + shadcn/ui,希望 Agent 输出与现有审美/组件体系一致

不太适合:

  • 纯静态落地页、单组件展示(官方明确建议用简单 HTML/JSX Skill)
  • 无 Node 环境、无法运行 shell 脚本的受限环境
  • 需要长期维护、多人协作的大型工程(这更适合正规仓库 CI/CD,而非 Artifact 打包)

注意:

  1. bundle.html 会把依赖全部内联,功能复杂时文件会变大,需权衡。
  2. init 脚本依赖同目录下的 shadcn-components.tar.gz,复制 Skill 时务必保留完整 scripts 目录。
  3. Anthropic 仓库 README 有免责声明:示例 Skill 用于演示与教育,Claude 实际行为可能与 Skill 描述存在差异,上线前请在本地实测
  4. 该 Skill 最初面向 claude.ai Artifact;在 Cursor 等工具中,最终仍是生成 bundle.html 或可在 pnpm dev 下开发的 Vite 项目,按你的交付方式选用。

小结

web-artifacts-builder 解决的不是「会不会写 HTML」,而是「复杂前端产物能否按工程化方式构建并一键打包」。React + shadcn/ui 栈对多数前端开发者没有学习门槛,Agent 也能在明确脚本约束下少犯结构性的错。

官方地址:

https://github.com/anthropics/skills/tree/main/skills/web-artifacts-builder

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜