ss-component について
ss-component は、StyleSeed、React、Tailwind v4 を設定済みのプロジェクト向けコンポーネント生成スキルです。レジストリまたは旧設定を解決し、実際のトークンや API、アクセシビリティ規約に沿って生成します。
主な機能
- 01レジストリまたは旧設定の解決
- 02承認済みトークンと実装コンテキストの確認
- 03プロジェクトの API とスタイル規約への準拠
- 04バリアント、className、アクセシビリティ属性への対応
- 05既存の実装範囲への名前付きエクスポート配置
活用シーン
- 01既存デザインシステムでの新規コンポーネント作成
- 02コンポーネントへの規約準拠バリアント追加
- 03プロジェクトのトークンを使ったアクセシブルな React コンポーネント生成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ bitjaru/ styleseed --skill ss-componentインストール後、Claude Code で/ss-componentを入力して読み込まれたか確認します。
詳細
このワークフローを実行する前に、セッションごとに一度だけ行う更新前の確認に従ってください。
UI コンポーネントジェネレーター
レジストリー優先の成果物境界
.styleseed/project.json または .styleseed/artifacts/index.json のいずれかが存在する場合は、完全で有効なレジストリーが必要です。コンポーネントを書き込む前に、要求された成果物 ID を解決してください。範囲が曖昧な場合は確認してください。レジストリーが不完全、無効、またはコンパイル済み出力がないことを理由に、グローバルなレガシーバンドルにフォールバックしたり、STYLESEED.md を作成したり、セットアップをやり直したりしないでください。
インストール済みの ss-resolve スキルディレクトリ(以下では <ss-resolve> と表記)を特定し、対象プロジェクトのルートから、アクティブなエージェント(codex、claude など)を使って、次の読み取り専用チェックを実行してください。
node "<ss-resolve>/scripts/resolve-context.mjs" --project-root . --artifact <artifact-id> --agent <agent> --check
有効なレジストリーでコンパイル済み出力が不足している、または古くなっている場合は、同じコマンドを --check なしで実行し、その後もう一度チェックしてください。設定が無効な場合やインストールエラーが発生した場合は中止してください。チェックを通すために、承認済みの選択内容を変更しないでください。成功したら、コンパイル済みの方式とプロヴェナンスとして、選択された .styleseed/bundles/<artifact-id>.md と .styleseed/manifests/<artifact-id>.json のみを読み取ってください。複数の成果物に影響する共有コンポーネントでは、バンドルを統合せず、影響を受ける各成果物を個別に解決してチェックする必要があります。
レガシープロジェクトでは、どちらのレジストリーファイルも存在しない場合に限り、次の手順を使用してください。STYLESEED.md は保持してください。存在しない場合は、コンポーネントのコードを書く前にセットアップを行ってください。
node "<ss-resolve>/scripts/resolve-context.mjs" --project-root . --from-lock STYLESEED.md --agent <agent> --check
レガシー出力が不足している、または古くなっている場合は、同じコマンドを --check なしで実行し、その後もう一度チェックしてください。成功した後にのみ、.styleseed/effective-rules.md と .styleseed/manifest.json を読み取ってください。
使用しない場合
- ページ全体の骨組みを作成する場合 →
/ss-pageを使用してください - 複数のコンポーネントを組み合わせたパターンを作成する場合 →
/ss-patternを使用してください - 既存のコンポーネントを調整する場合 — ファイルを直接編集してください
- StyleSeed React/Tailwind v4 コンポーネントシステムが設定されていないプロジェクトの場合
新しいコンポーネントを生成します:$0 説明:$ARGUMENTS
Instructions
-
上記のレジストリとレガシーの境界に従い、実際の実装コンテキストを確認します。
- レジストリアーティファクトの場合は、
implementation.sourceRootsとimplementation.tokenFilesから確認を始めます。レガシープロジェクトの場合は、プロジェクトのソースから 既存のコンポーネントとスタイルシートのエントリーポイントを特定します。 - 有効なスタイルシートのインポートをたどり、このアーティファクトで使われているトークン定義とレシピヘルパーを確認します。
css/theme.cssとcss/recipes.cssは例であり、必須の配置場所ではありません。 - 近くにある既存のプリミティブ(プロジェクトのボタンなど)と、実際のインポート、 props、バリアント、状態を確認します。既存のコンポーネントが要件に合う場合は、それを再利用します。
- プロジェクトで承認済みのトークンとコンポーネント API を維持します。必要なコンテキストが不足している場合や、未サポートの場合は、 ファイル、エイリアス、トークン、置き換えを独自に追加する前に、不足点を報告します。
- レジストリアーティファクトの場合は、
-
次の規約に厳密に従います。
constではなく、function宣言を使います。data-slot="component-name"属性を追加します。- プロジェクトに既存の
cn()ユーティリティと、確認済みのインポートパスを使って className を結合します。 - props の型付けには
React.ComponentProps<>を使います。 - オーバーライド用の
classNameprop を必ずサポートします。 - コンポーネントにバリアントがある場合は、CVA(
class-variance-authority)を使います。 - セマンティックカラーのトークン(
bg-card、text-foreground)を使い、インラインの 16 進数カラーは使いません。
-
デザイントークンの使用:
- 色:
text-foreground、bg-card、text-brand、text-muted-foreground、border-border - パターンのサーフェス:
ss-pattern-surface。インセット、コントロール、アイコンには対応するss-*クラスを使います。 - プリミティブではプロジェクトのトークンスケールを使います。単一の角丸やシャドウのスタイルをハードコードしないでください。
- 余白は、選択したレシピに沿った再現性のあるリズムにします。
- モーション:
duration-[var(--duration-fast)]、ease-[var(--ease-default)]
- 色:
-
タイポグラフィのルール:
- ディスプレイ(36-48px):
leading-none tracking-[-0.02em] - 見出し(18-24px):
leading-snug tracking-[-0.01em] - 本文(14-17px):
leading-normal(トラッキングはデフォルト) - 大文字のキャプション(10-13px):
tracking-[0.05em] w-* h-*の代わりにsize-*の短縮形を使います。ml-*/mr-*の代わりにms-*/me-*を使います(論理プロパティ)。
- ディスプレイ(36-48px):
-
アクセシビリティ要件:
- タッチ領域:最小 44x44px(
min-h-11 min-w-11)。ポインター操作を主とするデスクトップコントロールでは、キーボード操作への対応と適用されるアクセシビリティの最低基準を維持したうえで、契約で承認された 36–40px のサイズを使用できます。 aria-*属性の引き継ぎをサポートします。- キーボードフォーカスには
focus-visible:ring-2 focus-visible:ring-ringを使います。 - アニメーションでは
prefers-reduced-motionを尊重します。
- タッチ領域:最小 44x44px(
-
コンポーネントは名前付きエクスポートで公開します(デフォルトエクスポートは使いません)。
-
手順 1 で特定した既存のコンポーネントディレクトリ内で、対象アーティファクトの実装スコープにファイルを配置します。
src/components/ui/はよくある構成ですが、すべてのプロジェクトでこのパスを新規作成するものではありません。合成パターンは/ss-patternに配置します。