interactive-bot について
Gmail Commander Telegram ボットの利用方法とコード保守を開発者向けに説明するスキルです。Gmail コマンド、自由入力のエージェント振り分け、実行時の安全対策を扱います。
主な機能
- 01Gmail のスラッシュコマンド
- 02自由入力のエージェント振り分け
- 03Gmail MCP ツールの呼び出し
- 04同時実行・タイムアウト・サーキットブレーカー制御
- 05Telegram の認証チェック
活用シーン
- 01Gmail の受信トレイの確認と検索
- 02メールの作成・返信・下書き管理
- 03自然言語によるメール操作の依頼
MCP 対応
自由入力メッセージは Agent SDK 経由で振り分けられ、メールの一覧、検索、読み取り、下書き作成を行う 4 つの Gmail MCP ツールを利用します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ terrylica/ cc-skills --skill interactive-botインストール後、Claude Code で/interactive-botを入力して読み込まれたか確認します。
同梱ファイルreferences/evolution-log.md
詳細
インタラクティブボット
Gmail Commander の Telegram ボットです。メールにアクセスするスラッシュコマンドと、AI を活用した自由入力のルーティングに対応します。このスキルでは、ボットの機能とコードの場所について説明します。実行中のボットの操作については、bot-process-control を参照してください。
進化するスキル:このスキルは使用を通じて改善されます。説明が間違っている場合、パラメーターが変わった場合、または回避策が必要になった場合は、先延ばしにせず、ただちにこのファイルを修正してください。実際に再現できる問題がある場合にのみ更新してください。
実行場所
ボットは常時稼働している Mac mini 上のプライベートな Restate テナントで動作します。このテナントは scripts/bot.ts から buildBot() をインポートし、独自の永続的な Telegram getUpdates チェーンを持ち、各更新を返された grammY ボットの bot.handleUpdate() に渡します。ワークステーション上のデーモンはありません。ノートパソコンの launchd ジョブは 2026-09-24 に廃止されました。
本番用ボットのトークンを使って「テスト」するために、scripts/bot.ts を直接起動しないでください。Telegram では、1 つのトークンにつき getUpdates のコンシューマーは 1 つのみ許可されています。そのため、2 つ目のポーラーを起動すると、デプロイ済みのボットで 409 Conflict が発生します。別のボットトークンを使ってテストするか、buildBot() をインポートしてコードを実行してください。
必須の事前確認
ステップ 1:ボットのコードが存在し、引き続き buildBot をエクスポートしていることを確認する
PLUGIN="$HOME/.claude/plugins/marketplaces/cc-skills/plugins/gmail-commander"
ls -la "$PLUGIN/scripts/bot.ts" 2>/dev/null || echo "SCRIPT_NOT_FOUND"
grep -n "export async function buildBot" "$PLUGIN/scripts/bot.ts" || echo "buildBot EXPORT MISSING — the deployment depends on it"
ボットコマンド(サイドバーメニュー)
| コマンド | 説明 |
|---|---|
| /inbox | 受信トレイの最近のメールを表示します |
| /search | メールを検索します(Gmail クエリ構文) |
| /read | ID を指定してメールを読みます |
| /compose | 新しいメールを作成します |
| /reply | メールに返信します |
| /abort | 現在の作成/返信操作をキャンセルします |
| /drafts | 下書きメールの一覧を表示します |
| /digest | 直近 N 時間分を今すぐトリアージします(デフォルトは 6 時間) |
| /status | ボットのステータスと統計情報を表示します |
| /help | すべてのコマンドを表示します |
2 層のコマンドシステム
第 1 層 — 決定論的:スラッシュコマンドは Gmail CLI を直接呼び出します(GMAIL_CLI_BIN で指定されたバイナリを実行する scripts/lib/gmail-client.ts 経由)。
第 2 層 — インテリジェント:自由入力のメッセージは Agent SDK(HAIKU_MODEL)を経由し、4 つの Gmail MCP ツール(list、search、read、draft)を使ってルーティングされます。
安全制御
- ミューテックス:同時に実行できるエージェントクエリは 1 つです
- タイムアウト:クエリごとに
AGENT_TIMEOUT_MSを適用します(デフォルトは 2 分) - サーキットブレーカー:3 回連続で失敗すると、エージェントを 10 分間無効にします
- 汚染防止:すべてのエージェント応答でスキル汚染を検出します
- 認証ガード:認証済みの
TELEGRAM_CHAT_IDにのみ応答します
ソースマップ
| 対象 | ファイル |
|---|---|
| 配線、作成/返信のセッションフロー | scripts/bot.ts(buildBot()) |
| コマンド一覧とハンドラー | scripts/lib/commands.ts |
| インラインキーボードのコールバック、セッションストア | scripts/lib/callbacks.ts |
| 自由入力のルーティング、MCP ツール | scripts/lib/agent-router.ts |
| メールのレンダリング、HTML エスケープ | scripts/lib/telegram-format.ts |
| メッセージの分割(4096 文字の上限) | scripts/lib/telegram-chunk.ts |
変更後のチェックリスト
- YAML フロントマターが有効(説明文にコロンがない)
- トリガーキーワードが最新である
- パスのパターンにハードコードされたパスではなく $HOME を使っている
- インポート時に
buildBot()が引き続きトランスポートを開始せず、PID ロックも取得しない
実行後の振り返り
このスキルの実行後、タスクを終える前に振り返ります。
- 現在地を確認します。 — 編集する前に、この SKILL.md の正規パスを特定します。
- 何が失敗しましたか? — 原因となった指示を修正します。
- 予想以上にうまくいったことは何ですか? — 推奨プラクティスにします。
- 何にずれがありましたか? — 現状と合わなくなったスクリプト、参照、依存関係を修正します。
- 記録します。 — 発生のきっかけ、修正内容、根拠を含む進化ログのエントリーを追加します。
先延ばしにしないでください。次回の実行では、ここに残した内容が引き継がれます。