Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Slackチャンネルやメッセージをセマンティック検索するスキル。 「Slackで検索して」「チャンネルを探して」「発言を探して」等のリクエストで発動。
.claude/skills/minicoohei-slack-search/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 207% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 42% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 96% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 82% | 0% |
BookRAGに基づく階層的インデックスを活用したSlackセマンティック検索。
pythonimport sys from pathlib import Path # プロジェクトルートの tools/ ディレクトリをパスに追加 sys.path.insert(0, str(Path(__file__).resolve().parents[4] / "tools")) from 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") # 人物検索 persons = search.find_person("清水") # イベント検索 events = search.find_events("DX") # タイムライン検索 timeline = search.get_timeline("2025-12-01", "2025-12-31")
get_workspace_overview)全体の統計情報とカテゴリ構造を取得。
python# 全ワークスペース overview = search.get_workspace_overview() # 特定のワークスペース overview = search.get_workspace_overview("my-workspace")
対応ワークスペース: 設定されたワークスペース(build_book_index.py の WORKSPACES を参照)
find_channels)チャンネル名、トピック、概要からセマンティック検索。
python# 基本検索 results = search.find_channels("展示会") # フィルタ付き検索 results = search.find_channels( query="プロジェクト", workspace="my-workspace", category="project", limit=20 )
チャンネルカテゴリ:
cafe: 個人チャンネル(cafe_)project: プロジェクト(pj_)product: プロダクト開発(product_)sales: 営業(sales_)notify: 通知(notify_)partner: 外部パートナー(_partner)event: イベント(日付パターン)external: 外部連携(ex-, ext-)get_channel_detail)特定チャンネルの詳細情報を取得。
python# フルID指定 detail = search.get_channel_detail("my-workspace/example-channel") # チャンネル名のみでも可 detail = search.get_channel_detail("example-channel")
返却情報:
find_related_channels)グラフ構造に基づいて関連チャンネルを探索。
python# 直接関連 related = search.find_related_channels("example-channel") # 間接関連まで(depth=2) related = search.find_related_channels("example-channel", depth=2)
find_person)発言者やメンションから人物を検索。
pythonresults = search.find_person("清水") # 返却: 名前、エイリアス、参加チャンネル数、チャンネルリスト
find_events)展示会、会議などのイベントを検索。
python# 全イベント events = search.find_events() # キーワード検索 events = search.find_events("DX")
list_channels_by_category)特定カテゴリのチャンネルを一覧。
python# 全ワークスペースのcafeチャンネル cafes = search.list_channels_by_category("cafe") # 特定ワークスペースのprojectチャンネルのみ projects = search.list_channels_by_category("project", workspace="my-workspace")
get_timeline)期間指定でアクティビティを検索。
pythontimeline = search.get_timeline( start_date="2025-12-01", end_date="2025-12-31", workspace="my-workspace" # オプション )
get_output_sources)calendar, gmail, drive, voicememoの統計情報。
pythonsources = search.get_output_sources()
slack-sync/index/book_index.jsonslack-sync/index/schema.mdslack-sync/data/{workspace}/slack-sync/data/summary/{workspace}/slack-sync/data/archive/{workspace}/output/ (calendar, gmail, drive, voicememo)bash# ワークスペース概要 uv run python tools/slack_search.py overview [workspace] # チャンネル検索 uv run python tools/slack_search.py find "クエリ" # チャンネル詳細 uv run python tools/slack_search.py detail "channel_id" # 関連チャンネル uv run python tools/slack_search.py related "channel_id" # 人物検索 uv run python tools/slack_search.py person "名前" # イベント検索 uv run python tools/slack_search.py events [クエリ] # カテゴリ別 uv run python tools/slack_search.py category "カテゴリ名" # タイムライン uv run python tools/slack_search.py timeline "開始日" "終了日"
インデックスはGitHub Actionsで毎日自動更新されます。 手動更新:
bashpython3 data/slack-sync/scripts/build_book_index.py
pythonperson = search.find_person("清水")[0] project_channels = [ ch for ch in person["channels"] if search.get_channel_detail(ch).get("category") == "project" ]
pythonevents = search.find_events("DX") for event in events: detail = search.get_channel_detail(event["channel"]) print(f"{event['name']}: {detail['overview']}")
pythondetail = search.get_channel_detail("example-channel") related = search.find_related_channels("example-channel", depth=2) print(f"関連チャンネル数: {related['total_related']}")
BookRAGに基づく階層的インデックスを活用し、Slackチャンネル・メッセージをセマンティック検索するスキルです。チャンネル検索、人物検索、イベント検索、タイムライン検索に対応。
| エラー | 解決方法 | |--------|---------| | Index file not found | python3 data/slack-sync/scripts/build_book_index.py でインデックスを再構築 | | No results found | クエリのキーワードを変えるか、get_workspace_overview() で利用可能なカテゴリを確認 |
上記「クイックスタート」および「CLIコマンド」セクションを参照。基本例:
bash# チャンネル検索 uv run python tools/slack_search.py find "DX展示会" # 人物検索 uv run python tools/slack_search.py person "清水"
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 7,149 | 6,305 | -12% | 1 | 1 | 0% | 1,141 | 2,233 | +96% | 0 | 0 | — |
case-02 | fail→fail | 4,477 | 6,159 | +38% | 1 | 1 | 0% | 616 | 2,155 | +250% | 0 | 0 | — |
case-03 | fail→fail | 6,936 | 6,036 | -13% | 1 | 1 | 0% | 447 | 2,154 | +382% | 0 | 0 | — |
case-09 | fail→pass | 4,241 | 1,707 | -60% | 1 | 1 | 0% | 712 | 2,187 | +207% | 0 | 0 | — |
case-04 | fail→pass | 11,203 | 2,636 | -76% | 1 | 1 | 0% | 1,647 | 2,344 | +42% | 0 | 0 | — |
case-05 | fail→pass | 7,023 | 1,436 | -80% | 1 | 1 | 0% | 1,049 | 2,058 | +96% | 0 | 0 | — |
case-06 | pass→pass | 9,865 | 1,682 | -83% | 1 | 1 | 0% | 1,508 | 2,157 | +43% | 0 | 0 | — |
case-07 | pass→pass | 9,085 | 1,647 | -82% | 1 | 1 | 0% | 1,432 | 2,129 | +49% | 0 | 0 | — |
case-08 | fail→pass | 16,286 | 3,789 | -77% | 1 | 1 | 0% | 2,691 | 2,501 | -7% | 0 | 0 | — |
case-10 | fail→pass | 7,056 | 2,269 | -68% | 1 | 1 | 0% | 1,231 | 2,242 | +82% | 0 | 0 | — |
case-11 | fail→pass | 12,915 | 2,360 | -82% | 1 | 1 | 0% | 2,127 | 2,310 | +9% | 0 | 0 | — |
case-12 | fail→pass | 8,284 | 1,756 | -79% | 1 | 1 | 0% | 1,380 | 2,141 | +55% | 0 | 0 | — |
case-13 | fail→pass | 14,920 | 2,004 | -87% | 1 | 1 | 0% | 2,724 | 2,214 | -19% | 0 | 0 | — |
case-14 | fail→pass | 12,583 | 2,014 | -84% | 1 | 1 | 0% | 2,236 | 2,259 | +1% | 0 | 0 | — |
case-15 | fail→pass | 12,096 | 2,173 | -82% | 1 | 1 | 0% | 1,967 | 2,224 | +13% | 0 | 0 | — |
case-16 | fail→pass | 9,851 | 1,830 | -81% | 1 | 1 | 0% | 1,714 | 2,158 | +26% | 0 | 0 | — |
case-17 | pass→pass | 9,946 | 2,197 | -78% | 1 | 1 | 0% | 1,542 | 2,228 | +44% | 0 | 0 | — |
case-18 | fail→pass | 5,059 | 1,650 | -67% | 1 | 1 | 0% | 842 | 2,127 | +153% | 0 | 0 | — |
case-19 | fail→pass | 11,226 | 1,670 | -85% | 1 | 1 | 0% | 1,818 | 2,108 | +16% | 0 | 0 | — |
case-20 | fail→fail | 11,120 | 14,590 | +31% | 1 | 1 | 0% | 2,210 | 4,766 | +116% | 0 | 0 | — |
case-21 | fail→fail | 13,681 | 11,641 | -15% | 1 | 1 | 0% | 2,495 | 4,112 | +65% | 0 | 0 | — |
case-22 | fail→fail | 9,221 | 8,360 | -9% | 1 | 1 | 0% | 1,610 | 3,439 | +114% | 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 19 counted toward the lift figure. The other 3 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 +59 percentage points is the difference between those two pass rates over the 19 comparable cases.
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.