iii-trigger-conditions について
iii エンジンのトリガーに真偽値の条件チェックを加えるスキルです。ハンドラー実行前にイベントを絞り込み、対応する各種トリガーで利用できます。
主な機能
- 01真偽値を返す条件関数
- 02全トリガータイプに対応
- 03条件が偽なら通知なくスキップ
- 04JavaScript、Python、Rust の例
活用シーン
- 01処理前のキューメッセージ選別
- 02HTTP トリガーでの認可確認
- 03状態イベントへの業務ルール適用
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ iii-hq/ skills --skill iii-trigger-conditionsインストール後、Claude Code で/iii-trigger-conditionsを入力して読み込まれたか確認します。
詳細
トリガー条件
類似例:ミドルウェアのガード、イベントフィルター
主な概念
タスクに合う場合は、以下の概念を使用してください。すべてのトリガーに条件が必要なわけではありません。
- 条件関数は、ブール値(
trueまたはfalse)を返す登録済みの関数です。 - エンジンはハンドラーの実行前に条件関数を呼び出します。
trueの場合にのみハンドラーが実行されます。 - トリガー設定の
condition_function_idを指定すると、どのトリガータイプにも条件を追加できます。 - 条件関数は、ハンドラーが受け取るものと同じイベントデータを受け取ります。
- http、queue、cron、state、stream、subscribe のすべてのトリガータイプで使用できます。
アーキテクチャ
トリガーが発火すると、エンジンはまずイベントデータを条件関数に渡して呼び出します。条件が true を返した場合、ハンドラーは通常どおり実行されます。false の場合、エラーや再試行を発生させずにハンドラーがスキップされます。
iii のプリミティブ
| プリミティブ | 用途 |
|---|---|
registerFunction({ id }, handler)(条件) | 条件関数を登録します(ブール値を返します) |
registerFunction({ id }, handler)(ハンドラー) | ハンドラー関数を登録します |
registerTrigger({ type, function_id, config: { condition_function_id } }) | 条件ゲート付きのトリガーをバインドします |
参照実装
完全な動作例(条件ゲート付きトリガー)については、../references/trigger-conditions.js を参照してください。
Python 版もあります:../references/trigger-conditions.py
Rust 版もあります:../references/trigger-conditions.rs ビジネスルール関数を使って、ハンドラーが処理する前にイベントをフィルタリングします。
よくあるパターン
このパターンを使用するコードには、該当する場合、通常以下が含まれます。
registerFunction({ id: 'conditions::is-high-value' }, async (input) => input.new_value?.amount >= 1000)— 条件関数registerFunction({ id: 'orders::notify-high-value' }, async (input) => { ... })— ハンドラー関数registerTrigger({ type: 'state', function_id: 'orders::notify-high-value', config: { scope: 'orders', key: 'status', condition_function_id: 'conditions::is-high-value' } })— 条件付きでバインドします- 条件が
trueを返す — ハンドラーが実行されます - 条件が
falseを返す — ハンドラーが通知なくスキップされます - 条件関数 ID を整理しやすくするため、
conditions::プレフィックスを使用します
このパターンの応用
タスクに当てはまる場合は、以下の応用方法を使用してください。
- 条件ロジックをビジネスルール(しきい値の確認、ロールの検証、フィーチャーフラグ)に置き換えます。
- 条件はすべてのトリガータイプで使用できます。HTTP トリガーでは認証ガードに、キュートリガーではメッセージのフィルタリングに使用します。
- 条件関数はトリガーが発火するたびに実行されるため、軽量かつ高速に保ちます。
- 条件を連鎖させるのではなく、複数のビジネスルールを1つの条件関数にまとめます。
- 条件関数の内部で
trigger()を呼び出し、状態やほかの関数を確認できます。
パターンの適用範囲
- 関数やトリガーを一般的に登録する場合は、
iii-functions-and-triggersを優先してください。 - 状態変更トリガーに特化する場合は、
iii-state-reactionsを優先してください。 - 呼び出しモード(sync/void/enqueue)については、
iii-trigger-actionsを優先してください。 - 条件チェックによるトリガー実行のゲート制御が主な課題である場合は、
iii-trigger-conditionsを使用してください。
使用する場面
- タスクの主な内容が、iii エンジンの
iii-trigger-conditionsに関する場合にこのスキルを使用します。 - リクエストでこのパターン、または同等の実装が直接求められている場合に使用します。
適用範囲
- 無関係なタスクに対する汎用的なフォールバックとして、このスキルを使用しないでください。
- より適切な iii スキルがある場合、このスキルを適用してはいけません。
- このスキルの例を適用する前に、必ず環境と安全上の制約を確認してください。
コメント
Markdown 対応