ドキュメント

フック

組織レベルの自動化処理で、ユーザーが記述した指示に基づきプラットフォームのイベントに反応します。

フックはCoroidで発生する事象に反応します。該当するイベントを選択し、平易な言葉で指示を記述すれば、イベントが発生した際にフックが実行されます。

それらは自動化機能内の「自動化」セクションで確認できます。

新規作業で1つ作成します:自動化を選択し、次に「何かが発生したとき」を指定します。新規作業ではGitHubイベントとCoroidのイベントが利用可能です。詳細はこちらをご覧ください。自動化。

反応可能なイベント一覧

フックは特定の事象が送信したイベントに対してのみ実行されます。ほとんどの下記イベントはCoroid自体が送信しますが、一部は自社システムが発火させます。その他のイベントは予約済みとなっており、エディタには表示されず、該当するイベントで新しいフックを作成することもできません。予約済みのイベントで保存されたフックは、エディタと一覧で「実行不可」とマークされますが、削除されるわけではありません。

Coroidが送信するイベント

カテゴリイベント
タスク作成済み、ステータス変更、完了、失敗
エージェント開始、完了、エラー
リポジトリコミットのプッシュ、ブランチの作成、pull requestの開設・更新・マージ、課題の開設、Coroidを言及するコメント
スプリント作成済み、計画開始、開始、タスク追加、タスク削除、レビュー開始、完了、キャンセル
プランフェーズ開始、完了、失敗
スケジュール実行開始、実行完了、実行失敗
レポート開始、完了、失敗
品質チェック開始、合格または不合格、自動的に解決
プロモーション要求済み、承認済み、却下
リリース作成済み、候補変更、備考変更、備考承認、スコープ変更、チェックリスト完了、ゲート評価、ゲート上書き、承認済み、公開、ロールバック
デプロイキュー待ち、実行中、成功、失敗、キャンセル、手動で証明、手動でロールバック証明、ヘルスチェック合格、ヘルスチェック失敗
同期外部ソースの更新
SlackおよびTelegram自動化のフィルターに一致するメッセージ

自社システムが発火させるイベント

カテゴリイベント
分析依存関係の検出、セキュリティ問題の発見、分析完了
外部デプロイ開始、完了、失敗

Coroidはこれらのイベントを送信しません。CIパイプライン、スキャナー、または他の自社システムがIDを使ってフックを発火させ、以下のコマンドを呼び出します。POST /api/v1/organizations/hooks/:id/dispatchキー付きのサービスアカウントこれにはhooks:dispatchのスコープが設定されています。フックは保存されたイベントに対して実行されます。エディタではこれらのイベントを「自社システムが発火させるもの」として一覧表示します。

予約済みのイベント

これらはまだ送信または発火していないため、エディタでは選択できません:

カテゴリイベント
タスクフェーズ変更
エージェント反復処理、ツール呼び出し
プラン作成済み、フェーズ完了、最終レビュー開始、最終レビュー完了、プランのpull request前
スケジュール作成済み、有効化、一時停止
スプリント計画完了、タスク完了、スコープ変更
リリースステージング済み、検証済み
プロモーションプロモーションのpull request前
品質チェック利用不可、修復開始または試み、再検証開始、合意形成

作業の開始と終了

プラン、スケジュール、レポート、品質チェック、プロモーション、リリースは開始時にイベントを、終了時に別のイベントを送信します。フックは作業の終了状況に反応でき、自社システムで作業に要した時間を測定することも可能です。

作業開始終了
プランフェーズ開始:プランの実行開始時に最初のイベントが送信されます。完了、失敗
スケジュール実行開始実行完了、実行失敗
レポート開始完了、失敗
品質チェックチェック開始合格、不合格、自動的に解決
プロモーション要求済み承認済み、却下
リリース作成済み公開、ロールバック

