本文へ移動
cccskills
無料GitHub で公開

slack-cli

Operate Slack from the terminal via `slack-cli` (@urugus/slack-cli). Send messages, check unreads, search history, upload files, manage reactions/pins, schedule messages, and manage channels — all through Bash commands. Prefer this skill over `mcp__slack__*` MCP tools when you need: scheduling, unreads, search with pagination, reactions/pins, file uploads, multi-workspace profiles, canvas operations, or jq pipelines for filtered output. Trigger phrases include "slack-cli", "slack cli", "send slack message", "check slack unreads", "slack history", "search slack", "schedule slack message", "slack channel", "upload to slack", "slack reactions", "slack pins", "slack canvas", "slack users", "slack unread".

日本語の概要は準備中です。原文の説明を表示しています。

連携ツールSlack

実行スコア 未検証

インストール方法を見る

含まれるファイル(2)

  • SKILL.md10.1 KB
  • references/command-reference.md11.0 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Slack CLI Skill

Interact with Slack workspaces via slack-cli in Bash. This skill covers messaging, channels, history, search, file uploads, reactions, pins, users, scheduled messages, and canvas operations.

Constraints

  • Always use slack-cli — it must be globally installed via npm.
  • A Slack Bot Token must already be configured. If not, guide the user through setup.
  • Token security: tokens are encrypted with AES-256-GCM at rest. Never log or echo tokens.
  • For simple read/post operations where mcp__slack__* MCP tools suffice, prefer MCP (less overhead, no shell spawning). Switch to CLI for features MCP lacks.

Preflight Check

Before running any slack-cli command, verify the installation:

slack-cli --version

If this fails:

  • "command not found" — slack-cli is not installed. Suggest: npm install -g @urugus/slack-cli
  • "No token configured" or auth errors — Token not set up. Suggest: slack-cli config set (interactive) or printf '%s\n' "$SLACK_BOT_TOKEN" | slack-cli config set --token-stdin

When to Use CLI vs. MCP

Capabilitymcp__slack__* MCPslack-cli CLI
Post a messageYes — slack_post_messageYes — slack-cli send
Reply to threadYes — slack_reply_to_threadYes — slack-cli send --thread
Read channel historyYes — slack_get_channel_historyYes — slack-cli history
List channelsYes — slack_list_channelsYes — slack-cli channels
Get user profileYes — slack_get_user_profileYes — slack-cli users info
Edit/delete messagesNoYes — slack-cli edit / delete
Schedule messagesNoYes — slack-cli send --at / --after
Check unreadsNoYes — slack-cli unread
Mark as readNoYes — slack-cli unread --mark-read
Search messagesNoYes — slack-cli search
ReactionsYes — slack_add_reactionYes — slack-cli reaction add/remove
PinsNoYes — slack-cli pin add/remove/list
File uploadsNoYes — slack-cli upload
Canvas read/listNoYes — slack-cli canvas
Multi-workspaceNoYes — --profile flag
JSON output + jqNoYes — --format json

Rule of thumb: Use MCP for simple post/read. Use CLI for everything else.

Output Format Guidance

slack-cli supports three output formats via --format:

FormatFlagBest for
Table--format table (default)Human reading in terminal
Simple--format simpleShell pipelines, grep, awk
JSON--format jsonClaude processing, jq filtering

When Claude needs to process the output (parse channels, count unreads, extract timestamps), always use --format json and pipe through jq for minimal context consumption.

# Good — filtered JSON, minimal context
slack-cli unread --format json | jq '.[] | select(.count > 5)'

# Avoid — table output wastes tokens on formatting
slack-cli unread --format table

Quick Reference

