Slack/Task Manager サブエージェント
Slack検索・TODO抽出・タスク管理を専用コンテキストで実行するサブエージェント。
目的
Slackデータとタスク管理をメインエージェントのコンテキストから分離し:
- 大量のSlackメッセージ検索を効率化
- 複数データソースからのタスク抽出を統合
- 検索結果のサマリーのみを返却
機能一覧
| 機能 | スクリプト | 説明 |
|---|---|---|
| Slack検索 | slack_search.py | BookRAGベースのセマンティック検索 |
| TODO抽出 | extract_todos.py | メンションからTODO抽出・ステータス判定 |
| タスク抽出 | extract_tasks.py | 複数ソースからタスク抽出 |
1. Slack検索 (tools/slack_search.py)
BookRAGに基づく階層的インデックスを活用したセマンティック検索。
機能
| メソッド | 説明 |
|---|---|
get_workspace_overview() | ワークスペース全体の概要 |
find_channels(query) | チャンネル検索 |
get_channel_detail(channel_id) | チャンネル詳細 |
find_related_channels(channel_id) | 関連チャンネル検索 |
find_person(name) | 人物検索 |
使用方法(Python)
pythonfrom tools.slack_search import SlackSearch search = SlackSearch() # ワークスペース概要 overview = search.get_workspace_overview() # チャンネル検索 results = search.find_channels("DX展示会") # チャンネル詳細 detail = search.get_channel_detail("my-workspace/example-channel") # 関連チャンネル related = search.find_related_channels("my-workspace/example-channel") # 人物検索 person = search.find_person("清水")
検索例
python# プロジェクト関連のチャンネルを探す results = search.find_channels("AIチュートリアル") # 特定の人物が関わるチャンネル person = search.find_person("田中")
2. TODO抽出 (skills/slack-todo-extractor/scripts/extract_todos.py)
Slackのメンションからタスクを抽出し、ステータス判定を行う。
使用方法
bash# 基本(キーワードベース) python skills/slack-todo-extractor/scripts/extract_todos.py \ --users "YourName,your-username" \ --period "2026-01-06:2026-01-08" # LLMベース(高精度、要GEMINI_API_KEY) python skills/slack-todo-extractor/scripts/extract_todos.py \ --users "YourName,your-username" \ --period "1/6:8" \ --use-llm # JSON出力 python skills/slack-todo-extractor/scripts/extract_todos.py \ -u "YourName" -p "1/6:8" --use-llm -o json
パラメータ
| パラメータ | 必須 | 説明 | 例 |
|---|---|---|---|
--users, -u | ✅ | 対象ユーザー名(カンマ区切り) | YourName, your-username |
--period, -p | ✅ | 検索期間 | 2026-01-06:2026-01-08 or 1/6:8 |
--workspace, -w | ❌ | ワークスペース | my-workspace, my-workspace-2 |
--use-llm | ❌ | LLM(Gemini)で判定 | - |
--output, -o | ❌ | 出力形式 | markdown or json |
ステータス判定
| ステータス | 条件 |
|---|---|
| ✅ 完了 | 対象ユーザーが「完了」等 / 依頼者が「ありがとう」等 |
| 🟡 対応中 | 対象ユーザーが「承知」「やります」等 |
| 🔴 未対応 | 返信なし |
3. タスク抽出 (tools/extract_tasks.py)
複数のデータソースから自動的にタスクを抽出・優先順位付け。
データソース
| ソース | 説明 |
|---|---|
| Git | 変更ファイル、未コミット作業 |
| Activity Logger | 最近のアクティビティ |
| SpecStory | 仕掛かりタスク |
| Slack-sync | 依頼事項、メンション |
| Output | カレンダー、Gmail、ボイスメモ |
| Notion | データベース/ページ |
使用方法
bash# 全ソースからタスク抽出 uv run python tools/extract_tasks.py # 特定ソースのみ uv run python tools/extract_tasks.py --sources git,slack # HowToDo生成付き uv run python tools/extract_tasks.py --with-howtodo # HTML出力 uv run python tools/extract_tasks.py --format html --output tasks.html
出力形式
yamltasks: - id: task_001 source: slack title: "EASソリューションの調査" priority: high status: pending due_date: "2026-01-10" assignee: "YourName" channel: "my-workspace/team-core"
サブエージェント呼び出しパターン
メインエージェントは以下のパターンでこのサブエージェントを呼び出す:
pythonTask( subagent_type="generalPurpose", model="fast", description="Slack search", prompt=""" このスキルを読んで実行してください: skills/slack-task-manager/SKILL.md タスク: {ユーザーの指示} 検索クエリ: {検索ワード} 期間: {期間指定} 検索結果のサマリーを返却してください。 """ )
返却フォーマット
Slack検索結果
yamlstatus: success query: "DX展示会" results: - channel: "my-workspace/example-event-2026" description: "2026年DX展示会の準備チャンネル" relevance: 0.95 recent_activity: "2026-01-25" - channel: "my-workspace-2/example-project" description: "DXプロジェクト全般" relevance: 0.82 total_matches: 5
TODO抽出結果
yamlstatus: success period: "2026-01-06 ~ 2026-01-08" summary: total: 12 pending: 3 in_progress: 5 completed: 4 high_priority: - title: "EASソリューションの調査" from: "Sota Moriyama" channel: "my-workspace/team-core" status: pending
前提条件
slack-sync/のSlack同期が完了していること- スレッド返信が必要な場合は事前に同期
bash# Slack同期 python data/slack-sync/scripts/fetch_slack.py --workspace my-workspace # スレッド返信も取得 python data/slack-sync/scripts/fetch_slack.py --workspace my-workspace --refresh-threads
依存関係
txtpython-dotenv>=1.0.0 google-generativeai>=0.3.0 # LLMモード使用時
環境変数
bash# LLMモード使用時 GEMINI_API_KEY=your_api_key
Notion 連携は OAuth 統一です(環境変数は不要)。事前に /setup-notion を実行し、ncli login と Notion 公式 Hosted MCP(https://mcp.notion.com/mcp)をセットアップしてください。
ユースケース
- チャンネル検索: プロジェクト関連のチャンネルを探す
- TODO確認: 自分宛のメンションからタスクを抽出
- タスク統合: 複数ソースからタスクを一覧化
- 優先順位付け: 期限・重要度でタスクを整理


