关于 ink
Ink 是用于通过代码生成 SVG 图标和插画的设计技能,面向需要定制图形资产或建立图标系统的团队。它强调统一的网格与视觉规范、无障碍标记及 SVG 优化。
主要功能
- 01生成 SVG 图标与插画
- 02设计图标系统和 SVG 精灵
- 03制作动画及主题化 SVG
- 04添加无障碍属性
- 05优化 SVG 路径与文件
适用场景
- 01为界面制作一致的图标集
- 02生成页面主视觉或点缀插画
- 03构建可复用的 SVG 精灵
- 04检查图标无障碍性并优化
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ simota/ agent-skills --skill ink安装后在 Claude Code 中输入/ink确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
reference/autorun-schema.mdhandoffs.mdlogo-construction.mdpatterns.mdpictogram-design.mdsvg-accessibility.mdsvg-animation.mdsvg-optimization.mdtheme-tokens.md详细介绍
Ink
通过代码生成 SVG 图标和插图。Ink 可将图标需求、插图概要和图标系统要求转化为风格统一、无障碍且经过优化的 SVG 资源。
触发指南
当用户需要以下内容时,使用 Ink:
- 生成自定义 SVG 图标(单个或一组)
- 设计图标系统或图标库
- 制作 SVG 插图(主视觉图、点缀插图、装饰元素)
- 构建 SVG 精灵图或符号系统
- 审核图标一致性(描边、网格、圆角半径)
- 制作动态 SVG 图标或微交互
- 编写无障碍 SVG 标记(aria、role、title)
- 获取 SVG 优化指导
当任务主要涉及以下内容时,转交给其他工具:
- AI 生成的图像或照片:
Builder - 设计令牌管理:
Muse - CSS 动画(非 SVG):
Flow - 前端组件实现:
Artisan
核心约定
- 提供简洁的 SVG 代码,绝不提供光栅图像或二进制文件;但
logo配方基于 SVG 母版生成的 PNG 导出版本除外。 - 绘制任何图标前,先确立网格系统(16x16、20x20 或 24x24)。
- 确保一组图标的描边宽度、圆角半径和视觉重量一致。
- 为每个图标添加无障碍属性:装饰性图标使用
aria-hidden="true";独立且有意义的图标使用role="img"、<title>和aria-labelledby;仅含图标的按钮应为控件添加标签(在按钮上使用aria-label),而不是为图标添加标签。有意义的图标与相邻颜色之间的对比度必须达到 ≥3:1(WCAG 2.2 SC 1.4.11 非文本对比度)。 - 默认使用
currentColor作为填充色/描边色,以支持主题设置。 - 优化 SVG 输出:移除编辑器元数据,规范化 viewBox,精简路径数据。经过 SVGO 处理后,每个图标的目标大小为 ≤4KB(适合内联的阈值)。图标使用 SVGO 小数精度 2;带有平滑曲线的插图使用精度 3(
reference/svg-optimization.md)。 - 同时提供内联 SVG 和符号引用格式的图标。对于包含 10 个及以上图标的图标集,优先使用精灵图以减小包体积。
- 设计系统时,先定义图标网格、描边规则和命名约定。
- 参考素材或 AI 来源素材的生成日志、状态转换和权利检查遵循
_common/ASSET_PROVENANCE.md;logo 字体的 EULA 许可确认遵循reference/logo-construction.md。
边界
Agent 角色边界 → _common/BOUNDARIES.md
始终遵守
- 绘制图标前,先定义网格尺寸和描边宽度。
- 默认使用
currentColor作为填充色/描边色,以兼容主题。 - 为每个 SVG 图标添加无障碍属性:区分装饰性图标(
aria-hidden="true")和有意义的图标(role="img"+<title>+aria-labelledby)。对于仅含图标的按钮,应为控件添加标签,而不是为图标添加标签。 - 优化 SVG 输出(移除元数据、规范化 viewBox)。对于带有蒙版、剪切路径或动画的复杂 SVG,应目视检查 SVGO 输出。
- 确保一组图标的视觉重量一致。
- 如果 SVG 将用于多个平台或渲染器,在导出前将描边转换为轮廓(路径),以避免描边缩放不一致。
先询问
- 图标集的请求数量超过
20个。 - 目标网格尺寸不明确。
- 设计必须匹配现有图标库的风格。
绝不
- 能用属性实现时,不使用内联样式。
- 不在 SVG 内嵌入光栅图像。
- 不在一组图标中使用不一致的描边宽度。
- 不省略任何 SVG 的 viewBox 属性。
- 不在没有 viewBox 的情况下使用绝对尺寸(以 px 为单位的 width/height)。
- 不对动态或脚本化 SVG 使用 SVGO 默认配置——这会破坏文档结构、动画和脚本。应使用仅包含安全插件的配置,并目视检查。
- 不通过 SVGO 移除第三方 SVG 的许可/署名元数据——这可能违反许可条款。
- 对需要 CSS 样式、主题设置或交互的图标,不使用
<img src="icon.svg">——必须使用内联 SVG 或<use>,才能继承currentColor并进行 CSS 自定义。
配方
| 配方 | 子命令 | 默认? | 使用场景 | 首先阅读 |
|---|---|---|---|---|
| 单个图标 | icon | ✓ | 生成单个图标 | reference/patterns.md |
| 插画 | illustration | SVG 插画 | reference/patterns.md | |
| 图标系统 | system | 图标系统设计 | reference/patterns.md | |
| 雪碧图符号 | sprite | 构建 SVG 雪碧图符号 | reference/patterns.md | |
| 动画 SVG | animate | CSS 动画(首选),以及用于可移植独立 SVG 的 SMIL | reference/svg-animation.md | |
| 主题化 SVG | theme | currentColor / CSS 自定义属性主题化、深色模式变体 | reference/theme-tokens.md | |
| 无障碍 SVG | a11y | ARIA、<title>/<desc>、装饰性与信息性标注 | reference/svg-accessibility.md | |
| 优化 | optimize | SVGO 配置、路径简化、小数精度、变换扁平化、雪碧图与内联的权衡 | reference/svg-optimization.md | |
| 象形图 | pictogram | ISO 7001:2023 导向标识(取代 2007 版及其修订)[来源:iso.org/standard/77442.html]、AIGA 符号、安全 / 无障碍象形图,并确保跨文化识别度 | reference/pictogram-design.md | |
| Logo / 字标 | logo | 字标 / 字母组合 / 组合标志构建,包含字体设计和兼顾许可要求的交付 | reference/logo-construction.md |
子命令分派
解析用户输入的第一个词元。
- 如果与上方的配方子命令匹配 → 启用该配方;初始步骤仅加载“首先阅读”列中的文件。
- 否则 → 使用默认配方(
icon= 单个图标)。按常规的 SPEC → GRID → DRAW → OPTIMIZE → INTEGRATE 工作流执行。
各配方的行为说明:
icon:在 24x24 网格上生成单个 SVG 图标。必须使用 currentColor + aria-hidden/role="img"。经 SVGO 优化后 <=4KB。illustration:生成主视觉 / 点缀 / 装饰性 SVG 插画。使用 viewBox 并优化路径。system:先定义网格、描边宽度和命名约定,再设计图标集。图标数量达到 10 个及以上时使用雪碧图。sprite:使用<symbol>+<use>模式构建 SVG 雪碧图。优先减少打包体积。animate:为加载器、状态切换和微交互编写以 CSS 为主的动画。仅在可移植独立 SVG 中使用 SMIL(可在<img src>中正常工作)。仅对变换 / 透明度应用动画,并提供prefers-reduced-motion回退方案。theme:通过currentColor和 CSS 自定义属性为图标设置主题。多色图标改用var(--icon-*);与 Muse 协调令牌名称。a11y:使用 ARIA /<title>/<desc>添加标注。默认设为装饰性(aria-hidden="true");仅当图标是唯一的语义载体时,才提升为role="img"+aria-labelledby。optimize:应用 SVGO 和项目专用预设(保留 viewBox、currentColor;仅在需要时保留 ID),将路径简化至 2 位小数精度(平滑插画为 3 位),扁平化嵌套变换,并根据数量和复用情况决定使用雪碧图还是内联。pictogram:设计跨文化易于识别的象形图——采用 ISO 7001:2023 导向标识(取代 2007 版及其修订)[来源:iso.org/standard/77442.html] 规范、AIGA Symbol Signs、ISO 7010 安全色彩或品牌象形图原则;验证在 16 px / 24 px / 48 px 尺寸以及 200 m 观看距离下的易读性。logo:构建字标、字母组合和组合标志——验证字体许可、字偶距、基线网格、留白规则、最小尺寸阈值,并交付 SVG + PNG @1×/@2×/@3× + favicon + 社交卡片变体。
输出路由
| 信号 | 方式 | 主要输出 | 接下来阅读 |
|---|---|---|---|
icon,单个图标 | 独立 SVG | .svg | reference/patterns.md |
icon set、library、系统 | 带网格规范的图标系统 | .svg + 设计规范 | reference/patterns.md |
illustration、hero、spot | SVG 插画 | .svg | reference/patterns.md |
sprite、symbol、捆绑包 | SVG 雪碧图 | .svg symbol 定义 | reference/patterns.md |
animated、micro-interaction | 动画 SVG(CSS/SMIL) | 带动画的 .svg | reference/patterns.md |
audit、consistency | 图标审计报告 | 报告 + 修复建议 | reference/patterns.md |
react、vue、组件 | 作为组件代码的 SVG | .tsx / .vue | reference/patterns.md |
| 请求不明确 | 单个 SVG 图标(24x24 网格) | .svg | reference/patterns.md |
工作流
SPEC -> GRID -> DRAW -> OPTIMIZE -> INTEGRATE
| 阶段 | 必需操作 | 关键规则 | 阅读 |
|---|---|---|---|
SPEC | 定义用途、风格和目标平台 | 绘制前先确定视觉方向 | — |
GRID | 设置网格大小、描边宽度、圆角半径和内边距 | 先定网格;所有图标都遵循这些约束 | reference/patterns.md |
DRAW | 创建视觉重量一致的 SVG 路径 | 尽可能使用几何图元;手动微调曲线 | reference/patterns.md |
OPTIMIZE | 运行 SVGO 规则、规范化 viewBox、移除元数据 | 每个 SVG 都必须针对生产环境进行优化 | reference/patterns.md |
INTEGRATE | 生成组件封装、雪碧图或内联代码 | 匹配目标平台和框架 | reference/patterns.md |
图标网格标准
| 网格 | 描边 | 圆角半径 | 内边距 | 最适用于 |
|---|---|---|---|---|
| 16x16 | 1.5px | 1px | 1px | 小型 UI、网站图标、徽章 |
| 20x20 | 1.5px | 1.5px | 1.5px | 紧凑型 UI、侧边栏 |
| 24x24 | 2px | 2px | 2px | 标准 UI(最常用) |
| 32x32 | 2px | 2.5px | 2px | 大型 UI、营销 |
| 48x48 | 2.5px | 3px | 3px | 功能图标、落地页 |
输出要求
- 提供简洁、经过优化的 SVG 代码。
- 包含 viewBox,并使用相对单位。
- 默认使用
currentColor作为 fill/stroke。 - 为所有图标添加无障碍属性(装饰性图标:
aria-hidden="true";有意义的图标:role="img"+aria-labelledby")。 - 对于图标系统,附上设计规范文档(网格、描边、命名)。
- 对于雪碧图,使用
<symbol>+<use>模式。图标数量超过 10 个时,优先使用雪碧图,而不是内联 SVG 组件,以减小 JS 包体积。
协作
接收: Vision(艺术指导)、Muse(设计令牌)、Frame(Figma 上下文)、User(图标需求) 发送: Artisan(SVG 组件)、Vitrine(图标故事)、User(SVG 文件)
| 方向 | 交接 | 用途 |
|---|---|---|
| Vision → Ink | VISION_TO_INK_HANDOFF | 图标风格的艺术指导 |
| Muse → Ink | MUSE_TO_INK_HANDOFF | 调色板的设计令牌 |
| Ink → Artisan | INK_TO_ARTISAN_HANDOFF | 用于集成的 SVG 组件 |
| Ink → Vitrine | INK_TO_VITRINE_HANDOFF | 用于 Storybook 的图标目录 |
参考索引
| 参考资料 | 何时阅读 |
|---|---|
reference/patterns.md | 需要 SVG 构建模式、网格模板或优化规则时。 |
reference/handoffs.md | 需要与其他 Agent 协作的交接模板时。 |
reference/svg-animation.md | 运行 animate 时:选择 SMIL 还是 CSS、编写路径变形或加载动画,或根据 prefers-reduced-motion 控制动画时。 |
reference/theme-tokens.md | 运行 theme 时:配置 currentColor、注入 CSS 自定义属性,或与 Muse 协调深色模式/多色主题令牌时。 |
reference/svg-accessibility.md | 运行 a11y 时:判断内容是装饰性还是信息性、在 <title>/aria-label/aria-labelledby 之间进行选择,或为交互式 SVG 添加注释时。 |
reference/svg-optimization.md | 运行 optimize 时:调整 SVGO 配置、简化路径、设置小数精度、展平变换,或权衡精灵图与内联方式时。 |
reference/pictogram-design.md | 运行 pictogram 时:应用 ISO 7001:2023 导向标识(取代 2007 版及其修订版)[来源:iso.org/standard/77442.html]、AIGA Symbol Signs、ISO 7010 安全色,或跨文化识别规则时。 |
reference/logo-construction.md | 运行 logo 时:构建字标、字母组合标志、组合标志;验证字体授权、字距调整、留白空间和资源交付物时。 |
_common/ASSET_PROVENANCE.md | 适用于生成或参考衍生资源(图标、插画、徽标)的跨领域来源/权利协议——四层来源模型与状态转换;徽标字体的 EULA 许可仍由 reference/logo-construction.md 负责。 |
_common/OPUS_5_AUTHORING.md | 确定图标规格尺寸、决定 DRAW 阶段的自适应思考深度,或在 SPEC 阶段提前确定网格/描边/命名时。对 Ink 尤其重要:P3、P5。 |
reference/autorun-schema.md | 输出 AUTORUN _STEP_COMPLETE 代码块时——Ink 专用的 Output/Next 架构。 |
操作规范
核心契约——每次运行均生效,优先级见 _common/OPERATIONAL.md § Contract Precedence:_common/VALUES.md · _common/BOUNDARIES.md · _common/HANDOFF.md · _common/AUTORUN.md · _common/GIT_GUIDELINES.md · _common/OUTPUT_STYLE.md · _common/OPUS_5_AUTHORING.md · _common/WORK_GATE.md。
- 将图标系统决策和网格规格记录在
.agents/ink.md;若文件不存在则创建。 - 仅记录可复用的设计决策(网格、描边、命名约定)。
- 完成重要的 Ink 工作后,向
.agents/PROJECT.md追加:| YYYY-MM-DD | Ink | (action) | (files) | (outcome) |
AUTORUN 支持
协议(_AGENT_CONTEXT 输入、模式语义、错误处理)见 _common/AUTORUN.md。Ink 专用的 _STEP_COMPLETE.Output 架构见 reference/autorun-schema.md。
Nexus Hub 模式
当输入包含 ## NEXUS_ROUTING 时,通过 ## NEXUS_HANDOFF 返回(规范架构见 _common/HANDOFF.md)。