clerk-custom-ui について
Clerkを使うコーディングエージェント向けに、独自のサインイン・登録フローと、既成コンポーネントのテーマや外観設定を案内するスキルです。SDKのバージョンに応じて手順を分けています。
主な機能
- 01独自のサインインフローを構築
- 02独自の登録フローを構築
- 03コンポーネントのテーマと外観を設定
- 04色・フォント・境界線を調整
- 05SDKバージョンに合う資料を選択
活用シーン
- 01独自のサインイン画面を実装
- 02ブランドに合わせてClerkコンポーネントを調整
- 03Clerkコンポーネントをshadcn/uiテーマに適合
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ clerk/ skills --skill clerk-custom-uiインストール後、Claude Code で/clerk-custom-uiを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
core-2/custom-sign-in.mdcustom-sign-up.mdcore-3/custom-sign-in.mdcustom-sign-up.mdshow-component.md詳細
カスタム UI
前提条件:アプリが
ClerkProviderでラップされていることを確認してください。clerk-setupスキルを参照してください。バージョン:SDK のバージョンは
package.jsonで確認してください。バージョン一覧はclerkスキルを参照してください。使用するカスタムフローのリファレンスは、このバージョンに基づいて選びます。
このスキルでは、次の 2 つの領域について説明します。
- カスタム認証フロー — フックを使って独自のサインイン/サインアップ UI を構築する
- 外観のカスタマイズ — Clerk の組み込みコンポーネントのテーマ、スタイル、ブランドをカスタマイズする
必要な作業は?
| 作業 | リファレンス |
|---|---|
| カスタムサインイン(Core 2 / LTS) | core-2/custom-sign-in.md |
| カスタムサインアップ(Core 2 / LTS) | core-2/custom-sign-up.md |
| カスタムサインイン(Current SDK v7+) | core-3/custom-sign-in.md |
| カスタムサインアップ(Current SDK v7+) | core-3/custom-sign-up.md |
| コンポーネントを表示するパターン(Current SDK) | core-3/show-component.md |
カスタムフローのリファレンス
| 作業 | Core 2 | Current |
|---|---|---|
| カスタムサインイン(useSignIn) | core-2/custom-sign-in.md | core-3/custom-sign-in.md |
| カスタムサインアップ(useSignUp) | core-2/custom-sign-up.md | core-3/custom-sign-up.md |
<Show> コンポーネント | (<SignedIn>、<SignedOut>、<Protect> を使用) | core-3/show-component.md |
外観のカスタマイズ
外観のカスタマイズは、Core 2 と現在の SDK のどちらでも使用できます。
コンポーネントのカスタマイズオプション
Appearance のパターン
<SignIn
appearance={{
variables: {
colorPrimary: '#0000ff',
borderRadius: '0.5rem',
},
options: {
logoImageUrl: '/logo.png',
socialButtonsVariant: 'iconButton',
},
}}
/>
Core 2 のみ(現在の SDK ではスキップしてください):
optionsプロパティはlayoutという名前でした。optionsの代わりにlayout: { logoImageUrl: '...', socialButtonsVariant: '...' }を使用してください。
variables(色、タイポグラフィ、枠線)
| プロパティ | 説明 |
|---|---|
colorPrimary | 全体で使用するプライマリカラー |
colorBackground | 背景色 |
borderRadius | 枠線の角丸(デフォルト:0.375rem) |
不透明度の変更: colorRing と colorModalBackdrop は、不透明度 100% で表示されるようになりました。透過が必要な場合は、明示的に rgba() の値を指定してください。
Core 2 のみ(現在の SDK ではスキップしてください):
colorRingとcolorModalBackdropは、デフォルトで不透明度 15% で表示されていました。
options(構造、ロゴ、ソーシャルボタン)
| プロパティ | 説明 |
|---|---|
logoImageUrl | カスタムロゴの URL |
socialButtonsVariant | 'blockButton' | 'iconButton' | 'auto' |
socialButtonsPlacement | 'top' | 'bottom' |
showOptionalFields | オプションのフィールドを表示します(デフォルト:false) |
Core 2 のみ(現在の SDK ではスキップしてください):このプロパティの名前は
optionsではなくlayoutです。また、showOptionalFieldsのデフォルト値はtrueでした。
テーマ
@clerk/ui からテーマをインストールします。
npm install @clerk/ui
import { dark } from '@clerk/ui/themes'
<ClerkProvider appearance={{ theme: dark }} />
Core 2 のみ(現在の SDK ではスキップしてください):テーマは
@clerk/themesからインポートします(@clerk/uiではなく@clerk/themesをインストールしてください)。例:import { dark } from '@clerk/themes'。
テーマの重ね合わせ — 配列を渡すと、最後のテーマが優先されます。
import { dark, neobrutalism } from '@clerk/ui/themes'
<ClerkProvider appearance={{ theme: [dark, neobrutalism] }} />
CSS color-scheme のサポート — デフォルトのテーマは CSS の color-scheme プロパティに対応しており、ライトモードとダークモードを自動で切り替えます。
利用可能なテーマ: dark、neobrutalism、shadcn、simple
shadcn テーマ
IMPORTANT: プロジェクトに
components.jsonがある場合(shadcn/ui がインストールされている場合)、必ず最初のカスタマイズ手順として shadcn テーマを適用してください。これにより、Clerk コンポーネントの見た目が既存の shadcn デザインシステムと一致します。ユーザーが別のテーマを明示的に求めている場合に限り、この手順を省略してください。
プロジェクトで shadcn/ui を使用している場合(プロジェクトのルートに components.json があるか確認してください)、必ず shadcn テーマを使用してください:
import { shadcn } from '@clerk/ui/themes'
<ClerkProvider appearance={{ theme: shadcn }} />
また、グローバルスタイルに shadcn CSS をインポートしてください:
@import 'tailwindcss';
@import '@clerk/ui/themes/shadcn.css';
Core 2 のみ(現在の SDK では省略):
@clerk/themesと@clerk/themes/shadcn.cssからインポートします:import { shadcn } from '@clerk/themes'@import '@clerk/themes/shadcn.css';
ワークフロー
- カスタマイズの必要性を特定します(カスタムフローまたは外観)
- カスタムフローの場合:SDK のバージョンを確認し、適切な
core-2/またはcore-3/のリファレンスを読みます - 外観の場合:上の表から適切なドキュメントを WebFetch します
- Clerk コンポーネントに appearance プロパティを適用するか、フックを使ってカスタムフローを構築します
よくある落とし穴
| 問題 | 解決策 |
|---|---|
| 色が適用されない | primaryColor ではなく colorPrimary を使用します |
| ロゴが表示されない | logoImageUrl を options: {} の内側に配置します(Core 2 では layout: {} の内側) |
| ソーシャルボタンが正しく表示されない | options に socialButtonsVariant: 'iconButton' を追加します(Core 2 では layout に追加) |
| スタイルが適用されない | 直接 CSS を使わず、appearance プロパティを使用します(bring-your-own-css を使う場合を除く) |
| フックが異なる形式を返す | SDK のバージョンを確認します。Core 2 と現在のバージョンでは、useSignIn/useSignUp API がまったく異なります |
関連項目
clerk-setup- Clerk の初期インストールclerk-nextjs-patterns- Next.js のパターンclerk-orgs- B2B 組織