これらのイベントはすべて、発生時刻をoccurredAt。作業の終了状況を報告するイベントでは、作業開始時刻もstartedAt、所要時間はdurationMs。それはstartedAt開始イベントのoccurredAt開始イベントと終了イベントは常に一致します。一時停止中に費やされた時間も作業時間に含まれます。

各イベントは変更が保存された時に一度だけ送信されます。取り消された変更では何も送信されず、再試行時にも二重に送信されません。終了イベントは開始された作業に対してのみ送信されます。スケジュールのドライランや開始前にキャンセルされたレポートでは送信されません。

各イベントが持つ情報は、時間以外に以下の通りです:

イベント送信されるタイミングフィールド
計画フェーズが開始計画の実行が開始されます(最初のフェーズ)。また、別のフェーズの最初のタスクが開始されるたびに送信されます。planId、plan(id, title),phase(id, sequence, title),firstPhase、executionStartedAt
計画が完了または失敗計画の実行が終了します。計画中に失敗した場合は送信されません。planId、plan、status、executionStartedAt
スケジュール実行が開始スケジュール実行が開始されます。scheduleId、runId、schedule(id, name),run(トリガー理由, 親実行履歴)
スケジュール実行が完了または失敗実行が終了します。同じフィールド、status、およびtasksCreatedまたはerror
レポートが開始レポートの生成が開始されます。一時停止や再開時でも開始時刻は変わりません。reportId、report(id, type, title)
レポートが完了または失敗レポートが保存されるか、失敗またはキャンセルされます。同じフィールド、およびtokensUsed、costUsdおよびhasActionableFindings、またはerror
品質チェックが開始品質チェックが開始されます。qualityRunId、check(対象, トリガー, ポリシーバージョン, コミット)
品質チェックが合格または不合格チェックが判定結果を出します。同じフィールド、decision、redoCause、failedExpectationIds
品質に関する問題が自動的に未解決Coroidはチェックで検出された問題の修復を試みるのを中止します。qualityRunId、workItemType、workItemId、reason
プロモーションが要求プロモーションが作成されます。promotionId、laneId、promotion(タイトル, ステータス, ブランチ, pull request)
プロモーションが承認プロモーションがマージされます:Coroidで承認され、強制マージ、プロバイダーでのマージ、またはリリースに含まれます。同じフィールド、approval、approvedBy、forceReason
プロモーションが拒否レビュアーが変更を要求します。同じフィールド、reason、requestedBy、comment
リリースが公開リリースの最初の本番環境へのデプロイが成功します。releaseId、version、commitSha
リリースがロールバックロールバックにより、環境内のリリースが置き換えられます。releaseId、version、rolledBackToReleaseId

プロジェクト内の作業に関するイベントには以下も含まれますprojectId、そのため特定のプロジェクトに限定されたフックはそのプロジェクトに対してのみ発火します。フックが作業を作成した場合、これらのイベントはそのフックの連鎖深度にカウントされます。

トリガーと宛先

各自動化処理にはイベントが発生するトリガー元と、発火時に何を実行するかを決める宛先があります。そのうち2つの宛先はイベントを作業に変換します。

トリガー元イベント
ワークフローイベントCoroid内のイベントで、上記の表に記載されています。
GitHubプルリクエストが開かれた、更新された、またはマージされた場合、課題が開かれた場合、Coroidを言及するコメントが投稿された場合
Slack自動化のフィルターに合致するメッセージ
Telegram/coroidで始まるなど、自動化のフィルターに合致するメッセージ
Jira新しい課題
宛先実行内容
フックこのページに記載の通り、読み取り専用で指示を実行します。
作業を選定イベントを要求として記録します。選定が完了すると、Coroidが作業を作成します。
Coroid Check廃止されました。すべてのpull requestに対するCoroidのレビューは「品質管理」に設定され、既存の自動化処理は一時停止されました。

GitHubのイベントにはGitHubアプリが必要です。Coroidを言及するコメントは、作者がリポジトリに書き込み権限を持つ場合にのみカウントされます。詳細はGitHub。

