Token导航 LogoToken导航

Agent Skill · 前端设计

michelangelo(michelangelo 命令行)

michelangelo 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

michelangelo 是前端设计类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为操作浏览器;许可证信息还不明确,第三方扫描已通过,按安装量在前端设计类的 10,216 个 Skill 里排第 6,596。

总安装 485周安装 20GitHub Stars 10下载 158核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:michelangelo(michelangelo 命令行)
来源仓库:https://github.com/sky-flux/skills
仓库路径:skills/michelangelo
安装命令:
npx skills add https://github.com/sky-flux/skills --skill michelangelo
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/sky-flux/skills --skill michelangelo

这个 Skill 是做什么的

前端设计类 Skill 关注页面结构、视觉规范和组件写法,输出通常是可运行的界面代码。

用于处理 GitHub 仓库、Issue 和 Pull Request 协作信息,适合代码变更管理场景。可整理仓库状态、跟踪代码变更或协助协作事项,需结合具体任务目标使用。安装前建议确认权限范围和维护状态,避免触发不必要的联网或文件操作。

通过 npx 命令从指定仓库安装,适用于 Codex、Claude、Cursor 等宿主环境。实际用法需参考原始 README 和 SKILL.md,确保理解其能力边界和执行限制。

来源仓库内路径:skills/michelangelo

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/sky-flux/skills --skill michelangelo;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要操作浏览器,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

michelangelo 怎么安装?

在终端执行 npx skills add https://github.com/sky-flux/skills --skill michelangelo。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

michelangelo 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

michelangelo 需要什么权限?

权限级别是操作浏览器。该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

michelangelo 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

michelangelo 用的人多吗?

公开数据是累计安装 485 次,近一周安装 20 次,下载 158 次,GitHub 10 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

michelangelo 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理前端设计类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

前端设计类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
frontend-design

前端设计 · Codex、Claude

8,823,360126,072只读MIT通过
vercel-composition-patterns

Vercel 组合模式 · Codex、Claude

3,858,81625,893需要联网MIT通过
vercel-react-native-skills

Vercel React native skills 前端 · Codex、Claude

2,468,66425,878只读MIT通过
adapt

adapt 搜索 · Codex、Claude

2,027,04023,125操作浏览器未明确通过
bolder

bolder 分析 · Codex、Claude

2,004,28823,130只读未明确通过
michelangelo

michelangelo 命令行 · 本页

48510操作浏览器未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Michelangelo

"I saw the angel in the marble and carved until I set him free."

Two modes, one design philosophy. Master the design principles before writing a single line of code.


Step 0: Determine Output Mode

User saysMode
"make a prototype" / "preview" / "show me" / "quick look"Mode B: HTML Prototype
"generate React project" / "shadcn" / "Tailwind" / "write code" / "real project"Mode A: React + Tailwind + shadcn + Visual Validation
AmbiguousDefault to Mode B, then prompt whether to generate Mode A after completion

Mode A and Mode B both include a visual validation loop: after generating code, use Playwright MCP to screenshot → review → iterate until the result looks right. This is what makes Michelangelo surpass design tools like pencil.dev — direct code output with a visual feedback loop, no intermediate file format.


Step 0.5: Playwright MCP Detection

Before any visual validation, check if Playwright MCP is available.

Detection

Try calling any Playwright MCP tool (e.g. browser_navigate). If it responds → available, proceed normally.

If unavailable, detect the current agent by checking which config files exist:

# Claude Code
claude mcp list 2>/dev/null | grep -i playwright

# Cursor
cat .cursor/mcp.json 2>/dev/null | grep -i playwright

# Gemini
cat .gemini/settings.json 2>/dev/null | grep -i playwright

# Generic: check project .mcp.json
cat .mcp.json 2>/dev/null | grep -i playwright

Installation

Universal approach — add to .mcp.json in the project root (works with Claude Code, Cursor, Gemini, Windsurf, most agents):

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["@playwright/mcp@latest"]
    }
  }
}

Agent-specific CLI commands:

AgentCommand
Claude Codeclaude mcp add playwright -s user -- npx @playwright/mcp@latest
OpenCodeopencode mcp add playwright -- npx @playwright/mcp@latest
Cursor / Gemini / WindsurfAdd the JSON block above to the agent's config file

If not installed — ask for authorization

