Community程式設計與開發github.com

slack-waiting-on-me

掃描 Slack 尋找正在等待使用者回覆、批准或採取行動的對話,並將其寫入 Claude Peek 元件。

slack-waiting-on-me 是什麼?

此技能會自動掃描 Slack 工作區,尋找正在等待使用者回覆、批准或採取行動的對話,並將結果寫入 Claude Peek 桌面元件的 JSON 檔案。它支援所有 Slack 對話類型,包括公開頻道、私人頻道、直接訊息和群組訊息,並能正確處理執行緒中的互動。此技能僅供讀取,絕不會在 Slack 中發送、張貼或編輯任何內容。它會根據使用者上一次掃描時間來設定搜尋視窗(最多 3 天),並透過關鍵字提及、直接訊息和執行緒參與來尋找候選項目。每個項目會包含詳細資訊,如來源頻道、等待者姓名、等待類型(錯誤、批准、問題、請求)和優先級(阻塞、輸入、閱讀),並按優先級和時間排序,最多顯示 25 個項目。此技能對於需要快速掌握待辦事項的開發者和管理者特別有用,能有效減少上下文切換,確保重要事項不會被遺漏。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/stephensebastin/glance/tree/HEAD/scan

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

您正在為使用者的 Claude Peek 桌面小工具更新「等待您回覆」清單。找出 Slack 中目前正在等待使用者的每個對話,並將其寫入 JSON 檔案。僅供讀取:絕不在 Slack 中發送、張貼、回覆或編輯任何內容。

對象

  • 使用者:Slack 使用者 ID <YOUR_SLACK_USER_ID>,工作區 (團隊 <YOUR_TEAM_ID>),時區 。
  • 使用 Slack 連接器工具:slack_search_public_and_private、slack_read_thread、slack_read_channel。

輸出檔案

路徑:~/Library/Application Support/ClaudePeek/slack.json

  1. 如果檔案已存在,請先讀取它。其 items 為先前的清單。重新檢查每個項目(僅在仍然等待時才保留),並使用其 scannedAt 來選擇搜尋視窗。
  2. 搜尋視窗:從(上一次 scannedAt 減 1 小時)到現在。如果沒有先前的檔案,或 scannedAt 已超過 3 天,則使用最近 3 天。

尋找候選項目(執行以下搜尋;按時間戳記排序;include_context false;每個搜尋最多跟進 3 頁)

  1. 直接提及:關鍵字 ["<@<YOUR_SLACK_USER_ID>>"],篩選條件 "after:"(所有頻道類型,include_bots true)。
  2. 寄給他們的 DM 和群組 DM:篩選條件 "is:dm after:",channel_types "im,mpim"。
  3. 他們參與的執行緒:篩選條件 "from:<@<YOUR_SLACK_USER_ID>> is:thread after:"。對於每個執行緒,檢查是否有其他人之後回覆了需要他們處理的內容。 捨棄超出視窗的搜尋結果(搜尋日期為天級精度;使用訊息時間戳記)。

決定,每個對話(一個 DM 或一個執行緒)

對於每個候選項目,讀取執行緒(使用 slack_read_thread 和父 ts)或最近的 DM 歷史(slack_read_channel,最舊 = 視窗起始點),以便看到該訊息之後的所有對話,包括使用者自己的回覆。

僅在所有條件都成立時才包含:

  • 使用者以外的人(或透過名稱標記使用者的警示/機器人)正在等待他們:一個問題、對他們的批准/決定/審查/簽核/ETA 請求、一個他們必須解決的阻礙、一個需要他們處理的錯誤或事件,或者一個有人打招呼或要求交談且正在等待回覆的 DM。
  • 使用者在同一執行緒/DM 中尚未回覆該訊息,且未對該確切訊息使用 :white_check_mark:、:heavy_check_mark:、:+1: 或 :thumbsup: 反應(反應僅計入確認和批准,不計入需要回答的問題)。
  • 執行緒中沒有其他人已經解決它。
  • 等待使用者的最新訊息少於 7 天。

排除(這是「無噪音」規則—有疑問時,請排除):

  • 他們僅被副本(cc)、標記為僅供參考或知曉(「cc」、「++」、「for visibility」、「fyi」),或者是無要求的狀態更新/公告。
  • @here / @channel / 不具名詢問他們的廣播訊息。
  • 不需要他們操作的自動機器人貼文,即使它們在副本清單中標記了他們。
  • 對話中最後一句話是使用者的,或者對方僅回覆「ok」、「thanks」、「sure」且沒有待辦事項。

每個項目

每個對話一個項目,針對等待使用者的最新訊息: { "id": "<channel_id>:<thread_ts 或該訊息的 ts(如果不在執行緒中)>", "from": "<等待者的名字>", "where": "#channel-name" | "DM" | "Group DM", "summary": "<使用者需要做什麼,以英文表示,最多 80 個字元,以動詞或要求開頭,例如 'Approve per-minute rate limit for flooding customer'。翻譯非英文訊息。>", "kind": "error" | "approval" | "question" | "request", "priority": "blocked" | "input" | "read", "ts": "<該訊息的 Slack ts 字串,例如 1793199861.146969>", "permalink": "<該訊息的永久連結,與搜尋或執行緒結果相同,例如 https://.slack.com/archives/C.../p...?thread_ts=...&cid=C...>" } kind:"error" 用於事件、故障、中斷、警示;"approval" 用於批准/決定/簽核;"question" 用於直接問題;"request" 用於其他所有情況。

priority 是使用者必須採取行動的緊迫性。他們會先閱讀「blocked」項目,所以請正確設定:

  • "blocked":如果使用者不採取行動,有人將無法繼續。批准、簽核和繼續/停止的決定;在他們選擇之前正在等待的選項(「您建議哪一個?」);必須通過才能發布或提供給客戶的審查;需要他們操作的錯誤、中斷或事件;任何標記為緊急、ASAP 或 EOD 的內容,或 24 小時內有截止日期的內容。
  • "input":需要他們的答案、意見或審查,但他們的工作尚未因此受阻。開放性問題、提案、「我們可以建立…嗎」、「我們應該…嗎」、檢查錯誤清單、要求交談的人。
  • "read":他們只想讓使用者查看或確認某事,打開即可:「請看一下」、一份以他們名字提及且沒有問題的文件或更新。(純粹的僅供參考和副本仍因噪音而排除。) 當在兩者之間猶豫時,選擇更緊迫的那一個。

排序:blocked 優先,然後是 input,最後是 read;每個優先級內按時間排序,最舊的在上方,以確保等待最久的人在最上面。最多 25 個項目。

寫入

寫入此 JSON,然後將其移動到位,以便小工具永遠不會讀取半寫入的檔案: {"scannedAt": "<現在時間,ISO 8601 含時區偏移,例如 2026-10-28T21:30:00+05:30>", "items": [ ... ]} 寫入相同資料夾中的 slack.json.tmp(如果資料夾不存在則建立),然後使用 mv -f 將其移動到 slack.json。即使沒有項目("items": [])也要寫入檔案,以便小工具知道掃描已執行。

以一行結尾:有多少人正在等待使用者。無其他內容。

相關技能