Slack battery
Rules for all 19 claude.ai Slack connector tools, with audiences from Slack channels, users, and groups.
The Slack battery covers all 19 tools in the claude.ai Slack connector. A read of a conversation is labelled with that conversation's members; a message into a conversation requires trusted data its members may see.
Tool behavior#
- Reading a channel, a thread, a channel's members, or a message's reactions returns data read by that conversation's members:
delta = { audience = ["@slack:channel/$channel_id"] }reads the channel id from the call, and the battery's audience source answers who reads it: every full member for a public channel, since any of them may join it, and the members Slack reports for a private channel, group DM, or DM. A DM's history stays with its two ends. OpenAPPA keeps the data's existing trust level. - Canvases, files, profiles, and public search return data, the built-in audience of the organization's members. A search across private conversations returns data only the viewer () is known to read.
- Adding a reaction or saving a personal draft requires trusted data and no approval.
- Sending or scheduling a message requires trusted data that every member of the target conversation may see (
audience = { contains = ["@slack:channel/$channel_id"] }): a summary of one channel can go back to that channel and not to a wider one. Canvases and new channels require trusted data that reaches . Agents post autonomously while requester secrets () stay out.
To change how one tool or channel works, add a more specific rule to the root config. Root rules run before battery rules.
Files#
slack/
|-- README.md
|-- appa.toml
|-- audience-source.py
`-- test_audience_source.py
The audience source can build , , Slack user-group, and per-conversation audiences. The battery binds it; map and onto it in the root config and pass its token through APPA_PROVIDER_SLACK_TOKEN.
Its tests use saved Slack API responses and check the id classification. They do not call Slack.