作業を選定するタスクは、イベントの作者が信頼できる場合にのみ自動的に開始されます。つまり、GitHubのpull request、課題、またはコメントの作者で、リポジトリに書き込み権限を持つ者です。Slack、Telegram、Jiraの作者は信頼されないため、彼らのタスクは誰かが開始するのを待ちます。詳細は作業が開始されるタイミング。

新しいJira課題は、CoroidのJira Webhookを通じてのみCoroidに届きます。Coroid用に設定されたWebhookシークレットで署名されたデータのみを受け付け、新規課題に対してのみ、かつ課題のJiraプロジェクトキーがCoroidのプロジェクトと一致する場合に限り処理されます。coroid.aiではまだJira Webhookが設定されていないため、Jiraトリガーはイベントを受信しません。その代わりにJira課題をインポートしてください。Webhookが設定されている場合、新規課題はJiraトリガー上の自動化処理に送られ、例えば「品質管理」内のJiraリクエストソースによって、指定した種類・優先度の課題が「Qualification」に登録されます。トリガー上に自動化処理が設定されていない場合、新規課題は何も登録されません。Jiraからの作業は自動的に開始されることはありません。詳細はこちらをご覧ください。課題追跡ツール。

デフォルトでは読み取り専用

フックは分析して報告します。後続の作業を作成することはできますが、コードを直接変更することはありません。

このデフォルト設定により、安全に導入できます。イベントに応じてコードを編集する自動化処理は、監視が最も行われにくいタイミングで実行されるからです。フックがタスクを作成する通常のプロセスと同じ結果を生み出します — 仕様定義、計画、検証、レビュー、pull request。

  • スケジュール時間
  • イベント駆動型の自動化何かが発生したとき

通常のタスク

仕様、計画、ビルド、検証、レビュー。エージェントスロットを利用し、より低い優先度を設定してください。

P2P3

A pull request

自らマージしたり、ベースブランチにコミットしたりすることはできません。

あなたが承認します

自動化の違いはトリガーだけです。実際には通常のプロセス上で通常のタスクが開始され、実際のリソースが使用され、最終的に承認するpull requestが生成されます。

適切な指示の書き方

フックの指示はモデルによって処理されるため、コードではなく同僚への指示のように記述されます。品質基準は通常の場合と同じです。仕様定義:何を確認すべきか、何が重要か、そして何をすべきかを明記します。

「何もしない」ケースについては具体的に記述してください。これが欠けると、フックは実行するたびに何かを出力してしまい、常に動作するフックは読まれなくなります。

ガードレール

イベント駆動型の自動化処理が予測可能な形で失敗するため、3つの保護機能が用意されています。

呼び出し制限分、時間、日単位でフックごとに設定可能です。頻繁に発生するイベントに対するフックは、繁忙期に何百回も呼び出される可能性があります。

チェーン深さフックがイベントを発行し、それが別のフックを呼び出すことがあります。最大チェーン深さを設定することで、ループが発生するのを防ぎます。

ツール権限フックがアクセスできる範囲は制御されており、読み取り専用アクセス、MCP呼び出し、タスク作成は個別に管理されます。

権限

フックを作成、変更、テスト、削除できるのはオーナーと管理者のみです。すべてのメンバーがフックとその実行履歴を確認できます。フックは組織全体に作用するため、この権限の違いは意図的なものです。

実行状況の確認

ファクトリーの各フックのページには、過去30日間の実行状況と処理内容(実行回数、失敗、コスト)が表示されます。すべての自動化の実行履歴は、設定 → アクティビティでも確認でき、「自動化」で絞り込めます。新しいフックを有効にしたら、実行状況を確認してください。問題なのはエラーではなく、何度も発火しても誰も対応しない結果しか生まないことです。

フックとスケジュール

仕組みトリガー
フックプラットフォームイベント
スケジュール時間

どちらも自動化で、ファクトリーにまとめて表示されます。詳しくは自動化。