Slack bot that tracks GitHub pull requests and notifies reviewers when it's their turn. Part of the https://codegroove.dev/ ecosystem of developer acceleration tools.
Ready to get started? Install the Slack app and configure your repositories:
→ Setup Guide - Complete setup instructions, emoji meanings, and notification settings
- Creates Slack threads for new PRs with status emojis
- Smart notifications: Delays DMs if user already notified in channel
- Native Slack app home dashboard
- Channel auto-discovery: repos automatically map to same-named channels
- Configurable notification settings via YAML in your repos
- Multi-org and multi-workspace support
- Daily reminder system with timezone detection
- Reliable delivery: Persistent state and cross-instance deduplication
Want to run your own instance? See the comprehensive deployment guide:
→ Deployment Guide - Slack app setup, OAuth credentials, and Cloud Run deployment
Quick start:
git clone https://github.com/codeGROOVE-dev/slacker.git
cd slacker
make build
# Single-workspace (self-hosting for your org):
make deploy-server
# Multi-workspace (SaaS/Marketplace):
make deployNote: make deploy deploys both server and registrar for multi-workspace support. Use make deploy-server for single-workspace installations.
Your Slack app needs these OAuth scopes:
Bot Token Scopes:
app_mentions:read- Read mentions of the appchannels:history- View messages in public channelschannels:read- View basic information about public channelschat:write- Send messages as the botchat:write.public- Send messages to channels the bot isn't a member ofcommands- Add shortcuts and/or slash commandsim:history- View messages in direct messagesim:read- View basic information about direct messagesim:write- Start direct messages with peoplereactions:write- Add and edit emoji reactionsteam:read- View workspace name and domain (required for workspace validation)users:read- View people in the workspace
Enable these events:
app_home_opened- User opened the app homeapp_mention- App was mentionedmessage.channels- Message posted to channelmessage.im- Message posted to direct message
We HIGHLY recommend the use of a secret manager instead of environment variables for credentials.
For local development, set environment variables:
SLACK_BOT_TOKEN=xoxb-...
SLACK_SIGNING_SECRET=...
GITHUB_APP_ID=...
GITHUB_PRIVATE_KEY=...
GITHUB_INSTALLATION_ID=...
# Optional: Enable Cloud Datastore for multi-instance coordination
# DATASTORE=slacker # Database ID to use (omit for JSON-only mode)Configure repos by adding .codeGROOVE/slack.yaml:
global:
prefix: ":postal_horn:"
slack: myorg-workspace.slack.com
reminder_dm_delay: 65 # Minutes to wait before DMing users tagged in channel (default: 65, 0 = disabled)
daily_reminders: true # Daily reminders between 8-9am local time (default: true)
channels:
all-repos:
repos:
- "*"
engineering:
repos:
- myrepo
- anotherepo
# Mute auto-discovered channel for goose repo
goose:
mute: true
# Override auto-discovery - send myrepo to announcements instead of #myrepo
announcements:
repos:
- myrepoBy default, repos automatically map to channels with the same name:
- Repository
goose→ Channel#goose - Repository
my-service→ Channel#my-service - Repository
api-server→ Channel#api-server
Override auto-discovery by:
- Explicit mapping: Add repo to a channel's
reposlist - Muting: Set
mute: truefor the auto-discovered channel name - Wildcard: Use
"*"in a channel to catch all repos
Slack commands:
/r2r dashboard- View your PR dashboard/r2r help- Show help
The dashboard is also available in the app's Home tab or at https://dash.ready-to-review.dev/
- Channel notifications: If a user is tagged in a channel they're in, DMs are delayed by
reminder_dm_delay(default: 65 minutes) - Immediate DMs: If a user isn't in the notification channel, they get immediate DMs
- Daily reminders: Sent between 8-9am local time if enabled and >8 hours since last notification
- Anti-spam: Rate limited to 1 DM per minute per user
- Deduplication: Cross-instance coordination prevents duplicate messages during deployments
make fmt # Format code
make lint # Run linters
make test # Run tests
make build # Build binary- sprinkler - WebSocket hub for GitHub webhooks
- turnclient - PR state analysis
- Setup Guide - End-user setup for SaaS version
- Deployment Guide - Self-hosting and OAuth configuration
- Architecture - Code structure and design decisions
- Contributing - Development guidelines
