slack-cli
Use when the user asks an agent to operate Slack through the matcra587/slack-cli binary, including messages, scheduled messages, DMs, threads, reactions, history, search, cleanup, users, channels, status, cache, auth, config, or app manifests.
- License 许可
- MIT
- 最近更新
- 2026-11-06
- Stars
- ★ 1
- Forks
- 0
01 前言 Front Matter
- name
- slack-cli
- description
- Use when the user asks an agent to operate Slack through the matcra587/slack-cli binary, including messages, scheduled messages, DMs, threads, reactions, history, search, cleanup, users, channels, status, cache, auth, config, or app manifests.
- allowed-tools
- Bash(slick agent:*) Bash(slick auth login:*) Bash(slick auth status:*) Bash(slick auth switch:*) Bash(slick cache:*) Bash(slick config get:*) Bash(slick config init:*) Bash(slick config list:*) Bash(slick config path:*) Bash(slick config set:*) Bash(slick file upload:*) Bash(slick history list:*) Bash(slick lookup:*) Bash(slick manifest template:*) Bash(slick message edit:*) Bash(slick message scheduled list:*) Bash(slick message scheduled delete:*) Bash(slick message send:*) Bash(slick react:*) Bash(slick reply:*) Bash(slick status:*) Bash(slick workspace list:*)
03 SKILL.md 正文
slack-cli
Use this skill as a thin router. The Slack CLI binary contains the operational
runbooks. Load the matching runbook before acting. Do not copy CLI runbooks into
this skill; update the embedded slick agent guide source when details change.
The repository is matcra587/slack-cli but the installed binary is slick.
First Step
Run the matching guide command:
slick agent guide <workflow>
Use the schema only when you need command inventory or flag details:
slick agent schema --compact
Workflow Map
| User task | Load this runbook |
|---|---|
| Send a channel message or DM | slick agent guide send_msg |
| Schedule, list, or cancel future messages | slick agent guide schedule_msg |
| Post a realistic PR review, incident update, release note, reactions, and thread | slick agent guide developer_review |
| Reply in a thread | slick agent guide reply |
| Add, remove, or list reactions (single or ordered multi-emoji) | slick agent guide react |
| Read channel history or thread replies | slick agent guide read_history |
| Search messages, especially by run ID | slick agent guide search_msgs |
| Clean up live-test messages | slick agent guide cleanup_msgs |
| Edit a message | slick agent guide edit_msg |
| Delete a message | Requires explicit user approval; then load slick agent guide delete_msg |
| Find channels, private channels, or DMs | slick agent guide discover_destination |
| Find users or presence | slick agent guide lookup_user |
| Send direct messages | slick agent guide send_dm |
| Set or clear the authenticated user's Slack status | slick agent guide set_status |
| Prime, refresh, or clear local Slack metadata caches | slick agent guide cache_metadata |
| Auth, manifests, token setup | slick agent guide auth_setup |
| Config preferences | slick agent guide config_prefs |
| Output modes, exit codes, parsing | slick agent guide core_contract |
| Diagnose whether Slack itself is degraded before blaming auth | slick agent guide check_health |
| High-impact or destructive operations | slick agent guide safe_mutation |
| File upload testing | slick agent guide upload_file |
| Command inventory | slick agent guide inspect_schema |
Non-Negotiables
- Run
slick agent guide <workflow>before taking action. The guide is the runbook; the schema is only command inventory. - Keep automation on JSON output. Do not parse
--plain. - Treat stdout as command data and stderr as diagnostics or structured errors.
- Parse failures from stderr JSON:
errors[0].type,errors[0].message, anderrors[0].exit_code. - Keep Slack timestamps as strings. They are scoped to a channel.
- Use exact
channel+tsfor replies, reactions, edits, and deletes. - Never pass Slack tokens in argv. Use stdin, file, env-name, keychain, or a configured secret reference.
- Use real multiline stdin for multiline Slack messages. Do not type literal
\ninto--messagewhen the UI should show a new line. - Use
--dry-runbefore high-visibility or destructive mutations. --scheduleaccepts--channelor--user. For scheduled DMs, pass the user ID, alias, or Slack-profile email with--user; real sends return the raw DM/MPIM channel ID indata.channel.- This skill does not preapprove deletes. Treat
slick message deleteas an explicit-user-approval operation outsideallowed-tools. - Status set/clear mutates the authenticated user's Slack profile and requires
a user token with
users.profile:write. Bot-token profiles cannot use it. - Do not duplicate attribution text in the message body. Attribution renders as a context block when enabled.
- For live tests, use realistic content and unique run IDs. Clean up with the
paginated
cleanup_msgsrunbook. - For search cleanup, follow
meta.pagination.next_cursoruntilmeta.pagination.has_moreis false, then repeat the search after deletes until there are no matches.
Command Name Guardrails
- There is no
slick dmcommand. Useslick message send --user. - Immediate DM email targeting uses the user's Slack profile email. If Slack
returns
users_not_found, resolve the Slack-side address or use the user ID. - There is no
slick threadcommand. Useslick reply. - There is no
slick reactioncommand. Useslick react. --rawis an output mode. Use--blocksonly when the input is raw Block Kit JSON.slick react addaccepts one or more emoji: comma-separate (--emoji a,b,c) or repeat the flag to apply multiple in input order. Halts on first failure.- File upload remains probationary. Use
slick agent guide upload_filebefore testing it and prefer dry-run first.
Rate-Limit Guardrail
The CLI returns structured rate_limit errors with exit code 3. Respect
retry_after_seconds.
Separate CLI processes do not share proactive throttle state. Keep shell fanout modest unless the user explicitly asks for a rate-limit test.