n8n:ui-design について
n8n のフロントエンドコンポーネントを開発する人向けの UI 設計スキルです。design-system の再利用、トークン、アニメーションの指針を扱います。
主な機能
- 01デザイントークンの確認と適用
- 02既存の design-system コンポーネントの優先
- 03アニメーションとトランジションの mixin
- 04インターフェースレビュー指針の参照
活用シーン
- 01n8n のフロントエンドコンポーネントのスタイリング
- 02一貫したアニメーションの実装
- 03インターフェース変更のレビュー
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ n8n-io/ n8n --skill n8n:ui-designインストール後、Claude Code で/n8n:ui-designを入力して読み込まれたか確認します。
同梱ファイルrules/web-animation-guidelines.mdrules/web-interface-guidelines.md
詳細
UI デザイン
フロントエンドでコンポーネントを構築、スタイリング、使用するための包括的なガイドです。
リファレンス
- コンポーネントをスタイリングする際は、
packages/frontend/@n8n/design-system/src/styleguide/*.mdxを使用します - アニメーションには、
rules/web-animation-guidelines.mdを使用します - UI の変更をレビューする際は、
rules/web-interface-guidelines.mdを使用します
ベストプラクティス
- 必ず
packages/frontend/@n8n/design-system/src/css/の_tokens.scssまたは_primitives.scssにある CSS 変数を使用します。長さ、色、フォントサイズ、時間をリテラル値として記述する前に、必ずそれぞれを確認してください。各スペーシングトークンには、コメントで px 値が記載されています:--spacing--5xs: 0.125rem; /** 2px **/。このコメントを grep して、px 値に対応するトークンを探します。grep ではトークンファミリーごとに 1 件ずつ結果が返るため、プロパティに合ったファミリーを選びます:margin と padding には--spacing--*、border-radius には--radius--*、height には--height--*を使用します。スタイルガイドのpackages/frontend/@n8n/design-system/src/styleguide/spacing-size.mdxにも、同じスケールが表として記載されています。スペーシングスケールは 2px から始まるため、値が小さいことはハードコードする理由にはなりません。ハードコードするのは、検索しても該当するトークンが見つからない場合に限ります。その理由をコメントに記載してください。 - 必ず
packages/frontend/@n8n/design-system/src/componentsの既存コンポーネントを優先して使用します。@deprecatedと記されていないコンポーネントを優先してください。 - ソリッドコンポーネントに hover/active のアルファ動作を追加する場合は、明示的なパーセンテージを指定した
color-mix()を優先します。 - アニメーションやトランジションを扱う場合は、必ず
packages/frontend/@n8n/design-system/src/css/mixins/motion.scssの mixin を優先して使用します
コンポーネント
カスタム実装を作成するのではなく、既存の design-system コンポーネントを使用します:
- 「ワークフローの削除を確認するモーダルダイアログを追加する」→
N8nDialogを使用します - 「ワークフローのステータスを選択するドロップダウンを追加する」→
N8nDropdownまたはN8nSelectを使用します - 「新しいアイテムを追加する + アイコン付きボタンを追加する」→
iconOnlyprop を指定したN8nButtonをN8nTooltipでラップし、さらにN8nTooltipでラップします。N8nIconと適切な aria-label を使用します。 - 「破壊的な操作を行うボタンを追加する」→
variant="destructive"を指定したN8nButtonを使用します - 「背景色を白/黒にする」→ ライトモードでは白に
var(--background--surface)を使用し、ダークモードでは「black」を使用します - 「タイトルを自然にアニメーション表示する」→
motion.scssのfade-in-upmixin とvar(--duration--base)を使用します
コメント
Markdown 対応