mcpField
T
trigger-cost-savings

trigger-cost-savings

github.com/triggerdotdevクラウド・DevOps352.3k 回インストール1 週間前に更新
リポジトリ

trigger-cost-savings について

ソースコードの確認と実行状況の分析により、Trigger.dev タスクのコスト削減策を探すスキルです。SDK のバージョンに対応した指針と Trigger.dev MCP サーバーの実行データを使い、開発者が対策の優先順位を付けられます。

主な機能

  1. 01タスクソースのコストリスク確認
  2. 02実行状況と失敗パターンの分析
  3. 03マシン設定と稼働状況の確認
  4. 04リトライ、待機、デバウンスの確認
  5. 05優先順位付き提案の作成

活用シーン

  1. 01タスクコード内の過剰なマシン設定を発見
  2. 02コストのかかる失敗実行とリトライを特定
  3. 03チェックポイント付き待機に替えられるポーリングを発見
  4. 04高頻度トリガーのデバウンス要否を確認

MCP 対応

Trigger.dev MCP サーバーの `list_runs`、`get_run_details`、`get_current_worker` ツールで、実行状況とタスク設定を調べます。ツールが使えない場合も、静的なソース分析を実施できます。

インストール

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

$npx skills add https://github.com/triggerdotdev/skills --skill trigger-cost-savings

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

詳細

Trigger.dev のコスト削減分析

タスクの実行状況と設定を分析し、コスト削減の機会を見つけます。このスキルでは、ソースコードの静的分析と Trigger.dev MCP サーバーを介した実行状況のライブ分析を組み合わせます。

始める前に:正式なガイダンスを読む

このスキルには、信頼できるバージョン固定のコストガイダンスが同梱されています。推奨事項をインストール済みの SDK バージョンに合わせるため、まずこれを読んでください。

  • @trigger.dev/sdk/docs/how-to-reduce-your-spend.mdx — 正式な「支出を削減する」ガイド(マシンサイズ、冪等性による重複排除、並列処理、リトライ、maxDuration、チェックポイント付きの待機、デバウンス)。
  • 関連リファレンス:@trigger.dev/sdk/docs/machines.mdx、runs/max-duration.mdx、queue-concurrency.mdx、idempotency.mdx、triggering.mdx(デバウンス+バッチ)、errors-retrying.mdx(AbortTaskRunError)。

前提条件:MCP ツール

実行状況のライブ分析には、Trigger.dev MCP サーバーが必要です。次のツールを利用できることを確認してください。

  • list_runs — フィルター(ステータス、タスク、期間、マシンサイズ)を指定して実行を一覧表示
  • get_run_details — 実行ログ、所要時間、ステータスを取得
  • get_current_worker — 登録済みのタスクと設定を取得

利用できない場合は、MCP サーバーをインストールするようユーザーに伝えてください。

npx trigger.dev@latest install-mcp

MCP ツールがなくても、以下のソースコードの静的分析は実行できます。実行データを捏造しないでください。

分析ワークフロー

ステップ 1:静的分析(ソースコード)

タスクファイルをスキャンして、次の項目を確認します。

  1. 過剰に大きいマシン — 明確な必要性がないのに large-1x/large-2x を使用しているタスク。
  2. maxDuration の未設定 — 実行時間の上限がなく、コストが際限なく増えるリスクがある。
  3. 過剰なリトライ — 既知の恒久的な失敗に対して AbortTaskRunError を使用していないのに、maxAttempts > 5 となっている。
  4. デバウンスの未設定 — デバウンスなしで高頻度のトリガーが発生している。
  5. 冪等性の未設定 — 冪等性キーのない決済タスク/重要なタスク。
  6. 待機の代わりにポーリング — wait.for() の代わりに setTimeout/setInterval/スリープループを使用している。
  7. 短い待機 — 5 秒未満の wait.for()(チェックポイントが作成されず、コンピューティングリソースが無駄になる)。
  8. バッチではなく逐次実行 — batchTriggerAndWait() で実行できる複数の triggerAndWait() 呼び出し。
  9. スケジュール頻度が高すぎる cron — 必要以上の頻度で実行されるスケジュール。
ステップ 2:実行分析(MCP ツールが必要)
  • 2a. コストの高いタスク — period: "30d"/"7d" を指定して list_runs を実行し、総コンピューティング量(所要時間 × 実行回数)が多いもの、失敗率が高いもの、所要時間が短い大型マシン(過剰プロビジョニング)を見つけます。
  • 2b. 失敗パターン — status: "FAILED"/"CRASHED" を指定して list_runs を実行し、一時的な失敗(リトライ可能)と恒久的な失敗を区別します。後者には AbortTaskRunError を提案し、無駄になったリトライのコンピューティング量を推定します。
  • 2c. マシン使用率 — サンプル実行に対して get_run_details を実行します。large-2x のタスクが常に 1 秒未満で完了する場合や、I/O バウンド(API/DB)である場合は、過剰プロビジョニングです。
  • 2d. スケジュール頻度 — get_current_worker で cron パターンを一覧表示し、目的に対して頻度が高すぎるスケジュールにフラグを立てます。
ステップ 3:推奨事項を作成

影響の見積もりを添えた優先順位付きレポートを提示します。

## Cost Optimization Report

### High impact
1. **Right-size `process-images`** — currently `large-2x`, average run 2s. `small-2x` could cut this task's cost by ~16x.
   `machine: { preset: "small-2x" }`  // was "large-2x"

### Medium impact
2. **Debounce `sync-user-data`** — 847 runs/day, often bursty.
   `debounce: { key: \`user-${userId}\`, delay: "5s" }`

### Low impact / best practice
3. **Add `maxDuration` to `generate-report`** — no timeout configured.
   `maxDuration: 300`  // 5 minutes

マシンプリセットのコスト(相対値)

大きなマシンほど、コンピューティング 1 秒あたりのコストが比例して高くなります。

プリセットvCPURAM相対コスト
micro0.250.25 GB0.25x
small-1x0.50.5 GB1x(基準)
small-2x11 GB2x
medium-1x12 GB2x
medium-2x24 GB4x
large-1x48 GB8x
large-2x816 GB16x

主な原則

  • 5 秒を超える待機は無料です — チェックポイントが作成され、コンピューティング料金は発生しません。
  • 小さく始めて、必要に応じて拡張します — デフォルトの small-1x は、ほとんどのタスクに適しています。
  • I/O バウンドのタスクに大型マシンは不要です — API 呼び出しや DB クエリはネットワークの応答を待ちます。
  • 高頻度タスクではデバウンスが最も大きな節約になります — 集中的なイベントをまとめて、単一の実行にします。
  • 冪等性により、課金対象となる作業の重複を防げます — 特にコストの高い処理で効果的です。
  • AbortTaskRunError で無駄なリトライを停止できます — 恒久的な失敗をリトライするために料金を支払わないでください。

バージョン

このスキルは @trigger.dev/sdk に同梱され、node_modules から直接読み込まれるため、インストール済みの SDK バージョンと常に一致します(隣接する package.json を参照してください)。コストに関するドキュメント一式も @trigger.dev/sdk/docs/ に同梱されています。

コメント