"Visual validation requires Playwright MCP, which is not currently installed. I can add it now by creating/updating .mcp.json in the project root. May I do this?"
  • Yes: write the .mcp.json config block, then proceed with visual validation
  • No: skip visual validation, deliver the code only, and note that the user can install Playwright MCP later

Do not silently skip visual validation — always inform the user if it's unavailable.


Step 1: Design Thinking (Must Complete Before Writing Code)

1.1 Determine Design Type

TypeCharacteristicsCanvas WidthContent AreaHeight
Landing PageMarketing/product intro, requires scrolling1440px1200px centeredLong page, 80-96px between sections
DashboardData/admin, sidebar + content area1440px100% - sidebar(240px)Full screen 900px
Single ScreenSingle task: login, form1440px (desktop)Centered card 400-480pxVertically centered
Mobile ScreenMobile App page390×844Full width, padding 16pxIncludes status bar + safe area
Mobile (Compatible)Compatible with older devices375×812Full widthiPhone SE baseline
TabletiPad etc.768-1024px720-960pxResponsive
Mini ProgramWeChat Mini Program375×812 (or 750×1624 @2x)Full widthIncludes nav bar 88rpx
Email TemplateEDM/marketing email600px600px1500-2000px
Social ImageWeChat/Xiaohongshu/TikTokBy platformSee references/design-sizes.md—

For detailed device sizes, social media sizes, and component sizes, see references/design-sizes.md.

⚠️ "Mobile login page" = a real App interface at 390×844, not a desktop page with an embedded phone mockup frame.

1.2 Define Design Personality

Every project must choose a clear personality direction — this determines all values for fonts, colors, border radius, and spacing:

PersonalityFontBorder RadiusColor ToneWhitespace
Serious/EnterpriseSerif heading + sans-serif bodySmall (4-8px)Deep blue/navyGenerous
Friendly/SaaSRounded sans-serif (e.g. DM Sans)Medium (8-12px)Blue/purple/cyanModerate
Bold/CreativeHeavy geometric typefaceLarge or none (16px/0)High-saturation contrastExtreme
Elegant/LuxurySerif + thin weightSmall (4px)Black/gold/off-whiteVery generous
Playful/YouthfulRounded/handwritten feelLarge (16-24px)Vibrant clashing colorsTight

A personality is non-negotiable. UI without a defined personality = generic AI-generated look.

1.3 Anti-Pattern Quick Check

Run through this mentally before writing code (see references/design-guide.md section 11 for details):

  • ❌ All elements given equal importance (no visual hierarchy)
  • ❌ Too many border dividers (use background contrast/spacing/shadows instead)
  • ❌ Colors distributed evenly (should follow 60-30-10 ratio)
  • ❌ Generic blue color scheme
  • ❌ Large blocks of Lorem ipsum placeholder text
  • ❌ All buttons using the same style (missing primary/secondary/tertiary hierarchy)
  • ❌ Pure white background + pure black text (adjust color temperature slightly)
  • ❌ Arbitrary spacing (should be based on 4px/8px grid system)
  • ❌ All cards identical in size and style

1.4 Choose an Icon Library

Don't default to Lucide every time. Lucide has become the default icon set for AI-generated UI, leading to visually homogeneous products. Choose based on project needs:

Use CaseRecommendedPackage / CDN
shadcn/ui defaultLucide (1,500+)lucide-react · CDN: unpkg.com/lucide@latest
Needs visual weight varietyPhosphor (9,000+, 6 weights including duotone)@phosphor-icons/react · CDN: unpkg.com/@phosphor-icons/web@latest
Dashboard / many iconsTabler (5,900+ free)@tabler/icons-react · CDN: cdn.jsdelivr.net/npm/@tabler/icons@latest
Avoid "AI look"Iconoir (1,600+) or Remix Icon (2,800+ line+fill)iconoir-react / remixicon-react
Tailwind nativeHeroicons (316, small and refined)@heroicons/react
One package for all librariesIconify (200,000+ across 100+ libraries)@iconify/react
Enterprise/B2B feelCarbon Icons (IBM)@carbon/icons-react
Largest multi-style library (paid)Hugeicons (46,000+, 10 styles)hugeicons-react

See references/icon-libraries.md for full installation commands and usage examples.


Step 2: Visual Hierarchy System (The Core of the Core)

