mcpField
P
ping-orchestration-sdk-router

ping-orchestration-sdk-router

github.com/pingidentity开发147 次安装13 周前更新
代码仓库

关于 ping-orchestration-sdk-router

用于处理含糊 Ping Identity SDK 请求的路由技能。它扫描项目以识别支持的平台和 ForgeRock 引用,再交由对应的上层技能处理;检测结果有歧义时会先询问用户。

主要功能

  1. 01检测 Android、iOS、JavaScript 和 React Native 项目
  2. 02检查 ForgeRock SDK 引用
  3. 03路由到平台对应的上层技能
  4. 04在多平台或迁移场景中询问选择
  5. 05可扩展的平台注册表与探测规则

适用场景

  1. 01为未明确平台的 Ping SDK 请求分流
  2. 02在多平台仓库中选择目标平台
  3. 03决定迁移 ForgeRock 或开发新 SDK 功能

安装

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

$npx skills add https://github.com/pingidentity/ping-sdk-agent-skills --skill ping-orchestration-sdk-router

安装后在 Claude Code 中输入/ping-orchestration-sdk-router确认已加载。

详细介绍

Ping SDK 路由器

作为处理模糊 Ping Identity SDK 请求的首要入口。探测工作目录以检测平台(Android、iOS、JavaScript、React Native)和 ForgeRock SDK 引用,然后将请求交给此插件中最合适的伞形技能。添加新平台时,只需编辑下方平台注册表中的一行,决策树便会自动识别。

平台注册表

此表是路由的唯一事实来源。下方决策树通过 Status 引用此表。若要添加新平台,请将其状态从 placeholder 更改为 active,添加探测代码块,即可完成。

平台目标技能状态备注
Androidping-orchestration-android-sdkactive—
iOSping-orchestration-ios-sdkactive—
JavaScript(Web)ping-orchestration-javascript-sdkactive—
React Nativeping-orchestration-react-native-sdkactive—
ForgeRock 迁移forgerock-to-ping-journey-migrationactive跨平台;存在 ForgeRock 引用时,优先于平台路由

探测代码块

对于注册表中的每个 active 行,运行对应平台的探测。探测范围有限——限制目录深度,并忽略生成目录和依赖目录。

通用忽略模式(应用于每次探测): node_modules、.git、build、dist、Pods、.gradle、DerivedData、.next、out、target。

Android 探测

文件标记(任一项即可):

find . -maxdepth 4 \
  \( -name node_modules -o -name .git -o -name build -o -name dist -o -name Pods -o -name .gradle -o -name DerivedData -o -name .next -o -name out -o -name target \) -prune -o \
  \( -name "build.gradle" -o -name "build.gradle.kts" -o -name "settings.gradle" -o -name "settings.gradle.kts" -o -name "AndroidManifest.xml" \) -print

结果非空表示检测到 Android。

iOS 探测

文件标记(任一项即可):

find . -maxdepth 4 \
  \( -name node_modules -o -name .git -o -name build -o -name dist -o -name Pods -o -name .gradle -o -name DerivedData -o -name .next -o -name out -o -name target \) -prune -o \
  \( -name "Package.swift" -o -name "*.xcodeproj" -o -name "*.xcworkspace" -o -name "Podfile" \) -print

结果非空表示检测到 iOS。

ForgeRock 探测(跨平台)

内容标记(源文件或构建文件中匹配任一项即表示存在 ForgeRock):

grep -RIl --max-count=1 \
  --exclude-dir={node_modules,.git,build,dist,.gradle,Pods,DerivedData,.next,out,target} \
  -E "forgerock-android-sdk|forgerock-ios-sdk|@forgerock/javascript-sdk|FRAuth|FRSession" .

结果非空表示存在 ForgeRock SDK 引用,应采用迁移路径。

JavaScript(Web)探测

文件/内容标记(任一项即可):

