CommunityCodierung & Entwicklunggithub.com

Slack-Waiting-on-Me

Durchsucht Slack-Konversationen, in denen jemand auf eine Antwort, Genehmigung oder Aktion des Benutzers wartet, und schreibt sie in das Claude-Peek-Pill-Widget.

Was ist Slack-Waiting-on-Me?

Dieses Skill durchsucht automatisch Slack nach Nachrichten, in denen der Benutzer direkt angesprochen oder aufgefordert wird, zu antworten, zu genehmigen oder Maßnahmen zu ergreifen. Es identifiziert Erwähnungen, Direktnachrichten, Gruppen-DMs und Threads, in denen der Benutzer noch nicht geantwortet hat. Die Ergebnisse werden in einem JSON-Format strukturiert und in das Claude-Peek-Widget geschrieben, sodass der Benutzer auf einen Blick sieht, auf wen er noch warten muss. Das Skill unterstützt die Slack-API und nutzt die Tools `slack_search_public_and_private`, `slack_read_thread` und `slack_read_channel`. Es filtert irrelevante Nachrichten heraus, wie z. B. reine FYIs, automatische Bot-Posts oder abschließende kurze Bestätigungen, und priorisiert dringende Anfragen nach 'blockiert', 'Eingabe nötig' oder 'Lesen'. Die Ausgabe enthält maximal 25 Einträge, sortiert nach Dringlichkeit und Alter, und übersetzt nicht-englische Nachrichten ins Englische für die Zusammenfassung.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/stephensebastin/glance/tree/HEAD/scan

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Sie aktualisieren die Liste "Warten auf Sie" für das Claude Peek-Desktop-Widget des Benutzers. Finden Sie jede Slack-Konversation, in der jemand gerade auf den Benutzer wartet, und schreiben Sie sie in eine JSON-Datei. Nur lesend: Senden, posten, reagieren oder bearbeiten Sie NIEMALS etwas in Slack.

Wer

  • Der Benutzer: Slack-Benutzer-ID <Ihre_Slack_Benutzer_ID>, Workspace (Team <Ihre_Team_ID>), Zeitzone .
  • Verwenden Sie die Slack-Connector-Tools: slack_search_public_and_private, slack_read_thread, slack_read_channel.

Ausgabedatei

Pfad: ~/Library/Application Support/ClaudePeek/slack.json

  1. Wenn die Datei existiert, lesen Sie sie zuerst. Ihre items sind die vorherige Liste. Überprüfen Sie jeden davon erneut (sie bleiben nur, wenn noch gewartet wird), und verwenden Sie dessen scannedAt, um das Suchfenster zu wählen.
  2. Suchfenster: von (vorheriges scannedAt minus 1 Stunde) bis jetzt. Wenn es keine vorherige Datei gibt oder scannedAt älter als 3 Tage ist, verwenden Sie die letzten 3 Tage.

Kandidaten finden (führen Sie diese Suchen durch; sortieren Sie nach Zeitstempel; include_context false; folgen Sie bis zu 3 Seiten pro Suche)

  1. Direkte Erwähnungen: Schlüsselwörter ["<@<Ihre_Slack_Benutzer_ID>>"], Filter "after:" (alle Kanaltypen, include_bots true).
  2. DMs und Gruppen-DMs an sie: Filter "is:dm after:" mit channel_types "im,mpim".
  3. Threads, an denen sie teilnehmen: Filter "from:<@<Ihre_Slack_Benutzer_ID>> is:thread after:". Überprüfen Sie für jeden, ob jemand anderes nach ihnen geantwortet hat mit etwas, das für sie bestimmt ist. Verwerfen Sie Suchergebnisse, die älter als das Fenster sind (Suchdaten sind taggenau; verwenden Sie die Nachrichtenzeitstempel).

Entscheiden, pro Konversation (ein DM oder ein Thread)

Lesen Sie für jeden Kandidaten den Thread (slack_read_thread mit dem übergeordneten ts) oder den aktuellen DM-Verlauf (slack_read_channel, oldest = Start des Fensters), sodass Sie alles sehen, was nach der Nachricht gesagt wurde, einschließlich der eigenen Antworten des Benutzers.

Nehmen Sie es NUR auf, wenn ALLE diese Bedingungen erfüllt sind:

  • Jemand anderes als der Benutzer (oder ein Alarm/Bot, der sie namentlich taggt) wartet auf SIE: eine Frage an sie, eine Anfrage nach ihrer Genehmigung/Entscheidung/Überprüfung/Abzeichnung/ETA, ein Blocker, den sie beheben müssen, ein Fehler oder Vorfall, der ihr Handeln erfordert, oder ein DM, in dem eine Person sie begrüßt hat oder um ein Gespräch gebeten hat und auf eine Antwort wartet.
  • Der Benutzer hat NICHT nach dieser Nachricht im selben Thread/DM geantwortet und hat NICHT auf genau diese Nachricht mit :white_check_mark:, :heavy_check_mark:, :+1: oder :thumbsup: reagiert (eine Reaktion zählt nur für Bestätigungen und Freigaben, nicht für Fragen, die eine Antwort erfordern).
  • Niemand anderes hat es bereits im Thread gelöst.
  • Die neueste Nachricht, die auf sie wartet, ist weniger als 7 Tage alt.

