Sigao
A surveyor's level on a wooden tripod overlooking a bright construction site, teal steel framing rising beside an amber crane under a clear sky.
All posts
Practice·9 min read

Ten agent prompts to find your delivery bottleneck this week

Where is software delivery actually slow? The evidence is already in your repos, tickets, CI, and Slack. Give a coding agent read-only access, paste these ten prompts, and compare against the benchmarks instead of guessing.

By Luke Colburn · Senior Firm Lead · Platform Engineering

You find a delivery constraint, the bottleneck the rest of the system waits on, by measuring where work waits, not where people are busy. The evidence is already in your pull requests, tickets, CI runs, and chat threads; the only reason nobody has looked is that joining them used to be somebody's lost afternoon. A coding agent with read-only access can do the join in an afternoon. Below are the ten prompts we'd paste, roughly in order, with a benchmark to compare against where one exists and what to do if the answer is bad. Every "I can't compute that" the agent gives back is a finding too: a place your delivery system is invisible to the people running it.

Wire the agent up: read-only, one stream, 90 days

Pick one product stream. Give a coding agent (Claude Code, Codex, whatever your team runs) read-only access to four things: version control (PRs, reviews, merge and deploy events), tickets (Jira, Linear, Azure Boards), CI/CD run history, and the chat channels where work gets unstuck. The plumbing is official now, over MCP (Model Context Protocol) servers: GitHub's MCP server, Atlassian's Rovo MCP server, and Slack's MCP server, generally available since February 2026. Where there's no MCP server, the vendor CLI works; gh run list, with a generous limit, gets you a year of Actions history. Scoped token, read-only, and show your security team the scopes before they ask. Their next question is where the data goes: run the agent under whatever AI data agreement your organization already has (the enterprise tier of the tool you use, not a personal account), point it only at the channels you name, and where a works council or a monitoring policy applies, ask first.

Which plumbing you need depends on the stack you run. The list below is the short one we reach for: the vendor's own CLI where one exists, the vendor's own MCP server where one exists, and a note on the read-only path for each. If your tool isn't here, the test is the same: can the agent list, search, and read history without a person in the loop? Then it's enough.

The plumbing, by system

CLI MCP server

Version control

Tickets

CI/CD

Chat

  • Slack

    Generally available since February 2026. Grant only the search:read scopes (they are by conversation type, not per channel) and have the agent search the channels you name; that is all Prompt 9 needs.

  • Microsoft Teams

    Microsoft retired its Graph CLI (mgc) in August 2026. m365 teams message list from the community-maintained CLI for Microsoft 365 is the closest replacement: register your own Entra app with only delegated ChannelMessage.Read.All rather than running m365 setup, which grants far more. Microsoft's own answer is the Graph PowerShell SDK (Get-MgTeamChannelMessage). The Teams MCP server in Agent 365 is still preview, Copilot-licensed, and read/write.

The agent

Claude Code, Codex

Register the servers once, then paste the prompts. A skill that wraps the CLIs above (auth, pagination, JSON output) is worth writing after the first run so the second one is a command.

Vendor-official tools where they exist, current as of August 2026. Every one of them supports a read-only token or scope; use it. The agent counts and reports, it does not change anything.

Ninety days is the window for the queue prompts: long enough to see a pattern, short enough that you're measuring the team you still have. The two trend prompts, 5 and 6, go back further, because a drift needs a baseline. Every prompt ends by telling the agent to show its work, because it will produce a confident number from messy data. Before you forward anything, recompute one number by hand.

Ten prompts, five places a delivery system hides

The queues3 prompts

Where work actually waits: the oldest PR, your flow efficiency to the nearest 5%, the longest queue between idea and production.

The break test1 prompt

If code generation doubled tomorrow, what breaks first? Whatever you pictured is the constraint.

Controls & batches3 prompts

Approvals that catch nothing, diff sizes drifting up, merged-but-unreleased inventory piling silently.

WIP and environments2 prompts

Little's Law on today's WIP against observed lead time, and how long people wait for an environment or a CI run.

Put it together1 prompt

Backlog joined to the PR pipeline: every stage's process time against its lead time, drawn as a first-draft value stream map with the constraint marked.

All ten run against tooling you already have, through an agent with read-only access. Before you forward anything, recompute one number by hand.

