Slack Integration¶
Posts PR updates to channels and sends DMs when action needed.
Installation¶
Install the Slack App¶
-
Visit: Add to Slack
-
Select your Slack workspace and click Allow
Privacy
The Slack app only accesses channels you explicitly invite it to.
Configure Slack Mapping¶
This step connects your Slack workspace to your GitHub organization.
Create Configuration Repository¶
- Go to your GitHub organization:
https://github.com/your-org - Click New repository
- Name it
.codeGROOVE(note the leading dot) - Choose Public or Private - your choice
- Click Create repository
Find Your Slack Team ID¶
You'll need this to validate that notifications go to the correct workspace.
- In Slack, click your workspace name in the top-left
- Select Settings & administration → Workspace settings
- Look at the URL in your browser address bar
- Your Team ID is in the URL (format:
T09CJ7X7T7Y) - Copy this ID
- Visit api.slack.com/methods/auth.test/test
- Click Test Method
- Copy the
team_idfrom the response
Create Slack Configuration¶
In your .codeGROOVE repository, create slack.yaml:
global:
team_id: T09CJ7X7T7Y # Your Slack Team ID from step above
email_domain: company.com # Maps GitHub emails to Slack (alice@company.com → @alice)
channels:
engineering: # Slack channel name (no # symbol)
repos:
- api-server # GitHub repository name
Replace the team_id, email_domain, channel, and repo with your values.
global:
team_id: T09CJ7X7T7Y
email_domain: company.com
channels:
engineering:
repos:
- api-server
- mobile-app
general: # Catch-all for unmapped repos
repos:
- "*"
Auto-discovery: Repos automatically map to same-named channels (e.g., backend repo → #backend channel). Only configure explicitly to override.
Commit and Push Configuration¶
- Add the file:
git add slack.yaml - Commit:
git commit -m "Configure reviewGOOSE Slack integration" - Push:
git push
The app will automatically detect your configuration within 5 minutes.
Invite Bot to Channels¶
Now invite the bot to the Slack channels where you want PR notifications:
- Open the Slack channel (e.g.,
#engineeringor#test-repo) - Type and send:
/invite @goose - Repeat for each channel you want to receive notifications
Critical Step
The bot can only post to channels it's been invited to. Even with perfect configuration, you won't see messages until you invite the bot to the channel.
Evaluating?
Create a dedicated test channel like #goose-test to keep evaluation separate from your team's regular channels.
Verify Slack Integration¶
Create a test PR and confirm it appears in your Slack channel within seconds with status emoji updates.
Advanced Configuration¶
Auto-Discovery¶
Repos automatically map to same-named channels:
api-serverrepo →#api-serverchannelmobile-apprepo →#mobile-appchannel
No config required.
Custom Mapping¶
To customize channel mapping, create a repository named .codeGROOVE in your GitHub organization, then add a file named slack.yaml to it:
Steps:
1. Create a new repository in your organization: .codeGROOVE (note the leading dot)
2. Add a file named slack.yaml with the following content:
global:
slack: yourworkspace.slack.com
channels:
engineering:
repos:
- api-server
- mobile-app
frontend:
repos:
- website
all-repos:
repos:
- "*" # Wildcard
# Mute auto-discovered channel
internal-tools:
mute: true
Precedence: Explicit mapping > Muted channel > Auto-discovery > Wildcard
After editing slack.yaml:
- Validate YAML syntax at yamllint.com before committing
- Commit and push changes to the
.codeGROOVErepository - Changes take effect automatically (under 1 minute)
- Create a test PR to verify the configuration
Notification Timing¶
global:
slack: yourworkspace.slack.com
reminder_dm_delay: 65 # Minutes before DM if user in channel (0 = immediate)
daily_reminders: true # 8-9am local time
Default: If user is in the channel where PR posted, DM delayed 65 minutes. If not in channel, immediate DM.
Status Emojis¶
- 🪿 reviewGOOSE prefix
- ✅ Approved
- 🔄 Changes requested
- 👀 Needs review
- 🔁 Needs re-review
- ❌ CI failed
- ✔️ CI passed
- ⚠️ Merge conflict
- 🎉 Merged
Commands¶
/goose dashboard - Open dashboard
/goose help - Show help
Security¶
Slack OAuth scopes:
channels:*,groups:*- Read channels, detect if user saw notificationchat:write*- Post messagesim:write- Send DMsusers:read.email- Match GitHub ↔ Slack users by emailteam:read- Workspace verification
User emails hashed for matching, never stored plaintext. Details: Security
Troubleshooting¶
No channel messages: Verify app installed (Slack → Apps → Manage). Check slack.yaml syntax in your .codeGROOVE repository. Invite bot: /invite @goose. Verify workspace URL correct.
No DMs: Check email match (GitHub email = Slack email). Verify DM delay (default 65 min if in channel). Test: /goose help.
Too many notifications: Increase reminder_dm_delay: 120 or disable daily_reminders: false. Mute noisy repos.
Wrong channel: Check slack.yaml in your .codeGROOVE repository for typos. Review precedence rules above.