mcpField
S
svg-skill

svg-skill

github.com/linyaosky设计与 UI684 次安装21 周前更新
代码仓库

关于 svg-skill

svg-skill 是一项指导直接编写 SVG 源码的技能,适用于需要矢量图形、图标、图表或界面组件的开发与设计工作。它按图形场景提供绘制、无障碍、验证和交付规范,并明确不使用图像生成工具。

主要功能

  1. 01覆盖图标、徽标、插图、图表和流程图等场景
  2. 02提供 SVG 结构与绘制规则
  3. 03包含无障碍标注和文件质量检查
  4. 04支持独立 SVG、React、Vue 和 CSS 等交付形式
  5. 05使用脚本批量验证 SVG 文件

适用场景

  1. 01制作界面图标、徽标或应用图标
  2. 02绘制流程图、架构图或数据图表
  3. 03将 SVG 图形作为 React 或 Vue 组件交付
  4. 04为网页或邮件准备内联 SVG 图形

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/linyaosky/svg-skill --skill svg-skill

安装后在 Claude Code 中输入/svg-skill确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

CONTRIBUTING.md
.gitignore
reference.md
scenarios.md
examples.md
LICENSE
README.md
install.sh
scripts/
validate.sh
test-output/
TEST.md
preview.html
run-tests.sh
test-output/12-integration/
BellIcon.tsx
MailIcon.vue
demo.css

详细介绍

svg-skill

直接编写 SVG 源码。不要使用图像生成工具。

场景索引

匹配用户意图,然后选择合适的路径。详情见 scenarios.md,示例见 examples.md。

场景viewBox关键技巧交付物
UI 图标(描边/填充)0 0 24 24currentColor、统一的 stroke-width文件/React 组件
多色图标0 0 24 24独立路径 + 固定填充色文件
Logo/品牌标志品牌专属路径轮廓、安全边距SVG + 可选 favicon
Favicon/应用图标0 0 32 32简洁、高对比度文件
插画/空状态0 0 100 100+扁平形状SVG/内联
流程图/架构图基于内容标记箭头、网格对齐UTF-8 文件
图表(柱状图/折线图/饼图)基于数据根据比例计算坐标title + desc
进度环/进度条0 0 24 24 或 barstroke-dasharray 或矩形宽度可动画
头像占位图0 0 40 40圆形 + 字母/人物路径currentColor
徽章/标签基于文本圆角矩形 + 文本品牌色
波浪分隔线0 0 1200 120贝塞尔路径、preserveAspectRatio="none"全宽
地图图钉0 0 24 24水滴形路径 + 中心圆点主题色或固定颜色
Sprite 图集每个符号单独设置<symbol> + <use href="#id">单个 sprite.svg
CSS 背景/遮罩与图标相同外部文件或 data URICSS 代码片段
加载动画0 0 24 24CSS @keyframes 或 stroke-dash内联 SVG
悬停交互任意通过 CSS :hover 修改填充/描边/变换内联 + 样式
裁剪形状基于容器<clipPath>/<mask>defs 引用
阴影/模糊任意<filter> feDropShadow/feGaussianBlurdefs 引用
图案纹理小单元<pattern> 平铺defs 引用
React/Vue 组件0 0 24 24展开 props、使用 camelCase 属性.tsx/.vue
邮件内联简洁不使用样式/动画/外部引用紧凑代码片段

不适合 SVG 的场景:照片级真实感、复杂位图纹理、细节过多的插画 → 说明限制,建议使用栅格图或简化风格。

工作流

- [ ] 1. Pick scenario and deliverable from index
- [ ] 2. Set viewBox, style, colors (currentColor vs brand)
- [ ] 3. Draw: compose shapes → paths; shared assets in <defs>
- [ ] 4. A11y: decorative aria-hidden / informative title+desc
- [ ] 5. Minimize; non-ASCII text → UTF-8 + XML declaration
- [ ] 6. Write file; run validate.sh
骨架模板

仅图标(无文本):

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" aria-hidden="true">
</svg>

非 ASCII 文本(中文、日文等):

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 120" role="img" aria-labelledby="title">
  <title id="title">Diagram title</title>
</svg>

全宽装饰(波浪等):

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 120" preserveAspectRatio="none" aria-hidden="true">
</svg>
绘制规则
  1. viewBox 定义逻辑坐标;通过 CSS width/height 设置显示尺寸
  2. 单色 UI 资源默认使用 currentColor
  3. 描边图标——stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
  4. 共享 defs——在 <defs> 中定义渐变、箭头、图案、滤镜;使用简短且唯一的 id
  5. 图表——先计算边距和比例;在 title/desc 中概述数据
  6. 动画——优先使用 CSS;仅在简单场景中使用 SMIL
  7. 默认使用扁平风格——仅在需要时使用渐变/阴影
质量检查清单
  • xmlns + viewBox
  • 非 ASCII 文本 → UTF-8 + XML 声明
  • 无占位路径或编辑器元数据
  • 文件中的 id 唯一(尤其是 Sprite)
  • 图表包含 title;装饰性图标使用 aria-hidden
  • 文件可独立打开和预览
bash scripts/validate.sh path/to/dir/
xmllint --noout file.svg   # required for non-ASCII text
交付物
形式方式
独立 .svg写入 assets/ 等目录
Sprite在一个文件中放置多个 <symbol>;说明 <use> 的用法
Reactexport function XIcon(props: SVGProps<SVGSVGElement>) + 展开 props
Vue<template><svg ...></svg></template>
CSS 背景background: url(...) 或内联 data URI
CSS 遮罩-webkit-mask: url(...);形状需要实心填充区域
内联 HTML原始 <svg> 片段,不加包装 div(除非另有要求)

禁止事项

  • 使用 <image> 将位图伪装成矢量图(除非明确要求)
  • 对简单的矢量图形使用图像生成
  • 留下空路径/TODO 占位符
  • 非 ASCII 文本缺少 UTF-8 声明
  • 为邮件场景添加复杂动画或外部依赖

工具与文档

资源说明
scenarios.md按场景分步说明
reference.md路径语法、定义、框架
examples.md完整代码示例
scripts/validate.sh批量验证

评论

支持 Markdown