All skills
vercel-labs avatar

/slack

@8c15ff9 official
by Vercel Labsvercel-labs/agent-browser43k stars
2,928

Interact with Slack workspaces using browser automation. Use when the user needs to check unread channels, navigate Slack, send messages, extract data, find information, search conversations, or automate any Slack task. Triggers include "check my Slack", "what channels have unreads", "send a message to", "search Slack for", "extract from Slack", "find who said", or any task requiring programmatic Slack interaction.

  • 3 files
  • 20.5 KB
  • Updated 3 weeks ago
  • GitHub

Use this Skill: https://skilld.dev/gh/vercel-labs/agent-browser/slack

This session only. Nothing lands on disk.

referencesslack-tasks.md

≈2.2k tokens on demand. Your agent reads this file only when SKILL.md points to it.

Common Slack Tasks & Patterns

Reference guide for common automations and data extraction patterns when interacting with Slack.

Task: Check All Unread Messages

Goal

Determine which channels and DMs have unread messages.

Steps

  1. Connect to Slack

    agent-browser connect 9222
  2. Check Activity Tab

    • Take snapshot: agent-browser snapshot -i
    • Look for Activity tab ref (usually @e14)
    • Click: agent-browser click @e14
    • Wait: agent-browser wait 1000
    • If you see "You've read all the unreads", you have no unread messages
    • Screenshot: agent-browser screenshot activity.png
  3. Check DMs

    • Click DMs tab ref (usually @e13)
    • Look for "Unreads" toggle/badge
    • Count visible conversations with indicators
  4. Check Channels

    • Look for "More unreads" button (usually in sidebar)
    • Click it to expand list of channels with unreads
    • Screenshot the expanded view
    • Parse channel names from snapshot
  5. Summary

    • Activity + DMs + Channels = complete unread picture

Evidence Capture

  • Screenshot of Activity tab
  • Screenshot of DMs
  • Screenshot of expanded unreads sidebar

Task: Find All Channels in Workspace

Goal

Get a complete list of all channels you have access to.

Steps

  1. Navigate to Channels section

    agent-browser connect 9222
    agent-browser snapshot -i
  2. Look for "Channels" treeitem

    • This is usually a collapsed section header
    • Click to expand if collapsed
    • Screenshot: agent-browser screenshot all-channels.png
  3. Scroll through sidebar

    # If the list is long, scroll within the sidebar
    agent-browser scroll down 500 --selector ".p-sidebar"
    agent-browser screenshot channels-page-2.png
  4. Parse snapshot for channel list

    agent-browser snapshot --json > channels.json
    # Search JSON for treeitem elements with level=2 under "Channels" section

Evidence

  • JSON snapshot with all channel refs
  • Screenshots of channel list
  • Count of total channels

Task: Search for Messages Containing Keywords

Goal

Find all messages/threads mentioning specific terms.

Steps

  1. Open search

    agent-browser snapshot -i
    # Find Search button ref (usually @e5)
    agent-browser click @e5
    agent-browser wait 500
  2. Enter search term

    # Identify search input ref from snapshot
    agent-browser fill @e_search_input "your keyword"
    agent-browser press Enter
    # Match the submitted query so a repeated search cannot reuse the old route.
    agent-browser wait --fn "location.pathname.includes('/search') && new URL(location.href).searchParams.get('q') === 'your keyword'"
  3. Capture results

    agent-browser screenshot search-results.png
    agent-browser snapshot -i > search-snapshot.txt
  4. Parse results

    • Look for result items in snapshot
    • Extract message content, sender, channel, timestamp
    • Follow links to view full context

Filters

Slack search supports filters:

  • in:channel-name - Search in specific channel
  • from:@user - Messages from specific user
  • before:2026-02-25 - Messages before date
  • after:2026-02-20 - Messages after date
  • has:file - Messages with files
  • has:emoji - Messages with reactions

Example search: "bug report" in:engineering from:@alice after:2026-02-20


Task: Monitor a Specific Channel for Activity

Goal

Watch a channel and capture new messages/engagement.

Steps

  1. Navigate to channel

    agent-browser connect 9222
    agent-browser snapshot -i
    # Find channel ref from sidebar
    agent-browser click @e_channel_ref
    # Replace `engineering` with the clicked channel's name, or wait for its known URL:
    agent-browser wait --fn "document.querySelector('[data-qa=\"channel_header\"]')?.innerText.includes('engineering')"
  2. Check channel info

    • Screenshot channel details: agent-browser screenshot channel-header.png
    • Look for member count, description, topic
  3. View messages

    # Jump to recent/unread
    agent-browser press j  # Jump to unread in Slack
    agent-browser wait 500
    agent-browser screenshot recent-messages.png
  4. Scroll to see more

    agent-browser scroll down 500
    agent-browser screenshot more-messages.png
  5. Check threads

    • Click on messages with thread indicators
    • View replies in thread view
    • Screenshot: agent-browser screenshot thread.png

Evidence

  • Channel info screenshot
  • Message history screenshots
  • Thread examples

Task: Extract User Information from a Conversation

Goal

Find who said what, when, and in what context.

