kestra-flow について
Kestra のワークフロー YAML を生成、編集、デバッグする開発者向けスキルです。最初に最新の Flow Schema を確認し、スキーマ準拠の生成と既存構造の維持を促します。
主な機能
- 01最新 Flow Schema の取得
- 02タスク型とプロパティの検証
- 03既存 Flow 構造の維持
- 04トリガーとループの利用指針
- 05シークレットとエラー処理のルール
活用シーン
- 01説明から Kestra Flow を作成
- 02既存 Flow YAML の変更
- 03Schema やトリガー参照の問題を調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ kestra-io/ agent-skills --skill kestra-flowインストール後、Claude Code で/kestra-flowを入力して読み込まれたか確認します。
詳細
Kestra Flow スキル
このスキルを使用して、最新のスキーマに基づいた本番環境対応の Kestra Flow YAML を生成します。
使用するタイミング
次のようなリクエストに対応する際に、このスキルを使用します。
- Kestra フローを新規に生成する
- 既存のフローを変更、拡張、またはデバッグする
- ワークフローの説明を有効な Kestra YAML に変換する
必要な入力
- 希望するフローの動作の説明
- Namespace(該当する場合はテナント ID も)
- 変更のリクエストの場合は既存のフロー YAML
ワークフロー
ステップ 1 — フロースキーマを取得する
curl で完全なスキーマを取得し、インタープリターに通さずに直接読み取ります。
curl -s https://api.kestra.io/v1/plugins/schemas/flow
生の JSON 出力を読み、出力で使用する各型、プロパティ名、構造を検証します。スキーマが利用可能になる前に、何も生成してはいけません。
ステップ 2 — コンテキストを収集する
ユーザーメッセージまたは会話から、次の内容を特定します。
id— フロー ID(指定されている場合は維持)namespace— 対象の namespace(指定されている場合は維持)- 既存のフロー YAML(変更リクエストの場合)
- これは追加/削除/変更か、全面的な書き換えか
ステップ 3 — YAML を生成する
以下のすべての生成ルールを適用してから、生の YAML のみを出力します。
生成ルール
スキーマへの準拠
- 取得したスキーマで明示的に定義されているタスク型とプロパティのみを使用します。型やプロパティ名を決して創作したり、推測したりしないでください。
- 各タスクまたはブロック内で、プロパティキーが重複しないようにします。
構造の維持
- 指定されている場合は、ルートレベルの
idとnamespaceを必ず維持します。 - 変更リクエストでは、該当箇所のみを編集します。無関係なセクションの構造変更や書き換えは行わないでください。
- 既存の意図を重複させないようにします(例:ログメッセージを置き換え、2つ目のメッセージを追加しない)。
トリガー
- イベントまたはスケジュールに基づいて実行を開始する場合は、少なくとも 1 つのトリガーを含めます。
- 定期的な実行が明示的に求められていない限り、
Scheduleトリガーを追加しないでください。 - トリガーの出力には
{{ trigger.outputName }}でアクセスします。トリガーで宣言された出力に定義されている変数のみを使用してください。
ループ
- コレクションに対してアクションを繰り返す場合は、
ForEachを使用します。 - 条件に基づいてループする場合は、
LoopUntilを使用します。
フロー出力
- 実行から値を返すことがユーザーから明示的に要求されている場合に限り、フローレベルの
outputsを含めます。
実行間の状態追跡
- 状態変化の検出には、KV タスク(
io.kestra.plugin.core.kv.Set/io.kestra.plugin.core.kv.Get)を使用して、実行間で状態を保存し、比較します。
JDBC プラグイン
- JDBC タスクを使用する場合は、必ず
fetchType: STOREを設定します。
Pebble での日付操作
- 日付の計算には
dateAddフィルターとdateフィルターを使用します。 - 数値を比較する前に
| numberを適用します。
認証情報とシークレット
- シークレットやハードコードされた認証情報を埋め込まないでください。
SECRET型のフローinputsまたは Pebble 式(例:{{ secret('MY_SECRET') }})を使用します。
API と接続
- ユーザーから別途指定がない限り、公開 API または認証不要の API を優先します。
- ローカルポートを想定せず、リモート URL を使用します。
引用符
- ダブルクォートを優先します。必要に応じて、ダブルクォートで囲まれた文字列内ではシングルクォートを使用します。
エラー処理
- スキーマで定義された型とプロパティのみではリクエストを満たせない場合、次をそのまま出力します。
I cannot generate a valid Kestra Flow YAML for this request based on the available schema.
出力形式
- 生の YAML のみ — YAML 以外の文章、Markdown のコードフェンス、説明は出力しません。
- 注意事項、前提、警告がある場合は、出力の先頭に
#コメントを使用します。 - 出力は Kestra UI に直接貼り付けるか、
kestractlでデプロイできる状態にします。
プロンプトの例
- 「公開 API を 1 時間ごとに取得し、結果を KV ストアに保存する Kestra フローを作成してください。」
- 「既存のフローに、いずれかのタスクが失敗したとき Slack に通知するタスクを追加してください。」
- 「namespace
prod.dataに、Postgres テーブルからデータを読み取って S3 に書き込むフローを生成してください。」 - 「このフロー YAML をデバッグしてください。存在しないトリガー変数を参照しています。」
コメント
Markdown 対応