mcpField
P
ping-orchestration-sdk-router

ping-orchestration-sdk-router

github.com/pingidentity開発147 回インストール13 週間前に更新
リポジトリ

ping-orchestration-sdk-router について

曖昧な Ping Identity SDK の依頼を振り分けるスキルです。プロジェクトを調べて対応プラットフォームと ForgeRock の参照を検出し、適切な上位スキルへ引き継ぎます。判定が曖昧な場合は選択を尋ねます。

主な機能

  1. 01Android、iOS、JavaScript、React Nativeの検出
  2. 02ForgeRock SDK参照の確認
  3. 03プラットフォーム別上位スキルへの振り分け
  4. 04複数プラットフォームや移行時の選択確認
  5. 05拡張可能なプラットフォーム登録表と検出処理

活用シーン

  1. 01プラットフォームが不明なPing SDK依頼の振り分け
  2. 02複数プラットフォームのリポジトリで対象を選択
  3. 03ForgeRock移行か新規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 への参照を検出し、このプラグイン内で最も適した包括的なスキルに引き継ぎます。新しいプラットフォームは、以下のプラットフォームレジストリの行を1つ編集するだけで追加でき、判定ツリーに自動的に反映されます。

プラットフォームレジストリ

この表はルーティングの唯一の情報源です。以下の判定ツリーは Status を参照します。新しいプラットフォームを追加するには、ステータスを placeholder から active に変更し、プローブブロックを追加すれば完了です。

プラットフォーム対象スキルステータス備考
Androidping-orchestration-android-sdkactive—
iOSping-orchestration-ios-sdkactive—
JavaScript(ウェブ)ping-orchestration-javascript-sdkactive—
React Nativeping-orchestration-react-native-sdkactive—
ForgeRock の移行forgerock-to-ping-journey-migrationactive複数プラットフォームにまたがります。ForgeRock の参照がある場合、プラットフォームのルーティングより優先されます

プローブブロック

レジストリで有効になっている行ごとに、そのプラットフォームのプローブを実行します。プローブには範囲制限があり、深さに上限を設け、生成物や依存関係のディレクトリは無視します。

共通の無視対象 glob(すべてのプローブに適用): node_modules、.git、build、dist、Pods、.gradle、DerivedData、.next、out、target。

Android プローブ

ファイルマーカー(いずれか1つで検出できます):

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 プローブ

ファイルマーカー(いずれか1つで検出できます):

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 プローブ(複数プラットフォームに適用)

コンテンツマーカー(ソースファイルまたはビルドファイルでいずれか1つに一致すると 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(ウェブ)プローブ

ファイル/コンテンツマーカー(いずれか1つで検出できます):

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(ウェブ)プロジェクトが検出されています。

React Native プローブ

ファイル/コンテンツマーカー(いずれか1つで検出できます):

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 プローブが一致し、1つ以上の有効なプラットフォームプローブも一致した場合。
    • 1つだけプラットフォームプローブが一致した場合:そのプラットフォーム名を使い、ForgeRock 分岐プロンプト(フォールバックプロンプトを参照)を表示します。移行を選んだ場合は forgerock-to-ping-journey-migration にルーティングし、それ以外の場合はそのプラットフォームの包括的なスキルにルーティングします。
    • 2つ以上のプラットフォームプローブが一致した場合:最初に、検出されたプラットフォームのみを列挙した複数プラットフォームプロンプトを表示し、続けて選択されたプラットフォームについてForgeRock 分岐プロンプトを表示します。これにより、移行対象となるコードベースを適切に選択できます。
    • ForgeRock の参照がある場合は移行が意図されていることがほとんどのため、このルールは通常の複数プラットフォーム検出より優先されます。
  2. 複数プラットフォームのモノレポ — 有効なプラットフォームプローブが2つ以上一致した場合(ルール1に該当しない場合)。複数プラットフォームプロンプトを表示します。選択されたプラットフォームの包括的なスキルにルーティングします。
  3. 有効なプラットフォームが1つ検出された場合 — 有効なプラットフォームプローブがちょうど1つ一致した場合。そのプラットフォームの包括的なスキルにルーティングします。
  4. React Native が検出された場合(単一プラットフォーム) — React Native プローブが一致し、ほかの有効なプラットフォームプローブが一致しなかった場合。ping-orchestration-react-native-sdk にルーティングします。
  5. 何も検出されなかった場合 — どのプローブも一致しなかった場合。Status: active のプラットフォームのみを列挙した検出なしプロンプトを表示します。プレースホルダーのプラットフォームについては「近日公開」と伝えます。
フェーズ 3:引き継ぎ

次の正確な形式で、1 行の要約を出力します。

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

ここで:

  • <signals> は、プローブで見つかった内容を簡潔にカンマ区切りで列挙したものです。例:Android (build.gradle.kts), no ForgeRock refs。
  • <skill-name> は、対象スキルのフロントマターに記載されている name フィールドと完全に一致するものです。

次に、Skill ツールを使って対象スキルを呼び出します。対象スキルの内容をそのまま記載しないでください。指示を言い換えないでください。スムーズに引き継いでください。

ルーティング表

フェーズ 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マルチプラットフォームプロンプトを表示 → 選択したプラットフォームの分岐プロンプトを表示
Android のみping-orchestration-android-sdk
iOS のみping-orchestration-ios-sdk
JavaScript(Web)のみping-orchestration-javascript-sdk
Android + iOS(ForgeRock なし)マルチプラットフォームプロンプトを表示 → 選択した統合スキル
Android + JavaScript(ForgeRock なし)マルチプラットフォームプロンプトを表示 → 選択した統合スキル
iOS + JavaScript(ForgeRock なし)マルチプラットフォームプロンプトを表示 → 選択した統合スキル
React Native のみping-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 の参照があるようです。選択肢は 2 つあります。

  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か所編集するだけで、そのプラットフォームへのルーティングを有効にできます。手順は次のとおりです。

  1. Platform Registry テーブルのレジストリ行を更新します。Status を placeholder から active に変更します。対象スキル名が変わった場合は、そちらも更新してください。
  2. Probe Blocks セクションにプローブブロックを追加するか、入力します。この種類のプロジェクトを一意に識別できるファイルマーカー(find コマンド)またはコンテンツマーカー(grep コマンド)を指定します。共通の除外グロブを適用してください。
  3. (任意)フォールバックプロンプトを更新します。プラットフォームのユーザー向け名称を変更する場合に行います。

判定ツリー、ルーティングマトリックス、引き継ぎテンプレートを編集する必要はありません。これらは Status を使ってレジストリを参照するため、新しいプラットフォームが自動的に反映されます。

プラットフォームを削除するには、その行の Status を placeholder に変更します(行は表示されたままですが、ルーティングは無効になります)。

対象外

このスキルでは、以下のことは行いません。これらは対象スキルの担当範囲です。

  • プロジェクトのひな形作成、コード生成、SDK 設定ファイルの作成。
  • 実行間での検出結果のキャッシュ。
  • レジストリに記載されている範囲を超えたフレームワークの派生形の検出(KMP、Flutter、Tauri、Electron など)。
  • ユーザーのプロジェクト内のファイルの変更。
  • 6つのプラットフォーム×SDK スキル(ping-orchestration-{android,ios,reactjs}-{journey,davinci}-sdk)へのルーティング。JavaScript のプレースホルダーに対する暫定対応としては利用できますが、それ以外の場合、ルーターはこれらをルーティング対象外として扱います。

コメント