Slack Daily Summary Setup
A scheduled GitHub Actions workflow posts daily end-of-day summaries of changes shipped to the #platform Slack channel.
What It Does
Every weekday at 6 PM ET, the workflow:
- Fetches PRs merged to
brainforge-platformin the last 24 hours - Formats a summary with PR titles, authors, and links
- Posts to
#platform(channel ID:C08CRQJ636X) via the Slack API
Required Credentials
GitHub Secret: SLACK_BOT_TOKEN
This is a Slack bot token with chat:write scope, used to post messages as the Brainforge assistant.
Location in 1Password:
- Vault:
Brainforge AI Team - Item name: Look for the Slack bot token associated with the brainforge-assistant app
Adding to GitHub:
- Go to Repository Settings > Secrets and variables > Actions
- Click “New repository secret”
- Name:
SLACK_BOT_TOKEN - Value: Paste the token from 1Password (starts with
xoxb-)
Workflow Details
| Property | Value |
|---|---|
| File | .github/workflows/daily-platform-summary.yml |
| Schedule | 0 23 * * 1-5 (6 PM ET, Monday-Friday) |
| Manual trigger | workflow_dispatch (for testing) |
| Channel | C08CRQJ636X (#platform) |
Testing
Manual Test
# In GitHub UI:
# Actions > Daily Platform EOD Summary > Run workflowVerify Token Permissions
curl -X POST https://slack.com/api/chat.postMessage \
-H "Authorization: Bearer YOUR_TEST_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"channel": "C08CRQJ636X",
"text": "Test message from CLI"
}'Troubleshooting
| Issue | Fix |
|---|---|
| ”channel_not_found” | Bot is not in #platform — invite it to the channel |
| ”not_allowed_token_type” | Token missing chat:write scope — regenerate with correct scope |
| ”missing_scope” | Reinstall the Slack app with updated scopes |
| No PRs showing | Check GITHUB_TOKEN permissions; must have PR read access |
Related
- Workflow:
.github/workflows/daily-platform-summary.yml - Slack config:
apps/dagster-pipelines/pipelines/slack_data_transformation/slack_data_transformation_config.yaml