mcpField
S
sumsub-theme-msdk

sumsub-theme-msdk

github.com/sumsub设计与 UI7467 次安装4 周前更新
代码仓库

关于 sumsub-theme-msdk

sumsub-theme-msdk 是面向原生 iOS 和 Android 项目的技能,用于将宿主应用的设计系统映射到 Sumsub Mobile SDK 主题。它按扫描、映射、生成和报告的顺序操作,并要求确认文件路径及代码修改。

主要功能

  1. 01识别 iOS 或 Android 项目
  2. 02扫描颜色、字体和构建设置
  3. 03将应用设计令牌映射到 SDK 主题
  4. 04生成 Swift 或 Kotlin 主题文件
  5. 05报告映射、派生及默认项

适用场景

  1. 01让 KYC 页面采用应用的视觉样式
  2. 02为 iOS 或 Android SDK 生成主题
  3. 03检查主题属性覆盖情况

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sumsub/agent-skills --skill sumsub-theme-msdk

安装后在 Claude Code 中输入/sumsub-theme-msdk确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

android/examples/
SumsubTheme.kt
android/references/
detection-guide.md
android/stages/
1-scan.md
2-map.md
3-generate.md
4-report.md
examples/
SumsubTheme.swift
ios/examples/
SumsubTheme.swift
ios/references/
detection-guide.md
swift6-theme-factory.md
ios/stages/
1-scan.md
2-map.md
3-generate.md
4-report.md
references/
color-language.md
detection-guide.md
swift6-theme-factory.md
stages/
1-scan.md
2-map.md
3-generate.md
4-report.md

详细介绍

Sumsub — 移动 SDK 主题定制(iOS 和 Android)

扫描宿主应用的设计系统,推导出完整的调色板,并编写一套 SDK 在启动时加载的主题——iOS: 将 SumsubTheme: SNSTheme 子类赋值给 sdk.theme = SumsubTheme();Android: 使用 SNSTheme { … } DSL 构建 sumsubTheme(context) 工厂,并通过 SNSMobileSDK.Builder(...).withTheme(...) 附加主题——让 KYC 界面与应用风格一致,而不是显得格格不入。SDK 的每个主题属性都要映射到应用中的对应属性,或明确说明其推导方式;不能无意间保留 SDK 默认值。

这是主流程(始终执行)。检测平台,然后按顺序完成对应流程的四个阶段:扫描 → 映射 → 生成 → 报告。

询问与执行——让审批有意义

  • 只读操作无需审批——扫描 / grep / 读取项目的颜色、字体和构建设置,不必询问。
  • 将修改合并为一次审批,不要逐项询问(“我会在此处写入 SumsubTheme.swift,并插入这一行 sdk.theme = … [diff]——是否应用?”)。
  • 仅在以下情况明确询问: 目标文件路径、确实存在歧义的品牌 / 易读性 / 字体选择,以及编辑现有应用代码(唯一需要添加的主题挂接行由此技能自行添加,不会让用户代劳)。

检测平台(在打开任何阶段文件之前执行)

判断这是 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 流程。
  • 两者都有 → 报告两者,并询问要为哪个平台设置主题。 每次运行只处理一个平台。 (React Native / Flutter 封装项目不在范围内——此技能用于设置原生 SDK 的主题。)
  • 两者都没有 → 请用户指明应用的源代码根目录。

如何使用此技能

每个平台的流程都严格按顺序执行——依次完成四个阶段;每个阶段均独立完整,并以下一步指引结尾。

iOS 流程
  1. ios/stages/1-scan.md — 扫描宿主应用的设计系统(只读)。
  2. ios/stages/2-map.md — 将令牌映射到 SDK 主题(解决待定事项后)。
  3. ios/stages/3-generate.md — 编写 SumsubTheme.swift(确认路径后)。
  4. ios/stages/4-report.md — 提交覆盖情况报告。
Android 流程
  1. android/stages/1-scan.md — 扫描宿主应用的设计系统(只读)。
  2. android/stages/2-map.md — 将令牌映射到 SDK 主题(解决待定事项后)。
  3. android/stages/3-generate.md — 编写 SumsubTheme.kt(确认路径后)。
  4. android/stages/4-report.md — 提交覆盖情况报告。

备用方案(仅作为最后手段)。 此技能及其阶段文件是首要信息来源—— 默认不要查阅外部文档。只有遇到这些内容无法解决的实际阻碍时,才查阅 Sumsub 主题文档: iOS · Android。

完成各阶段后,返回此处查看防护规则和交接。

防护规则 — 此技能绝不能做的事

  • 未经用户确认路径,绝不写入文件。
  • 如果某个属性保留 SDK 默认值,必须在报告中注明。
  • 绝不硬编码任意值——颜色必须来自应用调色板或文档说明的 Alpha 派生方式。
  • 报告或询问时始终显示十六进制值(或资源名称);并在括号中附上通俗的文字说明,绝不能用说明代替十六进制值。
  • 绝不默默猜测确实存在歧义的选项——提供通俗易懂的选项并给出建议;但如果有安全的默认选项,就不要过度询问。
  • 绝不为宿主应用本身设置主题——仅设置 Sumsub SDK 屏幕的主题。
  • 绝不更改 SDK 集成逻辑(安装/初始化/呈现/启动)。此技能只会在现有代码中进行一处修改:在启动位置附加主题;经批准后,此修改由技能自行完成。
  • (iOS)绝不生成不安全的颜色/字体代码——对于支持双外观的应用,不使用固定的 UIColor 字面量(使用命名资源或 UIColor { traits in … });使用 UIFont(name:size:) 时必须提供 ?? .systemFont(…) 回退;成功/警告/严重状态槽位中不得使用装饰色/应用颜色。
  • (iOS)绝不覆盖用于验证流程图标的 images.*——这些图标专属于 Sumsub,无法从宿主应用推导。
  • (Android)对于支持双外观的应用,绝不生成仅适用于单一外观的颜色——解析两种外观的颜色,并使用双参数 SNSThemeColor(light, dark);ResourcesCompat.getFont 的结果必须提供 ?: Typeface.… 回退。
  • (Android)绝不覆盖 SDK 的 sns_* 资源(宿主应用 res/ 中的颜色/字符串/可绘制资源)——只能通过 Theme API 设置主题;覆盖资源会与主题冲突,并在 SDK 更新时失效。
  • (Android)在构建器上附加主题——在 .build() 之前调用 .withTheme(...);绝不尝试在 launch() 后重新设置样式。

交接

文件生成并完成接入后,汇总以下内容:

  1. 已创建文件 — SumsubTheme.swift/SumsubTheme.kt 及其存放位置(iOS:确认它是 target 成员;Android:位于任意 source set 下即可编译)。
  2. 覆盖情况 — Stage 4 报告(已映射/已派生/保留默认值),以及任何对比度修正或用户做出的选择。
  3. 已完成接入 — 附加主题的确切启动位置(文件:行号)(iOS:sdk.theme = SumsubTheme() 或 SumsubTheme.make();Android:构建器上的 .withTheme(sumsubTheme(activity)))。如果未找到集成代码(SDK 尚未接入),请说明这一点,并指向 sumsub-integrate-msdk——主题已准备就绪,待完成接入后即可附加。

评论

支持 Markdown