Visual hierarchy is the deciding factor in design quality. Not all elements are equally important.

2.1 Three Tools to Control Hierarchy

Don't rely on font size alone! Use all three simultaneously:

DimensionPrimary ContentSecondary ContentSupporting Content
Font sizeLarge (20-48px)Medium (14-16px)Small (12-13px)
Font weightBold/Semibold (600-700)Medium (500)Regular (400)
Color lightnessDark (#0F172A)Mid gray (#64748B)Light gray (#94A3B8)

Key insight: Weakening secondary content is more effective than emphasizing primary content.

2.2 Button Hierarchy

Each page has at most 1 primary action, a few secondary, and the rest tertiary:

.btn-primary { background: var(--color-primary); color: white; font-weight: 600; }
.btn-secondary { background: transparent; color: var(--color-primary);
  border: 1.5px solid var(--color-primary); }
.btn-tertiary { background: none; color: var(--color-primary); text-decoration: underline; }
/* Destructive actions use secondary style when not primary; only use red primary in confirmation dialogs */

2.3 Label De-emphasis

Avoid labels when possible. When the data format itself conveys meaning, display the value directly. When labels are necessary, de-emphasize them (light color/small text) and emphasize the value.


Step 3: Color System

For detailed color system architecture, tool references, and preset schemes, see references/color-system.md

3.1 Complete Color Scale

Each semantic color needs 8-10 shade steps. 5 hex values are not enough.

3.2 Brand Color (Don't always use blue!)

IndustryColorHex
Tech/SaaSBlue#2563EB
Creative/DesignOrange#F97316
Finance/EnterpriseDeep blue#0F4C81
Health/MedicalTeal#0D9488
EducationPurple#7C3AED
E-commerceRose#E11D48
EnvironmentGreen#16A34A
Dark theme—bg #0F172A + accent #60A5FA

3.3 Grays with Color Temperature

Cool gray (#64748B with blue) → tech feel · Warm gray (#78716C with brown) → friendly feel

3.4 Color Ratio 60-30-10

60% primary background · 30% secondary surface · 10% accent color

3.5 Accessibility

Body text 4.5:1 · Large headings 3:1 · No gray text on colored backgrounds


Step 4: Layout and Spacing

4.1 Spacing System (4px grid)

--sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:20px; --sp-6:24px;
--sp-8:32px; --sp-10:40px; --sp-12:48px; --sp-16:64px; --sp-20:80px; --sp-24:96px;

Start with "too much whitespace", then reduce incrementally.

4.2 Spacing Communicates Relationships

Related elements close together (8-12px), unrelated elements further apart (24-48px). Headings tight to the content below them.

4.3 Content Width

Text line width 45-75 characters (max-width: 65ch). Content area max-width 1200px. Don't fill the screen edge to edge.


Step 5: Advanced Typography

For font pairing schemes categorized by project personality (including Google Fonts import code), see references/css-recipes.md section 3

5.1 Font Selection

Fonts with ≥ 5 weights are generally higher quality.

UseLatinCJK
HeadingsSpace Grotesk, DM Sans, Outfit, Sora, ManropeNoto Sans SC Medium/Bold
BodyInter, Source Sans 3, IBM Plex SansNoto Sans SC Regular

Never use Latin display fonts like Space Grotesk for CJK text.

5.2 Line Height Varies with Font Size

Large headings 1.1-1.2 · Medium headings 1.2-1.3 · Body 1.5-1.6 · CJK headings 1.3-1.4 · CJK body 1.6-1.8

5.3 Letter Spacing

Large headings -0.5px · All caps +1px and reduce font-size by 15% · Never use negative values for CJK

5.4 Copy Length

Hero 2-6 words · Subtitle ≤15 words · Feature ≤20 words · Button 1-3 words · No paragraphs longer than 3 sentences


Step 6: Depth and Shadows

6.1 Dual-Layer Shadows

--shadow-sm: 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);
--shadow-md: 0 4px 6px -1px rgba(0,0,0,.07), 0 2px 4px -2px rgba(0,0,0,.05);
--shadow-lg: 0 10px 15px -3px rgba(0,0,0,.08), 0 4px 6px -4px rgba(0,0,0,.05);
--shadow-xl: 0 20px 25px -5px rgba(0,0,0,.10), 0 8px 10px -6px rgba(0,0,0,.05);

6.2 Border Alternatives

Prefer: background color contrast · shadows · spacing · accent border (border-left: 3px solid)


Step 7: Refinement Techniques

For more CSS effect code (frosted glass/noise/glow/animated gradients/skeleton screens), font pairing schemes, and Landing Page Section templates, see references/css-recipes.md

7.1 Accent Borders

.card-accent { border-left: 4px solid var(--color-primary); }

7.2 Background Decoration (Solid backgrounds are too flat)

/* Gradient mesh */
.hero-bg {
  background:
    radial-gradient(at 20% 80%, oklch(0.75 0.15 250 / 0.3) 0, transparent 50%),
    radial-gradient(at 80% 20%, oklch(0.80 0.12 300 / 0.2) 0, transparent 50%),
    var(--color-bg);
}
/* Noise texture */
.textured {
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
}

Also consider SVG patterns from HeroPatterns.com · angled clip-path color blocks

7.3 Empty States

Empty state = icon + description text + call-to-action button

7.4 Interaction States

Every interactive element must have hover/focus/active:

.btn:hover { transform: translateY(-1px); box-shadow: var(--shadow-md); }
.card:hover { box-shadow: var(--shadow-lg); transform: translateY(-2px); }
.btn:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }

Step 8: Motion and Animation

8.1 Animation Philosophy

  • A single well-orchestrated page load + staggered reveals (animation-delay) is more memorable than scattered hover micro-interactions everywhere
  • Animation serves content, not decoration. Every animation must have a reason to exist
  • Use spring physics instead of linear/ease: more natural, with a sense of elasticity

8.2 CSS Animation (Preferred for Mode B)

/* Staggered reveal */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}
.reveal { animation: fadeUp 0.5s ease forwards; opacity: 0; }
.reveal:nth-child(2) { animation-delay: 0.1s; }
.reveal:nth-child(3) { animation-delay: 0.2s; }

