mcpField
S
salla-app-functions-design

salla-app-functions-design

github.com/sallaapp開発278 回インストール4 日前に更新
リポジトリ

salla-app-functions-design について

salla-app-functions-designは、実装前にSallaアプリ関数のトリガーと実行方式を選ぶ開発者向けスキルです。イベント契約の確認方法と、処理をブロックする同期アクションおよび非同期イベントの違い、タイムアウト制限を説明します。

主な機能

  1. 01トリガー定義の確認
  2. 02イベントペイロード項目の確認
  3. 03同期・非同期実行の選択
  4. 04タイムアウト枠の把握
  5. 05関連スキルへのセキュリティ作業の引き継ぎ

活用シーン

  1. 01Sallaアプリ関数のトリガー選定
  2. 02イベント項目を利用する前のペイロード確認
  3. 03処理をブロックするアクションかの判断
  4. 04実行タイムアウトに沿った実装計画

インストール

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

$npx skills add https://github.com/sallaapp/salla-partners-agent-kit --skill salla-app-functions-design

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

同梱ファイルreferences/event-contexts.md

詳細

アプリの関数 — トリガーと実行タイプを設計する

コードを書く前に、_何_を_いつ_実行するかを決めます。

ステップ 1 — イベントの契約を確認する

ドキュメントに基づくイベントカタログ(トリガーを Merchant と Customer に分類した一覧、同期/非同期のタイプ、ドキュメントに記載された payload.data の形状)は、references/event-contexts.md にあります。ここからトリガーを選び、コンテキストの形状を確認してください。ペイロードを決めつけてはいけません。

信頼できる情報源:現在のトリガー名とカテゴリーは salla_functions action=list_triggers(app_id は不要)で確認できます。トリガーの正式な .d.ts は salla_functions action=get で確認できます。Customer イベントのドキュメントに記載されたペイロードは説明用の例です。これらのフィールド名に依存する前に、action=get またはスキーマドキュメントで確認してください。

確認事項:「このイベントの payload.data のフィールド名は確認済みですか?」

ステップ 2 — 実行タイプを選ぶ

タイプタイミングユーザーをブロックするかタイムアウト戻り値の影響
非同期イベント操作の後いいえ30 秒Fire-and-forget:ログに記録されますが、フローには影響しません。
同期アクション操作の前はい合計 5 秒ブロッキング:パラメーターを変更したり、操作を拒否/ブロックしたりできます。
  • 同期アクションは merchant_actions カテゴリーに該当するもののみです。shipment.creating と shipment.cancelling が該当します(動詞の形ではなく、salla_functions action=list_triggers でカテゴリーを確認してください)。ライフサイクルが完了する前に介入します。エラーが発生すると 操作がキャンセルされ、成功するとデータを変更できます。ドキュメントに記載された 同期の例は shipment.creating で、単純な Resp ではなく Shipment ((context: Shipments): Promise<Shipment>)を返します。配送番号/ラベルを設定します。ビルダーの仕組み → salla-app-functions-handler。
  • 非同期イベント(例:order.created、product.added)は、メインの処理とは別に実行されます。ログに記録されるよう、有効な成功/エラー結果を返してください。
タイムアウトの予算
タイプ合計タイムアウト内部の非同期呼び出しごと
同期ハードリミット 5 秒、目標 < 500 ミリ秒< 2 秒、AbortController で制限
非同期30 秒AbortController で制限

同期アクション中はマーチャントがブロックされるため、500 ミリ秒未満を目標、5 秒を上限としてください。各 fetch/待機中の I/O に上限を設けることで、上流の処理が遅くてもタイムアウトの予算を超えずに済みます(AbortController の仕組み → salla-app-functions-handler)。制限時間を超えると、実行がブロックされる(同期)か、ドロップされます(非同期)。

確認事項:「同期か非同期かを決め、タイムアウトの予算を把握しましたか?」

セキュリティとデータの引き渡し

ハンドラーがトークン、マーチャント認証、または外部への呼び出しを扱う場合は、次の場所に振り分けてください。トークンストレージ/OAuth/マーチャントアクセストークン → salla-app-auth、Webhook の署名検証と冪等性 → salla-webhooks。引き渡し項目の全一覧 → references/event-contexts.md。

次へ:salla-app-functions-handler で実装します。

コメント