cyrus-setup-slack について
Cyrus 用の Slack アプリを、用意されたマニフェストから作成・インストールする手順を案内するスキルです。ブラウザー自動化または手動設定に対応し、認証情報をエージェントのコンテキストに読み込ませません。
主な機能
- 01マニフェストから Slack アプリを作成
- 02ブラウザー操作または手動設定に対応
- 03環境ファイルに認証情報の項目を追加
- 04認証情報を手動入力する手順を案内
- 05認証情報の入力を確認
活用シーン
- 01Cyrus を Slack ワークスペースに接続
- 02シークレットを露出させずに Slack 認証情報を設定
- 03ブラウザー自動化を使えない環境で Slack アプリを設定
MCP 対応
claude-in-chrome MCP ツールを使い、ユーザーのブラウザーから Slack アプリの設定を操作できます。MCP サーバーの提供については記載されていません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cyrusagents/ cyrus --skill cyrus-setup-slackインストール後、Claude Code で/cyrus-setup-slackを入力して読み込まれたか確認します。
詳細
重要:~/.cyrus/.env または ~/.cyrus/ 内のファイルに対して、Read、Edit、Write ツールを決して使用しないでください。環境変数ファイルを操作する場合は、Bash コマンド(grep、printf >> など)のみを使用してください。シークレットを会話のコンテキストに読み込んではいけません。Web ページからシークレットの値をスクレイピング、抽出、読み取りしてはいけません。ユーザー自身で手動でコピーするよう案内してください。
Slack のセットアップ
事前に作成されたマニフェストから Slack アプリを作成し、Cyrus が Slack チャンネルのメッセージに応答できるようにします。
ステップ 1:既存の設定を確認する
grep -E '^SLACK_BOT_TOKEN=' ~/.cyrus/.env 2>/dev/null
SLACK_BOT_TOKEN がすでに設定されている場合は、ユーザーに次のように伝えてください。
Slack はすでに設定されています。このステップをスキップします。 再設定するには、
~/.cyrus/.envからSLACK_BOT_TOKENとSLACK_SIGNING_SECRETを削除して、再実行してください。
完了に進みます。
ステップ 2:変数を読み取る
ベース URL(setup-endpoint によって設定済み)を読み取ります。
grep '^CYRUS_BASE_URL=' ~/.cyrus/.env | cut -d= -f2-
AGENT_NAME と AGENT_DESCRIPTION も必要です。これらはオーケストレーターのステップ 0 で収集されており、会話のコンテキストから取得できるはずです。
ステップ 3:マニフェスト JSON を作成する
<AGENT_NAME>、<AGENT_DESCRIPTION>、<CYRUS_BASE_URL> を実際の値に置き換えて、マニフェストを作成します。
重要:以下に示すマニフェストテンプレートをそのまま使用してください。 イベント購読パスは必ず /slack-webhook にしてください(/slack/events やその他のパスは使用しないでください)。このパスは、Cyrus のコードベースにある SlackEventTransport によって登録されたルートと一致しています。
注意:このスコープ一覧は、Slack アプリの設定および https://github.com/cyrusagents/cyrus-hosted/blob/main/apps/app/src/lib/slack/constants.ts で定義されているスコープ一覧と同期させる必要があります。ここでスコープを変更する場合は、そちらでも同様の変更を提案し、このマニフェストを使用する稼働中の Slack アプリ設定も更新してください。
{
"display_information": {
"name": "<AGENT_NAME>",
"description": "<AGENT_DESCRIPTION>",
"background_color": "#00240e"
},
"features": {
"bot_user": {
"display_name": "<AGENT_NAME>",
"always_online": true
}
},
"oauth_config": {
"redirect_urls": [
"<CYRUS_BASE_URL>/slack/oauth/callback"
],
"scopes": {
"user": [
"canvases:read",
"canvases:write",
"channels:history",
"chat:write",
"groups:history",
"im:history",
"mpim:history",
"users:read",
"users:read.email",
"reactions:write",
"search:read.public",
"search:read.private",
"search:read.mpim",
"search:read.im",
"search:read.files",
"search:read.users"
],
"bot": [
"groups:read",
"app_mentions:read",
"assistant:write",
"canvases:write",
"channels:history",
"channels:read",
"chat:write",
"chat:write.customize",
"groups:history",
"im:history",
"im:read",
"files:read",
"files:write",
"mpim:history",
"reactions:write",
"search:read.files",
"search:read.public",
"search:read.users",
"users:read",
"users:read.email",
"mpim:read"
]
},
"pkce_enabled": false
},
"settings": {
"event_subscriptions": {
"request_url": "<CYRUS_BASE_URL>/slack-webhook",
"bot_events": [
"app_mention",
"member_joined_channel",
"message.channels",
"message.groups",
"message.mpim",
"message.im"
]
},
"org_deploy_enabled": false,
"socket_mode_enabled": false,
"token_rotation_enabled": false
}
}
ステップ 4:Slack アプリを作成する
すべての方法で「From a manifest」のフローを使用してください。 アプリを「From scratch」で作成してはいけません。
オーケストレーターのルールを参照し、使用するブラウザー自動化モードを判断します。
claude-in-chromeMCP ツールが使用可能な場合 → 方法 A-1(claude-in-chrome)を使用agent-browserがインストールされており、Chrome のデバッグセッションに接続されている場合 → 方法 A-2(agent-browser)を使用- それ以外の場合 → 方法 B(手動)を使用
方法 A-1:claude-in-chrome による自動化
mcp__claude-in-chrome__* ツールを使用して、ユーザーがすでに開いている Chrome ブラウザーを操作します。
- https://api.slack.com/apps に移動します
- Create New App をクリックします
- モーダルで From a manifest を選択します
- ワークスペースを選択します
- Next をクリックします
- JSON タブを選択し、ステップ 3 のマニフェスト(実際の値にすべて置き換えたもの)を貼り付けます
- Next をクリックし、内容を確認して Create をクリックします
作成後、アプリの Basic Information ページが表示されます。認証情報のページのスクリーンショットを撮らないでください。 認証情報の収集については、ステップ 5 に進んでください。
方法 A-2:agent-browser による自動化
agent-browser が Chrome のデバッグセッションに接続されている場合:
4a. Slack アプリ作成ページに移動する
agent-browser navigate "https://api.slack.com/apps"
スクリーンショットを撮り、ページが読み込まれてユーザーがログイン済みであることを確認します。
4b. 「Create New App」をクリックする
agent-browser click "button:text('Create New App')"
4c. モーダルで「From a manifest」を選択する
agent-browser click "button:text('From a manifest')"
4d. ワークスペースを選択する
スクリーンショットを撮ってワークスペースの選択画面を表示します。該当するワークスペースをクリックします。複数表示されている場合は、ユーザーにどれを選ぶか確認します。
agent-browser click "button:text('Next')"
4e. JSON 形式を選択してマニフェストを貼り付ける
まだ選択されていない場合は、JSON タブをクリックします。
agent-browser click "button:text('JSON')"
JavaScript を使ってマニフェストを貼り付けます。
agent-browser eval "var editor = document.querySelector('textarea, [role=\"textbox\"], .ace_editor textarea, .CodeMirror textarea'); if (editor) { var nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype, 'value').set; nativeInputValueSetter.call(editor, JSON.stringify(<MANIFEST_JSON>, null, 2)); editor.dispatchEvent(new Event('input', { bubbles: true })); 'pasted'; } else { 'editor not found'; }"
うまくいかない場合は、次を試してください。
agent-browser click "textarea"
agent-browser keyboard "Control+a"
agent-browser type '<MANIFEST_JSON_STRING>'
スクリーンショットを撮って確認してから、Next をクリックします。
agent-browser click "button:text('Next')"
4f. 確認して作成する
スクリーンショットを撮って概要を確認してから、Create をクリックします。
agent-browser click "button:text('Create')"
作成後、認証情報のページのスクリーンショットを撮ったり、シークレットをスクレイピングしようとしたりしないでください。 ステップ 5 に進んでください。
パス B:手動ガイドによるセットアップ
マニフェストの手順をユーザーに案内します。
Slack アプリを作成する
- https://api.slack.com/apps にアクセスします
- Create New App をクリックします
- モーダルで From a manifest を選択します
- アプリを関連付ける workspace を選択します
- Next をクリックします
- JSON 形式を選択し、次のマニフェストを貼り付けます。
ユーザーがコピーできるよう、値をすべて置き換えたマニフェスト JSON を表示します。
- Next をクリックし、概要を確認してから Create をクリックします
ステップ 5 に進みます。
ステップ 5:アプリをインストールして認証情報を取得する
(どの方法で作成した場合も)アプリをインストールし、認証情報を取得する手順をユーザーに案内します。**エージェントはページからシークレットをスクレイピング、読み取り、抽出してはいけません。**ユーザーが手動でコピーします。
5a. ワークスペースにインストールする
次のようにユーザーに伝えます。
- Slack アプリの設定で、左サイドバーから Install App に移動します
- Install to Workspace をクリックします
- Allow をクリックします
ブラウザー自動化(A-1 または A-2)を使用している場合、エージェントは Install App ページに移動してボタンをクリックできます。ただし、インストールが完了したら停止し、表示されたページのスクリーンショットを撮ってはいけません。
5b. 認証情報のプレースホルダーを追加する
ユーザーが入力できるよう、環境変数ファイルにプレースホルダーの行を追加します。
grep -q '^SLACK_BOT_TOKEN=' ~/.cyrus/.env || echo 'SLACK_BOT_TOKEN=' >> ~/.cyrus/.env
grep -q '^SLACK_SIGNING_SECRET=' ~/.cyrus/.env || echo 'SLACK_SIGNING_SECRET=' >> ~/.cyrus/.env
5c. 環境変数ファイルを編集用に開く
# macOS
code --new-window ~/.cyrus/.env 2>/dev/null || open -a TextEdit ~/.cyrus/.env
# Linux
code --new-window ~/.cyrus/.env 2>/dev/null || xdg-open ~/.cyrus/.env
5d. 認証情報のコピーをユーザーに案内する
次のようにユーザーに伝えます。
~/.cyrus/.envを開きました。2 つの値を貼り付けてください。
Bot User OAuth Token — アプリの OAuth & Permissions ページに移動し、Bot User OAuth Token(
xoxb-で始まります)をコピーして、SLACK_BOT_TOKEN=の後に貼り付けますSigning Secret — アプリの Basic Information ページに移動し、App Credentials までスクロールして、Signing Secret の横にある Show をクリックします。値をコピーし、
SLACK_SIGNING_SECRET=の後に貼り付けます入力が完了したら、ファイルを保存して閉じます。
5e. 待機して確認する
ユーザーが保存したことを確認したら、次を確認します。
grep -c '^SLACK_BOT_TOKEN=.' ~/.cyrus/.env
grep -c '^SLACK_SIGNING_SECRET=.' ~/.cyrus/.env
両方とも 1 を返す必要があります(= の後の . によって値が空でないことを確認します)。いずれかが 0 の場合は、ファイルを確認するようユーザーに依頼します。
完了
✓ マニフェストから Slack アプリを作成し、インストールしました ✓ ボットトークンと署名シークレットを
~/.cyrus/.envに保存しました
注: Cyrus が実際に起動するまでは、イベントサブスクリプションの request_url は Slack の検証チャレンジに失敗します。Cyrus の起動後、アプリの Event Subscriptions ページで URL を再入力して検証を開始するか、Slack が自動的に再試行するのを待ってください。