/* Spring-like bounce (CSS approximation) */
@keyframes springIn {
  0%   { transform: scale(0.85); opacity: 0; }
  60%  { transform: scale(1.05); }
  100% { transform: scale(1);    opacity: 1; }
}

8.3 React Animation (Mode A)

pnpm add motion
import { motion } from 'motion/react'

// List staggered
const container = { hidden: {}, show: { transition: { staggerChildren: 0.1 } } }
const item = { hidden: { opacity: 0, y: 20 }, show: { opacity: 1, y: 0 } }

<motion.ul variants={container} initial="hidden" animate="show">
  {items.map(i => <motion.li key={i} variants={item}>{i}</motion.li>)}
</motion.ul>

// Spring physics
<motion.div whileHover={{ scale: 1.03 }} transition={{ type: 'spring', stiffness: 300, damping: 20 }} />

8.4 Prohibited

  • ❌ Adding transition to every element (visual noise)
  • ❌ duration > 600ms (feels sluggish)
  • ❌ Purely decorative infinite loop animations
  • ❌ Forcing animations without supporting prefers-reduced-motion

Mode A: React + Tailwind v4 + shadcn/ui

Vite + React 19 + TypeScript | Tailwind CSS v4 (@theme) | shadcn/ui (oklch) | Icon library (see Step 1.4)

Package Manager Detection

Before running any command, detect the local package manager in this order:

bun → pnpm → yarn → npm

Use which bun pnpm yarn npm to detect, then use the first available one throughout. Examples below use {pm} as placeholder.

ManagerRun commandExec command
bunbunbunx
pnpmpnpmpnpm dlx
yarnyarnyarn dlx
npmnpmnpx

Project Initialization

# 1. Create Vite project
{pm} create vite@latest my-app -- --template react-ts && cd my-app && {pm} install

# 2. Install Tailwind v4
{pm} add -D tailwindcss @tailwindcss/vite

# 3. Configure vite.config.ts — add tailwindcss plugin + path alias
# 4. Configure tsconfig.json — add baseUrl + paths alias for @/*
# 5. Add @import "tailwindcss"; to src/index.css

# 6. Initialize shadcn (Radix + Nova preset, skip prompts)
{pmx} shadcn@latest init -y -b radix -p nova

# 7. Add components
{pmx} shadcn@latest add button card input