Prompts 1–3: where work waits

Put your names in once

Every prompt below rewrites itself with these values and copies ready to paste. Leave one blank and the agent sees the [placeholder] instead.

Nothing filled in yet; prompts copy with placeholders.

Oldest open PRs and the pickup tail

List every open pull request in [repos], sorted by age. For the ten oldest: when it was opened, when it last had activity, which queue it's waiting in (review, CI, an environment, a decision), and, from review comments and linked chat threads, why it's still open. Then give me p50 and p75 pickup time (PR opened to first review activity) for everything merged in the last 90 days, split by whether an agent authored or substantially assisted the PR, if commit metadata, co-author trailers, or the PR template lets you tell. Don't give me the average; I want the tail. Show your queries, the sample size, and anything you estimated.

Sample return · Prompt 01

Illustrative composite · acme/api, acme/web · last 90 days

Ten oldest open PRs, then the pickup tail split by authorship

PRAgeQueueWhy it’s still open
#412734dReview612-line agent refactor; two reviewers assigned, neither has opened it
#421121dDecisionWaiting on product call about the feature flag (thread stalled Mar 12)
#430216dEnvironmentStaging slot booked through the 22nd
#431812dReviewOne approval; CODEOWNERS second approval pending
#43559dCIFlaky e2e suite; re-run six times, never green twice in a row
… five more, ages 8d to 4d

Pickup time, PR opened → first review activity

Elite < 1h

Good 1–4h

Fair 5–16h

Needs focus > 16h

p50

p75

work › gh pr list --state open --json number,createdAt,updatedAt,reviewRequests + review-comment scan; merged n = 212; assisted flagged by Co-authored-by trailer or PR template checkbox (61 of 212); estimated: none.

The oldest PR is the constraint waving at you: three of the five are review queues, and the assisted lane’s p75 sits deep in LinearB’s needs focus band while the unassisted lane is merely fair. Bands are the 2026 LinearB tiers; the dots are this team.

The age of the oldest item in a queue is the constraint waving at you. Not the average, the oldest: averages hide the aging tail, and the tail is where lead time lives. Meta found the same in its own review data: median time-in-review was a few hours, but the slowest 25% of diffs could sit an extra day, and that p75 was what predicted how unhappy engineers were with review. Benchmark: LinearB's 2026 report across 8.1 million PRs puts p75 pickup under an hour for the top tier, 1 to 4 hours for good, 5 to 16 for fair, and past 16 hours as needs focus. Same dataset: agent-written PRs waited 5.3 times longer for pickup, and only 32.7% merged within 30 days versus 84.5% of unassisted ones. If your split looks like that, you already know which lane is queuing.

Flow efficiency of the last 20 tickets

Take the last 20 tickets that reached production in [project]. Reconstruct each timeline: ticket created, first commit, PR opened, first review, approval, merge, production deploy. Estimate touch time (someone actively working) versus waiting. Give me flow efficiency for the set as one number, to the nearest 5%, with the per-ticket breakdown, and say which leg you estimated. Show your queries, the sample size, and anything you estimated.

Flow efficiency is touch time divided by total lead time. David J. Anderson has said the firms he sees run at 5% to 15%, most cases near the bottom of a 1% to 25% range; the one published multi-team dataset we know of, 63 teams at ASOS, averaged 35%. Touch time is the estimated leg, so read your number as an order of magnitude, not a score: under 20% and most of the lead time is queue, and Prompts 3 and 9 tell you which one. Either way, most of a ticket's life is waiting. If the agent can't build the timeline because tickets aren't linked to PRs or deploys aren't logged anywhere it can read, that is the finding: you're managing a pipeline nobody can see.

The longest queue, by name

Across those same 20 tickets, name the single stage where work waited longest, in calendar days summed across all of them. Name the queue (waiting for review, for CI, for an environment, for a decision), not a person or a team. Show your queries, the sample size, and anything you estimated.

Sample return · Prompt 02–03

Illustrative composite · PLAT · last 20 tickets to production

Twenty tickets reconstructed: 312 calendar days, ≈ 48 touched, flow efficiency ≈ 15%

Touch (someone working)

Waiting for review

Waiting for CI

Waiting for an environment

Waiting for a decision