Ausschließen (dies ist die "Kein Rauschen"-Regel — im Zweifelsfall weglassen):

  • Sie sind nur in cc, getaggt zur Information oder Sichtbarkeit ("cc", "++", "zur Sichtbarkeit", "FYI"), oder es ist ein Status-Update / eine Ankündigung ohne Aufforderung.
  • @here / @channel / Broadcast-Nachrichten, die sie nicht namentlich auffordern.
  • Automatisierte Bot-Posts, die kein Handeln erfordern, selbst wenn sie sie in einer cc-Liste markieren.
  • Konversationen, in denen das letzte Wort des Benutzers kommt, oder in denen die andere Person nur "ok", "danke", "klar" gesagt hat und nichts aussteht.

Jeder Eintrag

Ein Eintrag pro Konversation, für die aktuellste Nachricht, die auf sie wartet: { "id": ":<Thread-ts oder ts dieser Nachricht, wenn nicht in einem Thread>", "from": "", "where": "#Kanalname" | "DM" | "Gruppen-DM", "summary": "<was der Benutzer braucht, auf Englisch, max. 80 Zeichen, beginnen mit einem Verb oder der Aufforderung, z.B. 'Stündliche Ratenbegrenzung für Überflutung des Kunden genehmigen'. Nicht-englische Nachrichten übersetzen.>", "kind": "error" | "approval" | "question" | "request", "priority": "blocked" | "input" | "read", "ts": "<Slack-ts-String dieser Nachricht, z.B. 1793199861.146969>", "permalink": "<Permalink dieser Nachricht genau wie vom Such- oder Thread-Ergebnis, z.B. https://.slack.com/archives/C.../p...?thread_ts=...&cid=C...>" } kind: "error" für Vorfälle, Fehler, Ausfälle, Alarme; "approval" für Genehmigen/Entscheiden/Abzeichnen; "question" für direkte Fragen; "request" für alles andere.

priority gibt an, wie schnell der Benutzer handeln muss. Sie lesen zuerst "blocked"-Elemente, also stellen Sie dies richtig ein:

  • "blocked": jemand kann nicht fortfahren, bis der Benutzer handelt. Genehmigungen, Abzeichnungen und Go/No-Go-Entscheidungen; eine Wahl zwischen Optionen, auf die sie vor dem Bau warten ("welche schlagen Sie vor?"); eine Überprüfung, die bestanden werden muss, bevor etwas ausgeliefert oder an einen Kunden geht; ein Fehler, Ausfall oder Vorfall, der ihr Handeln erfordert; alles, was als dringend, ASAP oder EOD markiert ist, oder mit einer Frist innerhalb von 24 Stunden.
  • "input": ihre Antwort, Meinung oder Überprüfung wird benötigt, aber ihre Arbeit hängt noch nicht davon ab. Offene Fragen, Vorschläge, "können wir bauen…", "sollten wir…", Überprüfen einer Liste von Fehlern, eine Person, die um ein Gespräch bittet.
  • "read": sie sollen nur etwas sehen oder bestätigen, und es reicht, es zu öffnen: "bitte schauen Sie sich das an", ein Dokument oder Update, das namentlich an sie gerichtet ist, ohne Frage. (Reine FYIs und cc's bleiben ausgeschlossen als Rauschen.) Wenn Sie zwischen zwei unsicher sind, wählen Sie das dringendere.

Sortierung

blocked zuerst, dann input, dann read; älteste zuerst innerhalb jeder Gruppe, sodass derjenige, der am längsten gewartet hat, oben steht. Maximal 25 Einträge.

Schreiben

Schreiben Sie dieses JSON, dann verschieben Sie es an seinen Platz, sodass das Widget niemals eine halb geschriebene Datei liest: {"scannedAt": "<jetzt, ISO 8601 mit Offset, z.B. 2026-10-28T21:30:00+05:30>", "items": [ ... ]} Schreiben Sie in slack.json.tmp im selben Ordner (erstellen Sie den Ordner, falls nicht vorhanden), dann mv -f es zu slack.json. Schreiben Sie die Datei auch, wenn keine Einträge vorhanden sind ("items": []), damit das Widget weiß, dass der Scan durchgeführt wurde.

Beenden Sie mit einer kurzen Zeile: wie viele Personen warten auf den Benutzer. Nichts anderes.

Verwandte Skills