Communitygithub.com

CDS フロントエンド(設計 / 実装 / リファクタリング)

Claude Design System (CDS) スタイルのフロントエンドUIを設計、実装、またはリファクタリングします。Claude Desktop のビジュアル言語、トークン、モーション物理、インタラクションガードに対応しています。

実装 / リファクタリング) とは?

このスキルは、Claude Design System (CDS) に準拠したフロントエンドUIの設計・実装・リファクタリング・監査を行うためのワークフローを提供します。CDS 1.x(暖色系クレイカラー、20pxコンポーザー、8px半径、Framer Motionスプリング)とCDS 2.0(寒色系キャンバス、異なるコンポーザーサイズ、CSSコンポジターモーション)の2つのベースラインをサポートしており、タスクに応じて適切なベースラインを選択します。このスキルは、トークンとコンポーネントの真の情報源として上流リポジトリに依存しており、再利用可能なモジュールを優先し、すべての色、半径、モーションが `--cds-*` 変数またはTailwindエイリアスから派生することを強制します。IME 入力・ストリーミングスクロール・iframe・キーボードフォーカスに関する厳格なガードを実施し、軽量・ダークモードの両方でアクセシビリティと堅牢性を確保します。このスキルは、特にClaude Desktop 2.0の密度/サイドバー/エフォート/コンポジターモーション/オフラインキューを扱うタスク向けの `docs/v2/delta.md` の指示を参照します。AIエージェントや開発者は、このスキルを使用して実装前のトークン使用状況の監査、設計ルールの適用、出力が期待されるスタイルと機能の契約を満たしていることの確認ができます。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Praying/cds-frontend-skill/tree/HEAD/skills/cds-frontend

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

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

ドキュメント

実装 / リファクタリング) は何をしますか?

真の情報源は上流リポジトリ https://github.com/Caho1/open-claude-ui (MIT) です:AGENTS.md(トークン、プリセット、コンポーネント)、code-examples/ および docs/v2/(Claude Desktop 2.0、v2.37337.1)。以下のパスはそのリポジトリからの相対パスです。プロジェクトと一緒にクローンまたは開くか、GitHubで読んでください。このスキルはワークフローであり、値を複製しません。タスクがv2の動作(密度、サイドバー、エフォート、コンポジターモーション、オフラインキュー)に触れる場合は references/v2-delta.md を読んでください。

0. 最初にベースラインを選ぶ

  • CDS 1.x (code-examples/ のデフォルト):暖色系クレイのアクセントカラー、20pxコンポーザー、8px半径、Framer Motionスプリング。
  • CDS 2.0 (docs/v2):寒色系 #FCFCFB キャンバス、12/14pxコンポーザー、6/8px半径、24/32pxコントロール、CSSコンポジターモーション。 どちらかを尋ねるか推測してください。1つのサーフェス内でこれらを混在させないでください。多くのv2トークン(--cds-h-control、data-density)はdocsに文書化されていますが、code-examples/cds-theme.css にはまだ定義されていません。使用前に定義してください。

1. ワークフロー

  1. 分類:タスクを分類します。新しいコンポーネント / リススタイル / リファクタリング / 監査。
  2. 書く前に再利用:code-examples/(30モジュール、AGENTS.md §3に索引)と src/index.ts を確認します。合成または拡張してください。再導出しないでください。
  3. トークン:すべての色、半径、期間、イージングは --cds-* 変数またはTailwindエイリアスから取得します。生の16進数は使わず、アドホックな ms も使わないでください。
  4. モーション:以下の表に従って選択します。
  5. エッジガード(セクション3):入力、スクロール、iframeコードに対して実施します。
  6. 検証(セクション4):失敗箇所をそのまま報告します。

2. 決定ルール

モーションの選択

