💬

Slack の admin 用 CLI + Agent Skill で、AI に Slack の管理を任せる

に公開

こんにちは、小笠原みつき(@yamitzky)です。

私は CTO 業の一環として情シス業務も担っており、入退社に伴う Slack のユーザー招待や、アカウント解除などを行っています。また、Enterprise Grid を契約していると、複数ワークスペース連携の依頼なども発生します。

このような、Slack の admin 操作を AI に任せるため、組織管理をするための CLI ツール sladm と、AI エージェントのスキルを OSS で公開しました。

https://github.com/yamitzky/slack-admin-cli

背景・課題

情シス業務として、Slack の組織管理を日常的にやっています。新入社員が入ればユーザーを招待し、退職者が出ればアカウントを無効化し、使われていないチャンネルの整理、アプリのインストール申請承認、月次でのアカウント棚卸しなどもやっています。

これらは定型作業ですが、毎回 Slack の管理コンソールを開いて GUI でポチポチやっていました。

最近は Claude Code に様々な情シス作業を依頼しています。例えば、情シスが管理しているSaaSの稟議申請を自動化するために、freeeを操作するCLI+Skill を作ったりしました。

Slack の admin 操作についても「このユーザーを招待しておいて」「退職者リストに基づいてアカウントを無効化して」といった指示を自然言語で出して、Claude Code が自動でやってくれる世界を作るために、今回の CLI + Skill を作成しました。

既存ツールの状況

Slack 関連の MCP サーバーや CLI は、調べた限りではメッセージの送受信・検索がメインです。Slack 公式の MCP サーバーも、メッセージ送信やチャンネル履歴の取得には対応していますが、ユーザー管理やチャンネル管理といった組織運用の機能は含まれていません。

コミュニティ製のツールも同様で、slackdump はエクスポート用途、slack-cli はメッセージ送信が中心です。Slack の admin.* API をカバーする CLI ツールは、事実上存在しない認識です。

作ったもの: sladm

sladm は Slack の admin.* API と SCIM API をカバーする CLI ツールです。80 以上コマンドを備え、ユーザー管理、チャンネル管理、アプリ管理など 10 の API グループに対応しています。事前準備として、bun のインストールが必要です。

bun install -g sladm-cli
sladm help
# または
bunx sladm-cli help

以前書いた freee CLI の記事と同じアプローチで、CLI としてもAI エージェントのスキルとしても使える構成にしています。

# Agent Skill として登録
npx skills add yamitzky/slack-admin-cli

スキルが有効な場合、エージェントは Slack の管理操作に対して自動的に sladm コマンドを使ってくれます。

できること

※現在アルファ版で、手元の環境で一部のコマンドしか検証できていません。動かないものがあれば教えてください

ユーザーの招待・無効化

新入社員の招待は1コマンドです。ゲスト招待にも対応しています。

# 新しいメンバーを招待
sladm users invite --team-id T024XCDSF --email new-member@example.com \
  --channel-ids C01ABCD2EFG

# シングルチャンネルゲストとして招待
sladm users invite --team-id T024XCDSF --email guest@partner.com \
  --channel-ids C01ABCD2EFG --is-ultra-restricted true

退職者のアカウント無効化も対応しています。SCIM API を使うことで、組織全体でのアカウント無効化が可能です。

# ユーザーを検索して
sladm scim-users list --filter 'email eq "leaving@example.com"'

# アカウントを無効化
sladm scim-users deactivate --id U123456789

チャンネルの検索・整理

# チャンネル検索
sladm conversations search --query "project-"

# アーカイブ
sladm conversations archive --channel-id C01ABCD2EFG

AI エージェントとの連携

これらがすべて CLI コマンドになっているのがポイントです。定型作業が CLI になっていると、AI エージェントが自然に使えます。

たとえば Claude Code に「test-jx@jxpress.net のアカウントを無効化して」と指示すると、エージェントは以下のようなステップを自律的に実行します。

# 1. ユーザーを検索
sladm scim-users list --filter 'email eq "test-jx@jxpress.net"'

# 2. 見つかったユーザーを無効化
sladm scim-users deactivate --id U02T7QBTFGA

「半年以上更新のないチャンネルを探してアーカイブして」のような、複数ステップの作業も指示できます。エージェントが検索結果を見て判断し、アーカイブを実行してくれます。

Bun の機能を使ったトークン管理

sladm は TypeScript + Bun で作っています。

Slack API のトークンは機密情報なので、平文でファイルに保存したくありません。sladm ではトークンを OS のキーチェーン(macOS Keychain / Linux Secret Service / Windows Credential Manager)に保存しています。

これを実現しているのが Bun 組み込みの Bun.secrets API です。

// トークンの保存
await Bun.secrets.set({ service: "sladm", name: profileName, value: token });

// トークンの取得
const token = await Bun.secrets.get({ service: "sladm", name: profileName });

まとめ

sladm は Slack の組織管理を CLI から実行できるツールです。定型的な情シス業務を CLI 化することで、スクリプトによる自動化はもちろん、AI エージェントに作業を任せることも可能になります。

現在はα版で、一部のコマンドしか動作確認ができていません。フィードバックや Issue は大歓迎です。

Discussion