find . -maxdepth 4 \
  \( -name node_modules -o -name .git -o -name build -o -name dist -o -name Pods -o -name .gradle -o -name DerivedData -o -name .next -o -name out -o -name target \) -prune -o \
  -name "package.json" -exec grep -l '"react"\|"vue"\|"@angular/core"\|"vite"' {} \; 2>/dev/null

结果非空表示检测到 JavaScript(Web)项目。

React Native 探测

文件/内容标记(任一项即可):

test -f package.json && grep -qE '"react-native"[[:space:]]*:' package.json && echo "react-native detected"

结果非空表示检测到 React Native 项目。

决策树

调用此技能时,按顺序执行以下阶段。

阶段 1:探测
  1. 运行 ForgeRock 探测(始终运行——它是跨平台探测)。
  2. 对 平台注册表中每个 Status: active 的行(不包括 ForgeRock 迁移),运行对应平台的探测。
  3. 记录哪些探测命中(输出非空),哪些未命中。
阶段 2:分类

按顺序应用规则。命中第一条规则后即停止。

  1. 存在 ForgeRock + 检测到平台 — ForgeRock 探测命中,且至少有一个 active 平台探测命中。
    • 如果恰好一个平台探测命中:使用该平台名称,询问 ForgeRock 分支提示词(见备用提示词)。如果用户选择迁移,则路由至 forgerock-to-ping-journey-migration;否则路由至该平台的伞形技能。
    • 如果有两个或更多平台探测命中:先询问多平台提示词(仅列出检测到的平台),然后针对选定的平台询问 ForgeRock 分支提示词。这样可确保迁移针对正确的代码库。
    • 由于存在 ForgeRock 引用时,用户几乎总是希望迁移,因此此规则优先于普通的多平台检测。
  2. 多平台单体仓库 — 两个或更多 active 平台探测命中(且未触发规则 1)。询问多平台提示词。路由至用户所选平台的伞形技能。
  3. 检测到单个 active 平台 — 恰好一个 active 平台探测命中。路由至该平台的伞形技能。
  4. 检测到 React Native(单个平台) — React Native 探测命中,且没有其他 active 平台探测命中。路由至 ping-orchestration-react-native-sdk。
  5. 未检测到任何内容 — 没有探测命中。询问未检测到内容提示词,仅列出 Status: active 的平台。将占位平台标注为“即将推出”。
阶段 3:移交

按以下确切格式打印单行摘要:

Detected <signals> → routing to <skill-name>.

其中:

  • <signals> 是探测结果的简短逗号分隔列表,例如:Android (build.gradle.kts), no ForgeRock refs。
  • <skill-name> 是目标技能 frontmatter 中 name 字段的原样内容。

然后通过 Skill 工具调用目标技能。不要内联目标技能的内容。不要转述其指令。干净利落地移交。

路由矩阵

一个简明的查找表,Agent 可在第 2 阶段分类后进行匹配。

探测结果路由至
仅 ForgeRock + Android提问分支提示词 → forgerock-to-ping-journey-migration 或 ping-orchestration-android-sdk
仅 ForgeRock + iOS提问分支提示词 → forgerock-to-ping-journey-migration 或 ping-orchestration-ios-sdk
仅 ForgeRock + JavaScript提问分支提示词 → forgerock-to-ping-journey-migration 或 ping-orchestration-javascript-sdk
ForgeRock + Android + iOS提问多平台提示词 → 然后针对所选平台提问分支提示词
ForgeRock + Android + JavaScript提问多平台提示词 → 然后针对所选平台提问分支提示词
ForgeRock + iOS + JavaScript提问多平台提示词 → 然后针对所选平台提问分支提示词
ForgeRock + Android + iOS + JavaScript提问多平台提示词 → 然后针对所选平台提问分支提示词
仅 Androidping-orchestration-android-sdk
仅 iOSping-orchestration-ios-sdk
仅 JavaScript(web)ping-orchestration-javascript-sdk
Android + iOS(无 ForgeRock)提问多平台提示词 → 所选总入口技能
Android + JavaScript(无 ForgeRock)提问多平台提示词 → 所选总入口技能
iOS + JavaScript(无 ForgeRock)提问多平台提示词 → 所选总入口技能
仅 React Nativeping-orchestration-react-native-sdk
React Native + JavaScript(无 ForgeRock)提问多平台提示词 → 所选总入口技能
未命中任何探测项提问未检测到提示词 → 所选总入口技能

