
sumsub-theme-msdk
Analyze a native mobile app's design system (colors, fonts, corner radii, margins, light/dark) and generate code that themes the Sumsub Mobile SDK to match it — Swift (SNSTheme subclass) on iOS, Kotlin (SNSTheme DSL) on Android. Use this whenever the user wants the Sumsub verification / KYC screens to match their app's look — "theme / brand / style the Sumsub SDK", "make the verification screen match my app", "match my KYC flow colors and fonts", "customize SNSMobileSDK appearance" — including when they don't say "theme" but ask to align the SDK's colors / fonts with their app. Detects the platform from the project (iOS Xcode/Swift vs Android Gradle/Kotlin). Scans for design tokens (iOS — asset-catalog .colorset, Color/UIColor & Font extensions, accent / tint; Android — colors.xml / themes.xml / values-night, Compose ColorScheme / Typography), derives a full palette, and writes the theme file. SKIP for theming the host app itself (this only styles the Sumsub SDK), web
- Installs
- 436
- Last 24h
- +16
- Trending rank
- #6718
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/sumsub/agent-skills --skill sumsub-theme-msdk- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads sumsub-theme-msdk automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Sumsub — Mobile SDK theming (iOS & Android)
Scan the host app's design system, derive a full palette, and write a theme the SDK picks
up at launch — iOS: a SumsubTheme: SNSTheme subclass assigned as
sdk.theme = SumsubTheme(); Android: a sumsubTheme(context) factory built with the
SNSTheme { … } DSL and attached via SNSMobileSDK.Builder(...).withTheme(...) — so the
KYC screens match the app instead of looking bolted on. Every SDK theme property is either
mapped from the app or explicitly derived; nothing is left at the SDK default by accident.
This is the trunk (always-on). Detect the platform, then walk that track's four stages in order: Scan → Map → Generate → Report.
Asking vs doing — keep approvals meaningful
- Read-only is free — scan / grep / read the project's colors, fonts and build settings without asking.
- Batch mutations into one approval, not one per item ("I'll write
SumsubTheme.swifthere + insert thissdk.theme = …line [diff] — apply?"). - Ask explicitly only for: the target file path, genuinely ambiguous brand / legibility / font choices, and editing existing app code (the single theme-attachment line — the skill adds it itself, never punts it to the user).
Detect the platform (do this before opening any stage file)
Decide whether this is an iOS or Android project — the token sources, the theme API, and the generated language all differ. Read-only.
# 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 only → iOS track. Android only → Android track.
- Both present → report both and ask which platform to theme. One platform per run. (React Native / Flutter wrappers are out of scope — this skill themes the native SDKs.)
- Neither → ask the user to point at the app's source root.
How to navigate this skill
A strictly linear flow per track — walk the four stages in order; each is self-contained and ends with a Next pointer.
iOS track
ios/stages/1-scan.md— scan the host app's design system (read-only).ios/stages/2-map.md— map tokens onto the SDK theme (after resolving open decisions).ios/stages/3-generate.md— writeSumsubTheme.swift(after the path is confirmed).ios/stages/4-report.md— present the coverage report.
Android track
android/stages/1-scan.md— scan the host app's design system (read-only).android/stages/2-map.md— map tokens onto the SDK theme (after resolving open decisions).android/stages/3-generate.md— writeSumsubTheme.kt(after the path is confirmed).android/stages/4-report.md— present the coverage report.
Fallback (last resort only). This skill and its stage files are the primary source — don't reach for external docs by default. Only if you hit a genuine blocker they don't resolve, consult the Sumsub theme docs: iOS · Android.
When the stages are walked, return here for Guardrails and Handoff.
Guardrails — what this skill must never do
- Never write the file without confirming the path with the user.
- Never leave a property at SDK default without noting it in the report.
- Never hard-code arbitrary values — colors come from the app palette or the documented alpha-derivation.
- Always show the hex (or asset / resource name) when reporting or asking; add a plain-word description in parentheses, never instead of the hex.
- Never silently guess a genuinely ambiguous choice — offer plain-word options + a recommendation; but don't over-ask where a safe default exists.
- Never theme the host app itself — only the Sumsub SDK screens.
- Never change SDK integration logic (install / init / present / launch). The skill's one edit to existing code is attaching the theme at the launch site — it makes that edit itself, with approval.
- (iOS) Never emit unsafe color/font code — no flat
UIColorliterals for dual-appearance apps (use named assets orUIColor { traits in … }); noUIFont(name:size:)without a?? .systemFont(…)fallback; no decorative/app colors in the success/warning/critical slots. - (iOS) Never override
images.*for verification-flow icons — Sumsub-specific, not derivable from the host. - (Android) Never emit single-appearance colors for a dual-appearance app — resolve both variants and use the two-argument
SNSThemeColor(light, dark); noResourcesCompat.getFontresult without a?: Typeface.…fallback. - (Android) Never override the SDK's
sns_*resources (colors / strings / drawables in the host'sres/) — theme through the Theme API only; resource overrides fight the theme and break on SDK updates. - (Android) Attach the theme on the builder —
.withTheme(...)before.build(); never try to restyle afterlaunch().
Handoff
After the file is generated and wired, summarise:
- File created —
SumsubTheme.swift/SumsubTheme.ktand where it lives (iOS: confirm it's a target member; Android: any location under a source set compiles). - Coverage — the Stage 4 report (mapped / derived / left at default), plus any contrast fix or choice the user made.
- Wiring done — the exact launch site (file:line) where the theme is attached (iOS:
sdk.theme = SumsubTheme()orSumsubTheme.make(); Android:.withTheme(sumsubTheme(activity))on the builder). If no integration code was found (SDK not wired up yet), say so and point tosumsub-integrate-msdk— the theme is ready to attach once it is.
FAQ
What does the sumsub-theme-msdk skill do?
Analyze a native mobile app's design system (colors, fonts, corner radii, margins, light/dark) and generate code that themes the Sumsub Mobile SDK to match it — Swift (SNSTheme subclass) on iOS, Kotlin (SNSTheme DSL) on Android. Use this whenever the user wants the Sumsub verification / KYC screens to match their app's look — "theme / brand / style the Sumsub SDK", "make the verification screen match my app", "match my KYC flow colors and fonts", "customize SNSMobileSDK appearance" — including when they don't say "theme" but ask to align the SDK's colors / fonts with their app. Detects the platform from the project (iOS Xcode/Swift vs Android Gradle/Kotlin). Scans for design tokens (iOS — asset-catalog .colorset, Color/UIColor & Font extensions, accent / tint; Android — colors.xml / themes.xml / values-night, Compose ColorScheme / Typography), derives a full palette, and writes the theme file. SKIP for theming the host app itself (this only styles the Sumsub SDK), web
How do I install sumsub-theme-msdk?
Run npx skills add https://github.com/sumsub/agent-skills --skill sumsub-theme-msdk in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/sumsub-theme-msdk/ (personal) or .claude/skills/sumsub-theme-msdk/ (project).
Which AI agents can use sumsub-theme-msdk?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is sumsub-theme-msdk safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains sumsub-theme-msdk?
It is published by sumsub in sumsub/agent-skills. It has 436 recorded installs.
More from sumsub/agent-skills
sumsub-api-auth
sumsub/agent-skills
Authenticate to the Sumsub API with an App Token + secret key (HMAC-SHA256 request signing). TRIGGER when the user asks to "call / sign / authenticate Sumsub API requests", debugs 401 Unauthorized / signature errors against api.sumsub.com, or needs a working request example with X-App-Token / X-App-Access-Sig / X-App-Access-Ts headers. SKIP only when a more specific skill in this repo (questionnaire/level/workflow/POA-preset/generic) already covers the user's actual task — those skills sign requests the same way and only need this one for auth deep dives.
sumsub-api-generic
sumsub/agent-skills
Catch-all fallback for any Sumsub API task that does NOT match a more specific skill (e.g. create-sumsub-level, sumsub-create-questionnaire, sumsub-api-auth). TRIGGER when the user wants to call, inspect, or debug a Sumsub API endpoint not otherwise covered — fetching applicants, listing levels, reviewing AML hits, exporting data, generating SDK tokens, anything against api.sumsub.com. The procedure — locate the right endpoint in the OpenAPI schema, read its request/response shape, build the payload, sign with App Token, and validate. SKIP whenever a narrower Sumsub skill already covers the request.
sumsub-check-skills-version
sumsub/agent-skills
Verify that the locally installed Sumsub agent-skills package is compatible with the published version before doing any Sumsub work. TRIGGER at the start of any task that touches Sumsub — Sumsub Dev MCP tools (mcpSumsubDev), KYC/AML workflows, applicants, checks, transactions, verification levels, verification links, questionnaires, fraud network, VASP lists, or anything Sumsub-related — so the user is warned before a stale skills package produces wrong results. Also use this skill when the user explicitly asks "are my Sumsub skills up to date / current", "is there a newer version of the Sumsub skills", or similar. Skip the actual update (the user runs npx skills add sumsub/agent-skills --all themselves) and skip any other Sumsub API or entity task — those have their own skills.
sumsub-create-poa-preset
sumsub/agent-skills
Create or update a Sumsub Proof-of-Address (POA) preset. POST /resources/api/agent/poaStepSettings to create new, PATCH same path to update (id in body), GET /resources/api/agent/poaStepSettings/{id} to read one back. TRIGGER when the user asks to "create / add / build / configure / update / edit a POA preset" or "PoA step settings", configure which proof-of-address document types are accepted (utility bills, bank statements, tax bills, etc.), set validity periods per provider type, enable POI-as-POA (accept identity doc as proof of address), tune the cross-validator (name/address fuzzy match between POI and POA), or add per-country POA overrides. SKIP for attaching a preset to a level (set poaStepSettingsId on the level instead, via sumsub-create-level), or for non-POA presets (cross-check presets, permission presets, etc.).
sumsub-manage-webhooks
sumsub/agent-skills
Manage Sumsub clientWebhooks (event subscriptions for applicantReviewed / applicantPending / kytTxn / etc.) — reads via /resources/api/clientWebhooks, writes via /resources/api/agent/clientWebhooks. Sandbox only — production webhooks must be created by a human directly in the Sumsub dashboard. TRIGGER when the user asks to "list / retrieve / show webhooks", "create / add / register a webhook", or "update / edit / change a webhook target / event list / secret / signature algorithm" against their sandbox tenant. SKIP for production webhook setup (refer the user to the dashboard), for unrelated webhook surfaces (Stripe / videoIdent / Fireblocks / NFC / partner-specific receive paths under /resources/webhooks/...), for testing one-off delivery (use the inspectionCallbacks/testWebhook endpoint directly), and for KYT-only webhook routing (that's managed in the Sumsub dashboard's KYT section). The public API does not expose delete or per-webhook delivery stats — for those, refer
sumsub-integrate-websdk
sumsub/agent-skills
End-to-end recipe for adding Sumsub KYC to a website or web app via the Sumsub WebSDK. TRIGGER when the user asks to "integrate / embed / add Sumsub", "show the KYC widget", "add WebSDK", "verify users with Sumsub on the frontend", supplies an existing levelName they want to plug into a page, or asks how to wire up access tokens / lifecycle events / webhooks for Sumsub verification in an arbitrary project. Covers the whole loop — level setup, server-side access-token signing, snsWebSdk init (vanilla canonical, React recipe), client lifecycle events, token refresh, source-of-truth via webhooks + applicant GET, sandbox testing, go-live checklist. SKIP for building the level/questionnaire/POA-preset payload itself (use the sibling skills), or for backend-only API calls with no frontend (use sumsub-api-generic).
Popular mobile skills
design-mobile-apps
designed-by-ai/skills
Design mobile app screens with Sleek, edit Sleek projects, and implement their designs in React Native or HTML.
ios-design
uizze.sh
Design and review iOS UI/UX for iPhone apps in SwiftUI, UIKit, or React Native. Use for mobile app design, screen redesigns, navigation flows, typography, forms, keyboard and safe-area layout, and accessibility checks. Apply Apple Human Interface Guidelines and consult real product references through the optional Uizze connection.
vercel-react-native-skills
vercel-labs/agent-skills
React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.
animate-expo
emilkowalski/skills
Build animations in React Native and Expo, making the decisions in the order that determines whether they feel right — should it animate, which thread it runs on, which properties, spring or timing, how the gesture hands off, how it degrades. Writes the implementation with Reanimated, Gesture Handler, Expo Router and expo-haptics. Use when animating anything in an Expo app, adding gestures, sheets, screen transitions, press feedback or haptics, or fixing motion that stutters on device. For web animation use animate.
xcode-project-setup
firebase/agent-skills
Safely modifies Xcode projects (.pbxproj) to add Swift Packages and link files. Use this skill whenever an iOS project needs dependencies installed (e.g. Firebase, Alamofire).
firebase-remote-config-basics
firebase/agent-skills
Manages Firebase Remote Config templates, feature flags, loading strategies, and SDKs (Android, iOS). Use when downloading/deploying remoteconfig JSON templates, managing version history/feature flags, setting in-app defaults, fetchAndActivate(), real-time listeners, or SDK setup. Don't use for Firebase Hosting, Auth, Firestore, Data Connect, Crashlytics, or App Hosting.