Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Slack検索・TODO抽出・タスク管理を行うサブエージェント。 複数データソースからタスクを抽出し、優先順位付けを行う。 「Slackを検索」「タスクを抽出」「TODO確認」「メンション確認」等のリクエストで発動。
.claude/skills/minicoohei-slack-task-manager/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-15 | ✗→✓ | ▲ Improved | 25% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 34% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 214% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 66% | 0% |
Slack検索・TODO抽出・タスク管理を専用コンテキストで実行するサブエージェント。
Slackデータとタスク管理をメインエージェントのコンテキストから分離し:
| 機能 | スクリプト | 説明 | |-----|----------|------| | Slack検索 | slack_search.py | BookRAGベースのセマンティック検索 | | TODO抽出 | extract_todos.py | メンションからTODO抽出・ステータス判定 | | タスク抽出 | extract_tasks.py | 複数ソースからタスク抽出 |
tools/slack_search.py)BookRAGに基づく階層的インデックスを活用したセマンティック検索。
| メソッド | 説明 | |---------|------| | get_workspace_overview() | ワークスペース全体の概要 | | find_channels(query) | チャンネル検索 | | get_channel_detail(channel_id) | チャンネル詳細 | | find_related_channels(channel_id) | 関連チャンネル検索 | | find_person(name) | 人物検索 |
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("田中")
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 |
| ステータス | 条件 | |-----------|------| | ✅ 完了 | 対象ユーザーが「完了」等 / 依頼者が「ありがとう」等 | | 🟡 対応中 | 対象ユーザーが「承知」「やります」等 | | 🔴 未対応 | 返信なし |
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 タスク: {ユーザーの指示} 検索クエリ: {検索ワード} 期間: {期間指定} 検索結果のサマリーを返却してください。 """ )
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
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)をセットアップしてください。
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-15 | fail→pass | 11,953 | 3,871 | -68% | 1 | 1 | 0% | 2,124 | 2,646 | +25% | 0 | 0 | — |
case-01 | fail→fail | 6,435 | 12,063 | +87% | 1 | 1 | 0% | 356 | 3,861 | +985% | 0 | 0 | — |
case-02 | fail→fail | 8,993 | 6,202 | -31% | 1 | 1 | 0% | 1,627 | 2,263 | +39% | 0 | 0 | — |
case-03 | fail→fail | 29,748 | 5,735 | -81% | 1 | 1 | 0% | 6,184 | 2,177 | -65% | 0 | 0 | — |
case-04 | fail→pass | 10,604 | 2,238 | -79% | 1 | 1 | 0% | 1,740 | 2,331 | +34% | 0 | 0 | — |
case-05 | fail→pass | 15,709 | 3,253 | -79% | 1 | 1 | 0% | 2,426 | 2,483 | +2% | 0 | 0 | — |
case-06 | fail→pass | 5,031 | 3,586 | -29% | 1 | 1 | 0% | 787 | 2,475 | +214% | 0 | 0 | — |
case-07 | fail→pass | 7,166 | 1,915 | -73% | 1 | 1 | 0% | 1,357 | 2,257 | +66% | 0 | 0 | — |
case-08 | fail→pass | 12,975 | 3,489 | -73% | 1 | 1 | 0% | 2,251 | 2,642 | +17% | 0 | 0 | — |
case-09 | pass→pass | 10,037 | 3,072 | -69% | 1 | 1 | 0% | 1,688 | 2,437 | +44% | 0 | 0 | — |
case-10 | fail→pass | 10,797 | 2,617 | -76% | 1 | 1 | 0% | 1,813 | 2,385 | +32% | 0 | 0 | — |
case-11 | pass→pass | 8,174 | 2,577 | -68% | 1 | 1 | 0% | 1,213 | 2,388 | +97% | 0 | 0 | — |
case-12 | fail→pass | 7,580 | 2,559 | -66% | 1 | 1 | 0% | 1,247 | 2,398 | +92% | 0 | 0 | — |
case-13 | fail→pass | 7,647 | 2,201 | -71% | 1 | 1 | 0% | 1,106 | 2,278 | +106% | 0 | 0 | — |
case-14 | pass→pass | 10,802 | 2,160 | -80% | 1 | 1 | 0% | 1,897 | 2,301 | +21% | 0 | 0 | — |
case-16 | fail→pass | 13,682 | 2,382 | -83% | 1 | 1 | 0% | 2,506 | 2,373 | -5% | 0 | 0 | — |
case-17 | fail→pass | 11,217 | 1,653 | -85% | 1 | 1 | 0% | 1,872 | 2,201 | +18% | 0 | 0 | — |
case-18 | pass→pass | 5,629 | 1,419 | -75% | 1 | 1 | 0% | 923 | 2,153 | +133% | 0 | 0 | — |
case-19 | fail→pass | 9,712 | 1,939 | -80% | 1 | 1 | 0% | 1,711 | 2,252 | +32% | 0 | 0 | — |
case-20 | fail→pass | 10,586 | 9,557 | -10% | 1 | 1 | 0% | 919 | 3,449 | +275% | 0 | 0 | — |
case-21 | pass→fail | 4,740 | 8,315 | +75% | 1 | 1 | 0% | 856 | 2,093 | +145% | 0 | 0 | — |
case-22 | pass→fail | 6,366 | 4,903 | -23% | 1 | 1 | 0% | 1,116 | 2,225 | +99% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 17 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +50 percentage points is the difference between those two pass rates over the 17 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.