Default Lucide (built into shadcn), switch to Phosphor/Tabler/Iconoir for differentiation:

{pm} add @phosphor-icons/react    # 6 weights, strongest visual hierarchy
{pm} add @tabler/icons-react      # 5900+ largest free set
{pm} add iconoir-react            # Minimal elegance, avoids AI feel

Tailwind v4

@import "tailwindcss";
@theme { --color-brand-500: oklch(0.62 0.19 250); }

shadcn oklch variables

:root {
  --background: oklch(1 0 0); --foreground: oklch(0.145 0 0);
  --primary: oklch(0.205 0 0); --primary-foreground: oklch(0.985 0 0);
  --muted: oklch(0.97 0 0); --muted-foreground: oklch(0.556 0 0);
  --border: oklch(0.922 0 0); --radius: 0.625rem;
}
.dark {
  --background: oklch(0.145 0 0); --foreground: oklch(0.985 0 0);
  --primary: oklch(0.922 0 0); --primary-foreground: oklch(0.205 0 0);
}

File Structure

src/ app.css · main.tsx · App.tsx
  components/ ui/ (shadcn) · layout/ (sidebar, topbar) · pages/ (dashboard)
  lib/ utils.ts (cn())

CVA Component Variant Pattern

pnpm add class-variance-authority
import { cva, type VariantProps } from 'class-variance-authority'
import { cn } from '@/lib/utils'

const button = cva(
  'inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-2',
  {
    variants: {
      variant: {
        primary:   'bg-[--color-primary] text-white hover:bg-[--color-primary-hover]',
        secondary: 'border border-[--color-primary] text-[--color-primary] hover:bg-[--color-primary-light]',
        ghost:     'hover:bg-[--color-surface-2] text-[--color-muted]',
      },
      size: {
        sm: 'h-8 px-3 text-sm',
        md: 'h-10 px-4 text-sm',
        lg: 'h-12 px-6 text-base',
      },
    },
    defaultVariants: { variant: 'primary', size: 'md' },
  }
)

interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof button> {}

export function Button({ variant, size, className, ...props }: ButtonProps) {
  return <button className={cn(button({ variant, size }), className)} {...props} />
}
CVA solves boolean prop explosion: no more writing isPrimary isLarge isGhost as three separate props

color-mix() Opacity Variants

/* Use color-mix to generate opacity variants in Tailwind v4, no extra variables needed */
.bg-primary-10 { background: color-mix(in oklch, var(--color-primary) 10%, transparent); }
.bg-primary-20 { background: color-mix(in oklch, var(--color-primary) 20%, transparent); }

/* Or inline directly in class */
/* bg-[color-mix(in_oklch,var(--color-primary)_15%,transparent)] */

Container Queries

/* Define in @theme */
@theme {
  --breakpoint-sm: 640px;
}

/* Component-level responsiveness, more precise than global breakpoints */
@container (min-width: 400px) {
  .card-content { flex-direction: row; }
}
<div class="@container">
  <div class="@sm:flex-row flex-col">...</div>
</div>

Visual Validation Loop (Mode A)

After writing all component files, close the loop visually:

Step 1 — Start dev server (if not already running)
         {pm} dev --port 5173

Step 2 — Screenshot with Playwright MCP
         Navigate to http://localhost:5173
         Take a full-page screenshot

Step 3 — Review the screenshot
         Check against the design principles from Steps 1–8:
         - Visual hierarchy clear?
         - Color 60-30-10 ratio correct?
         - Spacing on 4px/8px grid?
         - Typography weights differentiated?
         - Hover/focus states visible?
         - Background not plain white?

Step 4 — Iterate if needed
         Fix issues in the component files → Vite HMR auto-refreshes → re-screenshot
         Repeat until the result matches design intent

Step 5 — Done
         Confirm to user with a final screenshot

This loop is what pencil.dev cannot do — it outputs a .pen file requiring a separate export step. Michelangelo outputs real code and validates it visually in the same session.


Mode B: Pure HTML Prototype