移交模板

调用目标技能前,使用以下确切格式发布公告:

Detected <signals> → routing to <skill-name>.

示例:

  • 检测到 Android (build.gradle.kts),未发现 ForgeRock 引用 → 路由至 ping-orchestration-android-sdk。
  • 检测到 iOS (Package.swift) + ForgeRock 引用 (Podfile 中的 forgerock-ios-sdk) → 路由至 forgerock-to-ping-journey-migration。
  • 检测到 React/Vite 项目 (package.json),未发现 ForgeRock 引用 → 路由至 ping-orchestration-javascript-sdk。

发布公告后,通过 Skill 工具调用所选技能。不要自行开始执行相关工作。

后备提示词

当分类结果要求提问时,使用以下原样提示词。只能调整方括号中的 <…> 占位符。

ForgeRock 分支提示词

我在这个 <platform> 项目中发现了 ForgeRock SDK 引用。有两种方案:

  1. 迁移现有的 ForgeRock 代码至 Ping Identity Journey SDK(将旧代码保留为注释,并生成迁移报告)。
  2. 构建新功能:在现有代码旁添加 Ping SDK 功能(不进行迁移)。

你想选择哪种方案?

如果选择迁移 → 路由至 forgerock-to-ping-journey-migration。 如果选择构建新功能 → 路由至对应平台的总入口技能(ping-orchestration-android-sdk、ping-orchestration-ios-sdk 或 ping-orchestration-javascript-sdk)。

多平台提示词

我在此目录中检测到了多个平台(<list of detected platforms>)。你想处理哪一个?

路由至所选平台的总入口技能。

JavaScript 的当前路由

JavaScript 现在是一个启用的平台。当 JavaScript 探测命中时,打印移交行,并通过 Skill 工具调用 ping-orchestration-javascript-sdk——除非存在歧义(例如也检测到 ForgeRock 引用),否则无需提问。

未检测到项目

我无法在此目录中检测到受支持的项目类型。你要为哪个平台构建项目?

  • Android(ping-orchestration-android-sdk)
  • iOS(ping-orchestration-ios-sdk)
  • JavaScript / Web(ping-orchestration-javascript-sdk)
  • React Native(ping-orchestration-react-native-sdk)

路由到所选的总览技能。

添加新平台

当发布新的总览技能时(例如 ping-orchestration-react-native-sdk),只需贡献者编辑一处即可启用该平台的路由。步骤如下:

  1. 更新注册表行:在平台注册表表格中,将 Status 从 placeholder 改为 active。如果目标技能名称有变,也要一并更新。
  2. 添加或填写探测代码块:在探测代码块部分中,提供文件标记(find 命令)或内容标记(grep 命令),以便唯一识别此类项目。应用通用忽略 glob。
  3. (可选)更新回退提示词:如果平台的用户可见名称需要更改。

无需编辑决策树、路由矩阵和交接模板。它们会根据 Status 引用注册表,因此会自动纳入新平台。

要移除平台:将其行的 Status 改为 placeholder(保留该行以供查看,但禁用路由)。

非目标

此技能不会执行以下任何操作——这些工作由目标技能负责:

  • 搭建项目脚手架、生成代码或编写 SDK 配置。
  • 在多次运行之间缓存检测结果。
  • 检测注册表中未列出的框架变体(KMP、Flutter、Tauri、Electron 等)。
  • 修改用户项目中的任何文件。
  • 路由到 6 个平台 × SDK 技能(ping-orchestration-{android,ios,reactjs}-{journey,davinci}-sdk)——它们可作为 JavaScript 占位项的临时替代方案访问,但路由器会将其视为超出范围的路由目标。

评论

支持 Markdown