Can Claude Code build a Next.js app from one prompt?

We gave Claude Code a single prompt for a Next.js app called Signalboard, with no follow-up questions. Here is what it built.

Desktop capture of the Signalboard dashboard Claude Code produced without CLAUDE.md: dark sidebar, four summary cards, a signals-by-type bar chart, recent activity list, and a status breakdown.
Claude CodeSignalboard, one promptOpen full capture

What happened

Claude Code produced a responsive Signalboard dashboard that built, typechecked, loaded, and rendered without material console errors, on both desktop and mobile.

The grader could not detect records, a create flow, edit, delete, search, derived-summary updates, or local persistence on the route it tested. 7 of 17 checks failed.

What this tells us

Claude Code can turn a single unclarified prompt into a working, typed, responsive Next.js app — that part is a clean pass. The 7 failed checks need a caveat, not a discount: the preserved source placed the corresponding record functionality on a linked /signals route, which this grader run did not traverse. So this score measures what the grader could reach on the dashboard, not a confirmed count of missing features. One run, one grader, one caveat — not a general claim about Claude Code’s capability.

What passed, what failed

Passed · 10

  • Production build and TypeScript
  • HTTP page load and Signalboard identity
  • Navigation and dashboard structure
  • Accessible control heuristic
  • Desktop and mobile rendering
  • No material console errors or horizontal overflow

Failed · 7

  • customer_signal_records_exist
  • create_signal_works
  • derived_summary_statistic_updates
  • local_persistence_survives_reload
  • edit_signal_works
  • search_or_filter_works
  • delete_signal_works

The task

Read the exact prompt (770 characters, sent once)

Prompt SHA-256 139c5d30e5f71c11fc50594fea951423e1e86e5e1ef7ffbb1147d91919c57825.

Build a responsive SaaS-style Next.js application called Signalboard.

Signalboard is a simple workspace for tracking customer signals and feedback.

Requirements:

* Next.js
* TypeScript
* responsive desktop and mobile UI
* navigation
* dashboard
* list of customer-signal records
* create a new signal
* edit an existing signal
* delete a signal
* search or filter signals
* display at least one useful summary statistic derived from the current records
* local or mock persistence sufficient for the application to function
* accessible controls
* successful production build
* no material browser console errors
* do not use paid external APIs
* do not require production authentication

Do not ask questions.

Make reasonable product and design decisions yourself.

Evidence & setup

Complete check table · 17 checks

The grader tested build health, product structure, accessibility heuristics, rendering, responsive overflow, console errors, record detection, and interactions.

Deterministic checkResultObserved
Production Build SuccessPASS0
Typescript SuccessPASS0
Page LoadsPASS200
Signalboard Product IdentityPASStrue
Navigation And Dashboard ExistPASS{"navigation":true,"dashboard":true}
Customer Signal Records ExistFAIL0
Accessible ControlsPASS[]
Desktop RendersPASSscreenshots/desktop.png
Create Signal WorksFAIL{"opened":false,"filled":0,"submitted":false,"visible_after_submit":false}
Derived Summary Statistic UpdatesFAIL{"before":["Total Signals15All timeOpen10New + In ReviewUrgent8High or Critical priorityChurn Risk2Active churn-risk signals","Total Signals15All time","Churn Risk2Active churn-risk signals","Signals by TypeFeedback3Bug4Feature Request3Churn Risk2Expansion3"],"after_create":["Total Signals15All timeOpen10New + In ReviewUrgent8High or Critical priorityChurn Risk2Active churn-risk signals","Total Signals15All time","Churn Risk2Active churn-risk signals","Signals by TypeFeedback3Bug4Feature Request3Churn Risk2Expansion3"]}
Local Persistence Survives ReloadFAILfalse
Edit Signal WorksFAIL{"opened":false,"filled":0,"submitted":false,"visible_after_submit":false}
Search Or Filter WorksFAIL{"exists":false,"matching_visible":false,"nonmatching_hidden":false}
Delete Signal WorksFAIL{"clicked":false,"removed":true,"persisted_after_reload":true}
Mobile No Material Horizontal OverflowPASS{"viewport_width":390,"document_width":390,"overflow_px":0}
Mobile RendersPASSscreenshots/mobile.png
No Material Browser Console ErrorsPASS[]
Mobile capture, 390px
Mobile capture at 390px of the Signalboard dashboard Claude Code produced: stacked summary cards, signals-by-type chart, recent activity, and status breakdown.
Claude CodeSignalboard, mobile 390pxOpen full capture
Model, settings, and usage

Claude Code

CLI
Claude Code 2.1.141
Configured model
claude-sonnet-4-6
CLI-exposed runtime model(s)
claude-haiku-4-5-20251001, claude-sonnet-4-6
Runtime identity status
multiple runtime models confirmed by CLI output
Agent duration
478.8 seconds
Exit code
0

Usage

Input tokens
32
Cache creation
46,729
Cache read
1,265,463
Output tokens
33,769
Recorded cost
$1.0621

Evidence integrity

Starting commit
dea92b54f8e10b629887361513c4384b92b82b7c
Source reconstruction
18/18 files; matching tree hash
Agent duration
478.8 seconds
Grader duration
7.9 seconds
Methodology

Condition A began from the recorded clean fixture commit with no CLAUDE.md and no custom contestant context. The agent received the exact task once. The saved output was reconstructed and graded with the Signalboard deterministic suite.

Documented limitations · 4
  • This is one task with one execution per condition; observed differences cannot establish general or statistically reliable effects.
  • The deterministic grader tests specified functionality and structural accessibility heuristics, not overall visual quality or every valid implementation pattern.
  • Configured model identity and CLI-exposed runtime model identity are recorded separately; multiple runtime model identifiers, if exposed, are preserved without inventing a primary model.
  • Both processes ran under the same macOS user without OS-level filesystem isolation, although worktrees were sequential and no sibling workspace or run evidence path was supplied.

See what changes when only one file changes. See the CLAUDE.md test →