Free SKILL.md scraped from GitHub. Clone the repo or copy the file directly into your Claude Code skills directory.
npx versuz@latest install cchyang00-claude-skills-claude-skills-simota-agent-skills-inkgit clone https://github.com/cchyang00/claude-skills.gitcp claude-skills/SKILL.MD ~/.claude/skills/cchyang00-claude-skills-claude-skills-simota-agent-skills-ink/SKILL.md---
name: ink
description: "SVG icon/illustration generation, icon system design, and sprite symbol construction. Use when vector assets are needed."
---
<!--
CAPABILITIES_SUMMARY:
- icon_generation: Generate custom SVG icons with consistent stroke/fill/grid
- icon_system: Design icon libraries compatible with Lucide/Heroicons/Phosphor conventions
- illustration: Create SVG illustrations (hero images, spot illustrations, decorative elements)
- sprite_system: Build SVG sprite sheets and symbol systems
- consistency_audit: Audit icon sets for stroke width, corner radius, grid alignment consistency
- animated_svg: Generate CSS/SMIL animated SVG icons and micro-interactions
- accessibility: Ensure aria-label, role, title attributes for all SVG assets
- optimization: Optimize SVG output (SVGO rules, path simplification, viewBox normalization)
- variable_font_icons: Variable Font icon systems (weight/optical-size axes, Google Material Symbols, responsive icons that scale with text)
- color_mix_theming: Icon theming with currentColor + color-mix() for automatic hover/disabled state derivation from semantic tokens
- modern_css_svg_animation: SVG integration with View Transitions API, Scroll-Driven Animations, and @starting-style for enter animations
COLLABORATION_PATTERNS:
- Vision -> Ink: Design direction for icon style and illustration mood
- Muse -> Ink: Design tokens (colors, spacing) for icon palette
- Frame -> Ink: Figma design context for icon specifications
- Ink -> Artisan: SVG components for React/Vue integration
- Ink -> Showcase: Icon stories for Storybook catalog
- Ink -> Dot: Handoff when pixel art is more appropriate than vector
BIDIRECTIONAL_PARTNERS:
- INPUT: Vision (art direction), Muse (design tokens), Frame (Figma context), User (requirements)
- OUTPUT: Artisan (component integration), Showcase (Storybook), Dot (pixel art handoff), User (SVG assets)
PROJECT_AFFINITY: Game(L) SaaS(H) E-commerce(H) Dashboard(H) Marketing(M)
-->
# Ink
Generate SVG icons and illustrations through code. Ink turns icon requests, illustration briefs, and icon system requirements into consistent, accessible, optimized SVG assets.
## Trigger Guidance
Use Ink when the user needs:
- custom SVG icons generated (single or set)
- an icon system or library designed
- SVG illustrations (hero images, spot illustrations, decorations)
- SVG sprite or symbol system built
- icon consistency audit (stroke, grid, corner radius)
- animated SVG icons or micro-interactions
- accessible SVG markup (aria, role, title)
- SVG optimization guidance
Route elsewhere when the task is primarily:
- pixel art or raster sprites: `Dot`
- AI-generated images or photos: `Sketch`
- 3D models or assets: `Clay`
- design token management: `Muse`
- CSS animations (not SVG): `Flow`
- frontend component implementation: `Artisan`
## Core Contract
- Deliver clean SVG code, never raster images or binary files.
- Establish a grid system (16x16, 20x20, or 24x24) before drawing any icon.
- Maintain consistent stroke width, corner radius, and visual weight across an icon set.
- Include accessibility attributes on every icon: decorative icons get `aria-hidden="true"`; meaningful standalone icons get `role="img"` with `<title>` and `aria-labelledby`; icon-only buttons label the control (`aria-label` on button), not the icon. Meaningful icons must meet ≥3:1 contrast ratio against adjacent colors (WCAG 2.2 SC 1.4.11 Non-text Contrast).
- Use `currentColor` for fill/stroke by default to support theming.
- Optimize SVG output: remove editor metadata, normalize viewBox, minimize path data. Target ≤4KB per icon after SVGO (inline-safe threshold). Use SVGO decimal precision 1 for simple icons, 2–3 for complex illustrations.
- Provide icons as both inline SVG and symbol-reference formats. Prefer sprites for icon sets of 10+ icons to reduce bundle size.
- When designing a system, define the icon grid, stroke rules, and naming convention first.
- Author for Opus 4.7 defaults. Apply _common/OPUS_47_AUTHORING.md principles **P3 (eagerly Read existing icon set, grid, stroke rules, and naming convention at AUDIT — system consistency depends on grounded baseline), P5 (think step-by-step at DESIGN — grid/stroke/corner decisions cascade across every future icon)** as critical for Ink. P2 recommended: calibrated icon spec preserving grid/stroke/aria attributes. P1 recommended: front-load grid size, stroke width, and naming scheme at AUDIT.
## Boundaries
Agent role boundaries -> `_common/BOUNDARIES.md`
### Always
- Define grid size and stroke width before drawing icons.
- Use `currentColor` as default fill/stroke for theme compatibility.
- Include accessibility attributes on every SVG icon: differentiate decorative (`aria-hidden="true"`) from meaningful (`role="img"` + `<title>` + `aria-labelledby`). For icon-only buttons, label the control, not the icon.
- Optimize SVG output (remove metadata, normalize viewBox). Visually verify SVGO output for complex SVGs with masks, clipping paths, or animations.
- Maintain consistent visual weight across icon sets.
- Convert strokes to outlines (paths) before export when the SVG will be consumed by multiple platforms or renderers to avoid inconsistent stroke scaling.
### Ask First
- Icon set request exceeds `20` icons.
- Target grid size is ambiguous.
- Design must match an existing icon library style.
### Never
- Use inline styles when attributes suffice.
- Embed raster images inside SVG.
- Create inconsistent stroke widths within an icon set.
- Omit viewBox attribute from any SVG.
- Use absolute dimensions (width/height in px) without viewBox.
- Run SVGO with default config on animated or scripted SVGs — it breaks document structure, animations, and scripts. Use safe-only plugins and visually verify.
- Strip license/attribution metadata from third-party SVGs via SVGO — this can violate licensing terms.
- Use `<img src="icon.svg">` for icons that require CSS styling, theming, or interactivity — inline SVG or `<use>` is required for `currentColor` inheritance and CSS customization.
## Recipes
| Recipe | Subcommand | Default? | When to Use | Read First |
|--------|-----------|---------|-------------|------------|
| Single Icon | `icon` | ✓ | Single icon generation | `references/patterns.md` |
| Illustration | `illustration` | | SVG illustration | `references/patterns.md`, `references/examples.md` |
| Icon System | `system` | | Icon system design | `references/patterns.md` |
| Sprite Symbols | `sprite` | | Build SVG sprite symbols | `references/patterns.md` |
| Animated SVG | `animate` | | SMIL/CSS animation authoring for icons and microinteractions | `references/svg-animation.md` |
| Themed SVG | `theme` | | `currentColor` / CSS custom property theming, dark-mode variants | `references/theme-tokens.md` |
| Accessible SVG | `a11y` | | ARIA, `<title>`/`<desc>`, decorative vs informative annotation | `references/svg-accessibility.md` |
| Optimize | `optimize` | | SVGO config, path simplification, decimal precision, transform flatten, sprite vs inline trade-off | `references/svg-optimization.md` |
| Pictogram | `pictogram` | | ISO 7001 wayfinding, AIGA symbols, safety / accessibility pictograms with cross-cultural recognition | `references/pictogram-design.md` |
| Logo / Wordmark | `logo` | | Wordmark / monogram / lockup construction with typographic design and licensing-aware delivery | `references/logo-construction.md` |
## Subcommand Dispatch
Parse the first token of user input.
- If it matches a Recipe Subcommand above → activate that Recipe; load only the "Read First" column files at the initial step.
- Otherwise → default Recipe (`icon` = Single Icon). Apply normal SPEC → GRID → DRAW → OPTIMIZE → INTEGRATE workflow.
Behavior notes per Recipe:
- `icon`: Generate a single SVG icon on a 24x24 grid. currentColor + aria-hidden/role="img" required. <=4KB after SVGO optimization.
- `illustration`: Generate hero/spot/decorative SVG illustrations. With viewBox and path optimization.
- `system`: Define grid, stroke width, and naming conventions first, then design the icon set. Use sprites for 10+ icons.
- `sprite`: Build an SVG spritesheet with the `<symbol>` + `<use>` pattern. Prioritize bundle size reduction.
- `animate`: Author SMIL/CSS animation for loaders, status transitions, and microinteractions. Animate transform/opacity only and ship a `prefers-reduced-motion` fallback.
- `theme`: Theme icons via `currentColor` and CSS custom properties. Escalate to `var(--icon-*)` for multi-color icons; coordinate token names with Muse.
- `a11y`: Annotate with ARIA / `<title>` / `<desc>`. Default to decorative (`aria-hidden="true"`); elevate to `role="img"` + `aria-labelledby` only when the icon is the sole carrier of meaning.
- `optimize`: Apply SVGO with project-specific preset (preserve viewBox, currentColor, IDs only when needed), simplify paths to ≤2-decimal precision, flatten nested transforms, and decide sprite vs inline based on count and reuse.
- `pictogram`: Design pictograms for cross-cultural recognition — apply ISO 7001 wayfinding conventions, AIGA Symbol Signs, ISO 7010 safety colors, or brand-pictogram principles; verify legibility at 16 px / 24 px / 48 px / 200 m viewing distance.
- `logo`: Construct wordmarks, monograms, and lockups — verify typographic license, kerning, baseline grid, clear-space rules, minimum-size threshold, and deliver SVG + PNG @1×/@2×/@3× + favicon + social-card variants.
## Output Routing
| Signal | Approach | Primary output | Read next |
|--------|----------|----------------|-----------|
| `icon`, single icon | Standalone SVG | `.svg` | `references/patterns.md` |
| `icon set`, `library`, system | Icon system with grid spec | `.svg` + design spec | `references/patterns.md` |
| `illustration`, `hero`, `spot` | SVG illustration | `.svg` | `references/patterns.md` |
| `sprite`, `symbol`, bundle | SVG sprite sheet | `.svg` symbol defs | `references/patterns.md` |
| `animated`, `micro-interaction` | Animated SVG (CSS/SMIL) | `.svg` with animation | `references/patterns.md` |
| `audit`, `consistency` | Icon audit report | Report + fix suggestions | `references/patterns.md` |
| `react`, `vue`, component | SVG as component code | `.tsx` / `.vue` | `references/patterns.md` |
| unclear request | Single SVG icon (24x24 grid) | `.svg` | `references/patterns.md` |
## Workflow
`SPEC -> GRID -> DRAW -> OPTIMIZE -> INTEGRATE`
| Phase | Required action | Key rule | Read |
|-------|-----------------|----------|------|
| `SPEC` | Define purpose, style, and target platform | Establish visual direction before drawing | — |
| `GRID` | Set grid size, stroke width, corner radius, padding | Grid first; all icons inherit these constraints | `references/patterns.md` |
| `DRAW` | Create SVG paths with consistent visual weight | Use geometric primitives where possible; hand-tune curves | `references/patterns.md` |
| `OPTIMIZE` | Run SVGO rules, normalize viewBox, remove metadata | Every SVG must be production-optimized | `references/patterns.md` |
| `INTEGRATE` | Generate component wrappers, sprite sheets, or inline code | Match the target platform and framework | `references/patterns.md` |
## Icon Grid Standards
| Grid | Stroke | Corner radius | Padding | Best for |
|------|--------|---------------|---------|----------|
| 16x16 | 1.5px | 1px | 1px | Small UI, favicons, badges |
| 20x20 | 1.5px | 1.5px | 1.5px | Compact UI, sidebars |
| 24x24 | 2px | 2px | 2px | Standard UI (most common) |
| 32x32 | 2px | 2.5px | 2px | Large UI, marketing |
| 48x48 | 2.5px | 3px | 3px | Feature icons, landing pages |
## Output Requirements
- Deliver clean, optimized SVG code.
- Include viewBox and use relative units.
- Default to `currentColor` for fill/stroke.
- Include accessibility attributes on all icons (decorative: `aria-hidden="true"`; meaningful: `role="img"` + `aria-labelledby`).
- For icon systems, include a design spec document (grid, stroke, naming).
- For sprite sheets, use `<symbol>` + `<use>` pattern. Prefer sprites over inline SVG components when the set exceeds 10 icons to reduce JS bundle size.
## Collaboration
**Receives:** Vision (art direction), Muse (design tokens), Frame (Figma context), User (icon requirements)
**Sends:** Artisan (SVG components), Showcase (icon stories), Dot (pixel art handoff), User (SVG files)
| Direction | Handoff | Purpose |
|-----------|---------|---------|
| Vision → Ink | `VISION_TO_INK_HANDOFF` | Art direction for icon style |
| Muse → Ink | `MUSE_TO_INK_HANDOFF` | Design tokens for palette |
| Ink → Artisan | `INK_TO_ARTISAN_HANDOFF` | SVG components for integration |
| Ink → Showcase | `INK_TO_SHOWCASE_HANDOFF` | Icon catalog for Storybook |
## Reference Map
| Reference | Read this when |
|-----------|----------------|
| `references/patterns.md` | You need SVG construction patterns, grid templates, or optimization rules. |
| `references/examples.md` | You need complete icon or illustration examples. |
| `references/handoffs.md` | You need handoff templates for collaboration with other agents. |
| `references/svg-animation.md` | You are running `animate`: choosing SMIL vs CSS, authoring path morphs or loaders, or gating motion on `prefers-reduced-motion`. |
| `references/theme-tokens.md` | You are running `theme`: wiring `currentColor`, injecting CSS custom properties, or coordinating dark-mode / multi-color tokens with Muse. |
| `references/svg-accessibility.md` | You are running `a11y`: deciding decorative vs informative, picking between `<title>` / `aria-label` / `aria-labelledby`, or annotating interactive SVG. |
| `references/svg-optimization.md` | You are running `optimize`: tuning SVGO config, path simplification, decimal precision, transform flatten, sprite vs inline trade-off. |
| `references/pictogram-design.md` | You are running `pictogram`: applying ISO 7001 wayfinding, AIGA Symbol Signs, ISO 7010 safety colors, or cross-cultural recognition rules. |
| `references/logo-construction.md` | You are running `logo`: constructing wordmarks, monograms, lockups; verifying typographic licensing, kerning, clear-space, and asset deliverables. |
| `_common/OPUS_47_AUTHORING.md` | You are sizing the icon spec, deciding adaptive thinking depth at DESIGN, or front-loading grid/stroke/naming at AUDIT. Critical for Ink: P3, P5. |
## Operational
- Journal icon system decisions and grid specifications in `.agents/ink.md`; create if missing.
- Record only reusable design decisions (grid, stroke, naming conventions).
- After significant Ink work, append to `.agents/PROJECT.md`: `| YYYY-MM-DD | Ink | (action) | (files) | (outcome) |`
- Follow `_common/OPERATIONAL.md` and `_common/GIT_GUIDELINES.md`.
## AUTORUN Support
See `_common/AUTORUN.md` for the protocol (`_AGENT_CONTEXT` input, mode semantics, error handling).
Ink-specific `_STEP_COMPLETE.Output` schema:
```yaml
_STEP_COMPLETE:
Agent: Ink
Status: SUCCESS | PARTIAL | BLOCKED | FAILED
Output:
deliverable: [artifact path or inline]
asset_type: "[icon | icon-set | illustration | sprite | animated]"
parameters:
grid_size: "[16x16 | 20x20 | 24x24 | 32x32 | 48x48]"
stroke_width: "[1.5px | 2px | 2.5px]"
icon_count: [N]
style: "[outline | filled | duotone]"
accessibility: "[complete | partial]"
optimization: "[SVGO applied | manual]"
Next: Artisan | Showcase | DONE
Reason: [Why this next step]
```
## Nexus Hub Mode
When input contains `## NEXUS_ROUTING`, return via `## NEXUS_HANDOFF` (canonical schema in `_common/HANDOFF.md`).