mcpField
E
egghead-slack

egghead-slack

github.com/joelhooks生産性6535 回インストール1 日前に更新
リポジトリ

egghead-slack について

egghead-slack は、Slack のメッセージやチャンネル情報、許可された作業依頼を扱う運用スキルです。プライバシー保護、返信承認、ゲートウェイ経由の作業引き継ぎを定めています。

主な機能

  1. 01Slack の非公開データ保護
  2. 02チャンネル検索とスレッド確認
  3. 03承認が必要な返信手順
  4. 04ShitRat 起点の作業振り分け
  5. 05受動的なメッセージ索引

活用シーン

  1. 01返信前に Slack のスレッドを確認
  2. 02対応付け済みチャンネルの許可済み依頼を転送
  3. 03明示的な承認を得る返信案の準備

インストール

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

$npx skills add https://github.com/joelhooks/joelclaw --skill egghead-slack

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

詳細

egghead Slack Intelligence

このリポジトリのコピーは、公開しても安全な運用契約です。プライベートなワークスペース ID、チャンネルの対応表、人物、メッセージの内容、実行時のバインディングは、ローカルの実行時オーバーレイに置いてください。これらをここに追加してはいけません。

境界

  • Slack のコンテンツは、デフォルトでプライベートです。
  • チャンネル ID、ユーザー ID、ワークスペース ID、チャンネルのメンバー一覧、ダイレクトメッセージの対応表、顧客データ、メッセージ本文、ファイル、プライベートリンクを公開してはいけません。
  • トークンの値を出力したり、永続化したりしてはいけません。
  • 外向きの Slack 通信は、単一のゲートウェイ・トランスポートが担います。
  • ワーカーは証拠をゲートウェイに返します。ワーカーが直接投稿することはありません。
  • 通常のチャンネルメッセージは、受動的な情報として扱います。

認証情報

実行時の認証情報は agent-secrets から取得します。

  • slack_bot_token:Socket Mode、リアクション、ボット名義の返信に使用します。
  • slack_app_token:Socket Mode の接続に使用します。
  • slack_user_token:承認済みの読み取り専用検索とコンテキスト取得に使用します。

認証情報は、必要なコマンドの実行中に限り取得してください。ファイル、ログ、プロンプト、シェル履歴にコピーしてはいけません。

読み取りワークフロー

コマンドが存在する場合は、Slack API を直接呼び出す代わりに jc-slack を使用します。

jc-slack channels --query <term>
jc-slack search '<query>' --channel <channel-name>
jc-slack context '<message-permalink>'
jc-slack board <channel-name-or-id>

判断や返信の前に、元のスレッドを読んでください。スレッドでの作業には、パーマリンクを安定した入力として使用します。

ShitRat 作業トリガー

Joel が許可した参加方法は、以下の決定的な経路のみです。

  • 人間が正確に :shitrat: を投稿するか、既存のボットに直接メンションします。
  • 元のチャンネル名が lc-* または cc-* に一致します。
  • agent-secrets にある Joel 個人の Slack トークンで、そのチャンネルを閲覧できます。
  • プライベートなチャンネルコンテキストのバインディングにより、特定のリポジトリ、cwd、Brain エントリ、スキルセット、検証契約がそれぞれ一意に解決されます。

トランスポートは直ちに Joel の :shitrat: リアクションを追加します。ウォーム状態の openai-codex/gpt-5.6-luna トリアージ呼び出しが、トリガーとなったメッセージを読み、最初の ShitRat 口調の返信を生成して、social、answer、work のいずれかに分類します。social と answer のトリガーには返信して終了します。実作業の場合は、まず返信してから、解決されたプロジェクトで新しい Herdr/Pi ワークツリーを起動します。ワーカーはプライベートな進捗報告と最終報告を送信し、ゲートウェイはそれらを元のスレッドに反映します。最終結果の後に :white_check_mark: を追加し、その後ペインとワークツリーを解放します。

ゲートウェイはワーカーの報告をそのまま貼り付けず、書き換えます。結果を先に述べ、原因を平易な言葉で説明し、有用な技術的な報告だけを残して、次のアクションまたは未解決のリスクで締めくくってください。短い Slack の段落、階層化しない箇条書き、*太字*、インラインコード、<url|label> 形式のリンクを使用します。Markdown の見出し、表、入れ子の箇条書きの多用、長大な時系列説明は使用しないでください。最終結果は 1,200 文字、進捗報告は 320 文字をデフォルトの上限とします。ShitRat らしい、簡潔で技術的、懐疑的で、真実を削らずに ELI5 する口調にしてください。

このトリガーには Task Grant、Reply Grant、または Joel による個別の承認は必要ありません。対応表にないチャンネルはフェイルクローズし、バインディングが必要である旨を返信します。ゲートウェイがリポジトリを推測することはありません。

承認が必要な返信

ShitRat の作業トリガー以外では、チャンネルへの返信に、Joel による返信文面そのものの承認が必要です。

まずプレビューを表示します。

jc-slack reply '<message-permalink>' --text-file <path>

プレビューは、承認に紐づく確認コマンドを返します。Joel が返信文面そのものを承認した後に限り、そのコマンドを正確に実行してください。CLI は単一のゲートウェイ・トランスポートに配信を委任し、配信報告を返します。

正確な ShitRat トリガー以外では、ユーザートークン、chat.postMessage の直接呼び出し、または 2 つ目の Slack リスナーを使って、この手順を回避してはいけません。ゲートウェイの型付き ShitRat 配信境界だけが、個人トークンの例外です。

受動的なインテリジェンス

設定された重要なチャンネルでは、ボット以外のメッセージをプライベートなインデックス作成・リレーのパイプラインに取り込めます。受動的なメッセージは、インデックス化、バッチ処理、またはエスカレーションが可能です。これらのメッセージによって返信が許可されることはありません。

実行時の設定と正確なチャンネルの紐付け情報は、この公開リポジトリの外部で管理されます。ローカルの実行時オーバーレイには、非公開の ID やチャンネル名が含まれる場合がありますが、それらの値をコミット、テスト、ドキュメント、スクリーンショット、公開成果物に含めてはいけません。

バックフィル

ホストワーカーはローカルの認証情報をリースできるため、Slack の履歴バックフィルを担当します。バックフィルでは、チャンネルの履歴をページネーションで取得し、アクティブなスレッドを展開して、プライベートな検索レコードを書き込みます。認証情報のリースにクラスターで安全に使えるアダプターが用意されるまでは、この処理をクラスター ワーカーに移さないでください。

関連するイベント:

  • channel/slack.backfill.requested
  • channel/slack.backfill.batch.requested
  • channel/message.received
  • slack.signal.received

公開用フィクスチャ

テストと例では、架空の値を使用してください。

  • チャンネル:lc-example-project
  • チャンネル ID:CEXAMPLE
  • アクター:UTEAMMATE
  • リポジトリ:/tmp/example-project

本番環境の Slack の値を公開用フィクスチャに貼り付けないでください。

関連コード

  • packages/gateway/src/slack-work-request.ts
  • packages/gateway/src/chat-sdk-inbound/
  • packages/gateway/src/gateway-decision-executor.ts
  • packages/cli/src/commands/messages.ts
  • skills/slack-link/SKILL.md

コメント