{"slug": "i-built-an-unattended-claude-code-loop-that-reviews-prs-and-works-my-jira", "title": "I built an unattended Claude Code loop that reviews PRs and works my Jira backlog", "summary": "A developer built an unattended Claude Code plugin, ultracode-live-engineer, that automatically reviews Slack-mentioned PRs, follows up on its own PRs, and picks up Jira tickets. After 163 wake-ups, it reviewed 32 PRs, fixed 4 PR follow-ups, and moved 13 tickets forward, with an idle pass optimized to be 58% faster and use 30% fewer agent calls. The developer emphasizes a non-negotiable rule to escalate ambiguous cases to humans rather than guessing.", "body_md": "Every developer knows this Tuesday: you're deep in a bug, Slack pings with \"can you review this PR?\", and by the time you get back to your own code you've lost the thread. Meanwhile the Jira backlog sits there — every ticket in it legitimate, and every one losing to whatever's on fire that day.\n\n``` php\nflowchart LR\n    S[\"Slack ping\"] --> C1[\"stop coding\"] --> R[\"review PR\"] --> C2[\"lost the thread\"]\n    B[\"Jira backlog\"] -.->|\"loses to\\nwhatever's urgent\"| N[\"stays untouched\"]\n```\n\nNeither task needs *me* specifically — just consistent judgment, on a schedule that doesn't depend on how busy I am. So I built `ultracode-live-engineer`\n\n, a Claude Code plugin that wakes up on its own and handles both.\n\n``` php\nflowchart TD\n    W((\"⏰ Wake\")) --> P1 & P2 & P3\n    P1[\"👀 Slack Review<br/>mention + PR link → review\"]\n    P2[\"🔁 PR Follow-up<br/>fix feedback on own PRs\"]\n    P3[\"🎫 Jira Selection<br/>pick up a ticket\"]\n    P3 --> I[\"🛠️ Implement<br/>isolated worktree\"]\n    I -->|success| PR[\"✅ Open PR\"]\n    I -->|ambiguous| H[\"🚧 Escalate<br/>Jira comment + Slack DM\"]\n    H -.human replies.-> P3\n```\n\nOne rule is non-negotiable: when it's not sure, it doesn't guess. Ambiguous cases get parked and handed to a human — never merged, never silently skipped.\n\nI let it run and log every pass. 163 wake-ups later:\n\n```\nflowchart TD\n    subgraph Totals[\"Zero interrupts to me\"]\n        direction LR\n        A[\"32 PRs reviewed\"]\n        B[\"4 PR follow-ups fixed\"]\n        C[\"13 tickets moved forward\"]\n    end\n```\n\nPartway through, I noticed the \"nothing to do\" pass — the most common one — was the slow one. Three independent checks were running one after another instead of at once, and mechanical yes/no checks were each burning a full AI call. Fixing both:\n\n```\nflowchart LR\n    subgraph Before[\"Idle pass — before\"]\n        direction TB\n        d1[\"190s median\"]\n        d2[\"10 agent calls\"]\n    end\n    subgraph After[\"Idle pass — after\"]\n        direction TB\n        e1[\"79s median\"]\n        e2[\"7 agent calls\"]\n    end\n    Before -->|parallelize + batch| After\n```\n\n58% faster, 30% fewer agent calls — for the case that happens most.\n\nThe industry numbers aren't about typing speed — they're about waiting to be noticed. LinearB's 2026 benchmarks (8.1M PRs) put average-team PR pickup at 4–16 hours before review even starts; SmartBear's review research puts a manual review session at 60–90 minutes once someone sits down with it.\n\n```\nflowchart LR\n    subgraph Industry[\"Industry (LinearB / SmartBear)\"]\n        direction TB\n        i1[\"Pickup: 4-16h average team\"]\n        i2[\"Review session: 60-90 min\"]\n    end\n    subgraph Loop[\"This loop\"]\n        direction TB\n        l1[\"Pickup: next wake (minutes)\"]\n        l2[\"Full pass incl. review: 8.5 min\"]\n    end\n```\n\nOne honest twist: DORA's 2025 report found that as AI-authored code volume rises industry-wide, human review time has actually gone up 441%, and 31% more PRs merge with zero review. AI made writing code faster — it didn't remove the review bottleneck. That's exactly why the escalate-to-human rule exists here instead of an autopilot that just merges.\n\n```\nclaude\n/plugin marketplace add AlvaroRaul7/ultracode-live-engineer\n```\n\nRepo: [https://github.com/AlvaroRaul7/ultracode-live-engineer](https://github.com/AlvaroRaul7/ultracode-live-engineer)", "url": "https://wpnews.pro/news/i-built-an-unattended-claude-code-loop-that-reviews-prs-and-works-my-jira", "canonical_source": "https://dev.to/alvaroraul7/i-built-an-unattended-claude-code-loop-that-reviews-prs-and-works-my-jira-backlog-i43", "published_at": "2026-09-04 10:33:58+00:00", "updated_at": "2026-09-04 10:54:10.867224+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "artificial-intelligence"], "entities": ["Claude Code", "ultracode-live-engineer", "Jira", "Slack", "LinearB", "SmartBear", "DORA", "AlvaroRaul7"], "alternates": {"html": "https://wpnews.pro/news/i-built-an-unattended-claude-code-loop-that-reviews-prs-and-works-my-jira", "markdown": "https://wpnews.pro/news/i-built-an-unattended-claude-code-loop-that-reviews-prs-and-works-my-jira.md", "text": "https://wpnews.pro/news/i-built-an-unattended-claude-code-loop-that-reviews-prs-and-works-my-jira.txt", "jsonld": "https://wpnews.pro/news/i-built-an-unattended-claude-code-loop-that-reviews-prs-and-works-my-jira.jsonld"}}