Waiting for the release train

Prompt 3 · waiting days summed across all twenty, by queue

Waiting for review
118d
Waiting for the release train
46d
Waiting for an environment
41d
Waiting for a decision
37d
Waiting for CI
22d

work › Jira changelog + linked PR events + deploy webhook log; n = 20 (3 tickets had no linked PR, matched by branch name); estimated: touch time, from commit and review-comment timestamps.

Prompt 2 returns the number and the per-ticket strips; Prompt 3 sums the amber and names the winner. Fifteen percent lands where Anderson’s practitioners report, so most of the lead time is queue, and the queue with the most days has a name: review, not a team.

Queues are properties of the system; the moment the answer is a team name, the exercise turns political and the data stops being honest. An agent will hand you a name if the prompt allows one. Don't let it. Expect review to win: Faros AI's 2026 telemetry across 22,000 developers found median time to first review up 156.6% and median time in review up 441.5% as teams moved from their lowest- to their highest-AI-adoption quarters. More arriving, same people reading it.

Prompt 4: the break test

The break test

Assume PR volume in [repos] doubles next month with the same reviewers, test environments, and release process. Using the last 90 days of data, model where the queue grows first and how fast. State your assumptions about reviewer capacity and CI concurrency. Then, given that our AI tooling today is [ai tooling], tell me whether that spend sits upstream or downstream of that point. Show your queries, the sample size, and anything you estimated.

Sample return · Prompt 04

Illustrative composite · acme/api, acme/web · modelled on last 90 days

At 2× PR volume with the same people, review breaks first; environments follow

StageCapacityArrivals nowAt 2×Verdict
Code review≈ 48 PRs/wk38/wk76/wkBreaks in week 1 · queue grows ≈ 28 PRs/wk
Staging environments2 slots ≈ 14 bookings/wk10/wk20/wkBreaks by week 3 · queue grows ≈ 6/wk
CI6 runners ≈ 900 runs/wk310/wk620/wkHolds · flakiness, not capacity
Weekly release trainunbounded batch1/wk1/wkHolds · but each batch doubles

work › Arrivals from merged + open PR counts by week; reviewer capacity assumed 4 regular reviewers × ~3h/day × ~25 min per PR incl. context; CI concurrency from workflow config; estimated: review minutes per PR.

The agent’s last line is the one to read twice: “Your Copilot and Claude Code seats sit upstream of the break point. Doubling generation without adding review capacity grows the review queue by roughly 28 PRs a week.” If this disagrees with the queue Prompt 3 named, spend the hour.

Whatever it names is the candidate; if it disagrees with the queue Prompt 3 named, that disagreement is worth an hour of your time. If your AI spend sits upstream of the break point, it's making the pile in front of the break grow faster. DORA's 2024 report estimated a 7.2% drop in delivery stability for every 25% increase in AI adoption; and, announcing its 2025 report, DORA put the mechanism plainly: acceleration "can expose weaknesses downstream." The break test finds yours before volume does.

Prompts 5–7: gates, batch size, inventory

Gates that catch nothing

Pull a year of merged PRs in [repos]. For every required approval or gate (CODEOWNERS, security review, change advisory board, anything that blocks a merge), count how many times it caught something: a requested change, a block, a rejection. Rank gates by catches per hundred approvals, report median hours each gate held a PR, and flag any that caught nothing in 12 months. Show your queries, the sample size, and anything you estimated.

Sample return · Prompt 05

Illustrative composite · acme/api, acme/web · 12 months, 1,860 merged PRs

Five gates ranked by catches per hundred approvals; one caught nothing in twelve months

GateApprovalsCatchesPer 100Median hold
Peer review (first approver)1,86041222.14.1h
CODEOWNERS second approval (platform)640375.819h
Security review label21294.22.3d
Design sign-off (UI changes)9611.03.1d
Change advisory board (prod releases)caught nothing4800.06.5d

work › Required-review rules from branch protection + CODEOWNERS; catches = CHANGES_REQUESTED, dismissed approvals, CAB rejections in the release channel; n = 1,860; estimated: CAB hold, from ticket timestamps.

The bottom row is a queue wearing a control’s badge: 48 approvals, zero catches, six and a half days each. Retire it or make it advisory; if compliance says it stays, make it asynchronous so it stops holding the merge.

