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.

Agentic Task
JiraGitHubSlackEngineeringDaily DigestsAI Reports

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?
No. As long as you can log into Jira and Slack, the workflow uses your normal accounts to read sprint data and post the digest.
Will it work if my team uses GitHub Enterprise or private repos?
Yes, as long as the GitHub account you connect has access to those repositories.
What if someone has Jira tickets but no pull requests, or vice versa?
The summary blends both sources per person. People with activity in either tool get a section, and people with no activity in either are skipped.
How do you map a Jira assignee to a GitHub username?
You can give the agent a small lookup, for example a list of names mapped to GitHub handles, and it will use that to pull the right pull requests for each person.
Can I change which Slack channel it posts to later?
Yes. The channel is a setting on the workflow, so you can swap it any time without rebuilding anything.

Stop writing standup updates by hand.

Connect Jira, GitHub, and Slack once, and Geni posts a per-engineer digest every weekday at 8:30am.