状況使用するもの
ホバー/プレス/フェード/スケルトン/エントランス、ストリーミング中に実行されるものPure CSS + --cds-dur-* + --cds-ease-*(コンポジターのみ:transform、opacity、filter)
ドラッグリリース、速度やレイアウトに依存する幅/高さFramer Motion と SPRING_BOUNCY / SNAPPY / GENTLE / HEAVY_SNAP のいずれか
モーション軽減スナップ、状態変更は絶対に削除しない。prefers-reduced-motion を尊重する
transition: all は絶対に使わず、linear も使わず、ハードコードされたスプリング数値も使わない。var(--cds-dur-*) を使用した transition のショートハンドは、トークンが未定義の場合に暗黙的に失敗するため、5つすべて(60ms / 120 / 200 / 300 / 450)を定義してください。

サーフェスと境界線:surface-0..3 とヘアラインの border-subtle(v2では0.5px)でレイヤリングします。ストロークは1つのみ:境界線のあるコンテナ内のコントロールは border-none を取得します。影は固定のアルファ黒ではなく、color-mix() を使用してサーフェスから導出します。純粋な #000 / #fff は絶対に使わないでください(コードブロックの #0d0d0c は除く)。

密度:--cds-h-control / --cds-radius / --cds-icon からコントロールのサイズを取得します。固定pxは使わないでください。これによりCompactとComfortableの両方で機能します。44pxのヒットエリアを下回るCompact行は、ネガティブマージンのタッチ拡張(--cmp-chin-touch-grow)を使用します。

数字:タイマー、カウンター、トークンゲージ、行番号はすべて tabular-nums を使用します。

情報設計(v2のスタンス):チャットのおもちゃではなく、ワークステーションです。ゆったりしたカードよりも、密集したステータス行(28px、ブランチ、PR、実行ハートビート)を優先します。コスト/リスクを明示的に表示します(Max警告付きのエフォート階層、使用量ゲージ)。ユーザー入力を貴重なものとして扱います。

3. 非妥協のガード

  • IME:Enter-to-sendの前に if (e.nativeEvent.isComposing || e.keyCode === 229) return; を追加します。
  • ストリーミングスクロール:Date.now() - lastUserScroll < 150 の場合は自動ピン留めしないでください。ピン留めは下端から40px以内の場合のみに行います。
  • モデル生成HTMLのためのiframe:allow-same-origin なしでサンドボックス化し、オリジンチェック付きのpostMessage、navigator.userActivation でゲートします。
  • ゼロロス入力:失敗/オフライン送信は永続化され(IndexedDBキュー)、リロード時に復元します。
  • 環境の不変性:コンテキストウィンドウ / ワークツリー / MCP設定はセッション作成時に固定され、セッション中にそれらを編集するUIを構築しないでください。
  • バイナリアセット(.ttf/.otf/.mp3/.wav)は使用しません。システムフォントスタックとWeb Audio合成のみを使用します。
  • ライトモード(:root)とダークモード(.dark)の両方をチェックする必要があります。寒色系の紫/ネオングラデーション(1.x)は使用しません。
  • キーボード:リスト/グリッドはロービングフォーカス(useClaudeRovingFocus)を使用します。ダイアログはフォーカスをトラップします。

4. リファクタリング / 監査チェックリスト

ターゲットで以下をgrepします:16進数リテラル、rounded-[…px]、transition-all、ease-linear、duration-[…]、プリセット外の stiffness:、IMEガードがないEnterの onKeyDown、ストリーミングコード内の scrollTo/scrollTop =、allow-same-origin、境界線のある親にネストされた1px境界線。それぞれをトークン/プリセット/ガードに置き換えます。動作は維持し、要求されない限り表示のみを変更します。

次に、以下を実行し、すべてが終了コード0で終了する必要があります:

npm run typecheck && npm run check:tokens && npm run build

AGENTS.md に --cds-* リファレンスを追加した場合、check:tokens はそれが cds-theme.css に存在することを要求します。

5. 出力契約

使用したベースライン(1.x / 2.0)、再利用した既存モジュール、選択したトークン/プリセットとその理由、および検証結果を記述します。検証されていないもの(例:ビジュアルダークモードチェック)は「未検証」とマークします。

関連スキル