Slackのスタンプを押すだけでAIがコードベースを調査して回答してくれる仕組みを作った
はじめに
「この画面の"駅から近い"って、何キロ以内のことですか?」
こういった質問が、ビジネス職のメンバーからSlackで飛んでくることはありませんか?
数分で答えられる質問でも、別の業務に集中しているときに割り込まれるのは地味に大変です。一方で、ビジネス職の方々も「こんなことで手を止めさせて申し訳ない」と気を遣いながら質問していると思います。
この双方の心理的コストを解消するために、Slackでスタンプを押すだけでAIがリポジトリを調査して回答してくれる仕組みを作りました。
デモ
実際の動作はこんな感じです。


- ビジネス職の方がSlackで質問を投稿
- 誰かが
:oshiete_claude:スタンプを押す - 約2〜3分後、スレッドにAIからの回答が投稿される
回答は以下の2部構成になっています:
- ビジネス職向け: 技術用語を避けた分かりやすい説明
- エンジニア向け: ファイルパスと行番号付きの技術詳細(ファクトチェック用)
上の例では「駅から近い」の定義について、LOAD_DISTANCE_TO_STATION_LIMIT = 1000(メートル単位)というコード上の定数まで特定して回答しています。
アーキテクチャ
全体構成はこのようになっています。
Slack ──(スタンプ検知)──> n8n ──(workflow_dispatch)──> GitHub Actions(Claude Code Action) ──> (Webhook)──> Slack スレッドに返信
各コンポーネントの役割:
| コンポーネント | 役割 |
|---|---|
| Slack | 質問の受付と回答の表示 |
| n8n | スタンプ検知 → スレッド内容取得 → GitHub Actions起動 |
| GitHub Actions | Claude Code Actionの実行環境 |
| Claude Code Action | リポジトリのコードを読んで調査・回答を生成 |
実装の詳細
1. n8n側:スタンプ検知 → GitHub Actions起動
n8nでは以下のフローを構築しています:
-
Slack Trigger:
reaction_addedイベントを監視し、:oshiete_claude:スタンプが押されたことを検知 - スレッド内容の取得: Slack APIで該当スレッドの全メッセージを取得し、JSON形式に整形
-
GitHub Actions起動:
workflow_dispatchイベントでGitHub Actionsを起動
GitHub Actionsに渡すパラメータは3つ:
| パラメータ | 内容 |
|---|---|
thread_content |
スレッドのやり取り(JSON形式) |
channel_id |
SlackチャンネルID |
thread_ts |
スレッドのタイムスタンプ |
2. GitHub Actions側:Claude Code Actionで調査
プロンプトの設計は、この仕組みの肝です。以下のポイントを意識しました。
調査ステップの明確化:
prompt: |
## 調査の進め方
### ステップ1: 質問内容の理解
- スレッドのやり取りを読んで、質問の本質を把握
- 技術的な質問か、仕様・ビジネスロジックの質問かを判断
### ステップ2: コードベースの調査
- Grep/Glob ツールで関連ファイルを検索
- Read ツールでコードの詳細を確認
- 必要に応じて複数のファイルを横断的に調査
### ステップ3: 回答の作成
スタンプを押したビジネス職向けとエンジニア職むけで説明を分ける:
## 出力形式
:mag: *調査結果*
:speech_balloon: *ご質問への回答*
[ビジネス職向けの分かりやすい回答]
---
:wrench: *技術詳細(エンジニア向け)*
*関連ファイル:*
• `app/controllers/xxx_controller.rb:123` - 〇〇の処理
---
3. Slack投稿:スレッドに返信
- name: 'Post Response to Slack Thread'
run: |
MESSAGE=$(cat slack_response.txt | jq -Rs .)
curl -sS -X POST \
-H "Content-Type: application/json" \
-d "{\"channel\": \"${CHANNEL_ID}\", \"thread_ts\": \"${THREAD_TS}\", \"text\": ${MESSAGE}}" \
"${SLACK_WEBHOOK_URL}"
Claude Code Actionが生成した slack_response.txt の内容を、Slack Webhookで元のスレッドに返信として投稿します。
その他Claude Code Action活用事例
この「教えてClaudeスタンプ」以外にも、Claude Code Actionを様々なシーンで活用しています。
| ワークフロー | トリガー | 用途 |
|---|---|---|
| ビジネス質問対応 | Slackスタンプ (:oshiete_claude:) |
ビジネス職からの質問にコードベースを調査して回答 |
| 実装 | Issueラベル (実装して) |
Issue仕様に基づいてブランチ作成・実装・PR作成 |
| 仕様設計 | Issueラベル (仕様考えて) |
要件分析・技術設計・影響範囲調査 |
| 週次活動サマリー | 手動 / 定期 | マージ済みPRをサービス別に分類して振り返りレポート生成 |
それぞれGitHubのIssueやPRにラベルを付けるだけでトリガーできるので、エンジニアの日常ワークフローに自然に組み込めているのがポイントです。
特にSlackでくる簡単な開発依頼はローカルで行わずにGithub Actions上で完結するのが体験がいいです。
導入して分かったこと
良かった点
- ビジネス職の自己解決率が上がった: 「ちょっとした仕様確認」レベルの質問は、AIの回答だけで解決するケースが増えた
- エンジニアの割り込みが減った: 集中して開発に取り組める時間が増えた
- 回答品質が意外と高い: ファイルパスや行番号まで特定してくれるので、ファクトチェックも楽
- ナレッジの属人化防止: 特定のエンジニアしか知らない仕様も、コードから引き出せる
注意点・改善余地
- 回答に2〜3分かかる: GitHub Actionsの起動時間 + Claude Code Actionの調査時間で、即座には返ってこない
- コードに書かれていないことは答えられない: ビジネス上の意思決定の背景など、コードに反映されていない情報には対応できない
コスト感
Claude Code Actionの実行コストについて参考値を載せておきます。
- 1回あたりの調査: Vertex AI経由のClaude Opus 4.5で、おおよそ$0.5〜$2.0程度(調査の深さによる)
- GitHub Actionsの実行時間: 3〜5分程度(うちClaude Code Actionの調査が大半)
- 月間利用頻度: 週に数回程度の利用なので、月額でも数ドル程度
まとめ
Slackのスタンプひとつで、AIがリポジトリを調査して回答してくれる仕組みを紹介しました。
ビジネス職がClaude Codeを持っていない組織にとっては便利な仕組みだと思います。
同じような課題を抱えている方の参考になれば幸いです。
Discussion