Communitygithub.com

dominikmartn/nothing-design

ユーザーが「Nothingスタイル」「Nothingデザイン」「/nothing-design」と明示的に頼んだ場合、またはNothingデザインシステムの使用・適用を直接依頼した場合に使用します。一般的なUIやデザインタスクでは絶対に自動トリガーしないでください。

nothing-design とは?

このスキルは、Nothing(ノッシング)デザインシステムに基づいたUI/UXデザインのためのプロフェッショナルツールキットです。スイス・タイポグラフィ、ブラウンやティーンエンジニアリングに代表されるインダストリアルデザイン、そして現代のインターフェース技術に精通したシニアプロダクトデザイナーの知識とルールを集約しています。モノクロームを基調とし、タイポグラフィに重点を置いた、情報量が多くても雑然としない、厳格なダークモードとライトモードの両方を第一級の状態でデザインするための哲学、クラフトルール、アンチパターン、ワークフローが詳細に定義されています。主にClaude CodeやCursor、CodexなどのAIエージェント上で動作し、ユーザーが明示的に「Nothingスタイル」を要求した場合にのみ起動します。このスキルを使うことで、一貫性がありながらも印象的で、工業的な温もりを感じさせるデジタルプロダクトのUIを効率的に生成できます。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/dominikmartn/nothing-design-skill/tree/main/nothing-design

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Nothing風UI/UXデザインシステム

スイス・タイポグラフィ、インダストリアルデザイン(ブラウン、ティーンエンジニアリング)、そしてモダンなインターフェース技術に精通したシニアプロダクトデザイナーのツールキット。モノクローム、タイポグラフィ主導、情報量が多くても雑然としない。ダークモードとライトモードの両方を厳格に設計。

デザイン作業を開始する前に、必要なGoogle Fontsとその読み込み方法を宣言すること(references/tokens.md セクション1参照)。フォントがすでに利用可能であると想定してはいけません。


1. デザイン哲学

  • 足すのではなく、引くこと。 すべての要素は、そのピクセルの価値を証明しなければならない。デフォルトは削除。
  • 構造そのものが装飾である。 グリッド、データ、階層そのものを露出させる。
  • モノクロームがキャンバスである。 色はイベントであり、デフォルトではない — ただし、データステータスをエンコードする場合を除く(セクション3参照)。
  • タイポグラフィが重責を担う。 スケール、ウェイト、スペーシングが階層を生み出す — 色ではなく、アイコンでもなく、境界線でもない。
  • 両モードは第一級である。 ダークモード:有機ELブラック。ライトモード:暖かみのあるオフホワイト。どちらも「派生」ではない — 両方に完全なデザイン的注意を払う。どのモードから始めるかユーザーに尋ねること。
  • 工業的な温もり。 技術的で正確だが、決して冷たくならない。人間の手の温もりが感じられること。

2. クラフトルール — 構成方法

2.1 視覚的階層:3層ルール

すべての画面は、正確に3つの重要度の層を持つ。2つでも5つでもない。3つである。

層内容方法
プライマリユーザーが最初に目にする「たった一つのもの」。数字、見出し、状態。DotoまたはSpace Groteskをディスプレイサイズで。--text-display。48~96pxの余白。
セカンダリ補足的なコンテキスト。ラベル、説明、関連データ。Space Groteskを本文/小見出しで。--text-primary。プライマリに密接にグループ化(8~16px)。
ターシャリメタデータ、ナビゲーション、システム情報。表示はされるが、決して競合しない。Space Monoをキャプション/ラベルで。--text-secondaryまたは--text-disabled。すべて大文字。端または下部に押しやる。

テスト方法: 画面を細めて見る。最も重要なものがまだわかるか?もし2つの要素が競合しているなら、一方を縮小、減色、または移動させる必要がある。

よくある間違い: すべてを「セカンダリ」にしてしまうこと。均等なサイズの要素と均等なスペーシング = 視覚的な平坦さ。勇気を持って — プライマリを途方もなく大きく、ターシャリを途方もなく小さくせよ。そのコントラストこそが階層である。

