slack
Skill1 starsChanged 3 months agoMITView on GitHub
Send messages, search conversations, read channel history, and manage status in Slack. Use when sending DMs, posting to channels, searching messages, reading threads, editing messages, setting status, or scheduling messages. Examples: "message Roland", "search for deployment", "set my status to deep work".
64 other projects use a version of this.
Adopted by
Most recently taken up by
- thensls/nsls-builder-toolkittheir own version, first seen Nov 8, 2026
- insight68/Skillstheir own version, first seen Nov 8, 2026
- antoniolg/agent-kittheir own version, first seen Nov 8, 2026
- QVerisAI/QVerisBottheir own version, first seen Nov 1, 2026
- Shanksg/clawskillstheir own version, first seen Nov 1, 2026
- chnlich/charlie-bottheir own version, first seen Nov 1, 2026
Used with
Projects with it also use taskflow-inbox-triage, BlueBubbles and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
AtomicBot-aiSkilltaskflow-inbox-triage
Also in 6 projects that use this
jiulingyunSkillBlueBubbles
为Clawdbot构建或更新BlueBubbles外部通道插件(扩展包,REST发送/探测,webhook入站)。
Also in 18 projects that use this
seedprodSkillvoice-call
Start voice calls via the OpenClaw voice-call plugin.
Also in 16 projects that use this
hkyutongSkillopenclaw-release-maintainer
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
Also in 4 projects that use this
seedprodSkillsession-logs
Search and analyze your own session logs (older/parent conversations) using jq.
Also in 16 projects that use this
AtomicBot-aiSkilltaskflow
Also in 6 projects that use this
- +5 more from seedprod
Other versions64 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 64
- paperclipai/paperclip★ 112ksame name
- vercel-labs/agent-browser★ 47ksame name
- anthropics/claude-quickstarts★ 19ksame name
- spinabot/brigade★ 11ksame name
- the-open-agent/openagent★ 5.7ksame name
- casibase/casibase★ 5.7ksame name
- linuxhsj/openclaw-zero-token★ 5.2ksame name
- jiulingyun/openclaw-cn★ 4.7ksame name
- Bitterbot-AI/bitterbot-desktop★ 2.5ksame name
- vercel-labs/emulate★ 2ksame name
54 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository29 other files it gives its agents.
- AGENTS.mdAGENTS.md
- docxSkill
- pdfSkill
- app-icon-studioSkill
- audit-promptSkill
- bootstrap-goal-projectSkill
- boy-scoutSkill
- brand-namingSkill
- create-engineering-skillSkill
- create-prSkill
- elevenlabsSkill
- firebase-adminSkill
- firebase-hosting-basicsSkill
- gmailSkill
- linearSkill
- nano-banana-app-iconSkill
- new-projectSkill
- plainSkill
- product-researchSkill
- pr-qa-browserSkill
- publish-researchSkill
- readme-best-practicesSkill
- researchSkill
- ripple-checkSkill
- roadmap-pageSkill
- scopeSkill
- searchexaSkill
- triage-pr-commentsSkill
- write-loopSkill
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 2 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 61 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 110
When the user says "message Roland about X" or "tell Ejaz Y", extract the person's name as the target and the rest as the message content.
- Very specific: line 132
MISSING_TOKEN: Read the references/setup-guide.md file next to this skill and guide user through setup
- Very specific: line 137
RATE_LIMITED: Wait and retry after the indicated period
- Distinctive: line 139
Always parse JSON error response and present human-friendly message with suggestions.
“Common” is measured: kept by at least 6 in 10 of the 61 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
<objective>
Conversational interface to Slack for messaging and search. Read-only commands (search, history, channels, users) execute immediately. Outbound messages always require user confirmation before sending.Do NOT explore the codebase unless the user explicitly asks. Work from user's description only.
</objective>
<cli_reference>
CLI script: scripts/slack.py (relative to this skill's install directory)
Resolve the script path before first use: check ~/.claude/skills/slack/scripts/slack.py, then .claude/skills/slack/scripts/slack.py. Cache the result for the session.
Run with: uv run <resolved-path>/scripts/slack.py <command> [options]
Commands:
| Command | Usage | Purpose |
send | send <target> <message> [--thread/-t ts] | Send message (or thread reply) |
edit | edit <channel_id> <ts> <new_text> | Edit a sent message (own only) |
search | search <query> [--count/-c N] | Search messages (default 20) |
history | history <channel> [--count/-c N] | Recent channel messages (default 20) |
read-thread | read-thread <channel> <thread_ts> | Read thread replies |
channels | channels [--search/-s name] | List/search channels |
users | users [--search/-s name] | List/search workspace members |
delete | delete <channel_id> <ts> | Delete a message |
react | react <channel_id> <ts> <emoji> | Add reaction to a message |
status | status [text] [--emoji/-e name] [--expires/-x duration] | Set/clear Slack status |
schedule | schedule <target> <message> --at <time> | Schedule message for later |
Target resolution (for send):
- Channel ID (starts with
C,G, orD) → use directly #channel-name→ finds channel by name- Person's name (e.g.
Roland) → finds user, opens DM, sends there
Search query modifiers: Slack search syntax works — from:me, in:#channel, before:2026-03-01, after:2026-02-01, has:link, etc.
Status duration format: 2h, 30m, 1h30m — auto-clears after the specified time.
Schedule time format: --at "in 2h", --at "in 30m", --at "in 1h30m", or a Unix timestamp.
</cli_reference>
<process><step name="parse_intent">
**Parse the command to determine intent:**| Pattern | Intent | Action |
send <target> <message> | Send message | Go to send_flow |
reply to thread, respond in thread | Thread reply | Use send with --thread |
edit message, fix that message, update what I sent | Edit message | Execute edit with channel, ts, new text |
search <query>, find messages about | Search | Execute search directly |
history <channel>, read #channel, what's happening in #channel | Channel history | Execute history directly |
read thread, show thread replies | Read thread | Execute read-thread directly |
channels, list channels, find channel | List channels | Execute channels directly |
users, who's in the workspace, find user | List users | Execute users directly |
delete message | Delete | Execute delete directly |
react, add reaction, add emoji | React | Execute react directly |
set status, set my status to, I'm doing | Set status | Execute status with text, emoji, optional expiry |
clear status, remove status | Clear status | Execute status with empty text |
schedule message, send later, send tomorrow | Schedule | Go to send_flow but use schedule with --at |
message <name> <text>, DM <name>, tell <name> | Send DM | Go to send_flow with person target |
post in #channel <text> | Send to channel | Go to send_flow with channel target |
post about the PR, share the PR, announce the PR | PR announcement | Go to pr_announcement_flow |
</step><step name="direct_commands">
**For direct commands (search, history, read-thread, channels, users, delete, react, edit, status, schedule):**Execute CLI and format output.
uv run <slack.py> [command] [args]Parse JSON response and present result:
- Success: Format messages readably — show user, text, timestamp, and permalink where available
- For
channels/users: List with IDs for reference - For
history: Show messages in chronological order with thread indicators - Error: Show error message and suggestions
</step>
<step name="send_flow">
**For sending and scheduling messages:**CRITICAL: Every outbound message MUST be confirmed by the user before sending.
- Resolve target from user's description — the CLI handles channel/user resolution automatically
- Draft the message and present it to the user using
AskUserQuestionwith options to confirm or request changes. - Only after the user confirms, execute:
- Immediate send:
uv run <slack.py> send "<target>" "<message>" [--thread <ts>] - Scheduled send:
uv run <slack.py> schedule "<target>" "<message>" --at "<time>"
- Immediate send:
- Confirm delivery: Show channel/DM and timestamp from response
When the user says "message Roland about X" or "tell Ejaz Y", extract the person's name as the target and the rest as the message content.
</step>
<step name="pr_announcement_flow">
**For PR announcements (e.g. "post about the PR", "share PR in #engineering-pr"):**Triggered when the user asks to post/share/announce a PR to a channel. Gather the PR details automatically, compose the message using the template below, then follow the normal send_flow (draft → confirm → send).
- Gather PR info — run
gh pr view --json number,title,url,bodyto get the current branch's PR. If the user specifies a PR number, usegh pr view <number>instead. - Compose the message using this format:
ThePR #<number>: <title> <url> <one-liner context><one-liner context>is a single sentence explaining why this matters — what it enables or unblocks, not just what files changed. Derive from the PR body/summary. Focus on impact for the team (e.g. "Enables end-to-end local testing of payments and subscriptions" rather than "Updates local-seed.sh"). - Present the draft to the user for confirmation, then follow the normal send_flow to post it.
</step>
<step name="error_handling">
**Handle errors gracefully:**- MISSING_TOKEN: Read the
references/setup-guide.mdfile next to this skill and guide user through setup - AUTH_FAILED: Token is invalid or revoked — regenerate from Slack app settings
- CHANNEL_NOT_FOUND: Suggest using
channels --searchto find the right name - USER_NOT_FOUND: Suggest using
users --searchto find the right person - PERMISSION_DENIED: Token missing required scope — list needed scopes and suggest reinstalling the app
- RATE_LIMITED: Wait and retry after the indicated period
Always parse JSON error response and present human-friendly message with suggestions.
</step>
</process><success_criteria>
- Outbound messages (send, schedule, DM) are ALWAYS shown to the user and confirmed before posting
- Read-only commands (search, history, channels, users, read-thread) execute immediately
- Errors handled with helpful setup instructions
- Search results include permalink for easy navigation
- History output shows user names (not raw IDs) and thread indicators
- CLI output parsed and formatted — show user names, text, timestamps, and permalinks
- Target resolution handles channels (#name), channel IDs, and person names </success_criteria>
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

