feishu-notify について
feishu-notifyは、ARISのワークフロー向けFeishu/Lark通知スキルで、手動でも利用できます。プッシュ専用と双方向のやり取りに対応し、未設定時は通知を行わず、既存のワークフローを止めません。
主な機能
- 01イベント通知カードの送信
- 02Webhookプッシュモード
- 03双方向のやり取りと返信
- 04未設定時は通知を無効化
- 05対話タイムアウト後に自動続行
- 06配信失敗でワークフローを停止しない
活用シーン
- 01実験完了時の結果通知
- 02レビュー評価と弱点の通知
- 03チェックポイントでの選択依頼
- 04パイプライン完了やエラーの報告
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ wanshuiyin/ auto-claude-code-research-in-sleep --skill feishu-notifyインストール後、Claude Code で/feishu-notifyを入力して読み込まれたか確認します。
詳細
Feishu/Lark 通知
通知を送信します:$ARGUMENTS
概要
このスキルは、ARIS 向けの Feishu/Lark 統合機能を提供します。内部ユーティリティとして設計されており、他のスキルが重要なイベント(実験完了、レビューの採点、チェックポイントでの待機など)で呼び出します。手動で呼び出すこともできます。
影響ゼロの保証:feishu.json の設定が存在しない場合、このスキルは何もせず、通知なしで終了します。既存のワークフローには一切影響しません。
設定
このスキルは ~/.claude/feishu.json を読み込みます。このファイルが存在しない場合、Feishu の機能はすべて無効になり、スキルは従来どおりに動作します。
設定形式
{
"mode": "push",
"webhook_url": "https://open.feishu.cn/open-apis/bot/v2/hook/YOUR_WEBHOOK_ID",
"interactive": {
"bridge_url": "http://localhost:5000",
"timeout_seconds": 300
}
}
モード
| モード | "mode" の値 | 動作 | 必要なもの |
|---|---|---|---|
| オフ | "off" またはファイルなし | 何もしません。CLI のみで従来どおり動作します | なし |
| プッシュのみ | "push" | 重要なイベントで Webhook 通知を送信します。モバイルへのプッシュ通知のみで、返信はできません | Feishu ボットの Webhook URL |
| 対話型 | "interactive" | 双方向でやり取りできます。Feishu から承認/拒否し、チェックポイントに返信できます | 実行中の feishu-claude-code |
ワークフロー
ステップ 1:設定の読み込み
cat ~/.claude/feishu.json 2>/dev/null
- ファイルが見つからない → 通知なしで終了し、何もしません
"mode": "off"→ 通知なしで終了し、何もしません"mode": "push"→ ステップ 2(プッシュ)に進みます"mode": "interactive"→ ステップ 3(対話型)に進みます
ステップ 2:プッシュ通知(Webhook)
Feishu Webhook にリッチカードを送信します:
curl -s -X POST "$WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d '{
"msg_type": "interactive",
"card": {
"header": {
"title": {"tag": "plain_text", "content": "TITLE"},
"template": "COLOR"
},
"elements": [
{"tag": "markdown", "content": "BODY"}
]
}
}'
イベント種別ごとのカードテンプレート:
| イベント | タイトル | 色 | 本文 |
|---|---|---|---|
experiment_done | 実験完了 | green | 結果テーブル、ベースラインとの差分 |
review_scored | レビュー第 N ラウンド:X/10 | blue(≥6)/orange(<6) | スコア、判定、主な弱点の上位 3 件 |
checkpoint | チェックポイント:入力待ち | yellow | 質問、選択肢、コンテキスト |
error | エラー:[type] | red | エラーメッセージ、失敗した内容 |
pipeline_done | パイプライン完了 | purple | 最終概要、成果物 |
custom | カスタム | blue | $ARGUMENTS からの自由形式のメッセージ |
curl の実行後、直ちに戻ります。プッシュモードでは応答を待つことはありません。
ステップ 3:対話型通知(双方向)
対話型モードでは、ブリッジとして feishu-claude-code を使用します。
-
ブリッジにメッセージを送信します:
curl -s -X POST "$BRIDGE_URL/send" \ -H "Content-Type: application/json" \ -d '{"type": "EVENT_TYPE", "title": "TITLE", "body": "BODY", "options": ["approve", "reject", "custom"]}' -
返信を待ちます(タイムアウトあり):
curl -s "$BRIDGE_URL/poll?timeout=$TIMEOUT_SECONDS"次のいずれかを返します:
{"reply": "approve"}、{"reply": "reject"}、{"reply": "user typed message"}、{"timeout": true} -
タイムアウト時:
AUTO_PROCEEDの動作にフォールバックし、デフォルトのオプションで続行します。 -
ユーザーの返信を呼び出し元のスキルに返し、その返信に基づいて処理できるようにします。
ステップ 4:配信の確認
- プッシュモード:curl の終了コードを確認します。ゼロ以外の場合は警告を記録しますが、ワークフローをブロックしてはいけません。
- 対話型モード:ブリッジに接続できない場合、Webhook が設定されていればプッシュモードにフォールバックし、設定されていなければ通知なしでスキップします。
ヘルパー関数(他のスキル向け)
他のスキルは、通知を送信する際に次のパターンを使用してください。
### Feishu Notification (if configured)
Check if `~/.claude/feishu.json` exists and mode is not "off":
- If **push** mode: send webhook notification with event summary
- If **interactive** mode: send notification and wait for user reply
- If **off** or file absent: skip entirely (no-op)
この確認は常にガードされています。 設定ファイルが存在しない場合、スキルは通知ブロック全体をスキップするため、オーバーヘッドも副作用もありません。
イベントカタログ
スキルは次のタイミングでこれらのイベントを送信します。
| スキル | イベント | タイミング |
|---|---|---|
/auto-review-loop | review_scored | 各ラウンドのレビュー採点後 |
/auto-review-loop | pipeline_done | ループ完了時(肯定的な結果または最大ラウンド数到達時) |
/auto-paper-improvement-loop | review_scored | 各ラウンドのレビュー採点後 |
/auto-paper-improvement-loop | pipeline_done | すべてのラウンド完了時 |
/run-experiment | experiment_done | スクリーンセッション終了時 |
/idea-discovery | checkpoint | フェーズ間(対話モードの場合) |
/idea-discovery | pipeline_done | 最終レポートの準備完了時 |
/monitor-experiment | experiment_done | 結果収集後 |
/research-pipeline | checkpoint | ワークフローの各ステージ間 |
/research-pipeline | pipeline_done | パイプライン全体の完了時 |
主なルール
- Feishu に接続できない場合でも、ワークフローを絶対にブロックしないでください。 必ず処理を続行してください。
- Feishu の設定を絶対に必須にしないでください — すべてのスキルは設定なしで動作する必要があります。
- 設定ファイルがない場合は、モードをオフにします。 エラー、警告、ログは出力しません。
- プッシュモードは送信したら完了です。 curl を実行し、終了コードを確認して、次に進んでください。
- 対話のタイムアウト時は、自動的に続行します。 返信を待ち続けないでください。
AUTO_PROCEEDを尊重してください:対話モードでタイムアウトまでにユーザーから返信がない場合は、呼び出し元のスキルと同じ自動続行ロジックを使用します。- 通知にシークレットを含めないでください。 Feishu のメッセージに API キー、トークン、パスワードを絶対に含めないでください。