2.2 フォント規律

画面ごとに、以下を最大で使用する:

  • 2つのフォントファミリー(Space Grotesk + Space Mono。Dotoはヒーロー的な瞬間のみ。)
  • 3つのフォントサイズ(大1、中1、小1)
  • 2つのフォントウェイト(レギュラー + あと1つ — 通常はLightまたはMedium、稀にBold)

予算だと考えよ。サイズやウェイトを追加するたびに、視覚的な一貫性が失われる。新しいサイズを追加する前に、代わりにスペーシングや色でこの区別を作れないか自問せよ。

決定サイズウェイト色
見出し vs. 本文はいいいえいいえ
ラベル vs. 値いいえいいえはい
アクティブ vs. 非アクティブなナビいいえいいえはい
ヒーロー数字 vs. 単位はいいいえいいえ
セクションタイトル vs. 内容はい任意いいえ

経験則: 新しいフォントサイズに手を伸ばそうとしているなら、それはおそらくスペーシングの問題である。代わりに距離を追加せよ。

2.3 意味としてのスペーシング

スペーシングは、関係性を伝えるための主要なツールである。

狭い(4~8px)   = 「これらは一緒に属する」(アイコン + ラベル、数字 + 単位)
中程度(16px)    = 「同じグループ、異なるアイテム」(リストアイテム、フォームフィールド)
広い(32~48px)   = 「ここから新しいグループ」(セクション区切り)
非常に広い(64~96px)   = 「これは新しいコンテキスト」(ヒーローからコンテンツ、主要な分割)

もし区切り線が必要なら、おそらくスペーシングが間違っている。 区切り線は、スペーシングのコントラストが不十分であることの症状である。アイテムが構造的に同一であるデータ密度の高いリストでのみ使用せよ。

2.4 コンテナ戦略(上部を優先)

  1. スペーシングのみ(近接性でアイテムをグループ化)
  2. 単一の区切り線
  3. 微妙な境界線の輪郭
  4. 背景が変化したサーフェスカード

各ステップで視覚的な重みが増す。機能する最も軽いツールを使用せよ。最も重要な要素を決して囲まない — 背景の上に浮かせておけ。

2.5 階層としての色

モノクロームシステムでは、グレースケールが階層そのものである。画面ごとに最大4レベル:

--text-display (100%) → ヒーロー数字。画面に1つ。
--text-primary (90%)  → 本文、主要コンテンツ。
--text-secondary (60%) → ラベル、キャプション、メタデータ。
--text-disabled (40%) → 無効、タイムスタンプ、ヒント。

