Communitygithub.com

SrRusian/atomic-page-builder

プロジェクトのデザインシステムに既存のコンポーネントからページ、ビュー、機能を構成するスキルです。新しいアトム、分子、有機体を作成せず、不足しているコンポーネントがある場合はatomic-designスキルに引き継ぎます。

atomic-page-builder とは?

Atomic Page Builderは、プロジェクトで既に利用可能なデザインシステムのコンポーネント(アトム、分子、有機体、テンプレート)のみを使用してページレイアウトを構築することに特化したAIエージェントスキルです。このスキルは、Figmaや仕様書などのデザインソースからグリッド、ギャップ、パディング、ブレークポイントなどのレイアウト値を抽出し、それに基づいてページを組み立てます。新しいコンポーネントやトークン、バリアントが必要な場合は、自動的にatomic-designスキルにハンドオフします。Claude CodeやCursorなどの開発環境で使用でき、playwright-cliを使用して複数のビューポートサイズ(375px、768px、1440px)で実際のブラウザレンダリングを検証します。アクセシビリティ監査やメタデータ修正などの補完スキルとも連携し、堅牢なページ構築を実現します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/SrRusian/claude-toolkit/tree/HEAD/plugins/design-kit/skills/atomic-page-builder

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

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

ドキュメント

Atomic Page Builder

既存のコンポーネントからページを構成します。このスキルは組み立てを行います。atomic-designは作成を行います。

ルール

やるべきことやってはいけないこと
デザインシステムからコンポーネントをインポートする新しいアトム、分子、有機体を作成する
デザインソース(Figma、仕様書、モックアップ)からレイアウト値を取得するグリッド、ギャップ、パディングを推測する
トークンを読み取るスコープ付きスタイルを使用する値をハードコードする(#333、24px)
レスポンシブ動作を含め、デザインを正確に一致させる値を丸めたり、「改善」を追加する
プロジェクトのコンポーネントライブラリのみを使用するプロジェクトが使用していない外部UIライブラリを取り込む

atomic-designへのハンドオフ

以下の場合、atomic-designに切り替えます。

  • 必要なアトム、分子、有機体が存在しない場合。
  • 新しいトークンが必要な場合。
  • デザインでトークンの値が変更され、最初に更新する必要がある場合。

ワークフロー

  1. レイアウト仕様を取得する。 デザインソース(MCP経由のFigma、仕様書、スクリーンショット)が存在する場合は、そこからグリッド、ギャップ、パディング、マージン、ブレークポイントを抽出します。存在しない場合は、入力を求めるか、前提条件を明示します。ページ固有のオーバーライドをメモします。
  2. インベントリを作成する。 プロジェクトが既に持つコンポーネント(アトム、分子、有機体、テンプレート)とそのプロパティをリストアップします。
  3. ギャップ分析を行う。 ページの各領域を既存のコンポーネントにマッピングします。一致しないものをすべてリストアップします。
  4. 構築するか、停止するか。
    • すべてが存在する場合:ページを構成し、仕様に1:1で一致させます。
    • 何かが不足している場合:停止し、ギャップを報告して、atomic-designに切り替えます。
  5. 検証する。 モバイル、タブレット、デスクトップの幅でデザインと比較します。

ページパターン

/** ダッシュボードページ。レイアウト元:<デザインリンクまたはノードID> */
import { DashboardLayout } from '@/design-system/templates/DashboardLayout';
import { Card } from '@/design-system/molecules/Card';
import { DataTable } from '@/design-system/organisms/DataTable';
import styles from './Dashboard.module.css';

export const Dashboard = () => (
  <DashboardLayout>
    <div className={styles.statsGrid}>
      <Card title="収益">$12,450</Card>
    </div>
    <DataTable columns={columns} data={data} />
  </DashboardLayout>
);
.statsGrid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--spacing-4);
}
@media (min-width: 768px) {
  .statsGrid { grid-template-columns: repeat(3, 1fr); gap: var(--spacing-6); }
}

インポートパスとスタイリング手法はプロジェクトに合わせて調整してください。

検証

実際のブラウザ(playwright-cli)で、375px、768px、1440pxの幅、ライトモードとダークモードでページをレンダリングし、コンソールを読み、デザインソースと比較します。また、見出しの順序、ランドマーク、キーボードフロー、ローディング状態、空の状態、エラー状態も確認します。

連携スキル

ニーズスキルまたはツール
不足しているコンポーネントまたはトークンatomic-design(必須の連携スキル)
ページレベルの批評または磨き上げimpeccable
アクセシビリティ監査fixing-accessibility、design:accessibility-review
ページメタデータ、タイトル、Open Graphfixing-metadata
エンジニアリングへの引き継ぎdesign:design-handoff

追加ルール

  • テンプレートのスロット内で構成します。コンポーネントの内部にアクセスしたり、そのスタイルをオーバーライドしたりしないでください。
  • ページ固有のスタイルはレイアウト(グリッド、ギャップ、配置)に限定します。視覚的なものはすべてコンポーネントまたはトークンに属します。
  • コンポーネントをコピー&ペーストして調整しないでください。atomic-designを通じてバリアントをリクエストします。
  • ページをチェックする際は、実際の代表的なコンテンツ(長い名前、空のリスト、エラー)を渡します。
  • ドキュメントのタイトルと、ページごとに1つのh1を設定します。
  • ページファイルには構成とデータの配線のみを含めます。再利用可能なUIロジックは含めません。

参考資料

ファイル参照タイミング
references/design-source-extraction.mdレイアウト値の抽出とページ仕様の作成時
references/inventory-and-gaps.mdコンポーネントの棚卸しとギャップの発見時
references/composition-patterns.mdレイアウト、スロット、データ状態、インポート順に関して

出力チェックリスト

  • レイアウト値はデザインソースから取得され、推測ではない
  • レスポンシブ動作がデザインと一致している
  • すべてのインポートがプロジェクトのデザインシステムから行われている
  • ハードコードされた値がゼロである
  • 新しいコンポーネントがゼロである
  • デザインリンクがページファイルに文書化されている

関連スキル