ActionCommand
Send messageslack-cli send -c CHANNEL -m "text"
Send DMslack-cli send --user @name -m "text"
Reply to threadslack-cli send -c CH -m "text" --thread TS
Edit messageslack-cli edit -c CH --ts TS -m "new text"
Delete messageslack-cli delete -c CH --ts TS
Check all unreadsslack-cli unread --format json
Mark channel readslack-cli unread -c CH --mark-read
Channel historyslack-cli history -c CH --format json
Search messagesslack-cli search -q "query" --format json
List channelsslack-cli channels --format json
Upload fileslack-cli upload -c CH -f ./file.csv
Add reactionslack-cli reaction add -c CH -t TS -e emoji
Pin messageslack-cli pin add -c CH -t TS
Schedule messageslack-cli send -c CH -m "text" --after 30
List scheduledslack-cli scheduled list --format json
List usersslack-cli users list --format json
Read canvasslack-cli canvas read -i CANVAS_ID
Switch profileslack-cli config use PROFILE

Common Workflows

Check and summarize unreads

# Get unread counts as JSON
slack-cli unread --format json

# Filter channels with many unreads
slack-cli unread --format json | jq '.[] | select(.count > 5)'

# Get unread count only
slack-cli unread --count-only

After summarizing, mark as read:

slack-cli unread -c general --mark-read

Send a message and reply to a thread

# Send to channel
slack-cli send -c general -m "Hello team"

# Send from file content
slack-cli send -c general -f ./announcement.md

# Reply to a specific thread (use the message timestamp)
slack-cli send -c general -m "Noted, thanks!" --thread 1234567890.123456

# Send DM by username or email
slack-cli send --user @alice -m "Quick question..."
slack-cli send --email alice@example.com -m "Check this out"

Search messages

# Basic search
slack-cli search -q "deployment issue" --format json

# Search with Slack modifiers
slack-cli search -q "in:general from:@alice deploy" --format json

# Paginated search
slack-cli search -q "bug report" -n 20 --page 2 --format json

# Sort by timestamp
slack-cli search -q "release" --sort timestamp --sort-dir desc --format json

Export channel history

# Recent history
slack-cli history -c general --format json

# History since a date
slack-cli history -c general --since "2026-03-01" --format json

# Last N messages
slack-cli history -c general -n 50 --format json

# Thread history
slack-cli history -c general --thread TS --format json

# Include permalinks
slack-cli history -c general --with-link --format json

Schedule messages

# Schedule at absolute time (ISO 8601)
slack-cli send -c general -m "Reminder: standup in 5 min" --at "2026-03-14T09:55:00+09:00"

# Schedule relative (N minutes from now)
slack-cli send -c general -m "Follow up on PR" --after 30

# List scheduled messages
slack-cli scheduled list --format json

# Cancel a scheduled message
slack-cli scheduled cancel -c general --id Q12345

Multi-workspace profiles

# Set up profiles
slack-cli config set --profile work --token-stdin <<< "$WORK_TOKEN"
slack-cli config set --profile personal --token-stdin <<< "$PERSONAL_TOKEN"

# Switch default profile
slack-cli config use work

# Use a profile for a single command
slack-cli send -c general -m "Hello" --profile personal

# List configured profiles
slack-cli config profiles

File uploads and snippets

# Upload a file
slack-cli upload -c general -f ./report.csv

# Upload to a thread
slack-cli upload -c general -f ./screenshot.png -t TS

# Upload a code snippet
slack-cli upload -c dev --content 'console.log("hello")' --filename hello.js --filetype javascript

Shell pipeline recipes

# Find channels matching a pattern
slack-cli channels --format json | jq '.[] | select(.name | test("dev"))'

# Get all users' display names
slack-cli users list --format json | jq '.[].display_name'

# Count messages per channel from search results
slack-cli search -q "keyword" --format json | jq 'group_by(.channel) | map({channel: .[0].channel, count: length})'

Error Handling

SymptomCauseFix
command not foundNot installednpm install -g @urugus/slack-cli
No token configuredMissing configslack-cli config set
channel_not_foundWrong channel name/IDVerify with slack-cli channels
not_in_channelBot not in channelInvite bot to channel in Slack
invalid_authToken expired/revokedRe-configure with slack-cli config set
missing_scopeToken lacks required scopeAdd scope in Slack app settings
Rate limit / timeoutToo many requestsCLI has built-in retry with exponential backoff

