<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/i-let-an-agent-ship-a-feature-from-a-spec-then-i-read-the-diff--yp65fcdqq" -->

---
title: I Let an Agent Ship a Feature From a Spec. Then I Read...
description: Autonomous coding agents given vague prompts like &#x27;add rate limiting&#x27; tend to over-engineer, adding unnecessary infrastructure like Redis clusters, stray...
canonical: https://daily.dev/posts/i-let-an-agent-ship-a-feature-from-a-spec-then-i-read-the-diff--yp65fcdqq
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: I Let an Agent Ship a Feature From a Spec. Then I Read the Diff. | daily.dev
og:description: Autonomous coding agents given vague prompts like &#x27;add rate limiting&#x27; tend to over-engineer, adding unnecessary infrastructure like Redis clusters, stray...
og:url: https://daily.dev/posts/i-let-an-agent-ship-a-feature-from-a-spec-then-i-read-the-diff--yp65fcdqq
og:image: https://api.daily.dev/og/posts/yP65FCdqq.png
og:image:alt: I Let an Agent Ship a Feature From a Spec. Then I Read the Diff.
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.

# I Let an Agent Ship a Feature From a Spec. Then I Read the Diff.

**[Noor Mohammad](https://daily.dev/sources/ew9hy5zthevyyefagop4g)** · [@noormohammad](https://daily.dev/noormohammad) · 1 min read · 0 upvotes · 1 comments

## Summary

Autonomous coding agents given vague prompts like 'add rate limiting' tend to over-engineer, adding unnecessary infrastructure like Redis clusters, stray files, and superficial tests that check function calls rather than actual behavior. The suggested fix is to write a one-page spec that acts as a boundary rather than a conversational prompt, giving the agent a persistent reference file and a checklist of six things to verify before merging the diff.

## Content

"Add rate limiting" is not a task, it's a wish. An agent will grant a wish — and also invent a Redis cluster, a dashboard, a `utils_final2.py`, and a test asserting the function was _called_ rather than that request 11 got blocked.

So: stop typing wishes. Write a one-page contract, point the agent at the file, don't watch the tokens, and read the diff against the page rather than the feeling you had at 6pm.

**A prompt is a conversation. A spec is a boundary.** No new product required — just a file the agent can still see when the chat gets noisy, and the habit of reading names before implementation.

Includes the reusable rate-limit spec and the six checks before merge. 🔗
[https://medium.com/@thebuildersplaybook/i-let-an-agent-ship-a-feature-from-a-spec-then-i-read-the-diff-90958e7cf296?sharedUserId=thebuildersplaybook](https://medium.com/@thebuildersplaybook/i-let-an-agent-ship-a-feature-from-a-spec-then-i-read-the-diff-90958e7cf296?sharedUserId=thebuildersplaybook)

## Community discussion

Top comments from developers on daily.dev.

**@noormohammad** · 0 upvotes

> The mock-asserting-the-call test is the one that should worry people most — it's green in CI, it counts as coverage, and it verifies nothing about the behaviour you asked for. Agents produce these constantly because "write a test for this" is satisfied by the shape of a test.
>
> What's on your agent-diff checklist? Mine has converged on: unrequested dependencies, new files that shouldn't exist, tests that assert calls instead of outcomes, and anything named `*_final*`.

## Similar posts on daily.dev

- [Dispatches from O'Reilly: The right amount of spec for agentic development](https://daily.dev/posts/dispatches-from-o-reilly-the-right-amount-of-spec-for-agentic-development-jofa5viob) · Stack Overflow Blog · 0 upvotes · 0 comments

---

Tags: [#ai-agents](https://daily.dev/tags/ai-agents), [#prompt-engineering](https://daily.dev/tags/prompt-engineering), [#code-review](https://daily.dev/tags/code-review), [#spec-driven-development](https://daily.dev/tags/spec-driven-development)

[View this post on daily.dev](https://daily.dev/posts/i-let-an-agent-ship-a-feature-from-a-spec-then-i-read-the-diff--yp65fcdqq)

```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/i-let-an-agent-ship-a-feature-from-a-spec-then-i-read-the-diff--yp65fcdqq","headline":"I Let an Agent Ship a Feature From a Spec. Then I Read the Diff.","text":"Autonomous coding agents given vague prompts like 'add rate limiting' tend to over-engineer, adding unnecessary infrastructure like Redis clusters, stray files, and superficial tests that check function calls rather than actual behavior. The suggested fix is to write a one-page spec that acts as a boundary rather than a conversational prompt, giving the agent a persistent reference file and a checklist of six things to verify before merging the diff.","url":"https://daily.dev/posts/i-let-an-agent-ship-a-feature-from-a-spec-then-i-read-the-diff--yp65fcdqq","datePublished":"2026-09-02T16:20:34.793Z","dateModified":"2026-09-13T21:34:22.355Z","author":{"@type":"Person","name":"Noor Mohammad","url":"https://daily.dev/noormohammad","image":"https://media.daily.dev/image/upload/s--3w4n0n-6--/f_auto/v1754054115/avatars/avatar_eW9hy5zTHEVyYeFaGOP4G?_a=BAMClqZW0","description":"Software Engineer | React, Next.js & scalable web apps | Writing on AI, blockchain & emerging tech","interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"EndorseAction"},"userInteractionCount":120}},"interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":1}],"comment":[{"@type":"Comment","text":"The mock-asserting-the-call test is the one that should worry people most — it’s green in CI, it counts as coverage, and it verifies nothing about the behaviour you asked for. Agents produce these constantly because “write a test for this” is satisfied by the shape of a test.\nWhat’s on your agent-diff checklist? Mine has converged on: unrequested dependencies, new files that shouldn’t exist, tests that assert calls instead of outcomes, and anything named *_final*.","datePublished":"2026-09-02T16:20:45.770Z","url":"https://daily.dev/posts/yP65FCdqq#c-zAeg5sZpd","author":{"@type":"Person","name":"Noor Mohammad","url":"https://daily.dev/noormohammad","image":"https://media.daily.dev/image/upload/s--3w4n0n-6--/f_auto/v1754054115/avatars/avatar_eW9hy5zTHEVyYeFaGOP4G?_a=BAMClqZW0"}}],"isPartOf":{"@type":"WebPage","url":"https://daily.dev/sources/ew9hy5zthevyyefagop4g","name":"Noor Mohammad"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Noor Mohammad","item":"https://daily.dev/sources/ew9hy5zthevyyefagop4g"},{"@type":"ListItem","position":3,"name":"I Let an Agent Ship a Feature From a Spec. Then I Read the Diff."}]}
```

