Daily Slack digest of open GitLab merge requests

By General Input

Get a prioritized 9am summary in Slack of which GitLab merge requests are ready to ship, waiting on review, or stalled, with reviewers tagged so nudges land.

Integrations

  • GitLab
  • Slack Bot

Type

Agentic Task

Categories

  • Engineering
  • Operations

Every weekday at 9am, post a prioritized digest of open GitLab merge requests that need attention to a Slack engineering channel.

This is a recurring agent-based workflow on a cron trigger. The user configures the list of GitLab projects to watch and the Slack channel to post into.

On each run, the agent should:

1. For each configured GitLab project, call the GitLab List Project Merge Requests operation with state=opened to get every currently open merge request.

2. Filter out drafts (work_in_progress / draft flag) and merge requests authored by known dependency bots (for example dependabot, renovate, gitlab-bot). These should never appear in the digest.

3. For each remaining candidate, call GitLab Get a Single Merge Request to pull last_activity_at, assignee, reviewers, draft flag, approvals, and the head pipeline reference. If a richer pipeline status is needed, call GitLab Get Latest Pipeline for that project and ref to confirm whether the pipeline is green.

4. Group merge requests into three buckets:

- Ready to merge: approved, latest pipeline is success, not a draft.

- Waiting on review longer than 24h: has assigned reviewers and no activity in the last 24 hours.

- Stalled, no movement in 5+ days: any open merge request with no activity for 5 or more days, regardless of approval state.

A merge request should only appear in one bucket. Ready to merge wins over waiting on review, which wins over stalled.

5. Compose one Slack message with three sections, one per bucket, in the order above. For each merge request show: title, author, days idle since last activity, and a direct link to the merge request in GitLab. Keep one line per merge request. In the waiting on review bucket, @mention the assigned reviewer so they actually get a notification.

6. Keep the digest under ~15 items total. If there are more candidates, trim the lowest priority entries first (oldest stalled items beat low-signal waiting items, etc.) and add a short trailing line like "+ 7 more open MRs not shown".

7. Send the final message to the configured Slack channel using the Slack Bot Send a Message operation. Use Slack mrkdwn formatting (single asterisks for bold, <url|text> link syntax). If there are zero items across all three buckets, post a short "No open MRs need attention today" message instead of skipping the run.

Use the Slack Bot integration (slackbot) for posting, not the user-token Slack integration, because the digest should be attributed to the workspace bot and the channel may not include the connecting user.

Related prompts

Explore more prompts
A brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasonLiveChat coverage board for planning next week's shiftsPhone routing control panel for LiveKit voice agentsLinkedIn Ads budget pacing dashboard for every client accountGive your team Looker numbers without buying more seatsPause marketing emails to escalated customers, then restore them