References

For the full flag-by-flag reference of every subcommand, read references/command-reference.md.

Behavior Scenarios

Scenario 1: Send a Slack message

Given slack-cli is installed and configured
When the user asks to send a message to a Slack channel
Then run `slack-cli send -c <channel> -m "<message>"`
And report the result (timestamp of sent message)

Scenario 2: Check unreads

Given slack-cli is installed and configured
When the user asks to check Slack unreads
Then run `slack-cli unread --format json`
And summarize channels with unread messages and counts

Scenario 3: Search Slack messages

Given slack-cli is installed and configured
When the user asks to search Slack for a term
Then run `slack-cli search -q "<term>" --format json`
And present matching messages with channel, sender, and timestamp

Scenario 4: slack-cli not installed

Given slack-cli is not installed or not configured
When the user asks to perform any Slack CLI operation
Then check with `slack-cli --version`
And guide the user to install: `npm install -g @urugus/slack-cli`
And guide token setup: `slack-cli config set`

Scenario 5: Multi-workspace operation

Given the user works with multiple Slack workspaces
When the user specifies a workspace or profile
Then use the `--profile <name>` flag on the command
And if no profile exists, guide setup with `slack-cli config set --profile <name>`

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

Run a multi-model adversarial mutual review with facilitator synthesis: 2+ panelists (different model families where possible — use codex-server / codex-cli for the external-family seat) independently answer, adversarially critique each other across rounds, and the main session acts as facilitator, synthesizing agreements, live disagreements, and calibrated confidence into one answer. Use ONLY on high-stakes, hard-to-reverse claims, designs or decisions, and only when the user EXPLICITLY asks to debate or adversarially review with multiple models — "discuss with Opus and Codex", "red-team this", "devil's advocate", 敵対的レビュー, 相互レビュー, 多モデル討論, 議論させて. A full run costs ~6 subagent/CLI dispatches: state the panel size and round count and get a go-ahead before launching. Where the Workflow tool is available, run the panel as a Workflow (judge-panel / adversarial-verify) instead of ad-hoc fan-out. Do NOT self-trigger on a bare "are you sure?" — that is a cue to OFFER the panel, not to run it.

日本語の概要は準備中です。原文の説明を表示しています。

hideki5123/agent-skill-set22026年10月21日 更新

Orchestrate multiple coding-agent sessions (Claude Code, Codex, Gemini) over the mcp_agent_mail MCP server, observe their progress on a recurring auto-loop, and prevent inconsistencies (file/edit conflicts and contradictory decisions) between concurrent tasks. Auto-manages the agent-mail server, derives the shared room key from the git repo, and runs either as the orchestrator/observer or as a participating worker. Handles the operational details (server startup, room key, reservation conventions) so the user does not have to remember them. Use when coordinating several agent sessions on different tasks at once, watching a swarm of sessions for conflicts, or wiring already-running sessions into a shared coordination room. Trigger phrases: "agent-swarm", "/agent-swarm", "orchestrate agents", "orchestrate multiple claude sessions", "coordinate sessions", "watch for conflicts between agents", "observe the swarm", "prevent inconsistency between sessions", "multi-agent observe", "複数セッションを協調", "エージェント協調", "セッション間の不整合監視", "スウォーム監視", "複数のClaudeを束ねて".

日本語の概要は準備中です。原文の説明を表示しています。

hideki5123/agent-skill-set22026年10月21日 更新

Generate AGENTS.md (cross-tool agent context — Codex CLI, Aider, Cursor, etc.) and wire CLAUDE.md as a symlink so Claude Code reads the same file. Delegates content generation to Claude's built-in /init when needed, then renames + symlinks. Idempotent. Triggers — /agents-init, "generate agents.md", "create agents.md", "share claude and codex context", "set up agents file", "init agents", "agents-init", "cross-tool agent context", "wire claude and agents".

日本語の概要は準備中です。原文の説明を表示しています。

hideki5123/agent-skill-set22026年10月21日 更新

