mcpField
A
artifacts-builder

artifacts-builder

github.com/pixel-process-ug開発385 回インストール33 週間前に更新
リポジトリ

artifacts-builder について

ブラウザーで動く自己完結型の HTML/CSS/JS 成果物を作るスキルです。デモ、プロトタイプ、可視化、ユーティリティを対象とし、ビルド工程なしで、範囲や構成の検討、レスポンシブ設計、段階的な機能強化を進めます。

主な機能

  1. 01単一ファイルまたは少数ファイルでの作成
  2. 02範囲と依存関係の計画
  3. 03レスポンシブなブラウザー画面
  4. 04プログレッシブエンハンスメント
  5. 05入力処理とフォールバック
  6. 06ブラウザーと表示領域の確認

活用シーン

  1. 01インタラクティブなプロトタイプの作成
  2. 02ブラウザー向けデータ可視化の作成
  3. 03共有可能なユーティリティの制作

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pixel-process-ug/superkit-agents --skill artifacts-builder

インストール後、Claude Code で/artifacts-builderを入力して読み込まれたか確認します。

詳細

アーティファクトビルダー

概要

ビルド手順なしで最新のブラウザー上で動作する、自己完結型で本番品質の HTML/CSS/JS アーティファクトを生成します。各アーティファクトは、インタラクティブなデモ、プロトタイプ、データ可視化、ユーティリティツールに必要なすべてを含む、単一ファイル(または最小限のファイルセット)です。プログレッシブエンハンスメント、レスポンシブデザイン、読みやすいコードを重視します。

フェーズ 1:範囲の定義

  1. アーティファクトの目的を明確にします(デモ、プロトタイプ、ツール、可視化)
  2. インタラクティブ性のレベルを決定します(静的、インタラクティブ、データ駆動)
  3. 必要な依存関係を特定します(なし、CDN から読み込み、埋め込み)
  4. レスポンシブ要件を定義します(モバイル、デスクトップ、両方)
  5. 制約を設定します(ファイルサイズ、ブラウザーのサポート、オフライン対応)

停止 — アーキテクチャを決定する前に、範囲と制約をユーザーに確認します。

アーティファクトの種類の決定表
目的複雑さ依存関係例
静的デモ低なし製品のモックアップ、ランディングページ
インタラクティブウィジェット中なし、または Alpine.js計算機、フォームビルダー
データ可視化中〜高D3.js または Chart.jsダッシュボード、チャートエクスプローラー
プロトタイプ中Alpine.js または Petite-Vueクリック可能な UI プロトタイプ
ユーティリティツール中〜高さまざまJSON フォーマッター、カラーピッカー
ジェネレーティブアート中なしCanvas アニメーション、パターンジェネレーター
プレゼンテーション中なし、または Mermaidスライドデッキ、図表ビューアー

フェーズ 2:アーキテクチャ

  1. 単一ファイルまたは複数ファイルの方式を選択します
  2. CDN の依存関係を選択します(必要な場合)
  3. ファイル内のコンポーネント構成を計画します
  4. 状態管理の方法を定義します
  5. プログレッシブエンハンスメントのレイヤーを計画します

停止 — アーキテクチャと依存関係の選択肢を提示し、承認を得ます。

アーキテクチャの決定表
制約単一ファイル複数ファイル
共有が簡単(メール、貼り付け)はいいいえ
ファイルサイズ < 100KBはいどちらでも可
複数のページ/ビュー可能(SPA)より適しています
チームでの共同作業難しいより適しています
オフラインでの使用はい(自己完結型)バンドルが必要
SEO 要件該当なし該当なし(アーティファクトはツールです)
依存関係の決定表
用途推奨CDN URLサイズ
軽量なリアクティビティAlpine.jscdn.jsdelivr.net/npm/alpinejs@3約 15KB
最小限の Vue 風ライブラリPetite-Vueunpkg.com/petite-vue約 6KB
チャートChart.jscdn.jsdelivr.net/npm/chart.js@4約 65KB
データ可視化D3.jscdn.jsdelivr.net/npm/d3@7約 90KB
図表Mermaidcdn.jsdelivr.net/npm/mermaid@10約 120KB
CSS フレームワーク(プロトタイプ)Tailwind Play CDNcdn.tailwindcss.com実行時
アイコンLucideunpkg.com/lucide@latest必要に応じて
依存関係が不要Vanilla JS該当なし0KB
CDN の使用ルール
ルール理由
メジャーバージョン(@3、@7)を固定します互換性を損なう変更を防ぐため
CDN の依存関係は最大 3 つにしますアーティファクトを軽量に保つため
integrity と crossorigin を追加しますCDN の侵害に対するセキュリティ対策
適切な縮退動作を用意しますCDN に障害が発生しても動作させるため
より小さな代替手段を優先しますReact より Alpine、Vue より Petite-Vue

フェーズ 3:実装

  1. セマンティックな HTML 構造を構築します
  2. CSS を追加します(インラインの <style> または埋め込み)
  3. JavaScript の機能を実装します
  4. エラー処理とフォールバックを追加します
  5. さまざまなビューポートとブラウザーでテストします

停止 — ユーザーに渡す前に、アーティファクトが正しく動作することを確認します。

