Automates Jira ticket workflows from Slack message reactions.
Because manually creating Jira tickets is a crime against productivity, and The Scrumfather handles crime.
I'll spare you the long description of what this beautiful piece of automation does. Basically what it prevents is your PM doing this to you.
Just react to a bug report on Slack, then The Scrumfather will handle the rest.
Slack Workspace
│
│ reaction_added
▼
The Scrumfather (Gin API)
│
├── Verifies Slack signature
├── Enqueues job to Redis
│
▼
Async Worker
│
├── Reads original message
├── Checks for duplicates (no double-dipping)
├── Maps emoji → Jira config
├── Resolves users by email (same org, same family)
├── Creates Jira ticket
├── Links Slack conversation
└── Notifies the chosen one
│
▼
Jira Cloud
# Clone
git clone https://github.com/whoisnjoguu/the-scrumfather.git
cd the-scrumfather
# Set up your environment
cp .env.example .env
# Fill in credentials (see below)
# Start the operation
docker compose up --build -d
# Expose locally for Slack
ngrok http 8080
# Seed your emoji mappings
curl.exe -X POST http://localhost:8080/admin/emoji-mappings ^
-H "Content-Type: application/json" ^
-d '{"emoji":"bug","issueType":"Bug","priority":"Medium","assignTo":""}'
| Variable |
Description |
SLACK_BOT_TOKEN |
Your bot's OAuth token (xoxb-...) |
SLACK_SIGNING_SECRET |
From Slack app Basic Information |
JIRA_BASE_URL |
https://yourorg.atlassian.net |
JIRA_EMAIL |
Service account email |
JIRA_API_TOKEN |
Atlassian API token |
JIRA_PROJECT_KEY |
e.g. ENG, MSFT |
NOTIFICATION_MODE |
thread, dm, or silent |
| Mode |
Behavior |
thread |
Replies in the Slack thread. |
dm |
Privately messages the reactor. |
silent |
Creates the ticket with zero evidence. |
| Method |
Path |
Description |
POST |
/slack/events |
Slack webhook (signature-verified) |
GET |
/health |
Health check |
POST |
/admin/emoji-mappings |
Create/update emoji → Jira mapping |
GET |
/admin/emoji-mappings |
List all mappings |
- Create app at https://api.slack.com/apps
- Add Bot Token Scopes:
channels:history, channels:read, chat:write, reactions:read, users:read, users:read.email, im:write
- Enable Event Subscriptions →
reaction_added
- Install to workspace
- Invite bot to channels:
/invite @TheScrumfather
- You do not talk about manually creating Jira tickets.
- You DO NOT talk about manually creating Jira tickets.
- If someone reacts with a mapped emoji, a ticket gets made. No exceptions.
- One reaction, one ticket. The Scrumfather doesn't stutter.
- The Scrumfather sees all. The Scrumfather knows all. The Scrumfather assigns accordingly.