赤(#D71921)は階層の一部ではない。 割り込みである — 「ほら、今、ココを見ろ」という意味。緊急のものがないなら、画面上に赤はない。

データステータス色(成功の緑、警告の琥珀、アクセントの赤)は、データ値をエンコードする場合、「ワンアクセント」ルールの例外とする。色は値そのものに適用し、ラベルや行の背景には適用しない。完全なカラーシステムについてはreferences/tokens.mdを参照のこと。

2.6 一貫性 vs. バリエーション

一貫させるもの: フォントファミリー、ラベルの扱い(常にSpace Mono、すべて大文字)、スペーシングのリズム、色の役割、コンポーネントの形状、配置。

パターンを正確に1か所だけ破ること: 特大の数字、長方形の中の円形ウィジェット、グレーの中の赤いアクセント、Dotoの見出し、他のすべてがタイトな中での広大なギャップ。

この唯一の破綻こそがデザインである。それがない場合:無菌的なグリッド。2つ以上ある場合:視覚的な混沌。

2.7 構図のバランス

非対称 > 対称。 中央揃えのレイアウトは平凡に感じられる。意図的に不均衡な構図を好め:

  • 左大、右小: ヒーローメトリック + メタデータスタック。
  • 上部重視: 上部に大きな見出し、下部にまばらなコンテンツ。
  • 端に固定: 重要な要素を画面端に固定、中央にネガティブスペース。

重い要素は、より多くの重い要素ではなく、より多くの空きスペースでバランスをとれ。

2.8 Nothingの雰囲気

  1. 空虚さによる自信。 広く途切れのない背景領域。スペースを埋めようとする衝動に抵抗せよ。
  2. 細部の正確さ。 文字間隔、正確なグレー値、4pxのギャップ。マイクロな決定が熟練の技へと積み重なる。
  3. データとしての美しさ。 48pxのSpace Monoで表示された 36GB/s がビジュアルそのものである。イラストは不要。
  4. 機械的な正直さ。 コントロールはコントロールのように見える。トグル = 物理スイッチ。ゲージ = 計器。
  5. ひとつの驚きの瞬間。 ドットマトリックス見出し。円形ウィジェット。赤い点。抑制が、唯一の表現の瞬間を力強くする。
  6. 打楽器的で、流動的ではない。 UIサウンドを想像せよ:スウッシュではなくクリック、チャイムではなくチック。機械的で正確に感じられるトランジションをデザインせよ。

2.9 データ密度の高い画面における視覚的バリエーション

1つの画面に3つ以上のデータセクションがある場合、視覚的な形式を変えること:

形式最適な用途重み
ヒーロー数字(大きなDoto/Space Mono)単一の主要指標重い — 1回使用
セグメント化されたプログレスバー目標に向けた進捗中程度
同心円 / 弧複数の関連するパーセンテージ中程度
インラインコンパクトバー行内の二次的指標軽い
数字のみ + ステータス色比率を伴わない値最も軽い
スパークライン経時的な傾向中程度
統計行(ラベル + 値)単純なデータポイント軽い

先頭セクション → 最も重い処理。二次 → 異なる形式。三次 → 最も軽い。形式は変わるが、声は変わらない。


3. アンチパターン — 絶対に行わないこと

  • UIフレームにグラデーションを使用しない
  • 影、ぼかしは使用しない。フラットなサーフェス、境界線による分離。
  • スケルトンローディング画面は使用しない。代わりに [LOADING...] テキストまたはセグメント化されたスピナーを使用する。
  • トーストポップアップは使用しない。インラインステータステキストを使用する: [SAVED]、[ERROR: ...]
  • 悲しそうな顔のイラスト、かわいいマスコット、複数段落の空状態は使用しない
  • テーブルにゼブラストライプを使用しない
  • 塗りつぶしアイコン、マルチカラーアイコン、UIとしての絵文字は使用しない
  • パララックス、スクロールジャッキング、または過剰なアニメーションは使用しない
  • スプリング/バウンスのイージングは使用しない。微妙なイーズアウトのみ。
  • カードのボーダー半径は16pxを超えないこと。ボタンはピル(999px)または技術的(4~8px)。
  • データ可視化:色を導入する前に、不透明度(100%/60%/30%)またはパターン(実線/ストライプ/点線)で区別する。

4. ワークフロー

  1. フォントを宣言する — どのGoogle Fontsを読み込むかユーザーに伝える(references/tokens.md参照)
  2. モードを尋ねる — ダークかライトか?どちらもデフォルトではない。
  3. 階層をスケッチする — コードを書き始める前に3つの層を特定する
  4. 構成する — クラフトルール(セクション2.1~2.9)を適用する
  5. トークンを確認する — 正確な値についてはreferences/tokens.mdを参照する
  6. コンポーネントを構築する — パターンについてはreferences/components.mdを参照する
  7. プラットフォームに適応させる — 出力規則についてはreferences/platform-mapping.mdを参照する

5. リファレンスファイル

詳細なトークン値、コンポーネント仕様、プラットフォーム固有のガイダンスについては、以下を参照:

  • references/tokens.md — フォント、タイプスケール、カラーシステム(ダーク + ライト)、スペーシングスケール、グリッド、モーション、アイコン、ドットマトリックスモチーフ
  • references/components.md — カード、ボタン、入力、リスト、テーブル、ナビ、タグ、セグメントコントロール、プログレスバー、チャート、ウィジェット、オーバーレイ、状態パターン
  • references/platform-mapping.md — HTML/CSS、SwiftUI、React/Tailwind、紙への出力規則

関連スキル