A portable, agent-friendly Slack CLI. It's plain bash and leans only on tools
you almost certainly already have (jq and curl), so there's no MCP server,
language runtime, or SDK to install; drop the scripts anywhere and run.
Each command is one intention that composes several Slack Web API calls into one fully-resolved XML payload — IDs become names, mentions and links decoded, reactions and files folded in, thread sizes shown, timestamps humanized — so an agent gets the whole picture in one call, with no follow-up ID-chasing.
$ slacker.sh read-channel '#general' --limit 3
<channel name="general" id="C0743D6UF">
<message author="Alice Lee" time="2026-06-14 10:02" replies="2">
<text>shipping the release today, thanks @Bob and #release-mgmt</text>
<reactions><reaction emoji="rocket" count="2" by="Bob, Carol"/></reactions>
</message>
</channel>curl -fsSL https://raw.githubusercontent.com/CJHwong/slacker.sh/main/install.sh | bashThis installs the skill to ~/.claude/skills/slacker-sh (it fetches the repo and
copies the payload). Or clone and run it yourself:
git clone https://github.com/CJHwong/slacker.sh.git && ./slacker.sh/install.sh.
Then add a Slack user token (xoxp-…) — follow the
setup guide
to create the app and get one:
echo 'SLACKER_SH_TOKEN=xoxp-…' > ~/.claude/skills/slacker-sh/.env
~/.claude/skills/slacker-sh/slacker.sh whois @yourname # verify -> a <user> recordRequirements: bash, jq, curl (checked at startup). To call it as plain
slacker.sh, symlink it onto your PATH. The installed copy is self-contained, so
you can delete the clone afterward.
Re-run the installer — it reinstalls the latest:
curl -fsSL https://raw.githubusercontent.com/CJHwong/slacker.sh/main/install.sh | bash- Commands, output markers, gotchas — SKILL.md. The authoritative reference; it's also what the agent reads.
- Create the Slack app — reference/setup.md: manifest, scopes, token.
- Design rationale & limitations — .dev/PLAN.md.
| Env var | Effect |
|---|---|
SLACKER_SH_TOKEN |
the xoxp-… user token (required) |
SLACKER_SH_SIGNATURE |
sent-message footer (on by default), shown as a small-gray context line. Set empty / 0 / off to remove it, or a string to use your own footer text instead of the default Sent using github.com/CJHwong/slacker.sh |
SLACKER_CACHE_TTL |
users/channels cache TTL, seconds (default 3600) |
SLACKER_CONCURRENCY |
parallel thread fetches for --threads (default 8) |
SLACKER_SH_NO_UPDATE_CHECK |
set 1 to silence the update notice |
SLACKER_SH |
path to slacker.sh, if not invoking it by full path |
The repo root is the skill (what install.sh ships); .dev/ is dev-only.
./.dev/tests/run.sh # offline unit + live round-trips (self-DM, cleaned up)
SLACKER_SKIP_LIVE=1 ./.dev/tests/run.sh # unit only (no token)
./.dev/tests/unit.sh # just the offline unit tests
shellcheck -x slacker.sh lib/*.sh actions/*.sh install.sh .dev/tests/*.sh