Single .html file, zero dependencies, opens directly in browser.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>[Name] — Prototype</title>
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap" rel="stylesheet">
  <!-- Icon CDN (pick one, see Step 1.4) -->
  <script src="https://unpkg.com/lucide@latest"></script>
  <!-- Or Phosphor: <script src="https://unpkg.com/@phosphor-icons/web@latest"></script> -->
  <!-- Or Iconify: <script src="https://code.iconify.design/3/3.1.0/iconify.min.js"></script> -->
  <style>
    :root {
      --color-primary:#2563EB; --color-primary-hover:#1D4ED8;
      --color-primary-light:#EFF6FF; --color-primary-text:#1E40AF;
      --color-bg:#F8FAFC; --color-surface:#FFFFFF; --color-surface-2:#F1F5F9;
      --color-border:#E2E8F0; --color-text:#0F172A;
      --color-muted:#64748B; --color-subtle:#94A3B8;
      --success:#10B981; --warning:#F59E0B; --error:#EF4444;
      --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px;
      --sp-6:24px; --sp-8:32px; --sp-12:48px; --sp-16:64px;
      --font-sans:'Inter',system-ui,sans-serif;
      --font-display:'Space Grotesk','Inter',sans-serif;
      --radius-sm:4px; --radius-md:8px; --radius-lg:12px;
      --shadow-sm:0 1px 3px rgba(0,0,0,.06),0 1px 2px rgba(0,0,0,.04);
      --shadow-md:0 4px 6px -1px rgba(0,0,0,.07),0 2px 4px -2px rgba(0,0,0,.05);
      --shadow-lg:0 10px 15px -3px rgba(0,0,0,.08),0 4px 6px -4px rgba(0,0,0,.05);
      --ease:150ms ease;
    }
    /* ② Reset · ③ Layout · ④ Components · ⑤ Page */
  </style>
</head>
<body><!-- content --><script>lucide.createIcons();</script></body>
</html>

Visual Validation Loop (Mode B)

Mode B produces a single .html file — no dev server needed. Playwright MCP can open it directly:

Step 1 — Write the .html file to an absolute path
         e.g. /Users/you/workspace/prototype.html

Step 2 — Screenshot with Playwright MCP
         Navigate to file:///Users/you/workspace/prototype.html
         Take a full-page screenshot

Step 3 — Review the screenshot
         Same checklist as Mode A — visual hierarchy, color ratio,
         spacing, typography, hover states, background texture

Step 4 — Iterate if needed
         Edit the .html file → re-navigate → re-screenshot
         (No server restart needed — Playwright reads the file fresh each time)

Step 5 — Done
         Confirm to user with a final screenshot

Quality Checklist

Universal:

  • Has a clear design personality (not a generic blue theme)
  • Clear visual hierarchy
  • Button primary/secondary/tertiary hierarchy
  • Color 60-30-10 ratio
  • Borders used sparingly
  • 4px/8px spacing system, spacing communicates relationships
  • Heading letter-spacing tightened
  • Line height varies with font size
  • Background not pure white, text not pure black
  • Font not on the banned list (not Inter/Roboto/Arial/Space Grotesk)
  • hover/focus states
  • Interactive elements touch target ≥ 44px (mobile)
  • Focus ring visible (focus-visible:outline), not relying solely on color to convey state
  • Empty states have design
  • Background decoration present
  • Animation: page load has staggered reveal, duration ≤ 500ms
  • Respects prefers-reduced-motion

Mode A additions: oklch brand color · shadcn components · semantic Tailwind classes ·.dark mode · CVA for managing component variants (not hand-stitched className strings) · use container queries instead of relying solely on global breakpoints Mode B additions: All CSS variables · display/CJK fonts · self-contained file · includes @media (prefers-reduced-motion: reduce) to override animations


References

  • references/design-guide.md — Design thinking master guide: visual hierarchy, typography, spacing, color, animation, component patterns, anti-pattern self-check list
  • references/color-system.md — Color system in practice: Radix 12-step / shadcn oklch variables / Tailwind palette / 7 preset schemes / toolchain
  • references/design-sizes.md — Size quick reference: device viewports, breakpoints, component sizes, social media sizes, project type canvases
  • references/icon-libraries.md — Icon library quick reference: 10+ libraries with install commands, CDN, React import examples
  • references/css-recipes.md — CSS effect recipes: background effects / micro-interactions / font pairing / Landing Page Section patterns / Tailwind shortcuts

平台分布

Codex

33.25%
按下载量换算53

Claude

32.2%
按下载量换算51

Cursor

17.4%
按下载量换算27

Gemini CLI

10.28%
按下载量换算16

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills