slack
SKILL.md
Slack Automation
Interact with Slack workspaces to check messages, extract data, and automate common tasks.
Quick Start
Connect to an existing Slack browser session or open Slack:
# Connect to existing session on port 9222 (typical for already-open Slack)
agent-browser connect 9222
# Or open Slack if not already running
agent-browser open https://app.slack.com
Then take a snapshot to see what's available:
agent-browser snapshot -i
Core Workflow
- Connect/Navigate: Open or connect to Slack
- Snapshot: Get interactive elements with refs (
@e1,@e2, etc.) - Navigate: Click tabs, expand sections, or navigate to specific channels
- Extract/Interact: Read data or perform actions
- Screenshot: Capture evidence of findings
# Example: Check unread channels
agent-browser connect 9222
agent-browser snapshot -i
# Look for "More unreads" button
agent-browser click @e21 # Ref for "More unreads" button
agent-browser screenshot slack-unreads.png
Common Tasks
Checking Unread Messages
# Connect to Slack
agent-browser connect 9222
# Take snapshot to locate unreads button
agent-browser snapshot -i
# Look for:
# - "More unreads" button (usually near top of sidebar)
# - "Unreads" toggle in Activity tab (shows unread count)
# - Channel names with badges/bold text indicating unreads
# Navigate to Activity tab to see all unreads in one view
agent-browser click @e14 # Activity tab (ref may vary)
agent-browser wait 1000
agent-browser screenshot activity-unreads.png
# Or check DMs tab
agent-browser click @e13 # DMs tab
agent-browser screenshot dms.png
# Or expand "More unreads" in sidebar
agent-browser click @e21 # More unreads button
agent-browser wait 500
agent-browser screenshot expanded-unreads.png
Navigating to a Channel
# Search for channel in sidebar or by name
agent-browser snapshot -i
# Look for channel name in the list (e.g., "engineering", "product-design")
# Click on the channel treeitem ref
agent-browser click @e94 # Example: engineering channel ref
agent-browser wait --load networkidle
agent-browser screenshot channel.png
Finding Messages/Threads
# Use Slack search
agent-browser snapshot -i
agent-browser click @e5 # Search button (typical ref)
agent-browser fill @e_search "keyword"
agent-browser press Enter
agent-browser wait --load networkidle
agent-browser screenshot search-results.png
Extracting Channel Information
# Get list of all visible channels
agent-browser snapshot --json > slack-snapshot.json
# Parse for channel names and metadata
# Look for treeitem elements with level=2 (sub-channels under sections)
Checking Channel Details
# Open a channel
agent-browser click @e_channel_ref
agent-browser wait 1000
# Get channel info (members, description, etc.)
agent-browser snapshot -i
agent-browser screenshot channel-details.png
# Scroll through messages
agent-browser scroll down 500
agent-browser screenshot channel-messages.png
Taking Notes/Capturing State
When you need to document findings from Slack:
# Take annotated screenshot (shows element numbers)
agent-browser screenshot --annotate slack-state.png
# Take full-page screenshot
agent-browser screenshot --full slack-full.png
# Get current URL for reference
agent-browser get url
# Get page title
agent-browser get title
Sidebar Structure
Understanding Slack's sidebar helps you navigate efficiently:
- Threads
- Huddles
- Drafts & sent
- Directories
- [Section Headers - External connections, Starred, Channels, etc.]
- [Channels listed as treeitems]
- Direct Messages
- [DMs listed]
- Apps
- [App shortcuts]
- [More unreads] button (toggles unread channels list)
Key refs to look for:
@e12- Home tab (usually)@e13- DMs tab@e14- Activity tab@e5- Search button@e21- More unreads button (varies by session)
Tabs in Slack
After clicking on a channel, you'll see tabs:
- Messages - Channel conversation
- Files - Shared files
- Pins - Pinned messages
- Add canvas - Collaborative canvas
- Other tabs depending on workspace setup
Click tab refs to switch views and get different information.
Extracting Data from Slack
Get Text Content
# Get a message or element's text
agent-browser get text @e_message_ref
Parse Accessibility Tree
# Full snapshot as JSON for programmatic parsing
agent-browser snapshot --json > output.json
# Look for:
# - Channel names (name field in treeitem)
# - Message content (in listitem/document elements)
# - User names (button elements with user info)
# - Timestamps (link elements with time info)
Count Unreads
# After expanding unreads section:
agent-browser snapshot -i | grep -c "treeitem"
# Each treeitem with a channel name in the unreads section is one unread
Best Practices
- Connect to existing sessions: Use
agent-browser connect 9222if Slack is already open. This is faster than opening a new browser. - Take snapshots before clicking: Always
snapshot -ito identify refs before clicking buttons. - Re-snapshot after navigation: After navigating to a new channel or section, take a fresh snapshot to find new refs.
- Use JSON snapshots for parsing: When you need to extract structured data, use
snapshot --jsonfor machine-readable output. - Pace interactions: Add
sleep 1between rapid interactions to let the UI update. - Check accessibility tree: The accessibility tree shows what screen readers (and your automation) can see. If an element isn't in the snapshot, it may be hidden or require scrolling.
- Scroll in sidebar: Use
agent-browser scroll down 300 --selector ".p-sidebar"to scroll within the Slack sidebar if channel list is long.
Limitations
- Cannot access Slack API: This uses browser automation, not the Slack API. No OAuth, webhooks, or bot tokens needed.
- Session-specific: Screenshots and snapshots are tied to the current browser session.
- Rate limiting: Slack may rate-limit rapid interactions. Add delays between commands if needed.
- Workspace-specific: You interact with your own workspace -- no cross-workspace automation.
Debugging
Check console for errors
agent-browser console
agent-browser errors
View raw HTML of an element
# Snapshot shows the accessibility tree. If an element isn't there,
# it may not be interactive (e.g., div instead of button)
# Use snapshot -i -C to include cursor-interactive divs
agent-browser snapshot -i -C
Get current page state
agent-browser get url
agent-browser get title
agent-browser screenshot page-state.png
Example: Full Unread Check
#!/bin/bash
# Connect to Slack
agent-browser connect 9222
# Take initial snapshot
echo "=== Checking Slack unreads ==="
agent-browser snapshot -i > snapshot.txt
# Check Activity tab for unreads
agent-browser click @e14 # Activity tab
agent-browser wait 1000
agent-browser screenshot activity.png
ACTIVITY_RESULT=$(agent-browser get text @e_main_area)
echo "Activity: $ACTIVITY_RESULT"
# Check DMs
agent-browser click @e13 # DMs tab
agent-browser wait 1000
agent-browser screenshot dms.png
# Check unread channels in sidebar
agent-browser click @e21 # More unreads button
agent-browser wait 500
agent-browser snapshot -i > unreads-expanded.txt
agent-browser screenshot unreads.png
# Summary
echo "=== Summary ==="
echo "See activity.png, dms.png, and unreads.png for full details"
References
- Slack docs: https://slack.com/help
- Web experience: https://app.slack.com
- Keyboard shortcuts: Type
?in Slack for shortcut list
Weekly Installs
1.8K
Repository
vercel-labs/age…-browserGitHub Stars
19.1K
First Seen
6 days ago
Security Audits
Installed on
codex1.7K
gemini-cli1.7K
opencode1.7K
cursor1.7K
github-copilot1.7K
kimi-cli1.7K