Use Avibe
avibe-bot/avibe
Safely inspect and modify local Avibe configuration, routing, runtime settings, watches, scheduled tasks, Avibe Cloud remote access, and operational state.
This skill should be used when the user asks to "monitor a Slack channel", "watch Slack for messages", "create a Slack bot that responds to mentions", "set up an OpenHands Slack integration"…
$ npx skills add OpenHands/extensions --skill slack-channel-monitor -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install OpenHands/extensions slack-channel-monitor --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/OpenHands/extensions.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/slack-channel-monitor .claude/skills/slack-channel-monitor && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "slack-channel-monitor" agent skill from https://github.com/OpenHands/extensions/tree/main/skills/slack-channel-monitor into .claude/skills/slack-channel-monitor/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "slack-channel-monitor", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/OpenHands/extensions/tree/main/skills/slack-channel-monitorType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add OpenHands/extensions --skill slack-channel-monitor -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install OpenHands/extensions slack-channel-monitor --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenHands/extensions.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/slack-channel-monitor .agents/skills/slack-channel-monitor && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "slack-channel-monitor" agent skill from https://github.com/OpenHands/extensions/tree/main/skills/slack-channel-monitor into .agents/skills/slack-channel-monitor/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "slack-channel-monitor", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add OpenHands/extensions --skill slack-channel-monitor -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install OpenHands/extensions slack-channel-monitor --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenHands/extensions.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/slack-channel-monitor .cursor/skills/slack-channel-monitor && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "slack-channel-monitor" agent skill from https://github.com/OpenHands/extensions/tree/main/skills/slack-channel-monitor into .cursor/skills/slack-channel-monitor/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "slack-channel-monitor", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/OpenHands/extensions.git --path skills/slack-channel-monitor--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add OpenHands/extensions --skill slack-channel-monitor -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install OpenHands/extensions slack-channel-monitor --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenHands/extensions.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/slack-channel-monitor .gemini/skills/slack-channel-monitor && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "slack-channel-monitor" agent skill from https://github.com/OpenHands/extensions/tree/main/skills/slack-channel-monitor into .gemini/skills/slack-channel-monitor/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "slack-channel-monitor", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install OpenHands/extensions slack-channel-monitorInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add OpenHands/extensions --skill slack-channel-monitor -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/OpenHands/extensions.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/slack-channel-monitor .github/skills/slack-channel-monitor && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "slack-channel-monitor" agent skill from https://github.com/OpenHands/extensions/tree/main/skills/slack-channel-monitor into .github/skills/slack-channel-monitor/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "slack-channel-monitor", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add OpenHands/extensions --skill slack-channel-monitor -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install OpenHands/extensions slack-channel-monitor --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/OpenHands/extensions.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/slack-channel-monitor .opencode/skills/slack-channel-monitor && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "slack-channel-monitor" agent skill from https://github.com/OpenHands/extensions/tree/main/skills/slack-channel-monitor into .opencode/skills/slack-channel-monitor/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "slack-channel-monitor", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
slack-channel-monitorThis skill should be used when the user asks to "monitor a Slack channel", "watch Slack for messages", "create a Slack bot that responds to mentions", "set up an OpenHands Slack integration"…
Slack Channel Monitor is an agent skill from OpenHands/extensions. This skill should be used when the user asks to "monitor a Slack channel", "watch Slack for messages", "create a Slack bot that responds to mentions", "set up an OpenHands Slack integration", "trigger OpenHands from Slack", "respond to @openhands in Slack", or "poll Slack channels for a trigger phrase". Guides the user through creating a cron automation that watches up to 10 Slack channels and starts an OpenHands conversation whenever a configurable trigger phrase is detected.
Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including scripts and reference files (for example `.plugin/plugin.json`, `README.md` and `commands/slack-monitor-poll.md`).
It sits in Productivity & Automation, covering Chatbots and conversational support, Scheduled and recurring tasks and Messaging and chat bots. It works with Slack. The repository describes itself as: Public registry for OpenHands extensions. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 642df1a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3curlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
slack.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
SLACK_BOT_TOKENSLACK_USER_TOKENOPENHANDS_AUTOMATION_API_KEYSLACK_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Slack Channel Monitor loads about 3.2k tokens when it runs, and up to ~7.1k if it reads all its reference files. Until then it costs about 126 tokens; SKILL.md has 1,232 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from OpenHands/extensions at commit 642df1a, republished under its MIT licence (© OpenHands). 1,232 words, ~3,222 tokens.
.claude/skills/slack-channel-monitor/SKILL.md (or your agent's skills folder). This skill also uses 9 other files; get the full folder from GitHub.Create a cron automation that polls up to 10 Slack channels every minute.
Windows PowerShell equivalents for the setup, packaging, upload, and API-check shell snippets are in references/windows.md.
When a message containing the trigger phrase (default: @openhands) is
detected it:
On every subsequent run:
Local mode only. This automation targets the local OpenHands setup (
dev:automationstack). A cloud/webhook-based variant is out of scope here.
Verify that at least one of the following secrets is set in OpenHands Settings → Secrets before proceeding:
| Secret name | Token type | Minimum scopes |
|---|---|---|
SLACK_BOT_TOKEN | Bot (xoxb-…) | channels:history, channels:read, reactions:write, chat:write |
SLACK_USER_TOKEN | User (xoxp-…) | Same as bot, plus search:read for multi-channel efficiency |
Check with:
# For bot token:
curl -s https://slack.com/api/auth.test -H "Authorization: Bearer $SLACK_BOT_TOKEN" \
| python3 -c "import json,sys; d=json.load(sys.stdin); print('ok' if d.get('ok') else d.get('error'))"
# For user token:
curl -s https://slack.com/api/auth.test -H "Authorization: Bearer $SLACK_USER_TOKEN" \
| python3 -c "import json,sys; d=json.load(sys.stdin); print('ok' if d.get('ok') else d.get('error'))"If neither token is present, inform the user and stop - the automation cannot function without Slack credentials.
| Secret name | Default | Purpose |
|---|---|---|
OPENHANDS_URL | http://localhost:8000 | Base URL used to build conversation links posted in Slack |
Follow these steps in order.
Ask the user: "Which Slack channels should be monitored? You can provide
channel names (e.g. #general) or IDs (e.g. C0123456789)."
If the user provides channel names, resolve them to IDs:
SLACK_TOKEN="${SLACK_BOT_TOKEN:-$SLACK_USER_TOKEN}"
curl -s "https://slack.com/api/conversations.list?types=public_channel,private_channel&limit=200&exclude_archived=true" \
-H "Authorization: Bearer $SLACK_TOKEN" \
| python3 -c "
import json, sys
data = json.load(sys.stdin)
if not data.get('ok'):
print('ERROR:', data.get('error'))
exit(1)
names = set(n.lstrip('#') for n in ['CHANNEL_NAMES_HERE'.split(',')])
for ch in data.get('channels', []):
if ch['name'] in names:
print(f\"{ch['name']} → {ch['id']}\")
"Replace CHANNEL_NAMES_HERE with the comma-separated names the user provided.
If conversations.list returns missing_scope or not_authed:
Inform the user: "The token doesn't have permission to list channels. Please
provide the channel IDs directly (right-click a channel in Slack → Copy link -
the last path segment starting with C is the ID)."
If the bot token lacks channels:read for private channels, the user can
either invite the bot first (/invite @botname) or switch to a user token.
Collect up to 10 channel IDs. Record them as a Python list literal, e.g.:
["C0123456789", "C9876543210"]Ask the user: "What trigger phrase should OpenHands respond to?
(Press Enter to use the default: @openhands)"
Accepted values: any non-empty string unlikely to appear accidentally, e.g.
@openhands, jazz hands, take-me-to-funky-town.
Read scripts/main.py from this skill's directory and copy it verbatim.
Apply exactly three constant substitutions near the top of the file:
Do not reimplement, simplify, or hand-write a replacement script. The template already contains the correct secret-loading, state-path, conversation-creation, and context-forwarding logic. Only the three configuration constants below should change unless syntax validation fails.
| Placeholder | Replace with |
|---|---|
TRIGGER_PHRASE = "@openhands" | TRIGGER_PHRASE = "{user_phrase}" |
CHANNEL_IDS: list[str] = [] | CHANNEL_IDS: list[str] = {channel_id_list} |
DEFAULT_OPENHANDS_URL = "http://localhost:8000" | DEFAULT_OPENHANDS_URL = "{url}" (keep default if user has no preference) |
Write the customised script to a temporary directory:
mkdir -p /tmp/slack-monitor-build
# copy scripts/main.py to /tmp/slack-monitor-build/main.py
# then replace only the three constants aboveValidate syntax before packaging:
python3 -m py_compile /tmp/slack-monitor-build/main.py && echo "Syntax OK"Then run a quick integrity check to confirm the template structure is still present and only the configuration block was customised:
grep -n 'TRIGGER_PHRASE = "' /tmp/slack-monitor-build/main.py
grep -n 'CHANNEL_IDS: list\[str\] =' /tmp/slack-monitor-build/main.py
grep -n 'DEFAULT_OPENHANDS_URL = "' /tmp/slack-monitor-build/main.py
grep -n 'def get_secret' /tmp/slack-monitor-build/main.py
grep -n 'def _state_file_path' /tmp/slack-monitor-build/main.py
grep -n 'def create_conversation' /tmp/slack-monitor-build/main.pyIf any of those checks fail, stop and re-copy the template instead of trying to repair a hand-written variant.
Determine the Automation backend URL and auth from the <RUNTIME_SERVICES>
block in your system context:
url_from_agent as OPENHANDS_HOSTX-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEYIf no Automation backend is listed in <RUNTIME_SERVICES>, stop and tell
the user to start the full automation stack.
tar -czf /tmp/slack-monitor.tar.gz -C /tmp/slack-monitor-build .
# OPENHANDS_HOST: read from <RUNTIME_SERVICES> Automation backend url_from_agent
OPENHANDS_HOST="<automation-url-from-runtime-services>"
TARBALL_PATH=$(curl -s -X POST \
"${OPENHANDS_HOST}/api/automation/v1/uploads?name=slack-channel-monitor" \
-H "X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY" \
-H "Content-Type: application/gzip" \
--data-binary @/tmp/slack-monitor.tar.gz \
| python3 -c "import json,sys; print(json.load(sys.stdin)['tarball_path'])")
echo "Uploaded: $TARBALL_PATH"If the upload fails with a size error, the tarball must be under 1 MB.
main.py is under 15 KB so this should never trigger.
curl -s -X POST "${OPENHANDS_HOST}/api/automation/v1" \
-H "X-Session-API-Key: $OPENHANDS_AUTOMATION_API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"name\": \"Slack Channel Monitor\",
\"trigger\": {\"type\": \"cron\", \"schedule\": \"* * * * *\"},
\"tarball_path\": \"$TARBALL_PATH\",
\"entrypoint\": \"python3 main.py\",
\"timeout\": 55
}" | python3 -m json.toolA 55-second timeout keeps runs well within the 60-second cron window.
Record the returned id - share it with the user as confirmation.
Tell the user:
✅ Slack Channel Monitor is running!
- Automation ID:
{id}- Channels:
{channel list}- Trigger phrase:
{phrase}- Polling every minute via cron
* * * * *- State file:
~/.openhands/workspaces/automation-state/slack_poller_{id}.jsonSend a message containing
{phrase}in any monitored channel to test it. The bot will react with 👀 and reply with a link to the new conversation.
Each cron run executes main.py, which runs 10 polling iterations (every
5 seconds) within the 55-second timeout window. Each iteration:
references/state-schema.md).SLACK_USER_TOKEN then SLACK_BOT_TOKEN.search:read + > 1 channel → single search.messages call
(searches for the trigger phrase across all channels).conversations.history call per channel.processed_ts (dedup across the overlap window).ts in bot_message_ts.default and the concrete model from the server settings already
used to start the conversation, for the response footer.time.time() - last_activity > 15 s:idle, finished, error, or stuck → fetch the agent's
final response via /api/conversations/{id}/agent_final_response, append
the LLM profile and model, and post it to the Slack thread using Slack's
markdown_text field so Markdown formatting renders correctly. Mark the
record watching for five minutes
so triggered follow-up replies can continue the same conversation.last_poll to now - 10 s (overlap window prevents boundary
races). If a conversation creation failed, pins last_poll further back to
retry on the next iteration.processed_ts) and continues to the next iteration.Debug output is written to both stdout and a persistent log at:
{WORKSPACE_BASE_ROOT}/automation-state/slack_poller_debug.logreferences/slack-api.md - Slack token types, required scopes, API
endpoint reference, rate limits, and common error codes.references/state-schema.md - State JSON schema, field definitions,
example file, and conversation lifecycle diagram.scripts/main.py - The complete automation script. Customise the three
constants at the top (TRIGGER_PHRASE, CHANNEL_IDS, DEFAULT_OPENHANDS_URL)
before packaging.| Symptom | Likely cause | Fix |
|---|---|---|
| Bot doesn't react to messages | Token missing or bot not in channel | Verify token with auth.test; /invite @botname |
not_in_channel error in run logs | Bot token used but bot not a member | Invite bot or switch to user token |
missing_scope error | Token lacks required scopes | Re-install Slack app with correct scopes (see references/slack-api.md) |
| No messages detected | last_poll timestamp is in the future | Delete the state file to reset; it will be recreated on next run |
| Conversation link 404 | OPENHANDS_URL points to wrong host | Set the OPENHANDS_URL secret to the correct base URL |
| Summary never posted | Conversation stuck in running state | Check conversation in the OpenHands UI; the agent may need intervention |
| Duplicate conversations created | processed_ts state missing or corrupted | Delete the state file to reset; dedup will rebuild on next run |
| Trigger message processed on each cron run | State file deleted between runs | Ensure automation-state/ directory is persistent across runs |
| Debug info needed | Need detailed per-message trace | Check {WORKSPACE_BASE_ROOT}/automation-state/slack_poller_debug.log |
© OpenHands, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 9 other files (scripts, references) in skills/slack-channel-monitor of OpenHands/extensions.
Open the folder on GitHubat commit 642df1a
Slack Channel Monitor next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Slack Channel Monitor this skillOpenHands/extensions | 163 | — | ~3.2k | Automated safety check: Pass | MIT | |
| Use Avibeavibe-bot/avibe | 624 | — | ~2.5k | Automated safety check: Pass | MIT | |
| Chat SDKdatabuddy-analytics/Databuddy | 1.2k | — | ~2.6k | Automated safety check: Pass | AGPL-3.0 | |
| Slackhuangruiteng/CS-Notes | 4k | 10 repos | ~578 | Automated safety check: Pass | MIT | |
| Superset Automatesuperset-sh/superset | 15k | — | ~1.4k | Automated safety check: Pass | Custom licence | |
| Slack Messaginghaojing8312/WorkClaw | 141 | — | ~897 | Automated safety check: Pass | Apache-2.0 |
avibe-bot/avibe
Safely inspect and modify local Avibe configuration, routing, runtime settings, watches, scheduled tasks, Avibe Cloud remote access, and operational state.
databuddy-analytics/Databuddy
Build multi-platform chat bots with Chat SDK (chat npm package).
huangruiteng/CS-Notes
A skill your agent uses when you need to control Slack from Clawdbot via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
superset-sh/superset
Turns a recurring chore into a scheduled or event-triggered Superset agent, drafting its prompt, picking a target and trigger, and reviewing the first run.
haojing8312/WorkClaw
A skill your agent uses when asked to send or read Slack messages, check Slack channels, test Slack integrations, or interact with a Slack workspace from the command line.
0xranx/golembot
Format responses for instant messaging platforms such as Lark, DingTalk, WeCom, Slack, and Telegram.
OpenHands/extensions
Evaluate how well a codebase supports autonomous AI-assisted development.
OpenHands/extensions
Build and automate Discord integrations (bots, webhooks, slash commands, and REST API workflows).
OpenHands/extensions
Interact with GitHub repositories, pull requests, issues, and workflows using the GITHUBTOKEN environment variable and GitHub CLI.
OpenHands/extensions
Create an automation that implements GitHub issues when a configurable trigger label is applied.
OpenHands/extensions
This skill should be used when the user asks to "monitor a GitHub repository", "watch GitHub for issues or PRs", "respond to @OpenHands mentions on GitHub", "set up an OpenHands GitHub integration"…
OpenHands/extensions
Create an automation that implements GitLab issues when a configurable trigger label is applied.
Works with
Categories
This skill should be used when the user asks to "monitor a Slack channel", "watch Slack for messages", "create a Slack bot that responds to mentions", "set up an OpenHands Slack integration"…. Slack Channel Monitor is an agent skill from OpenHands/extensions. This skill should be used when the user asks to "monitor a Slack channel", "watch Slack for messages", "create a Slack bot that responds to mentions", "set up an OpenHands Slack integration", "trigger OpenHands from Slack", "respond to @openhands in Slack", or "poll Slack channels for a trigger phrase".
Slack Channel Monitor fits situations like: asks to monitor a Slack channel; watch Slack for messages; create a Slack bot that responds to mentions; set up an OpenHands Slack integration.
Run `npx skills add OpenHands/extensions --skill slack-channel-monitor -a claude-code`. Or copy the skill folder (skills/slack-channel-monitor in OpenHands/extensions) into .claude/skills/slack-channel-monitor in your project. Claude Code loads it when a task matches its description.
Run `npx skills add OpenHands/extensions --skill slack-channel-monitor -a codex`. Or copy the skill folder (skills/slack-channel-monitor in OpenHands/extensions) into .agents/skills/slack-channel-monitor in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add OpenHands/extensions --skill slack-channel-monitor -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/slack-channel-monitor, .gemini/skills/slack-channel-monitor, .github/skills/slack-channel-monitor and .opencode/skills/slack-channel-monitor in your project.
Going by SKILL.md and its folder, Slack Channel Monitor needs Python for the scripts in its folder, the command-line tools its instructions call (python3 and curl) and credentials named SLACK_BOT_TOKEN, SLACK_USER_TOKEN, OPENHANDS_AUTOMATION_API_KEY and SLACK_TOKEN. Our summary lists: Python 3; A credential in SLACK_BOT_TOKEN; A credential in SLACK_USER_TOKEN.
SKILL.md names 1 domain. In commands or code: slack.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Slack Channel Monitor is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.9k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Slack Channel Monitor: Use Avibe (avibe-bot/avibe, 624 stars), Chat SDK (databuddy-analytics/Databuddy, 1.2k stars), Slack (huangruiteng/CS-Notes, 4k stars) and Superset Automate (superset-sh/superset, 15k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
OpenHands (a GitHub organization) maintains it in OpenHands/extensions, which has 163 GitHub stars. The repository holds 78 skills in this directory. The repository was last updated on October 9, 2026.
Source: OpenHands/extensions on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.