An approval that hasn't caught anything in a year is not a control; it's a queue wearing a control's badge. DORA has said this since 2019: teams needing sign-off from an external body like a CAB were 2.6 times more likely to be low performers, with no evidence the extra approval lowered change failure rate. Quick win: retire the gate that caught nothing, or make it advisory; if it's a compliance requirement you can't drop, make it asynchronous so it stops holding the merge.

Batch size and unreviewed merges

Compute median and p75 lines changed per merged PR in [repos] by month for the last 18 months. Is it rising? For the last six months, split by whether an agent authored or assisted, if commit metadata, co-author trailers, or the PR template lets you tell. Also report the share of PRs merged with no review comments at all. Show your queries, the sample size, and anything you estimated.

Sample return · Prompt 06

Illustrative composite · acme/api, acme/web · 18 months

p75 lines changed per merged PR, by month: 138 → 412 in eighteen months

18 months ago · p75 138last month · p75 412

Unassisted p75

162

last 6 months

Assisted p75

438

last 6 months

No-comment merges

11% → 24%

18 months ago → now

Google median

24

lines, for reference

work › gh pr list --state merged --json additions,deletions,mergedAt,comments; n = 2,740; assisted flagged for the last 6 months only (Co-authored-by, PR template); estimated: none.

The shaded band is the 200–400 line range where reviewer defect detection falls off; the team crossed into it a year ago and out the top last month. Same window: assisted PRs p75 438 lines vs 162 unassisted, and the share merged with no review comment went from 11% to 24%. Review didn’t get faster. It stopped.

This is the earliest tooling-visible signature of AI-era instability. Reviewer defect detection falls off past roughly 200 to 400 lines; Google's study of nine million reviews found a median change of 24 lines and first feedback in under an hour for small changes, which is not a coincidence. The drift is real: LinearB's p75 PR size is 157 lines unassisted and 400-plus AI-assisted; DX's Q2 2026 benchmark saw median PR size nearly double, from roughly 42 to 72 lines, between Q3 2025 and Q2 2026 as AI-generated code hit 52% of what shipped. And watch the no-comments share: Faros found PRs merged without review up 31.3% over the same adoption climb. When 600-line diffs get an LGTM in 90 seconds, review didn't get faster. It stopped. Quick win: a PR size budget, enforced by a bot, not a policy doc.

Inventory sitting on main

List everything merged to main in [repos] that has not reached production, with merge dates. Sum the days it has been sitting. Cross-reference against [project] and tell me what customer-facing value is in that pile. Show your queries, the sample size, and anything you estimated.

That's inventory: cost fully paid, value zero, risk accruing while it waits. In DORA's 2025 data only 16.2% of respondents deploy on demand and about 55% deploy less than weekly, so the pile is probably bigger than you think. AI made work in progress cheaper to create than ever; that's why it's the pile to watch first.

Prompts 8–9: WIP and environments

The Little's Law check

Count work in progress for [team] in tickets: everything in progress or awaiting review, plus any agent-generated PR with no ticket behind it, counted as a ticket of its own and reported separately. Average that WIP over the last eight weeks, and count tickets completed per week over the same eight weeks. Divide WIP by weekly throughput; that's our lead time by Little's Law. Compare it to the lead time the ticket data actually shows, and tell me how much of current WIP arrived from agents outside anyone's WIP limit. Show your queries, the sample size, and anything you estimated.

Sample return · Prompt 08

Illustrative composite · Platform team · 8-week average

Little's Law says 3.3 weeks; the ticket board says 1.9. The board is missing a quarter of the work.

Observed lead time from ticket data: 1.9 wk

Gap 1.4 wk · 24% of WIP arrived from agents outside any WIP limit

work › WIP = Jira in-progress + in-review, weekly snapshot, plus open agent-authored PRs with no ticket key in title/branch (counted separately); throughput = tickets to Done per week; observed lead time = created → deployed, p50; estimated: none.

The gap between the two numbers is the finding. Eleven of 46 items in flight are agent PRs nobody ticketed, so they never show up in board-observed lead time and never count against a WIP limit. Quick win: they count.

