From nanotars-slack
Installs Slack channel plugin using Socket Mode (no public URL). Guides app creation, Socket Mode enablement, bot scopes, event subscriptions, token setup, and channel invites.
npx claudepluginhub terrifiedbug/nanotars-skills --plugin nanotars-slackThis skill uses the workspace's default tool permissions.
This skill installs the Slack channel plugin and guides through authentication.
Installs and configures Telegram as a NanoTars channel plugin with bot setup, authentication, trigger-based control, passive notifications, and agent swarm support.
Connects Slack channel to Claude-Code-Tunnels Orchestrator via Socket Mode. Guides Slack app creation, configuration, credential collection from orchestrator.yaml/ARCHIVE, package checks (slack-bolt/sdk), and verification.
Installs Discord channel plugin for NanoTars/Claude Code, sets up bot with token, and registers text channels/DMs via pairing codes alongside WhatsApp.
Share bugs, ideas, or general feedback.
This skill installs the Slack channel plugin and guides through authentication.
Before installing, verify NanoTars is set up:
[ -d node_modules ] && echo "DEPS: ok" || echo "DEPS: missing"
docker image inspect nanoclaw-agent:latest &>/dev/null && echo "IMAGE: ok" || echo "IMAGE: not built"
if grep -q "ANTHROPIC_API_KEY\|CLAUDE_CODE_OAUTH_TOKEN" .env 2>/dev/null || [ -f "$HOME/.claude/.credentials.json" ]; then echo "AUTH: ok"; else echo "AUTH: missing"; fi
If any check fails, tell the user to run /nanotars-setup first and stop.
Check if plugins/channels/slack/ exists. If not, copy from skill template files:
mkdir -p plugins/channels/slack
cp -r ${CLAUDE_PLUGIN_ROOT}/files/* plugins/channels/slack/
Then install dependencies:
cd plugins/channels/slack && npm install && cd -
Walk the user through creating a Slack App:
connections:write is selectedxapp-... tokenGo to OAuth & Permissions > Bot Token Scopes and add:
Required scopes:
channels:history — Read messages in public channelschannels:read — View channel infochat:write — Send messagesfiles:read — Access shared filesfiles:write — Upload filesgroups:history — Read messages in private channelsgroups:read — View private channel infoim:history — Read DMsim:read — View DM infompim:history — Read group DMsreactions:write — Add emoji reactionsusers:read — View user display namesOptional (recommended for Agent Teams):
chat:write.customize — Send messages with custom display namesGo to Event Subscriptions:
message.channelsmessage.groupsmessage.immessage.mpimxoxb-...)Add both tokens to .env:
SLACK_BOT_TOKEN=xoxb-your-bot-token
SLACK_APP_TOKEN=xapp-your-app-token
Sync to container environment:
cp .env data/env/env
The bot can only see messages in channels it's been invited to.
In each Slack channel where you want the bot:
/invite @YourBotNamenpm run build
Then restart the service (systemd or launchd depending on platform).
Use /nanotars-add-group to register a Slack channel. The plugin provides listAvailableGroups() which shows all channels the bot has been invited to.
Channel IDs look like: slack:C01ABC123 (public), slack:G01ABC123 (private), slack:D01ABC123 (DM)
The bot responds when:
requiresTrigger: false (e.g., main group — responds to all messages)SLACK_BOT_TOKEN and SLACK_APP_TOKEN are set in .envtail -20 logs/nanotars.log | grep -i slack/invite @BotName)groups:history scope is addedchat:write scope is addedAdd the chat:write.customize scope in OAuth & Permissions, then reinstall the app to the workspace.
curl -s -H "Authorization: Bearer $SLACK_BOT_TOKEN" https://slack.com/api/auth.test | python3 -m json.tool
Use /nanotars-remove-plugin for a guided removal — it stops the service, removes the plugin directory, cleans up channel data, and removes registered-group entries via the proper IPC primitives. Manual steps if needed:
nanotars stop/delete-group <folder> for each Slack-wired group you want to remove. Skip this if you want the agent_group rows preserved for re-wiring to a different channel.rm -rf plugins/channels/slack/SLACK_BOT_TOKEN and SLACK_APP_TOKEN from .envnanotars restart — group folders and message history are preserved.