关于 21st-design-sync
用于将项目的浅色和深色 CSS 设计令牌发布到 21st.dev 公共主题库的技能,涵盖令牌准备、命名、身份验证、发布及后续编辑。
主要功能
- 01查找浅色和深色 CSS 令牌
- 02准备可发布的主题文件
- 03设置主题名称和可选标签
- 04使用 21st CLI 发布
- 05说明编辑与替换方式
适用场景
- 01公开分享项目配色主题
- 02补齐缺失的深色模式令牌
- 03更新已发布主题的信息
MCP 相关
该技能提及通过 21st MCP 获取 API 密钥;实际发布使用 21st CLI。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ 21st-dev/ skill --skill 21st-design-sync安装后在 Claude Code 中输入/21st-design-sync确认已加载。
详细介绍
21st Design Sync — 将项目设计发布为主题
提取项目现有的设计(浅色和深色 CSS 变量),并将其发布到 公开 的 21st.dev 主题库,让任何人都可以预览、收藏和应用。底层只需调用一次 CLI:
21st publish-theme <file.css> --name "…"。
发布前检查(始终执行)
- 身份验证需要真实的 API 密钥。
publish-theme是管理端点:它只接受21st_sk_…密钥,不接受21st login会话令牌。请前往 **https://21st.dev/mcp**(或 **https://21st.dev/settings/api-keys**)获取密钥,并通过--api-key 21st_sk_…或TWENTYFIRST_TOKEN/API_KEY_21ST环境变量传入。如果用户没有密钥,请引导他们前往该页面获取,不要尝试生成密钥。 - CLI 统一使用
@21st-dev/cli(可执行文件为21st)。如果尚未安装,请使用npx @21st-dev/cli。 - 发布是公开且面向外部的。 主题发布后会立即在社区主题库中设为
is_public(主题没有未列出或私有选项)。发布前请先向用户确认。
步骤 1 — 查找项目的设计令牌
定位定义 shadcn/Tailwind 主题变量的文件。按顺序检查:
app/globals.css、src/app/globals.csssrc/index.css、styles/globals.css、app/styles/globals.css
查找包含 CSS 自定义属性(--background、--foreground、--card、--primary、--secondary、--muted、--accent、--destructive、--border、--input、--ring、--chart-* / --sidebar-* 令牌、--radius)的 :root { … } 代码块,以及与之对应的 .dark { … } 代码块。值可能是 hsl(...)、oklch(...)、十六进制值或原始通道值——请保持与项目中的写法完全一致。
Tailwind v4 项目通常会保留相同的 :root / .dark 代码块,并带有 @theme inline 映射;只需提取 :root 和 .dark 中的令牌值,无需提取 @theme 映射。
步骤 2 — 组装有效的主题 CSS 文件
发布端点会从 :root { … } 和 .dark { … } 代码块中解析 --name: value; 对,并且要求两者都非空。因此,要发布的文件必须同时包含这两者。
- 将项目的
:root和.dark代码块复制到独立文件中(例如project-theme.css)。无需包含其他内容。 - 如果项目只有浅色
:root,没有.dark(或.dark为空),请在发布前生成深色变体——不要发布深色模式为空的主题。使用add-dark-mode/oklch-skill方法:反转亮度,同时保留色相和色度,让深色配色仍符合品牌风格。保持令牌名称不变。 - 使用 shadcn 标准令牌名称,以确保主题能在卡片上正确预览,并能被他人顺利应用。
最简结构:
:root {
--background: 0 0% 100%;
--foreground: 240 10% 4%;
--primary: 240 6% 10%;
/* …the rest of the project's light tokens… */
--radius: 0.5rem;
}
.dark {
--background: 240 10% 4%;
--foreground: 0 0% 98%;
--primary: 0 0% 98%;
/* …the rest of the project's dark tokens… */
}
步骤 3 — 命名和添加标签
- 名称(必填,不超过 50 个字符):根据项目推断名称——可参考
package.json、代码仓库或网站标题中的产品 / 品牌名称。如有歧义,请询问用户。 - 标签(可选):添加一些符合用户浏览主题时习惯的描述词,例如
dark、minimal、neutral、vibrant、saas。以逗号分隔传入。
步骤 4 — 发布
21st publish-theme ./project-theme.css \
--name "Acme" \
--tags dark,minimal \
--api-key 21st_sk_… # or set TWENTYFIRST_TOKEN
命令会输出主题的在线 URL(https://21st.dev/community/themes/<slug>)。请将其分享给用户。
更新与重新发布
- 每次运行
publish-theme都会创建一个新主题(不像组件那样按 slug 执行更新或插入)。运行两次会在主题库中创建两个主题。 - 若要修改现有主题的名称 / 标签 / 可见性,请直接编辑:
21st edit <theme-id> --type theme [--name "…"] [--tags a,b]。 - 若要修改颜色,请发布新文件并移除旧主题:
21st delete <theme-id> --type theme --yes(软取消发布,可恢复)。
不适用场景
- 将组件库同步到 Claude Design 项目 → 请使用内置的
/design-sync技能;它会同步到其他位置。 - 发布组件(而非配色主题) → 请使用
21st-registry。