ping-orchestration-sdk-router について
曖昧な Ping Identity SDK の依頼を振り分けるスキルです。プロジェクトを調べて対応プラットフォームと ForgeRock の参照を検出し、適切な上位スキルへ引き継ぎます。判定が曖昧な場合は選択を尋ねます。
主な機能
- 01Android、iOS、JavaScript、React Nativeの検出
- 02ForgeRock SDK参照の確認
- 03プラットフォーム別上位スキルへの振り分け
- 04複数プラットフォームや移行時の選択確認
- 05拡張可能なプラットフォーム登録表と検出処理
活用シーン
- 01プラットフォームが不明なPing SDK依頼の振り分け
- 02複数プラットフォームのリポジトリで対象を選択
- 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 に変更し、プローブブロックを追加すれば完了です。
| プラットフォーム | 対象スキル | ステータス | 備考 |
|---|---|---|---|
| Android | ping-orchestration-android-sdk | active | — |
| iOS | ping-orchestration-ios-sdk | active | — |
| JavaScript(ウェブ) | ping-orchestration-javascript-sdk | active | — |
| React Native | ping-orchestration-react-native-sdk | active | — |
| ForgeRock の移行 | forgerock-to-ping-journey-migration | active | 複数プラットフォームにまたがります。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:プローブ
- ForgeRock プローブを実行します(複数プラットフォームに適用されるため、必ず実行します)。
- プラットフォームレジストリで
Status: activeの各行について(ForgeRock の移行を除く)、そのプラットフォームのプローブを実行します。 - どのプローブが一致したか(空でない出力)と、一致しなかったかを記録します。
フェーズ 2:分類
以下のルールを順番に適用します。最初に一致したルールを採用します。
- ForgeRock が存在し、プラットフォームが検出された場合 — ForgeRock プローブが一致し、1つ以上の有効なプラットフォームプローブも一致した場合。
- 1つだけプラットフォームプローブが一致した場合:そのプラットフォーム名を使い、ForgeRock 分岐プロンプト(フォールバックプロンプトを参照)を表示します。移行を選んだ場合は
forgerock-to-ping-journey-migrationにルーティングし、それ以外の場合はそのプラットフォームの包括的なスキルにルーティングします。 - 2つ以上のプラットフォームプローブが一致した場合:最初に、検出されたプラットフォームのみを列挙した複数プラットフォームプロンプトを表示し、続けて選択されたプラットフォームについてForgeRock 分岐プロンプトを表示します。これにより、移行対象となるコードベースを適切に選択できます。
- ForgeRock の参照がある場合は移行が意図されていることがほとんどのため、このルールは通常の複数プラットフォーム検出より優先されます。
- 1つだけプラットフォームプローブが一致した場合:そのプラットフォーム名を使い、ForgeRock 分岐プロンプト(フォールバックプロンプトを参照)を表示します。移行を選んだ場合は
- 複数プラットフォームのモノレポ — 有効なプラットフォームプローブが2つ以上一致した場合(ルール1に該当しない場合)。複数プラットフォームプロンプトを表示します。選択されたプラットフォームの包括的なスキルにルーティングします。
- 有効なプラットフォームが1つ検出された場合 — 有効なプラットフォームプローブがちょうど1つ一致した場合。そのプラットフォームの包括的なスキルにルーティングします。
- React Native が検出された場合(単一プラットフォーム) — React Native プローブが一致し、ほかの有効なプラットフォームプローブが一致しなかった場合。
ping-orchestration-react-native-sdkにルーティングします。 - 何も検出されなかった場合 — どのプローブも一致しなかった場合。
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 つあります。
- 移行:既存の ForgeRock コードを Ping Identity Journey SDK に移行します(古いコードはコメントとして保持し、移行レポートを生成します)。
- 新規構築:既存コードと並行して 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か所編集するだけで、そのプラットフォームへのルーティングを有効にできます。手順は次のとおりです。
- Platform Registry テーブルのレジストリ行を更新します。
Statusをplaceholderからactiveに変更します。対象スキル名が変わった場合は、そちらも更新してください。 - Probe Blocks セクションにプローブブロックを追加するか、入力します。この種類のプロジェクトを一意に識別できるファイルマーカー(
findコマンド)またはコンテンツマーカー(grepコマンド)を指定します。共通の除外グロブを適用してください。 - (任意)フォールバックプロンプトを更新します。プラットフォームのユーザー向け名称を変更する場合に行います。
判定ツリー、ルーティングマトリックス、引き継ぎテンプレートを編集する必要はありません。これらは Status を使ってレジストリを参照するため、新しいプラットフォームが自動的に反映されます。
プラットフォームを削除するには、その行の Status を placeholder に変更します(行は表示されたままですが、ルーティングは無効になります)。
対象外
このスキルでは、以下のことは行いません。これらは対象スキルの担当範囲です。
- プロジェクトのひな形作成、コード生成、SDK 設定ファイルの作成。
- 実行間での検出結果のキャッシュ。
- レジストリに記載されている範囲を超えたフレームワークの派生形の検出(KMP、Flutter、Tauri、Electron など)。
- ユーザーのプロジェクト内のファイルの変更。
- 6つのプラットフォーム×SDK スキル(
ping-orchestration-{android,ios,reactjs}-{journey,davinci}-sdk)へのルーティング。JavaScript のプレースホルダーに対する暫定対応としては利用できますが、それ以外の場合、ルーターはこれらをルーティング対象外として扱います。