sumsub-theme-msdk について
sumsub-theme-msdkは、ネイティブのiOS・Androidプロジェクトで、ホストアプリのデザインシステムをSumsub Mobile SDKのテーマに反映するスキルです。スキャン、マッピング、生成、レポートの順に進み、ファイルパスやコード変更の承認を求めます。
主な機能
- 01iOSまたはAndroidプロジェクトの判別
- 02色、フォント、ビルド設定のスキャン
- 03アプリのデザイントークンをSDKテーマに対応付け
- 04SwiftまたはKotlinのテーマファイル生成
- 05対応付け、派生、デフォルト値の報告
活用シーン
- 01KYC画面をアプリのデザインに合わせる
- 02iOSまたはAndroid SDKのテーマ生成
- 03テーマプロパティの適用状況の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sumsub/ agent-skills --skill sumsub-theme-msdkインストール後、Claude Code で/sumsub-theme-msdkを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
android/examples/SumsubTheme.ktandroid/references/detection-guide.mdandroid/stages/1-scan.md2-map.md3-generate.md4-report.mdexamples/SumsubTheme.swiftios/examples/SumsubTheme.swiftios/references/detection-guide.mdswift6-theme-factory.mdios/stages/1-scan.md2-map.md3-generate.md4-report.mdreferences/color-language.mddetection-guide.mdswift6-theme-factory.mdstages/1-scan.md2-map.md3-generate.md4-report.md詳細
Sumsub — モバイル SDK のテーマ設定(iOS & Android)
ホストアプリのデザインシステムをスキャンして完全なパレットを導き出し、SDK が起動時に読み込むテーマを作成します。iOS: SumsubTheme: SNSTheme サブクラスを作成し、sdk.theme = SumsubTheme() として割り当てます。Android: SNSTheme { … } DSL で sumsubTheme(context) ファクトリーを作成し、SNSMobileSDK.Builder(...).withTheme(...) で設定します。これにより、KYC 画面がアプリのデザインになじみ、後付けのように見えなくなります。SDK のテーマプロパティはすべて、アプリからマッピングするか明示的に導き出します。意図せず SDK のデフォルトのままになるプロパティはありません。
これは標準フロー(常時有効)です。プラットフォームを判定し、そのプラットフォームの4つのステージを順番に進めます:スキャン → マッピング → 生成 → レポート。
承認を求める場合と作業を行う場合 — 承認を有意義なものにする
- 読み取り専用の作業は自由に行えます — プロジェクトのカラー、フォント、ビルド設定のスキャン/grep/読み取りは、確認を求めずに行います。
- 変更は個別ではなく、まとめて1回の承認を求めます(「ここに
SumsubTheme.swiftを作成し、sdk.theme = …の行を追加します[差分]—適用しますか?」)。 - 明示的に確認を求めるのは次の場合のみです: 対象ファイルのパス、ブランド/可読性/フォントの選択に本当に判断の余地がある場合、既存のアプリコードを編集する場合(テーマを設定する1行 — スキルが追加するため、ユーザーに任せることはありません)。
プラットフォームを判定する(ステージファイルを開く前に実施)
これは iOS プロジェクトか Android プロジェクトかを判断します。トークンのソース、テーマ API、生成する言語はプラットフォームごとに異なります。読み取り専用です。
# iOS markers
find . -maxdepth 3 \( -name '*.xcodeproj' -o -name '*.xcworkspace' -o -name 'Podfile' -o -name 'Package.swift' \) 2>/dev/null
# Android markers
find . -maxdepth 3 \( -name 'build.gradle' -o -name 'build.gradle.kts' -o -name 'settings.gradle*' -o -name 'AndroidManifest.xml' \) 2>/dev/null
- iOS のみ → iOS トラック。Android のみ → Android トラック。
- 両方が存在 → 両方あることを報告し、どちらのプラットフォームのテーマを設定するか確認します。 1回の実行で扱うプラットフォームは1つです。 (React Native/Flutter のラッパーは対象外です。このスキルがテーマを設定するのはネイティブ SDK です。)
- どちらも存在しない → アプリのソースルートを指定するようユーザーに依頼します。
このスキルの進め方
各トラックは厳密に順を追って進みます。4つのステージを順番に実施してください。各ステージは単独で完結し、最後に次のステージへの案内があります。
iOS トラック
ios/stages/1-scan.md— ホストアプリのデザインシステムをスキャンします(読み取り専用)。ios/stages/2-map.md— 未解決の判断事項を解消してから、トークンを SDK のテーマにマッピングします。ios/stages/3-generate.md— パスを確認してからSumsubTheme.swiftを作成します。ios/stages/4-report.md— 適用状況レポートを提示します。
Android トラック
android/stages/1-scan.md— ホストアプリのデザインシステムをスキャンします(読み取り専用)。android/stages/2-map.md— 未解決の判断事項を解消してから、トークンを SDK のテーマにマッピングします。android/stages/3-generate.md— パスを確認してからSumsubTheme.ktを作成します。android/stages/4-report.md— 適用状況レポートを提示します。
フォールバック(最終手段のみ)。 このスキルと各ステージファイルを第一の情報源としてください。デフォルトで外部ドキュメントを参照しないでください。解決できない本当の障害に直面した場合に限り、Sumsub のテーマドキュメントを参照します: iOS · Android。
各ステージを完了したら、ここに戻ってガードレールと引き継ぎを確認します。
ガードレール — このスキルで絶対に行ってはならないこと
- パスをユーザーに確認する前に、ファイルを書き込まないでください。
- SDK のデフォルト値のままにするプロパティがある場合は、必ずレポートに記載してください。
- 任意の値をハードコードしないでください — 色はアプリのパレット、または文書化されたアルファ値の導出方法を使用してください。
- 報告または質問の際は、必ず 16 進数値(またはアセット/リソース名)を示してください。代わりにせず、括弧内に平易な言葉での説明を添えてください。
- 本当に判断が曖昧な選択肢を、黙って推測しないでください — 平易な言葉で選択肢を示し、おすすめを提示してください。ただし、安全なデフォルトがある場合に過剰に質問しないでください。
- ホストアプリ自体にテーマを適用しないでください — 対象は Sumsub SDK の画面だけです。
- **SDK の統合ロジック(インストール/初期化/表示/起動)を変更しないでください。**既存コードへのスキルによる唯一の編集は、起動箇所でテーマを適用することです。承認を得たうえで、その編集自体を行ってください。
- (iOS)安全でない色/フォントのコードを出力しないでください — 外観モードが 2 種類あるアプリでは、
UIColorの値を直接指定せず(名前付きアセットまたはUIColor { traits in … }を使用してください)、?? .systemFont(…)のフォールバックがないUIFont(name:size:)を使わないでください。また、成功/警告/重大の各スロットに装飾用/アプリ用の色を設定しないでください。 - (iOS)認証フローのアイコンに対して
images.*を上書きしないでください — Sumsub 固有のため、ホストから導出できません。 - (Android)外観モードが 2 種類あるアプリで、単一の外観用の色を出力しないでください — 両方のバリエーションを解決し、2 つの引数を取る
SNSThemeColor(light, dark)を使用してください。また、?: Typeface.…のフォールバックがないResourcesCompat.getFontの結果を使用しないでください。 - (Android)SDK の
sns_*リソースを上書きしないでください(ホスト側のres/にある色/文字列/ドローアブル)— Theme API のみでテーマを適用してください。リソースの上書きはテーマと競合し、SDK の更新時に問題が発生します。 - (Android)ビルダーでテーマを適用してください —
.build()の前に.withTheme(...)を呼び出してください。launch()の後にスタイルを変更しようとしないでください。
引き継ぎ
ファイルの生成と接続が完了したら、次の内容をまとめてください。
- 作成したファイル —
SumsubTheme.swift/SumsubTheme.ktとその保存場所(iOS:ターゲットのメンバーであることを確認してください。Android:ソースセット内の任意の場所でコンパイルされます)。 - 適用範囲 — Stage 4 のレポート(マッピング済み/導出済み/デフォルトのまま)、およびコントラストの修正やユーザーが選択した内容。
- 接続の完了状況 — テーマを適用した正確な起動箇所(ファイル:行)(iOS:
sdk.theme = SumsubTheme()またはSumsubTheme.make()、Android:ビルダーでの.withTheme(sumsubTheme(activity)))。統合コードが見つからなかった場合(SDK がまだ接続されていない場合)は、その旨を伝え、sumsub-integrate-msdkを案内してください — テーマは接続後すぐに適用できます。