AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Slack Monitor

skill-frankledo-claude-skills-slack-monitor · by FrankLedo

Scan Slack for unanswered DMs, @mentions, and replies to your threads since the last scan. Drafts replies and asks permission before sending each one.

No reviews yet
0 installs
42 views
0.0% view→install

Install

$ agentstack add skill-frankledo-claude-skills-slack-monitor

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-frankledo-claude-skills-slack-monitor)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
3mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Slack Monitor? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Slack Monitor Skill

Scans Slack for messages that need your attention since the last scan, drafts replies, and asks your approval before sending anything. State file I/O uses scripts/state.js (Node.js built-ins only) for atomic reads and writes; Slack communication uses MCP integrations.

Skill Directory

The skill's base directory is provided by Claude Code in the Base directory for this skill: header when the skill loads. Use that path directly as SKILL_SCRIPTS_DIR.

SKILL.md           — core workflow (this file)
README.md          — user-facing documentation
agents/
  monitor-prompt.md — isolated monitor agent prompt
workflow/          — on-demand workflow details:
  SETUP.md         — first-run setup wizard
  GUARDRAILS.md    — safety limits and rules
  HANDLE.md        — message handling + learning
  REVIEW.md        — review modes + formatting
  DM-REVIEW.md     — DM review reply processing
  FORMATS.md       — state file schemas
templates/         — default files for first run

Token optimization: Only this file (SKILL.md) is loaded on every cycle. The workflow/ files are Read on demand — only when the specific feature is needed (e.g., HANDLE.md only when actionable messages are found). On idle cycles with no new messages, none of the workflow files are read.

Configuration

All configuration lives in ${CLAUDE_PLUGIN_DATA}/CLAUDE.md (YAML frontmatter). Read the frontmatter only (not the body) at the start of each cycle.

---
userId: UXXXXXXXXXX
workspaceDomain: myteam.slack.com
channels:
groups:
autoReply: true
autoReplyConfidence: 90
draftMode: false
scanOnly: false
reviewMode: remote-control
interval: 15
activeInterval: 1
offhoursInterval:
timezone: America/New_York
startHour: 7
endHour: 16
days: 1-5
maxAutoReply: 5
maxDmNotify: 10
maxSends: 15
maxQueue: 25
---

Required: userId, workspaceDomain

scanOnly: true disables all outbound messages during the monitor cycle — no auto-replies, no DMs, no drafts. Items are queued to pending_review.json only. Process them with /slack-monitor review. Combine with --allowedTools (see README) for the strongest injection defense: even a successful injection cannot send messages if the send tools are not available in the session.

reviewMode options:

  • remote-control (default) — queue items non-blocking; user

processes with /slack-monitor review (works locally or via /remote-control)

  • direct — blocking inline review at the terminal each cycle
  • slack (legacy) — DM yourself in Slack; unreliable because

Slack does not notify you of your own messages

Setup

The setup wizard (and migration check) runs when ${CLAUDE_PLUGIN_DATA}/CLAUDE.md does not exist, or when the user passes setup as an argument: /slack-monitor setup.

When triggered, Read $SKILL_SCRIPTS_DIR/workflow/SETUP.md and follow the wizard.

State Directory

All persistent state lives at ${CLAUDE_PLUGIN_DATA}/. This path is provided by the Claude plugin framework (cross-platform).

  • CLAUDE.md — config (frontmatter) + knowledge (body)
  • last_scan — ISO 8601 UTC timestamp
  • pending_review.json — messages awaiting review
  • search_cache.json — thread read cache
  • saved_messages.md — log of sent replies
  • people/ — per-person profiles

For file format details, Read $SKILL_SCRIPTS_DIR/workflow/FORMATS.md when needed.

Argument Dispatch

Parse $ARGUMENTS before doing anything else:

| Argument | Action | |----------|--------| | setup | Read workflow/SETUP.md and run wizard | | review | Process pending review queue (see below) | | stop | Cancel scheduled cron, confirm to user | | (none) | Run monitor cycle (see below) |

Review Queue (review argument)

Processes all items in pending_review.json interactively. Works with /remote-control or directly at the terminal.

Remote-control detection: Check whether the session context contains a Base directory for this skill: ... remote-control ... header. If yes, note it in the output so the user knows responses will be routed via remote-control.

  1. Run:

``bash node "$SKILL_SCRIPTS_DIR/scripts/state.js" pending-list \ --data "$CLAUDE_PLUGIN_DATA" `` Parse the JSON output. If the array is empty, report "No pending items." and stop.

  1. Read $SKILL_SCRIPTS_DIR/workflow/REVIEW.md for formatting rules.
  1. For each item in the queue (oldest first):

a. Display the message context: ``` [N of M] From: {from} · {channel} · {time} > {messagetext} {if threadcontext: Thread: > {thread_context}}

  1. Concise ({confidence}%) {if recommended: ★}

> {concise draft}

  1. Detailed ({confidence}%) {if recommended: ★}

> {detailed draft}

  1. Casual ({confidence}%) {if recommended: ★}

> {casual draft} ```

b. Use AskUserQuestion with choices:

  • 1 — Send concise
  • 2 — Send detailed
  • 3 — Send casual
  • skip — Don't reply
  • custom — Type a custom reply

c. Execute the choice (per REVIEW.md formatting/threading rules). Remove the item from the queue: ``bash node "$SKILL_SCRIPTS_DIR/scripts/state.js" pending-remove "" \ --data "$CLAUDE_PLUGIN_DATA" ` Append to saved_messages.md`.

  1. After all items, report: N sent, N skipped, queue now empty.

Monitor Cycle (no-arg invocation)

  1. In parallel, Read:
  • ${CLAUDE_PLUGIN_DATA}/CLAUDE.md — parse YAML frontmatter only.

If missing, run setup (see above).

  • ${CLAUDE_PLUGIN_DATA}/last_scan — ISO 8601 timestamp.

If missing, default to 15 minutes ago.

  1. Compute current_time (current UTC ISO 8601 timestamp).
  1. Read $SKILL_SCRIPTS_DIR/agents/monitor-prompt.md.
  1. Resolve timezone: if the timezone config field is empty or missing,

run: ``bash node "$SKILL_SCRIPTS_DIR/scripts/detect-timezone.js" ` Use the output (e.g. America/Los_Angeles`) as the resolved timezone. Otherwise use the configured value as-is.

  1. Dispatch Agent with model: haiku and the monitor prompt.

Pass the following as part of the prompt text:

  • SKILL_SCRIPTS_DIR=
  • CLAUDE_PLUGIN_DATA=
  • All config values from CLAUDE.md frontmatter (with timezone

replaced by the resolved value from step 4)

  • last_scan=
  • current_time=
  1. Receive the MONITOR_SUMMARY block from the agent.

State writes (last_scan, search_cache.json) are handled by the monitor agent (see agents/monitor-prompt.md Step 5). Run: ``bash node "$SKILL_SCRIPTS_DIR/scripts/state.js" checkpoint-clear \ --data "$CLAUDE_PLUGIN_DATA" `` (Clears the checkpoint in the parent context where plugin data dir permissions are established.)

  1. Schedule next scan using CronList, CronDelete, CronCreate:
  • Compute local_hour and local_dow from current_time using

the resolved timezone from step 4.

  • Determine desired schedule:
  • Outside working hours (local_hour >= endHour or

local_hour

  • If pending_queue_depth > 0: append

→ Run /slack-monitor review to process.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.