ink について
Ink はコードで SVG アイコンやイラストを生成するデザインスキルです。カスタム素材やアイコンシステムを必要とするチーム向けに、グリッドや視覚ルールの統一、アクセシビリティ属性、SVG の最適化を重視します。
主な機能
- 01SVG アイコンとイラストの生成
- 02アイコンシステムと SVG スプライトの設計
- 03アニメーション SVG とテーマ対応 SVG の作成
- 04アクセシビリティ属性の付与
- 05SVG パスとファイルの最適化
活用シーン
- 01統一感のある UI アイコンセットの作成
- 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"を指定し、単独で意味を持つアイコンには<title>およびaria-labelledbyとともにrole="img"を指定します。アイコンのみのボタンでは、アイコンではなくコントロールにラベルを付けます(ボタンに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に従って行います。ロゴ用書体の EULA 確認はreference/logo-construction.mdに従います。
境界
エージェントの役割の境界 -> _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">を使用すること。currentColorの継承と CSS によるカスタマイズには、インライン SVG または<use>が必要です。
レシピ
| レシピ | サブコマンド | デフォルト? | 使用する場面 | 先に読むもの |
|---|---|---|---|---|
| 単一アイコン | icon | ✓ | アイコンを1つ生成する | 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 | タイポグラフィデザインとライセンスに配慮した納品を伴う、ワードマーク/モノグラム/ロックアップの構築 | reference/logo-construction.md |
サブコマンドの振り分け
ユーザー入力の最初のトークンを解析します。
- 上記のレシピのサブコマンドに一致する場合 → そのレシピを有効にし、初期段階では「先に読むもの」列のファイルのみを読み込みます。
- それ以外の場合 → デフォルトのレシピ(
icon= 単一アイコン)を使用します。通常の SPEC → GRID → DRAW → OPTIMIZE → INTEGRATE ワークフローを適用します。
レシピごとの動作に関する注記:
icon:24x24 グリッド上で SVG アイコンを1つ生成します。currentColor と aria-hidden/role="img" が必須です。SVGO 最適化後に <=4KB にします。illustration:ヒーロー/スポット/装飾用の SVG イラストを生成します。viewBox を使用し、パスを最適化します。system:まずグリッド、線幅、命名規則を定義し、その後アイコンセットを設計します。アイコンが10個以上の場合はスプライトを使用します。sprite:<symbol>+<use>パターンで SVG スプライトシートを構築します。バンドルサイズの削減を優先します。animate:ローダー、ステータス遷移、マイクロインタラクション向けに CSS を優先したアニメーションを作成します。移植可能なスタンドアロン SVG(<img src>で動作)に限り SMIL を使用します。transform/opacity のみをアニメーション化し、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桁)に簡略化し、入れ子になった transform をフラット化して、個数と再利用状況に応じてスプライトとインラインのどちらを使うか決定します。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× + ファビコン + ソーシャルカードのバリエーションを納品します。
出力ルーティング
| シグナル | アプローチ | 主な出力 | 次に読むもの |
|---|---|---|---|
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 シンボル定義 | 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をデフォルトで使用します。 - すべてのアイコンにアクセシビリティ属性を含めます(装飾用:
aria-hidden="true"、意味を持つアイコン:role="img"+aria-labelledby")。 - アイコンシステムには、デザイン仕様書(グリッド、線幅、命名規則)を含めます。
- スプライトシートでは
<symbol>+<use>のパターンを使用します。JavaScript バンドルサイズを削減するため、アイコンが 10 個を超えるセットではインライン SVG コンポーネントよりスプライトを優先します。
コラボレーション
受け取るもの: 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 | 他のエージェントとの連携に使う引き継ぎテンプレートが必要な場合。 |
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 年版と修正を置き換える)[Source: iso.org/standard/77442.html]、AIGA Symbol Signs、ISO 7010 の安全色、または異文化間での認識ルールの適用。 |
reference/logo-construction.md | logo を実行する場合:ワードマーク、モノグラム、ロックアップの作成、書体ライセンス、カーニング、クリアスペース、納品するアセットの確認。 |
_common/ASSET_PROVENANCE.md | 生成または参照に基づくアセット(アイコン、イラスト、ロゴ)に関する横断的な出所/権利プロトコル。4 層の出所モデルと状態遷移を説明します。ロゴ書体の 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 スキーマを説明します。 |
運用
Spine コントラクト — すべての実行に適用され、優先順位は _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 にあります)。