Can an AI Agent Build a Chrome Extension From One Prompt?
The interesting result was not whether it worked. It was which 15% did not, and how long that 15% took.
Experiment: A question, a setup, a result and its limitations. Written so you can repeat it.
Contents (8 sections)
"Vibe coding" usually gets demonstrated on a to-do app, which proves nothing: the model has seen ten thousand of them. A browser extension is a better test. It has a manifest with strict rules, a permissions model, several separate execution contexts that cannot see each other, and a browser that simply refuses to load it if any of that is wrong.
Experiment
- Hypothesis
- A capable coding agent can produce a working Manifest V3 Chrome extension from a single paragraph of requirements, with no follow-up guidance.
- Setup
- Empty directory. One prompt. Agent allowed to create and edit any file but given no corrections until it declared itself finished.
- Method
- Load the unpacked extension in Chrome, exercise every stated requirement, then record what failed and how long each fix took.
- Measured
- Whether it loads, which requirements work, and time-to-working after the first attempt.
Limitations
- One prompt, one agent, one run. This is an anecdote with a method, not a benchmark.
- Requirements were written by someone who knows the extension APIs, which makes the prompt better than a beginner's would be.
- A different model, or the same model tomorrow, may produce a different result.
- Time-to-fix depends on the person fixing it knowing where to look.
The prompt#
One paragraph, deliberately written the way a person actually writes a request — goals, not implementation:
Build a Chrome extension (Manifest V3) called "Reading Time" that shows the estimated
reading time of the current page. It should add a small badge on the extension icon with
the number of minutes, show a popup with the word count and estimated time at 240 wpm, and
let the user change the reading speed in the popup with the setting persisted. It should
work on any http/https page and do nothing on browser internal pages. No frameworks, no
build step, plain JS.What it produced#
Six files, structurally correct, in about ninety seconds:
reading-time/
manifest.json
background.js
content.js
popup.html
popup.js
popup.cssThe manifest was valid MV3. The content script counted words with a reasonable heuristic —
it stripped script and style elements rather than naively taking innerText of the
whole document, which is better than I expected. The popup was plain and functional. The
extension loaded in Chrome without an error on the first attempt.
That is a real result, and worth saying plainly: from one paragraph, it loaded and mostly worked.
What did not work#
The badge was empty#
The content script calculated the reading time and the background worker set the badge, but
nothing connected them at the right moment. The message was sent on DOMContentLoaded;
the service worker was often asleep and missed it, and nothing re-sent on tab activation.
This is the characteristic failure: each piece is individually correct, and the lifecycle between them is not. Manifest V3 service workers are ephemeral, and code that assumes a long-lived background page is wrong in a way that looks completely fine.
Time to fix: about 20 minutes, most of it working out that the bug was lifecycle rather than logic.
The setting saved but never applied#
The reading speed persisted correctly to chrome.storage.sync. It was read once when the
popup opened. It was never read by the content script, which had 240 hardcoded.
function estimateMinutes(wordCount) {
// The user's saved speed is never consulted here.
return Math.max(1, Math.round(wordCount / 240))
}A one-line description of a feature — "let the user change the speed" — got implemented as UI plus storage, with the actual behaviour missing. The demo looks complete. The feature is not.
Time to fix: about 10 minutes.
It ignored a requirement it had no reason to ignore#
"Do nothing on browser internal pages" was in the prompt. The generated code tried to inject
into every tab, producing console errors on chrome:// URLs. The fix is a two-line URL check.
Time to fix: 5 minutes.
Result#
| Requirement | First attempt |
|---|---|
| Loads as unpacked MV3 extension | Yes |
| Counts words on the page | Yes |
| Popup shows count and estimate | Yes |
| Badge shows minutes | No — fixed in ~20 min |
| Reading speed setting persists | Yes |
| Setting affects the estimate | No — fixed in ~10 min |
| Ignores browser internal pages | No — fixed in ~5 min |
Roughly 85% of the requirements worked from one prompt. Total time from prompt to a version that did everything asked: about 50 minutes, of which 90 seconds was generation.
Conclusion#
The single-prompt build is real, and the framing around it is misleading. The generation is not the work. Getting from "impressive demo" to "does what was asked" took thirty times longer than producing the demo, and every one of those minutes needed someone who understood the platform.
Which suggests a more useful way to think about it: an agent will get you a structurally correct skeleton of an unfamiliar platform very fast, which is genuinely valuable if you do not know that platform's file layout. It will not get you correctness at the boundaries, and boundaries are where software breaks.
If you cannot debug the result, a single-prompt build has not saved you time. It has moved the difficulty somewhere you cannot reach.
Sources
Primary sources for facts that are not Hamzify testing. Opinions and results from our own work are marked as such in the article.
- Chrome Extensions — Manifest V3 service worker lifecycle (Chrome for Developers)checked Jul 2026
- chrome.storage API reference (Chrome for Developers)checked Jul 2026
Related reading
Other Hamzify pieces on this topic, the same tools, or the next format worth reading.
Prompt to Deployed Product in One Evening: What Held Up
An experiment in shipping a small real product in a single evening with AI doing most of the implementation — and an honest account of which shortcuts were fine and which were debt.
I Gave AI Agents a Real SaaS Build. Here Is Where It Broke.
A full build log of shipping a small SaaS with coding agents doing most of the typing: what the agents handled well, the three places they stalled, and what a human still had to own.
A Context Checklist for Briefing Coding Agents
A reference checklist for what an AI coding agent needs to know before it starts: the seven inputs that change output quality, and the ones that only add noise.
From the same tool
More Hamzify coverage of Cursor
Reviews, comparisons, builds and workflows that mention Cursor, collected in one place. Open the Cursor coverage.