Little's Law makes this arithmetic rather than opinion: average lead time equals work in progress divided by throughput. A team finishing 20 items a week with 40 in flight has a two-week lead time; let agents push in-flight work to 80 while review capacity stays fixed and lead time doubles. Nothing broke and nobody slacked. Producing more without finishing more mathematically slows delivery down. If the estimate and the observed lead time disagree badly, the board is lying: tickets marked done that aren't, or agent work that never got a ticket. Quick win: agent PRs count against the same WIP limit as everyone else's.

Environment and CI waits

Search [chat channels] and [project] over the last 90 days for requests for a test, staging, or preview environment, plus CI runs that queued or were re-run for flakiness. How many were there, how long did each wait from request to "you're good," and how many were self-service versus needing a person? Show your queries, the sample size, and anything you estimated.

DORA's line is blunt: if you have to file a ticket and wait for someone to prepare an environment, you don't have automated deployment. If a developer can't get a production-like environment in under an hour without asking anyone, environments are the next constraint after you fix review. Constraints move; know where yours goes next.

Prompt 10: put it together

The value stream map, first draft

Using everything you computed above, plus the ticket and PR data behind it, build a first-draft value stream map for [project] and [repos]. Work in this order and show each step. 1. Define the lifecycle. Take the last 30 tickets that reached production in [project] and join each one to its PRs, CI runs, deploys, and chat threads (match on the ticket key in branch names, PR titles, or commit messages; tell me how many you couldn't match and why). From the joined timelines, name every stage work passes through from "accepted into the backlog" to "running in production and confirmed," including the refinement and decision stages before the first commit, not just the PR pipeline. Name queues as queues, not as people or teams. 2. Measure each stage. For every stage give process time (someone actively working on it) and lead time (calendar time from entering the stage to leaving it), as median and p75 across the 30 tickets. Say which process times you estimated and from what evidence: commit and review-comment timestamps, agent session logs, ticket status changes. 3. Draw the map. Present it as a table, one row per stage in order: stage, process time (median / p75), lead time (median / p75), and the wait ahead of the stage. Under it, one summary line: total lead time, total process time, flow efficiency (process ÷ lead), and the single stage with the largest gap between process and lead time. Mark that stage as the constraint. If it disagrees with the queue you named in Prompt 3 or the break point from Prompt 4, say so and give your best explanation. 4. Say what you couldn't see. List every handoff you inferred rather than observed and every place the data ran out (deploys not logged, tickets not linked to PRs, decisions made in DMs). Those are the plumbing fixes, and they go on the map as dotted lines. Show your queries, the sample size, and anything you estimated.

Long prompt: scroll inside the box, or expand it. Copy takes all of it either way.

Sample return · Prompt 10

Illustrative composite · PLAT + acme/api, acme/web · last 30 tickets to production

Six stages, 17 days of lead time, 2.7 of process time · flow efficiency ≈ 16%

StageProcess timeLead timep75 leadWait ahead of it
1Refine & decideaccepted → ready for build2h3d6dproduct call, thread stalls
2Buildfirst commit → PR opened1.5d2d3.5dpicking it up
3ReviewconstraintPR opened → approved3h6d11dreviewer pickup, second approval
4CI & testapproved → green & merged2h1.5d3dflake re-runs
5Staging verifymerged → 'you're good'2h2d4denv slot by ticket
6Releaseverified → in production1h2.5d4dweekly train
Total (sum of medians)2.7d17dflow efficiency ≈ 16%

The same map as a timeline · lead time above, process time below

Lead time (calendar)

Constraint stage

Process time (working)

Step 4 · what the agent couldn’t see

  • 3 of 30 tickets have no key in any branch, PR, or commit; excluded, so the map is 27 tickets wide.
  • The Refine → Build handoff is inferred from the first commit; nothing records when a ticket was actually picked up.
  • Two decision waits ended in DMs the agent can't read; their lead time is real, their cause is a guess.
  • Deploys before Feb 12 aren't in the webhook log; Release lead time is measured on 19 tickets, not 27.

work › Joined 27 of 30 tickets to PRs by key in branch or title (3 unmatched: no key anywhere; excluded); stages from Jira status changes + PR/CI/deploy events; process time estimated for Refine, Review, and Staging from comment and session timestamps; totals are sums of stage medians.

A value stream map in table form: process time against lead time, stage by stage, with the biggest gap marked. Review carries a third of the lead time for less than half a day of work, which agrees with Prompt 3 and Prompt 4. The dashed rows are the plumbing fixes; they go on the map too, and they come before any flow policy.

The first nine prompts each look at one queue; this one couples the backlog to the PR pipeline and asks for the whole lifecycle, measured the way a value stream map measures it: process time against lead time, stage by stage. Read the gap column, not the totals. Then walk it. Pick one ticket from the thirty and follow it through the map by hand; better, sit next to a reviewer opening a 900-line generated diff and watch them deflate. The map says where the time went; the watching says why. If nobody who runs the team has ever watched one feature travel the whole stream, the draft is still secondhand.

What to do with the answers

You'll come out holding four things: one number (flow efficiency), one queue name (usually review or environments), one break point, and a first-draft value stream map with process time and lead time for every stage. The draft is not the map. The map is a week of walking the stream with the people who work in it, not a program; the draft tells you where to start walking and what to ask. The benchmarks tell you which lane is queuing; don't turn them into targets, or pickup time will improve while review stops.

Three honesty clauses. If the agent keeps saying "I can't tell" because tickets aren't linked to PRs or deploys aren't logged, fix the plumbing first. You're not alone: 60% of respondents to Jellyfish's 2026 engineering-management survey said they need better data to understand productivity. If your CI doesn't actually run the tests, fix that before any flow policy. And if the prompts keep pointing at one overloaded person, the architect every change routes through, that's a role-design conversation to have like adults, not an automation target. The agent will find that person fast and doesn't know it's supposed to be tactful. Aggregate by queue and role before anything leaves the room, and read the output before you forward it.

The Sigao take

Ten prompts, one afternoon, an agent you already pay for. What to do next (the mapping method, the constraint playbook, the flow policies, the 90-day arc) is in our whitepaper, The Bottleneck Isn't the Model. It's free. The AI value calculator puts a dollar figure on the gap; the maturity assessment takes ten minutes. If you'd rather run the first pass with us, write chris@sigao.io and we'll map one value stream with your team.

Sources

Questions this post gets asked

How do I find the bottleneck in my software delivery process?
Measure where work waits, not where people are busy: sort open pull requests by age and read the oldest, reconstruct the last 20 shipped tickets to get flow efficiency (touch time divided by lead time), and name the single stage that accumulated the most calendar days. In AI-heavy teams it is usually a queue, most often code review or test environments. A coding agent with read-only access to GitHub, Jira, CI, and Slack can compute all of it in an afternoon.
What access does a coding agent need to diagnose delivery bottlenecks?
Read-only, scoped access to four sources for one product stream: version control (PRs, reviews, merge and deploy events), the ticketing system, CI/CD run history, and the chat channels where work gets unblocked. Official MCP (Model Context Protocol) servers exist for GitHub, Atlassian, and Slack; otherwise the vendor CLI works. The agent counts and reports; it changes nothing.
What is a good pull request pickup time?
LinearB's 2026 benchmark across 8.1 million pull requests puts p75 pickup time (PR opened to first review activity) under 1 hour for the top tier, 1 to 4 hours for good, 5 to 16 for fair, and past 16 hours as needs focus. Google's published review data shows first feedback in under an hour for small changes. Watch the p75 and the oldest open PR, not the average.
What flow efficiency should a software team expect?
Flow efficiency is touch time divided by total lead time. David J. Anderson has described the firms he encounters at 5% to 15%; the one published multi-team dataset we know of, 63 teams at ASOS, averaged 35%. Whatever the number, most of a ticket's life is spent waiting in queues, which is why speeding up coding alone rarely moves lead time.
Does AI-assisted coding make code review slower?
When PR volume rises faster than review capacity, yes. Faros AI's 2026 telemetry across 22,000 developers found median time to first review up 156.6% and median time in review up 441.5% as teams moved from their lowest- to their highest-AI-adoption quarters, alongside larger PRs and more PRs merged without review. DORA's 2024 report associated each 25% increase in AI adoption with a 7.2% drop in delivery stability. The fix is batch size and WIP (work-in-progress) limits, not abandoning the tools.

Keep going

Where to go from here.

A straight read. We’ll tell you where your delivery stands and whether we can help.

Book a call