Drive an already-running, LOGGED-IN Chromium browser on macOS via AppleScript — navigate, click, fill forms, scroll, and extract page content from the user's REAL session, with the browser left open and NO profile copy and NO restart. Use when the task needs the existing logged-in session (cookies, auth, current tabs) reused as-is. Trigger phrases: "chrome-use", "ブラウザから取得", "ログイン済みの Chromeで", "ブラウザを操作して", "このページ読んで", "Xのスレッド読んで", "ログインしたまま取得", "自分のセッションでスクレイプ", "read this page in my browser", "scrape with my session", "drive my chrome", "execute JS in my (logged-in) browser", "automate my logged-in browser". Chromium family (Chrome default; Brave/Edge/Arc/Vivaldi via --app). NOT for isolated/throwaway automation where login reuse is unneeded — use playwright-cli for that. macOS only.

日本語の概要は準備中です。原文の説明を表示しています。

hideki5123/agent-skill-set22026年10月21日 更新

codex-cli

無料

Run OpenAI Codex CLI from the terminal for batch / one-shot `codex exec` invocations with output captured to an `-o` file. Use for fire-and-forget runs, scripted CI, code review batches (`codex review`), and resuming a specific session by id (`codex exec resume`). Always use this skill instead of `mcp__codex__codex` and `mcp__codex__codex-reply` MCP tools — CLI is faster and more capable. For streaming UX, multi-turn dialogues that need live state, structured (JSON schema) output, attaching images, or programmatic event handling → **use codex-server instead**. codex-server uses the user's ChatGPT subscription via Codex App Server and decoupled async invocation that bypasses the Bash 2-minute timeout entirely. Trigger patterns (batch-only — chat/streaming triggers belong to codex-server): codex-cli / codex CLI / codex exec / codex review / codex resume / codex fork / batch + {codex, gpt} / one-shot + {codex, gpt} / non-interactive + codex / codex {to a file, -o, output file, captured output} / CI + {codex, gpt} / scripted + {codex, gpt} / fork codex session / resume codex session by id

日本語の概要は準備中です。原文の説明を表示しています。

hideki5123/agent-skill-set22026年10月21日 更新

Run OpenAI Codex via the Codex App Server (JSON-RPC-over-stdio) for streaming multi-turn chat sessions with persistent threads, structured output, image input, and rich event streams. Default entry point for ChatGPT/GPT/Codex-like conversations from the terminal. Uses the user's ChatGPT subscription (Plus / Pro / Team) exclusively via `codex login` — never consumes OPENAI_API_KEY billing, by design. Implementation: TypeScript on deno with npm:@openai/codex-sdk; spawns the existing system codex binary. Decoupled async invocation: every turn returns turn-id in <1 s; the actual SDK work runs in a detached worker that streams to per-turn files under ~/.codex-server/turns/<turn-id>/ — Bash's 2-min timeout never applies. Prefer this over codex-cli for streaming UX, multi-turn dialogues that need live state, structured (JSON schema) output, attaching images, or programmatic event handling. Use codex-cli only for one-shot batch invocations that pre-capture to an -o file. For OpenAI Platform API calls specifically (embeddings, image generation, audio, moderation, batches, files) — not open-ended chat — use openai-cli instead; that path bills OPENAI_API_KEY, this one uses the ChatGPT subscription. Trigger patterns (match any variation): codex / codex-server / codex app server / codex app-server / openai / open ai / OpenAI / chatgpt / chat gpt / ChatGPT / GPT / ask gpt / chat with gpt / gpt session / codex session / streaming chat / multi-turn chat / multi turn chat / second opinion / cross-check / cross check / ai pair programming / another AI / external AI / ask another model / get GPT's take / what does openai think / show me what gpt thinks / structured output from gpt / json schema gpt / resume codex thread / continue codex conversation / continue codex session / /codex-server

日本語の概要は準備中です。原文の説明を表示しています。

hideki5123/agent-skill-set22026年10月21日 更新

hideki5123 のスキルをすべて見る

このスキルの問題を報告する