Steps

  1. Navigate to relevant channel or DM

    agent-browser click @e_conversation_ref
    agent-browser wait 1000
  2. Take snapshot with context

    agent-browser snapshot --json > conversation.json
  3. Find message blocks

    • In JSON, look for document/listitem elements
    • These contain: user name (button), timestamp (link), message text, reactions
  4. Extract structured data

    • User: Found in button element with username
    • Time: Found in link with timestamp
    • Content: Text content of message
    • Reactions: Buttons showing emoji counts
  5. Screenshot key messages

    agent-browser screenshot important-message.png
    agent-browser screenshot --annotate annotated-message.png

Task: Track Reactions to a Message

Goal

See who reacted to a message and with what emoji.

Steps

  1. Find message with reactions

    agent-browser snapshot -i
    # Look for "N reaction(s)" buttons in messages
  2. Click reaction button to expand

    agent-browser click @e_reaction_button
    agent-browser wait 500
  3. Capture reaction details

    agent-browser screenshot reactions.png
    # You'll see emoji, count, and list of users who reacted
  4. Extract data

    • Emoji used
    • Number of people who reacted
    • User names (if visible in popup)

Task: Find and Review Pinned Messages

Goal

See messages that have been pinned in a channel.

Steps

  1. Open a channel

    agent-browser click @e_channel_ref
    agent-browser wait 1000
    agent-browser snapshot -i
  2. Click Pins tab

    • In channel view, look for "Pins" tab ref (usually near Messages, Files tabs)
    • Click it: agent-browser click @e_pins_tab
    • Wait: agent-browser wait 500
  3. View pinned messages

    agent-browser screenshot pins.png
    agent-browser snapshot -i > pins-snapshot.txt
  4. Review each pin

    • Click pin to see context
    • Note who pinned it, when, and why
    • Screenshot: agent-browser screenshot pin-detail.png

Pattern: Extract Timestamp from Link

In Slack snapshot, message timestamps appear as links. Example:

- link "Feb 25th at 10:26:22 AM" [ref=e151]
  - /url: https://vercel.slack.com/archives/C0A5RTN0856/p1772036782543189

The URL contains the timestamp in the fragment (p1772036782543189). This is a Slack message ID that uniquely identifies the message.


Pattern: Understanding Channel/Thread Structure

- treeitem "channel-name" [ref=e94] [level=2]
  - group: (contains channel metadata or sub-items)
  • level=1: Section headers (External connections, Starred, Channels, etc.)
  • level=2: Individual channels/items within sections
  • level=3+: Nested sub-items (rare in sidebar)

Common Ref Patterns (Session-Dependent)

These refs vary per session, but follow patterns:

Element Typical Ref Range How to Find
Home tab e10-e20 snapshot -i | grep "Home"
DMs tab e10-e20 snapshot -i | grep "DMs"
Activity tab e10-e20 snapshot -i | grep "Activity"
Search e5-e10 snapshot -i | grep "Search"
More unreads e20-e30 snapshot -i | grep "More unreads"
Channel refs e30+ snapshot -i | grep "treeitem"

Always take a fresh snapshot to find current refs for the current session.


Debugging: Element Not Found

If you can't find an element:

  1. Check it's visible

    # Is the element on screen or off-screen?
    agent-browser screenshot current-state.png
    # Compare screenshot to what you expected
  2. Try expanding/scrolling

    # Sidebar might need scrolling
    agent-browser scroll down 300 --selector ".p-sidebar"
    agent-browser snapshot -i
  3. Check current URL

    agent-browser get url
    # Verify you're in the right section
  4. Wait for page to load

    agent-browser wait --fn "document.querySelector('[role=main]')"
    agent-browser snapshot -i

Source: SKILL.md on GitHub

No third-party reports yet.

Signed by skilld at 8c15ff9. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 3 hours ago.

Activeupdated 3 weeks ago
What it can do
Runs commands
All 2 allowed tools
Bash(agent-browser:*)Bash(npx agent-browser:*)
  • slack
  • browser-automation
  • messaging
  • data-extraction
  • automation
  • web-scraping
  • agent-browser

README badge

README badge for vercel-labs/agent-browser/slack

Automates Slack workspace tasks using browser automation, including checking unread channels, navigating to specific channels, searching conversations, and extracting message data. Use this skill when you need to interact with Slack programmatically without API access — for example, to list all unread channels, find who said something in a specific thread, or capture channel state as a screenshot.

Generated from the current SKILL.md.

Does this skill use the Slack API or browser automation?
It uses browser automation via agent-browser, not the Slack API. No OAuth, webhooks, or bot tokens are required.
Can I automate tasks across multiple Slack workspaces?
No. You interact only with your own workspace in the current browser session.
What happens if Slack rate-limits my interactions?
Slack may rate-limit rapid interactions. The skill recommends adding delays (e.g., `sleep 1`) between commands to avoid this.
Do I need to keep Slack open in a browser already?
You can connect to an existing Slack session (faster) with `agent-browser connect 9222`, or open Slack fresh with `agent-browser open https://app.slack.com`.
Can this skill extract structured data like channel lists or message counts?
Yes. Use `agent-browser snapshot --json` to get machine-readable accessibility tree output, then parse it for channel names, message content, user names, and timestamps.

Generated from the current SKILL.md. These answers refresh after source changes.