A GitLab merge request review desk your team opens daily

By General Input

See every open merge request across your GitLab projects in one board, spot who is buried in reviews, and reassign, comment, nudge or merge right from the row.

Integrations

  • GitLab
  • Slack Bot

Type

App

Categories

  • Engineering

Build me an app my engineering team opens every morning: a review desk showing every open merge request across all of our GitLab projects in one table, with actions on every row so we can clear the queue from the board instead of clicking through GitLab project by project.

The main view is a single table of open merge requests. Handlers should call GitLab List User Projects to get every project the connected account belongs to, then call List Project Merge Requests with state opened for each project and combine the results into one list. Each row shows the project name, the merge request title and its iid (the number shown in the GitLab UI), the author, the assigned reviewers, the target branch, whether it is still a draft, how many days it has sat since the last activity (from updated_at), and the latest pipeline result for its source branch, fetched with Get Latest Pipeline against the source branch ref. When someone expands a row, load the full record with Get a Single Merge Request and the recent commits on the source branch with List Commits so they can see what is actually in it.

Add a reviewer load column. Compute it in the handler by grouping the combined open merge request list by reviewer and counting, so each row shows how many other open reviews that reviewer is currently holding. There is no GitLab endpoint for this, it is a group-by over the list we already fetched. Also give the board a reviewer load panel listing every reviewer with their open count, sorted heaviest first, so it is obvious who is sitting on eight reviews and who has none.

Default sort is stalled first: anything with no activity for three or more days floats to the top with a clear stalled marker on the row. Give me a toggle to hide drafts and a My queue view filtered to merge requests where the signed in person is a reviewer. Resolve who that is with Get Authenticated User and match on the GitLab user id. Let me also filter by project and by author.

Every row has actions. Reassign reviewers and take a merge request out of draft with Update a Merge Request (set reviewer_ids for the first, clear the draft state for the second). Leave a comment with Create a Merge Request Note. Merge it with Merge a Merge Request, and surface the result, or the reason GitLab refused, in the app rather than failing silently. Nudge the reviewer in Slack with the Slack Bot Send a Message action, resolving the reviewer to a Slack user with Look Up User by Email where an email is available and otherwise letting me pick the person or channel. The nudge should include the merge request title, its link, and how long it has been waiting.

Each row also gets a Brief this MR button that kicks off a background agent. The agent pulls the merge request with Get a Single Merge Request, the commits on its source branch with List Commits, the latest pipeline for that branch with Get Latest Pipeline, and, when the title or description references an issue, that issue with Get a Single Issue. From those it writes a plain English brief covering what changed, what is blocking the merge request right now (failing pipeline, draft state, no reviewer, stale branch), and where the risk sits. It posts the brief as a comment on the merge request with Create a Merge Request Note, and the app stores and shows the same brief on the row so the team can read it without opening GitLab. Show a running or complete state on the button and keep the latest brief with its timestamp.

Two GitLab details to get right. Project ids in paths must be URL encoded, so a namespace path like my-group/my-project becomes my-group%2Fmy-project. And GitLab returns iid separately from id, where iid is the number people see in the UI and the one the merge request and issue endpoints take. Note that our GitLab operation set has no diff endpoint and no approvals endpoint, so the brief has to be built from the merge request record, its commits, its pipeline and the linked issue rather than from reading a code diff, and approval state is not available to show. Page through the merge request lists so busy teams do not silently lose rows off the bottom.

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