agent-slack について
Slack の読み取り、検索、明示的に依頼された操作を行うコマンドラインスキルです。ネイティブの下書きやセーフモードなどの書き込み保護があり、確認なしの投稿を防ぎます。
主な機能
- 01Slack メッセージの読み取りと検索
- 02ネイティブ下書きの管理
- 03許可に基づく送信や編集
- 04キャンバスとワークフローの操作
- 05セーフモードによる書き込み制御
活用シーン
- 01Slack のメッセージやファイルの検索
- 02確認用メッセージ下書きの作成
- 03許可を得たチャンネルやキャンバスの変更
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ stablyai/ agent-slack --skill agent-slackインストール後、Claude Code で/agent-slackを入力して読み込まれたか確認します。
同梱ファイルreferences/output.mdreferences/targets.md
詳細
agent-slack
agent-slack は $PATH から使用します。見つからない場合は、次のコマンドでインストールしてください。
curl -fsSL https://raw.githubusercontent.com/stablyai/agent-slack/main/install.sh | sh
代替手段:npm i -g agent-slack(Node >= 22.5)。
コマンドやフラグを推測する前に、agent-slack --help または該当するサブコマンドのヘルプを実行してください。
ここに記載されている機能がインストール済みのヘルプにない場合は、推測せず、バージョンの不一致を報告してください。明示的な許可なく CLI を自動更新しないでください。
安全性
- 自由に読み取りや検索を行えます。
- 書き込み操作は明示的に依頼された場合にのみ実行してください。対象には、送信、編集、削除、リアクション、招待、チャンネルまたはキャンバスの作成・編集、既読にする操作、配信の予約またはキャンセル、アップロード、Later の状態やリマインダーの変更、DM/グループ DM の作成、
workflow runが含まれます。ワークフローの実行によって、後続のアクションが実行される場合があります。 - 作成またはレビューのみを求められた場合は、Slack を操作せずに提案するテキストを返すか、
message draft createを使って Slack ネイティブの下書きを作成してください。下書きはユーザーが確認して送信でき、投稿されることはありません。message composeは送信可能なため、ユーザーから対話型エディターを開くよう明示的に依頼された場合にのみ使用してください。CI またはその他の非対話型環境では、すぐに送信する別途の許可がない限り、これを実行しないでください。CI ではエディターがスキップされ、指定されたテキストが送信されます。 AGENT_SLACK_SAFE_MODE=1(またはグローバルな--safe-modeフラグ)を設定すると、ツールレベルでセーフモードが適用されます。message sendは下書きエディターにリダイレクトされ、message edit/message deleteはブロックされます。人による確認なしに投稿されてはならない場合は、セーフモードを使用してください。
ワークフロー
agent-slack auth whoamiを実行します。必要に応じてauth import-desktop、auth import-brave、auth import-chrome、またはauth import-firefoxで認証情報をインポートし、その後auth testを実行します。- 利用可能な場合は、Slack メッセージの URL を優先してください。ほとんどのメッセージ操作で必要となるワークスペース、チャンネル、タイムスタンプが含まれています。
- 読み取り操作は、目的に合う最も範囲の狭いものを選びます。1 件のメッセージには
message get、スレッド全体またはチャンネル履歴にはmessage list、検索にはsearch messagesまたはsearch filesを使用します。 - 不要なコンテキストを避けるため、
--limit、--max-body-chars、--max-content-charsなどで出力を制限します。 - 書き込みを依頼された場合は、依頼された変更のみを実行し、結果の JSON メタデータを確認します。
スケジュールされた書き込みでは、タイムゾーンが重要な場合、ISO 8601 形式のタイムスタンプと明示的なオフセットを指定する --schedule を優先してください。名前付きの --schedule-in の値は、実行環境のローカルタイムゾーンを使用します。ユーザーの意図と一致することを確認してください。
tomorrow や monday などの名前付きの later remind --in の値も、実行環境のローカルタイムゾーンで午前 9 時として扱われます。タイムゾーンを確認するか、明示的な Unix タイムスタンプを指定してください。
ユーザーが Slack のリンクやメディアのプレビューを非表示にしたい場合は、message send または message compose で --no-unfurl を使用してください。message send --attach とは併用できません。
通常の message send と message edit の呼び出しでは、リストが自動変換されます。message send --blocks と message edit --blocks は指定された Block Kit ブロックを使用します。一方、message send --attach は最初のコメントをリストに自動変換せずに送信します。自動変換されるリスト内では、CommonMark の [label](URL) リンクはラベル付きリンク要素に変換されないため、Slack の <URL|label> 構文を使用してください。
Slack ネイティブの下書き(message draft list|create|update|delete)は、ユーザーの Slack クライアントに表示される下書きを管理します。create では投稿されません。create と update では、繰り返し指定可能な --attach <path> を使用できます。update では、ファイルは下書きの既存の添付ファイルに追加され、置き換えられることはありません。これらはドキュメント化されていないセッションエンドポイントを使用し、ブラウザー形式の認証(xoxc/xoxd)が必要です。
canvas edit は Slack の公開 canvases.edit API を使用し、呼び出しごとに 1 つの操作のみを適用します。
デフォルトの replace 操作はキャンバス全体を置き換えます。セクションを対象とする挿入、置換、削除では、Slack の Canvas ツールから返されるセクション ID が必要です。一方、rename では --title を指定します。
コンテンツ操作では、--file または --markdown のいずれか 1 つのソースを指定します。
この操作には canvases:write を含む標準トークンが必要です。インポートしたブラウザー認証情報では、単独のキャンバスを作成できますが、編集はできません。
条件に応じたリファレンス
- メッセージ URL、チャンネル、ユーザーのターゲットから選択する場合、または複数のワークスペースを解決する場合にのみ、references/targets.md を読みます。
- 返されたメッセージやキャンバスのメタデータ、解決されたユーザー、またはダウンロード済みおよび失敗した添付ファイルを扱う場合にのみ、references/output.md を読みます。