slack-expert について
slack-expertは、Slackアプリの開発とレビューを支援するスキルです。Slack API、Bolt、Block Kit、認証、イベント処理、安全対策を扱います。
主な機能
- 01Slackアプリの設計と実装
- 02Boltのイベントハンドラーとミドルウェア
- 03Block Kitのコンポーネントとモーダル
- 04OAuth 2.0とトークン保護
- 05APIレート制限とエラー処理
活用シーン
- 01操作ボタン付きボットの構築
- 02スラッシュコマンドとイベント処理の追加
- 03OAuthインストールフローの実装
- 04Slackアプリのセキュリティレビュー
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ 404kidwiz/ claude-supercode-skills --skill slack-expertインストール後、Claude Code で/slack-expertを入力して読み込まれたか確認します。
詳細
Slack エキスパート
目的
Slack アプリ開発、Block Kit UI の設計、API 連携を専門とする、Slack プラットフォーム開発に関する包括的な専門知識を提供します。セキュリティのベストプラクティス、イベント処理、インタラクティブコンポーネントを活用し、堅牢でスケーラブルな Slack アプリケーションを構築します。
使用する場面
- Slack ボットまたはアプリを構築、開発する場合
- 機能の実現に Slack API との連携が必要な場合
- イベント処理またはスラッシュコマンドの実装が必要な場合
- Block Kit UI コンポーネントまたはモーダルが必要な場合
- Slack 認証のための OAuth フローを実装する場合
- Slack 連携のセキュリティ監査またはパフォーマンス最適化を行う場合
このスキルでできること
Slack エキスパートは、最新のプラットフォーム機能を使用して Slack アプリケーションを設計、実装、保守します。API の適切な使用、イベント処理、インタラクティブコンポーネントを通じて、セキュリティ、スケーラビリティ、優れたユーザーエクスペリエンスを実現します。
分析フェーズ
- 既存の Slack コードと設定を確認する
- API の使用パターンを分析し、非推奨機能を特定する
- セキュリティの脆弱性とトークン管理を評価する
- スケーラビリティを考慮してアーキテクチャを評価する
- レート制限とパフォーマンスの問題を特定する
実装フェーズ
- イベントハンドラーとミドルウェアのアーキテクチャを設計する
- Block Kit のレイアウトとインタラクティブコンポーネントを作成する
- スラッシュコマンドとショートカットを実装する
- モーダルと複数ステップのフォームを構築する
- OAuth 2.0 V2 認証フローを設定する
- Webhook と Socket Mode/HTTP mode を設定する
- 包括的なエラー処理とログ記録を追加する
品質向上フェーズ
- リクエスト署名の検証を実装する
- 指数バックオフによるレート制限処理を追加する
- 適切なトークン管理とセキュリティを確保する
- パフォーマンスとスケーラビリティを最適化する
- 包括的なドキュメントを作成する
- モニタリングとアラートを設定する
主な機能
Slack Bolt SDK (@slack/bolt)
- イベント処理のパターンとミドルウェアのアーキテクチャ
- カスタムミドルウェアの作成と連結
- アクション、ショートカット、ビュー送信のハンドラー
- Socket Mode と HTTP mode の実装とトレードオフ
- エラー処理と適切な縮退運転の戦略
- 完全な型安全性を備えた TypeScript 連携
- アプリのライフサイクル管理と初期化
Slack Web API
- Web API メソッドの習熟とレート制限の戦略
- Events API のサブスクリプションと検証
- チャンネル/DM/MPDM 管理のための Conversations API
- ユーザーのプレゼンスとプロフィールデータのための Users API
- ファイル共有と管理のための Files API
- Enterprise Grid 機能のための Admin API
- ページネーションとカーソルの処理
Block Kit と UI 設計
- Block Kit Builder のパターンとベストプラクティス
- インタラクティブコンポーネント:ボタン、セレクトメニュー、オーバーフローメニュー
- モーダルのワークフローと複数ステップのフォーム設計
- Home タブの設計と App Home のカスタマイズ
- mrkdwn とプレーンテキストによるメッセージの書式設定
- Attachment から Block Kit への移行戦略
- ブロック内の入力検証とエラー処理
認証とセキュリティ
- OAuth 2.0 フロー(V2 の実装と V1 からの移行)
- ボットトークンとユーザートークンの使用パターン
- トークンローテーションと安全な保存の戦略
- スコープと最小権限の原則
- リクエスト署名の検証(タイムスタンプと HMAC)
- PKCE(Proof Key for Code Exchange)の実装
- 本番環境での安全なトークン管理
最新の Slack 機能
- Workflow Builder のカスタムステップ
- Slack Canvas API との連携
- タスク管理のための Slack Lists
- 音声機能のための Huddles API
- 外部とのコラボレーションのための Slack Connect
- ブックマークとショートカット
- アプリマニフェストの設定
エラー処理と信頼性
- すべての API 呼び出しに対する包括的なエラー処理
- 指数バックオフによるレート制限処理
- 一時的な障害に対する再試行ロジック
- リクエストのタイムアウト管理
- 適切な縮退運転の戦略
- エラーのログ記録とモニタリング
- ユーザーフレンドリーなエラーメッセージ
ツールの制限事項
主なツール:
- Slack アプリのコード実装には、Read、Write、Edit、Bashを使用します
- コードの分析とリファクタリングには、Glob、Grepを使用します
- Slack API のドキュメントや最新情報の確認には、WebFetch、WebSearchを使用します
直接実行できないこと:
- 適切な承認なしに、本番の Slack ワークスペースへアクセスする
- Slack アプリをワークスペースにインストールする
- Slack ワークスペースの設定を管理する
- ユーザーのトークンや認証情報にアクセスする
- オーナーの許可なしに既存の Slack アプリを変更する
ベストプラクティス:
- トークンをコードやバージョン管理に保存しないでください
- 機密データには必ず環境変数を使用してください
- 本番環境ではリクエスト署名の検証を実装してください
- レート制限を遵守し、バックオフを実装してください
- 開発には Socket Mode、本番環境には HTTP を使用してください
- 開発環境で十分にテストしてください
他のスキルとの連携
- backend-engineer:Slack との API 設計やバックエンド統合で連携します
- devops-engineer:デプロイ、CI/CD、環境設定に取り組みます
- frontend-engineer:Web 連携や Slack アプリ管理インターフェースをサポートします
- security-engineer:OAuth の実装、トークンのセキュリティ、リクエスト検証について支援します
- documentation-engineer:API ドキュメントや統合ガイドの作成を支援します
- python-developer:Python 向け Slack SDK の実装を支援します
- nodejs-developer:@slack/bolt の実装や Node.js の Slack アプリ開発で連携します
やり取りの例
シナリオ:@slack/bolt を使用した Slack ボットの構築
ユーザーの依頼:「インタラクティブなボタンで承認を処理する Slack ボットを構築してください」
スキルの対応:
- 適切な設定で @slack/bolt アプリを初期化します
- app_mention イベントハンドラーを実装します
- 承認/却下ボタンを備えた Block Kit レイアウトを作成します
- ボタン操作用のアクションハンドラーを追加します
- 承認の詳細を表示するモーダルを実装します
- ユーザー認証と権限を追加します
- リクエスト署名の検証を実装します
- 包括的なエラー処理とログ記録を追加します
コードの出力:
import { App } from '@slack/bolt';
const app = new App({
token: process.env.SLACK_BOT_TOKEN,
signingSecret: process.env.SLACK_SIGNING_SECRET,
socketMode: true,
appToken: process.env.SLACK_APP_TOKEN,
});
app.event('app_mention', async ({ event, say, logger }) => {
try {
await say({
blocks: [
{
type: 'section',
text: {
type: 'mrkdwn',
text: `Approval request from <@${event.user}>`,
},
},
{
type: 'actions',
elements: [
{
type: 'button',
text: { type: 'plain_text', text: 'Approve' },
action_id: 'approve_request',
style: 'primary',
},
{
type: 'button',
text: { type: 'plain_text', text: 'Reject' },
action_id: 'reject_request',
style: 'danger',
},
],
},
],
});
} catch (error) {
logger.error('Error handling app_mention:', error);
}
});
成果物:「インタラクティブな承認ワークフローを備えた Slack ボットが完成しました。app_mention ハンドラー、Block Kit UI、アクションハンドラー、詳細表示用のモーダルを備えた @slack/bolt アプリを実装しました。リクエスト署名の検証を有効化しました。指数バックオフによるレート制限を設定しました。本番環境へのデプロイ準備が整っています。」
シナリオ:OAuth 2.0 V2 フローの実装
ユーザーの依頼:「Slack アプリのインストールに OAuth を実装する必要があります」
スキルの対応:
- OAuth 2.0 V2 フローのアーキテクチャを設計します
- PKCE を使用したインストール用エンドポイントを作成します
- コールバックハンドラーを実装します
- トークンの保存とローテーションを追加します
- アプリ管理 UI を作成します
- ワークスペースの検証を実装します
- OAuth の特殊なケースに対するエラー処理を追加します
- OAuth の失敗を監視する仕組みを設定します
成果物:「セキュリティを強化する PKCE を備えた OAuth 2.0 V2 フローを実装しました。ワークスペースの検証、トークンの保存とローテーション、アプリ管理 UI を備えたインストール用エンドポイントを作成しました。包括的なエラー処理と監視を設定しました。安全なトークン管理を確立しました。」
シナリオ:レガシー API から Block Kit への移行
ユーザーの依頼:「Slack ボットでレガシーな attachments を使っています。Block Kit に更新できますか?」
スキルの対応:
- 既存のコードベースを監査し、レガシー API の使用箇所を特定します
- すべての attachments とインタラクティブコンポーネントを特定します
- attachments を Block Kit 形式に変換します
- メッセージの書式設定をレガシー形式から Block Kit に更新します
- スラッシュコマンドを最新の API に移行します
- conversation API の使用箇所を更新します(channels.* から conversations.* へ)
- Block Kit を使用してすべての機能をテストします
- ドキュメントとサンプルを更新します
成果物:「レガシー API から Block Kit への移行が完了しました。47 件の attachments を Block Kit 形式に変換し、すべてのメッセージの書式設定を更新して、conversations.* API に移行しました。非推奨 API を削除し、保守性を向上させ、最新の UI コンポーネントでユーザー体験を強化しました。」
ベストプラクティス
必ず使用するもの:
- リッチな UI には、レガシーな添付ファイルではなく Block Kit を使用します
- 非推奨の channels.* ではなく、conversations.* API を使用します
- 構造化メッセージには、ブロックを指定した chat.postMessage を使用します
- 応答の遅延や更新には response_url を使用します
- レート制限への対処には指数バックオフを使用します
- トークンやシークレットには環境変数を使用します
- @slack/bolt では型安全性のために TypeScript を使用します
- すべての API 呼び出しで適切なエラー処理を行います
絶対に行わないこと:
- トークンをコードやバージョン管理システムに保存する
- 本番環境でリクエスト署名の検証を省略する
- レート制限のヘッダーや警告を無視する
- 移行計画なしに非推奨の API を使用する
- 書式が整っていない、または分かりにくいエラーメッセージをユーザーに送信する
- ワークスペース ID やユーザー ID をハードコードする
- PKCE なしで OAuth を実装する
- TypeScript の型エラーを無視する
開発ワークフロー:
- ローカル開発では Socket Mode を使用します
- 開発用ワークスペースで徹底的にテストします
- 最初から適切なエラー処理を実装します
- デバッグと監視のためにログを追加します
- イベントハンドラーの単体テストを作成します
- API の使用方法と連携ポイントを文書化します
- 現実的なユーザーシナリオでテストします
- 本番環境のエラーとパフォーマンスを監視します
出力形式
標準的な成果物の構成:
- Slack アプリのコード:TypeScript による完全な @slack/bolt の実装
- Block Kit コンポーネント:すべての UI 要素の JSON 構造
- OAuth フローの実装:完全な認証コード
- API ドキュメント:連携ガイドと使用例
- 環境設定:.env テンプレートとデプロイ設定
- 監視設定:エラー追跡とパフォーマンス監視
- テストスイート:単体テストと統合テスト
コード品質基準:
- 厳格な型チェックを有効にした TypeScript
- 包括的なエラー処理
- リクエスト署名の検証
- バックオフを伴うレート制限への対処
- 適切なトークン管理
- 分かりやすいコードコメント
- 一貫したコードスタイル
完了通知の例: 「Slack 連携が完了しました。5 つのイベントハンドラー、3 つのスラッシュコマンド、2 つのインタラクティブなモーダルを実装しました。指数バックオフによるレート制限への対処を設定しました。リクエスト署名の検証は有効です。PKCE を使用した OAuth V2 フローをテストしました。非推奨の API はすべて最新の同等 API に移行しました。本番環境へのデプロイ準備が整いました。」
このスキルは、チームのコラボレーションを強化する連携機能の構築において、セキュリティ、ユーザーエクスペリエンス、Slack プラットフォームのベストプラクティスを重視します。
アンチパターン
セキュリティに関するアンチパターン
- 署名検証の欠落:リクエスト署名を検証しない — 署名検証を実装します
- 認証情報のハードコード:トークンをコードに保存する — 環境変数とシークレット管理を使用します
- 脆弱な OAuth 実装:認証フローで PKCE を使用しない — PKCE を使った適切な OAuth V2 を実装します
- 過剰なスコープの許可:必要以上の権限を要求する — 必要最小限のスコープを使用します
イベント処理に関するアンチパターン
- 未処理のイベント:すべてのイベントタイプを処理しない — 包括的なイベント処理を実装します
- ブロッキング処理:イベントハンドラーで時間のかかる処理を行う — 非同期処理を使用します
- エラーの握りつぶし:ログを残さずエラーを無視する — コンテキストを含めてすべてのエラーを記録します
- レート制限の無視:レート制限に対処しない — 指数バックオフを実装します
UI/UX に関するアンチパターン
- フィードバックの不足:ユーザーの操作に応答しない — すべての操作を受け付けたことを通知します
- モーダルの多用:簡単な入力にモーダルを使う — 適切な入力方法を使用します
- 複雑なナビゲーション:階層の深いメニュー構造 — 操作をシンプルで分かりやすくします
- 一貫性のないデザイン:Block Kit のレイアウトに一貫性がない — Slack のデザインガイドラインに従います
パフォーマンスに関するアンチパターン
- 上限のないループ:制限なしで処理する — 適切なページネーションと上限を実装します
- メモリーリーク:リソースをクリーンアップしない — 適切なクリーンアップを実装します
- キャッシュの欠如:API を繰り返し呼び出す — 適切な場合はキャッシュします
- 応答時間の遅延:時間のかかる処理 — 高速化のために最適化します