Daily engineering standup digest in Slack
Every weekday at 8:30am, post a per-engineer standup summary to Slack that combines active Jira sprint work with each person's GitHub pull requests.
Build me an agent workflow that posts a daily engineering standup digest in Slack every weekday at 8:30am. Trigger it on a cron schedule (Mon to Fri, 8:30am in our team's timezone).
Inputs I will configure: the Jira board ID for our active sprint, the list of GitHub repos owned by the team (owner/name pairs), the destination Slack channel, and a small mapping of team members from Jira display name or accountId to GitHub username.
Step 1 — Pull the sprint from Jira. Use Get Board Sprints with state=active to find the current sprint for the configured board, then use Get Sprint Issues to load every issue in that sprint. For each issue grab the summary, status, story points, assignee, and the issue key. For any issue that looks at-risk (status not Done and updated recently, or with words like 'blocked', 'blocker', 'waiting on' in a recent comment), call Get Comments on that issue and pull the last one or two comments so we can quote a real blocker. Group the resulting issues by assignee.
Step 2 — Pull pull requests from GitHub. For each configured repo, use List Pull Requests to fetch open PRs (state=open) and recently merged PRs (state=closed, sorted by updated desc, filtered to those merged in the last 24 hours). For each PR keep the title, number, URL, author login, draft flag, mergeable state, requested reviewers, and merged_at. Then bucket PRs by author login.
Step 3 — Join Jira assignees with GitHub authors using the team mapping I provide so each engineer has a single bundle of {sprint issues, open PRs, merged PRs, blocker comments}.
Step 4 — For each person with any activity, have the agent write a short standup in this shape: a one-line 'Yesterday' (merged PRs and Jira issues moved to Done), a one-line 'Today' (in-progress sprint issues and open PRs), and a 'Blockers' line only when there is a real signal (a blocker comment, a PR stuck waiting on review, an issue with no movement). Keep each person to roughly three to five lines. Skip anyone with zero sprint issues and zero PR activity rather than padding the report with 'no updates'.
Step 5 — Assemble one Slack message: a header like 'Daily standup, {date}' followed by a section per person. Use Slack mrkdwn formatting, link Jira issue keys to their Atlassian URLs and PR numbers to their GitHub URLs. Post it to the configured channel using Send a Message in Slack. If the active sprint or both data sources come back empty, post a single short note like 'No sprint activity to report today' instead of a long empty digest.
Be defensive about partial failures: if GitHub fails but Jira works, still post the Jira-only digest with a note that PR data was unavailable, and vice versa. Do not retry the whole run; just degrade gracefully.
Additional information
What does this prompt do?
- Pulls the active sprint from your Jira board and groups issues by assignee with status, story points, and any blocker notes from comments.
- Pulls each engineer's open and recently merged GitHub pull requests across your team's repos.
- Writes a short per-person standup that calls out yesterday's progress, today's plan, and likely blockers.
- Posts the digest to your engineering Slack channel and quietly skips anyone with no activity instead of padding the report.
What do I need to use this?
- A Jira account with access to the engineering board you want to summarize
- A GitHub account with access to your team's repositories
- A Slack workspace and the channel you want the standup posted in
- The names of the GitHub repos that match your team and a way to map Jira assignees to GitHub usernames
How can I customize it?
- Change the timing or skip days, for example post at 9am or only on Tuesdays and Thursdays.
- Swap which Slack channel receives the digest, or send each person their own DM instead of one team post.
- Adjust which signals count as a blocker, like comments tagged with a keyword, status flags, or stale pull requests waiting on review.
Frequently asked questions
Do I need a separate standup bot or app installed in Jira?
Will it work if my team uses GitHub Enterprise or private repos?
What if someone has Jira tickets but no pull requests, or vice versa?
How do you map a Jira assignee to a GitHub username?
Can I change which Slack channel it posts to later?
Stop writing standup updates by hand.
Connect Jira, GitHub, and Slack once, and Geni posts a per-engineer digest every weekday at 8:30am.