テンプレート構造
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>[Artifact Title]</title>
  <style>
    /* Reset */
    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

    /* Design Tokens */
    :root {
      --color-bg: #ffffff;
      --color-text: #1a1a2e;
      --color-primary: #3b82f6;
      --color-border: #e2e8f0;
      --radius: 0.5rem;
      --space: 1rem;
      --font: system-ui, -apple-system, sans-serif;
    }

    @media (prefers-color-scheme: dark) {
      :root {
        --color-bg: #0f172a;
        --color-text: #e2e8f0;
        --color-primary: #60a5fa;
        --color-border: #334155;
      }
    }

    /* Base Styles */
    body {
      font-family: var(--font);
      background: var(--color-bg);
      color: var(--color-text);
      line-height: 1.6;
    }

    /* Component Styles */
    /* ... */
  </style>
</head>
<body>
  

  <script>
    // Application logic
    (function() {
      'use strict';
      // ...
    })();
  </script>
</body>
</html>
レスポンシブデザインのパターン
コンテナーを基準としたレイアウト
.container {
  width: min(100% - 2rem, 1200px);
  margin-inline: auto;
}

.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
  gap: var(--space);
}
モバイルファーストのメディアクエリー
/* Base: mobile */
.layout { display: flex; flex-direction: column; }

/* Tablet and up */
@media (min-width: 768px) {
  .layout { flex-direction: row; }
  .sidebar { width: 280px; flex-shrink: 0; }
}
プログレッシブエンハンスメント
レイヤー目的要件
HTMLコンテンツにアクセスでき、意味があることCSS や JS がなくても動作する
CSS視覚的な表現とレイアウトJS がなくても動作する
JavaScript強化されたインタラクティブ性動的な動作を追加する
機能検出
// Check before using modern APIs
if ('IntersectionObserver' in window) {
  // Use lazy loading
} else {
  // Load all images immediately
}

if (CSS.supports('backdrop-filter', 'blur(10px)')) {
  element.classList.add('glass-effect');
}
状態管理(フレームワークなし)
シンプルな状態パターン
function createStore(initialState) {
  let state = { ...initialState };
  const listeners = new Set();

  return {
    getState: () => ({ ...state }),
    setState(updates) {
      state = { ...state, ...updates };
      listeners.forEach(fn => fn(state));
    },
    subscribe(fn) {
      listeners.add(fn);
      return () => listeners.delete(fn);
    },
  };
}
URL ベースの状態(共有可能な成果物向け)
function syncStateWithURL(store) {
  const params = new URLSearchParams(location.search);
  for (const [key, value] of params) {
    store.setState({ [key]: JSON.parse(value) });
  }
  store.subscribe(state => {
    const params = new URLSearchParams();
    Object.entries(state).forEach(([k, v]) => params.set(k, JSON.stringify(v)));
    history.replaceState(null, '', `?${params}`);
  });
}
エクスポート形式
形式用途方法
単一の HTML ファイル共有、埋め込み自己完結型の <style> と <script>
HTML + アセット複雑な成果物CSS/JS ファイルを分離
データ URLインライン埋め込みdata:text/html;base64,...
スクリーンショット/PNGドキュメントhtml2canvas またはブラウザーのスクリーンショット
PDF印刷/レポート印刷スタイルを使った window.print()

品質チェックリスト

  • 有効な HTML5(<!DOCTYPE html>、lang 属性)
  • レスポンシブ対応の viewport メタタグ
  • JavaScript がなくても動作する(コンテンツが表示される)
  • ダークモードに対応している(prefers-color-scheme)
  • キーボードで操作できる
  • コンソールエラーがない
  • ファイルサイズが 100KB 未満(画像を除く)
  • クロスブラウザーでテスト済み(Chrome、Firefox、Safari)
  • 必要に応じて印刷スタイルがある
  • セマンティック HTML 要素を適切に使用している

アンチパターン / よくある間違い

アンチパターン問題点代わりに行うこと
単一ファイルの成果物で React/Vue/Angular を使用するシンプルな操作にはオーバーヘッドが大きすぎるAlpine.js またはバニラ JS を使用する
シンプルな UI に CDN から重いフレームワークを読み込む読み込みが遅く、帯域幅を浪費する必要性に応じて依存関係の重さを調整する
CSS カスタムプロパティの代わりにインラインスタイルを使うテーマ設定やダークモードに対応できないCSS カスタムプロパティ(トークン)を使用する
ユーザー入力のエラー処理がない不正な入力でクラッシュする入力を検証し、フィードバックを提供する
ピクセル単位で固定した寸法モバイルやタブレットで表示が崩れるレスポンシブ単位(%、rem、vw)を使用する
<meta viewport> がないモバイルでデスクトップ表示が縮小される必ず viewport メタタグを含める
<head> 内のブロッキング <script>ページのレンダリングが遅れるdefer 属性を使うか、body の末尾に配置する
スクリプトを IIFE で囲まないグローバルスコープを汚染する(function() { ... })() で囲む
トークンを使わず色をハードコードするテーマを切り替えられないCSS カスタムプロパティを使用する

統合ポイント

スキル統合内容
ui-ux-pro-maxスタイル選択と UX ガイドライン
ui-design-system一貫したテーマ設定のためのデザイントークン
canvas-design成果物内での Canvas/SVG ビジュアライゼーション
senior-frontend複雑なコンポーネントのパターン
mobile-designモバイル対応の成果物デザイン
planning計画時に成果物の範囲を定義

スキルの種類

柔軟 — 成果物の要件に合わせてアーキテクチャ、依存関係、複雑さを調整します。シンプルなデモはできるだけ最小限に保ち、複雑なツールでは軽量なフレームワークや複数の CDN 依存関係を使用できます。

コメント