mcpField
V
validating-flow

validating-flow

github.com/robomotionioテスト・品質5120 回インストール3 日前に更新
リポジトリ

validating-flow について

実行やコミットの前に、Robomotion の TypeScript フローをパッケージスキーマに照らして検査するスキルです。構造化されたエラーを報告し、Designer で読み取れる形式かも確認しますが、配線やビジネスロジックは手動確認が必要です。

主な機能

  1. 01ノード ID、型、プロパティの検査
  2. 02ポートとパッケージ依存関係の検証
  3. 03Flow Designer の読み取り可能性確認
  4. 04ノード単位の構造化エラー報告
  5. 05修正と再検証の反復

活用シーン

  1. 01編集後のフロー検査
  2. 02実行前のスキーマエラー確認
  3. 03コミット前のフロー検証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/robomotionio/agent-skills --skill validating-flow

インストール後、Claude Code で/validating-flowを入力して読み込まれたか確認します。

同梱ファイルconfig.json

詳細

Robomotion フローの検証

pspec スキーマに照らしてフローをビルドして検証します。すべてのサブフローも対象です。

使用するタイミング

  • TypeScript SDK でフローを作成または編集した後
  • フローを実行またはコミットする前
  • 反復作業中に検証と修正を繰り返す場合

使い方

robomotion validate <flow-dir>           # e.g. robomotion validate write-to-clipboard
robomotion validate                       # defaults to main.ts in cwd
robomotion validate path/to/main.ts       # also accepts a file

成功すると、終了コード 0 で、stderr に ✔ <folder> validated が出力されます。<folder> はフロー名ではなく、main.ts を格納しているフォルダーの名前です。stdout には何も出力されません。以下のように組み合わせて使用できます。

robomotion validate write-to-clipboard/ && robomotion run write-to-clipboard/

失敗すると、終了コード 1 で、ノードごとの構造化されたエラーが stderr に出力されます。検証時には Designer のサイドファイル(*.designer.ts)は書き込まれません。JSON 出力や Designer の更新が必要な場合は、robomotion build を使用してください。(build と同様に、SubFlow ノードから参照されていない subflows/<id>.ts は削除され、その旨が表示されます。)

検証内容

  • ノード ID が小文字の 16 進数 6 文字で、一意であること
  • ノードの種類が、それぞれのパッケージの pspec に存在すること
  • ノードのプロパティ名が pspec スキーマに一致すること(誤字、大文字・小文字の誤り、未定義のプロパティを検出します)
  • ポート番号が正しいこと(入力ポートのないノードへの接続や、ノードに存在しないポートからの接続がないこと)
  • f.addDependency() の名前空間とバージョンがパッケージインデックスに一致すること
  • Designer がファイルを読み取れること — @robomotion/sdk のインポートが 1 つであること、ノードが create コールバック内に記述されていること、スプレッド構文やヘルパー関数を使用していないこと。「Flow Designer cannot read it」を検出します
  • 関数のコードが人間に読みやすく記述されていること — 「複数の文が 1 行に書かれている」「ブロック全体が 1 行に書かれている」「同じブロックが複数の Function に貼り付けられている」を検出します

検証しない内容

  • トリガーから Core.Flow.Stop までの経路があること。 robomotion 26.9.8 以降、Stop が 1 つもないフローでは、Chat In フローまたは App Action フローを除き、validate は warning: no Core.Flow.Stop node と警告しますが、検証には合格します。どこからも接続されていない Stop は検出されません。到達可能な Stop のないフローはロボット上で実行され続けます(次の実行はビジー状態として拒否されます)。接続は自分で確認してください。チェックリストを参照してください。
  • Stop への経路と並行して分岐する末端ノード(Debug、Log) — 検証には合格しますが、末端ノードが実行される前に Stop がフローを終了する場合があります
  • ループの接続パターン(Goto→Label)— 手動で確認してください
  • 必須プロパティの不足 — 手動で確認してください
  • 変数参照(Message('varName') が上流での書き込みと一致するか)— 手動で確認してください
  • ビジネスロジックの正しさ

検証と修正のループ

robomotion validate write-to-clipboard/    # exit 1, error report on stderr
# read the error, edit main.ts to fix, then:
robomotion validate write-to-clipboard/    # exit 0

よくあるエラーと修正方法

エラーの一部修正方法
Unknown property 'inCode'robomotion describe node <type> を使って、正しいプロパティの一覧を確認してください。
Node type X not found in pspecrobomotion get nodes <keyword> を使って、正しい名前を検索してください。
Invalid output port Nrobomotion describe node <type> でノードの出力数を確認してください。
Could not load pspec for Package名前空間のスペルを確認し、robomotion get packages <keyword> を使ってください。
the Flow Designer cannot read itファイルは宣言形式で記述してください。@robomotion/sdk のインポートは 1 つにし、すべてのノードを create コールバック内に記述し、スプレッド構文を使用しないでください。creating-flow の docs/reference/project-format.md を参照してください。
several statements on one line / a whole block on one lineFunction の func 内の文を、それぞれ別の行に記述してください。creating-flow の docs/reference/function-nodes.md を参照してください。

実行前チェックリスト

  • robomotion validate が終了コード 0 で終了する — これは Designer がファイルを読み取れることと、すべての Function の書式が正しいことも意味します
  • トリガーから Core.Flow.Stop までの経路がある(Stop が 1 つもない場合、validate は警告するだけです。接続は自分で確認してください):トリガーからワイヤーをたどり、すべての経路が Stop で終わることを確認してください。Debug/Log の末端ノードは最後のステップの 1 つ前のノードから分岐させ、Stop と並行して分岐させないでください。Stop を一切置かないのが正しいのは、次の 2 種類のフローに限られます。アプリのバックエンド(Robomotion.Apps.Action。すべての経路が App Respond で終わる)とチャットフロー(Robomotion.ChatAssistant.ChatIn。すべてのターンが Chat Out で終わる)
  • ループに Goto→Label の接続がある(手動で確認)
  • 必須プロパティが設定されている(手動で確認)
  • 複数の出力を持つノードで、ポート番号が正しい

関連スキル

  • creating-flow — フローを生成します
  • running-flow — 検証後に実行します
  • searching-packages — 適切なノードタイプ/パッケージを見つけます

コメント