<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/patterns-from-developers-who-actually-ship-with-coding-agents-qcpdkl2a2" -->

---
title: Patterns from developers who actually ship with coding...
description: A curated collection of real-world patterns from developers and teams shipping production code with AI coding agents. Key insights include: maintaining a...
canonical: https://daily.dev/posts/patterns-from-developers-who-actually-ship-with-coding-agents-qcpdkl2a2
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Patterns from developers who actually ship with coding agents | daily.dev
og:description: A curated collection of real-world patterns from developers and teams shipping production code with AI coding agents. Key insights include: maintaining a...
og:url: https://daily.dev/posts/patterns-from-developers-who-actually-ship-with-coding-agents-qcpdkl2a2
og:image: https://api.daily.dev/og/posts/qcPdkL2A2.png
og:image:alt: Patterns from developers who actually ship with coding agents
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Patterns from developers who actually ship with coding agents

**[Agentic Engineering](https://daily.dev/sources/agentic)** · [@idoshamun](https://daily.dev/idoshamun) · 7 min read · 3 upvotes · 3 comments

## Summary

A curated collection of real-world patterns from developers and teams shipping production code with AI coding agents. Key insights include: maintaining a living rules file (AGENTS.md/CLAUDE.md) with negative constraints that grows from experience; doing iterative architecture planning in a plan.md before any implementation; designing isolated boundaries to enable parallel agent work; using specialized automated reviewers (like PlanetScale's Bugbot) to handle review bottlenecks at scale; giving agents flexible interfaces like raw SQL rather than constrained APIs; treating your test suite as the specification for agent-driven implementation; collapsing context-switching by connecting agents to all data sources in one session; and generating linear codebase walkthroughs to understand code you didn't write. The throughline: better results come from changing how you work, not from better prompts.

## Content

I spend a lot of time reading about how developers use AI coding agents. Not the "I built an app in 5 minutes" demos. The production stuff. Teams shipping real code, breaking things, slowly figuring out what works.

Something clicked recently. The people getting the best results aren't doing anything magical with their prompts. They've changed how they work. And the changes look nothing like what the tool vendors suggest.

## The file that matters more than your model

Max Woolf is a data scientist who wrote "As an Experienced LLM User, I Actually Don't Use Generative LLMs Often" back in 2025. A self-described agent skeptic. Then he tried Opus 4.5 and started shipping Rust projects he couldn't have built alone.

His take on what changed: AGENTS.md (or CLAUDE.md, or .cursorrules, whatever your tool calls it). He thinks it's the single biggest differentiator between good and bad results, more than model choice, more than prompt engineering.

The part that surprised me: negative rules work better than positive ones. "NEVER add redundant comments" and "MUST use uv, not base Python" land harder than describing what you want. His approach is to add a rule every time the agent does something wrong. The file grows from experience, not theory. Most people write theirs once and forget about it. That's the gap.

## Architecture decisions before a single line of code

Boris Tane wrote about a workflow I keep coming back to. He asks Claude to write a plan.md file. Opens it in his editor, adds notes inline ("use drizzle:generate for migrations, not raw SQL" or "no, this should be a PATCH not a PUT"). Sends it back with "address my notes, update the document, don't implement yet." Then repeats that 3-6 times.

By the time implementation starts, every hard decision is made. The coding part becomes mechanical. I've been trying this and the quality difference is noticeable. The expensive mistakes happen in architecture, not syntax. Letting an agent loose on code before you've agreed on the plan is where things go sideways.

This connects to something I saw with fleet parallelism. Someone translated a website into 8 languages overnight using 6 Copilot agents in parallel. All PRs opened within 12 minutes of each other, zero conflicts. The Arabic agent even added RTL support without being asked.

But the agents weren't the story. The story was the spec work done before any agent touched the code. Each translation file only contained translatable fields. Structural data always came from the English source. The architecture was designed with isolated boundaries so agents could work simultaneously without stepping on each other. Parallelism was a consequence of good upfront design, not a feature of the tools.

## When humans can't keep up with agents

PlanetScale is running 2,000 PRs a month through an automated reviewer called Bugbot. 80% of its comments get addressed before merge. Their engineer Fatih Arslan said something that stuck with me: asking a reasoning model to "review this branch" doesn't find the same bugs. The specialized harness catches state synchronization gaps, async convergence failures, edge cases that trigger restarts across production databases. Generic prompting misses them.

This is becoming a real tension. If your team generates more code with agents, human review becomes the bottleneck fast. PlanetScale estimated they'd need two full-time engineers just reviewing code. That's engineering bandwidth lost to reviewing, not building.

Stripe is facing the same thing at a different scale. Their coding agents (Minions) merge 1,300+ PRs per week. Their answer was to shift feedback left: agents run linters locally before hitting CI, typically getting 1-2 CI rounds max. Mike Cohn recently argued that the classic cost-of-change curve is dead, killed by three waves: better tooling, agile, and AI. His punchline is that the cost of change is no longer about writing code. It's about waiting for feedback. Every minute your agent waits on CI is a minute wasted.

## Giving agents the right interfaces

Mendral does something I find genuinely interesting. They let AI agents debug CI failures across 1.5 billion log lines per week by giving them a raw SQL interface to ClickHouse. No predefined query library. No `getfailurerate(workflow, days)` function. Just SQL.

Their reasoning: a constrained API limits agents to questions you anticipated. SQL lets them ask whatever they need. And LLMs are surprisingly good at SQL because there's so much of it in training data. Last week, one of their agents traced a flaky test back to a dependency bump three weeks prior, scanning hundreds of millions of log lines to get there.

On the flip side, there's a cautionary tale from Helix ML. They migrated a code RAG system from Python to Go using Claude Code. The agent found references to a deprecated "snippets" table that had been replaced months earlier. It rebuilt the entire dead feature. Everything compiled, tests passed. Searches returned zero results because it was querying an empty table nobody uses anymore. The failure only showed up with real production data. If deprecated code exists anywhere in your codebase (type hints, variable names, comments), agents will find it and use it.

This is where test suites become critical. Cloudflare reimplemented 94% of the Next.js API in a week. One engineer, roughly $1,100 in tokens. But the reason it worked: they ported the existing test suite first, then had Claude implement piece by piece, verifying against the tests before merging. The tests defined what "correct" meant. Without them, the agent would have been guessing. Your test suite is your specification now, whether you intended it that way or not.

## Collapsing the context problem

Cursor's own support team handles 75%+ of their support interactions through Cursor itself. 5-10x throughput increase. The setup is multi-root workspaces with MCP servers connecting to databases, Slack, Linear, internal docs, and streamed event logs. All in one session.

Investigations start by tracing backward from a symptom through the actual product code. Because every data source is in one place, context-gathering (which was the real bottleneck, not problem-solving) collapses. They also run parallel subagents: one searches logs, another scans for known issues, a third drafts the response.

Any workflow where you're switching between 5 tabs to investigate something can probably be collapsed this way. The pattern isn't specific to support.

## Understanding code you didn't write

Simon Willison built a macOS presentation app in 45 minutes with Claude Code. Native Swift, 355KB binary, phone-based remote control via built-in web server. He doesn't know Swift.

After pushing to GitHub, he asked Claude to generate a "linear walkthrough" of the codebase. A sequential explanation of how everything works, file by file. He liked it enough to add it as a pattern in his agentic engineering guide.

I think this is underrated. When agents write your code, the old model of understanding (you know it because you wrote it) breaks down. You need a different approach. A walkthrough gives you the guided tour of a codebase that exists only because an agent built it.

---

None of these ideas are mine. They come from Max Woolf, Boris Tane, Fatih Arslan at PlanetScale, the Mendral team, Helix ML, Steve Faulkner at Cloudflare, Mike Cohn, Stripe's engineering team, Cursor's support team, and Simon Willison. I kept seeing the same patterns show up across their work and wanted to collect them in one place.

If there's a thread connecting all of this, it's that better results come from changing how you work, not from writing better prompts.

## Community discussion

Top comments from developers on daily.dev.

**@capjavert** · 1 upvotes

> I echo debugging part, honestly I much prefer debugging through talking with LLM then googling and looking through bunch of docs or unstructured pages. You learn new stuff!
>
> The last 2% part happens by me questioning and agreeing on full plan either way.
>
> Nice write-up!

## Similar posts on daily.dev

- [5 Agentic Coding Tips & Tricks](https://daily.dev/posts/5-agentic-coding-tips-tricks-48zhdqcpx) · Machine Learning Mastery · 2 upvotes · 0 comments
- [Maintaining Code Quality at Agent Speed: 7 Patterns](https://daily.dev/posts/maintaining-code-quality-at-agent-speed-7-patterns-efn7nhamc) · Salesforce Engineering · 0 upvotes · 0 comments
- [Agentic Code Review: Pattern Matching for AI](https://daily.dev/posts/agentic-code-review-pattern-matching-for-ai-bvwxkev0m) · Robin Wieruch · 0 upvotes · 0 comments
- [How I use AI agents to write code](https://daily.dev/posts/how-i-use-ai-agents-to-write-code-onvlmqy00) · Read the Tea Leaves · 99 upvotes · 3 comments
- [Coordinating AI-Assisted Development with AGENTS.md and Skills](https://daily.dev/posts/coordinating-ai-assisted-development-with-agents-md-and-skills-gonbv25xc) · DevBlogs · 1 upvotes · 0 comments

---

Tags: [#ai-agents](https://daily.dev/tags/ai-agents), [#claude](https://daily.dev/tags/claude), [#code-review](https://daily.dev/tags/code-review)

[View this post on daily.dev](https://daily.dev/posts/patterns-from-developers-who-actually-ship-with-coding-agents-qcpdkl2a2)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"DiscussionForumPosting","mainEntityOfPage":"https://daily.dev/posts/patterns-from-developers-who-actually-ship-with-coding-agents-qcpdkl2a2","headline":"Patterns from developers who actually ship with coding agents","text":"A curated collection of real-world patterns from developers and teams shipping production code with AI coding agents. Key insights include: maintaining a living rules file (AGENTS.md/CLAUDE.md) with negative constraints that grows from experience; doing iterative architecture planning in a plan.md before any implementation; designing isolated boundaries to enable parallel agent work; using specialized automated reviewers (like PlanetScale's Bugbot) to handle review bottlenecks at scale; giving agents flexible interfaces like raw SQL rather than constrained APIs; treating your test suite as the specification for agent-driven implementation; collapsing context-switching by connecting agents to all data sources in one session; and generating linear codebase walkthroughs to understand code you didn't write. The throughline: better results come from changing how you work, not from better prompts.","url":"https://daily.dev/posts/patterns-from-developers-who-actually-ship-with-coding-agents-qcpdkl2a2","datePublished":"2026-03-04T19:52:48.123Z","dateModified":"2026-03-30T02:16:25.090Z","author":{"@type":"Person","name":"Ido Shamun","url":"https://daily.dev/idoshamun","image":"https://media.daily.dev/image/upload/s---xy_OAwk--/f_auto,q_auto/v1703781380/avatars/avatar_28849d86070e4c099c877ab6837c61f0","description":"I'm to blame if something goes wrong here 🙈","worksFor":{"@type":"Organization","name":"daily.dev","logo":"https://daily-now-res.cloudinary.com/image/upload/s--MASZOhnv--/f_auto/v1614088267/landing/Daily.dev_logo"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"EndorseAction"},"userInteractionCount":194640}},"image":"https://media.daily.dev/image/upload/s--wud-yHAi--/f_auto/v1772653969/posts/qcPdkL2A2?_a=BAMAMiiu0","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":3},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":3}],"comment":[{"@type":"Comment","text":"I echo debugging part, honestly I much prefer debugging through talking with LLM then googling and looking through bunch of docs or unstructured pages. You learn new stuff!\nThe last 2% part happens by me questioning and agreeing on full plan either way.\nNice write-up!","datePublished":"2026-03-04T20:50:02.746Z","url":"https://daily.dev/posts/qcPdkL2A2#c-EdIZhDKaI","author":{"@type":"Person","name":"Ante Barić","url":"https://daily.dev/capjavert","image":"https://media.daily.dev/image/upload/v1679300599/avatars/avatar_LJSkpBexOSCWc8INyu3Eu.jpg"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1}}],"isPartOf":{"@type":"WebPage","url":"https://daily.dev/squads/agentic","name":"Agentic Engineering"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Agentic Engineering","item":"https://daily.dev/squads/agentic"},{"@type":"ListItem","position":3,"name":"Patterns from developers who actually ship with coding agents"}]}
```

