Every piece of the starter kit, the decision it has already made, the measured phase it removes from a three-hour run, and what it costs to keep current. This page is the durable one — lessons are read once, this gets reopened every time the kit changes or a drill comes due.
Each item passes the inclusion test from Decisions you have already made: it encodes a decision made a hundred times, never one the next prototype should be free to make. The exclusions at the bottom matter more than the inclusions, and are the half of a manifest that normally goes unwritten.
Read this first
Every version and command below was checked against vendor documentation in early September 2026, and some of it is wrong by now. Where this page disagrees with a page it links to, the linked page is right. That is not a disclaimer — it is a live demonstration of the maintenance tax, on a document about the maintenance tax.
The part with no agentic content at all. Highest decay rate in the kit, lowest intellectual interest — which is exactly the combination that makes it worth automating and dangerous to leave alone.
App scaffold — Next.js, App Router, TypeScript strict
middleware to proxy, removed synchronous params/cookies/headers access and next lint, made Turbopack the default and made a custom webpack config a build failure — see the upgrade guide. Budget a real session per major, and run the official codemod before touching anything by hand.Styling — Tailwind, tokens imported once
init command and the @tailwind directives; setup is now an @import "tailwindcss" plus a PostCSS plugin per the current install guide. Cheap to keep current, but any v3-era snippet you paste in will be silently wrong.Component layer — your design system, plus shadcn as gap-filler
migrate subcommands (CLI reference). Low urgency: a stale button does not stop a demo.Lint, format, type-check, and one commit hook
The layer that buys the most clock time, because standing up a real agent graph is the single slowest way to get something on the other end of a stream. Built in the fake-backend module; listed here so the manifest is complete.
Scripted mock agent — a run as a sequence of events
Stream transport — one protocol, one shape
toUIMessageStream and createUIMessageStreamResponse (stream protocol docs) — earlier majors used different names, so any code you recall or paste from a tutorial is likely calling a function that no longer exists. Vendor documentation of its own product.Latency, tool-call pauses, and one injectable failure
The two components every agentic prototype needs and nobody has time to build under a clock. Both go in as generic shells — the shell is settled, the semantics are not.
Trace view — a rendered account of what the agent did
Review gate — a human approval step in front of an action
Auth stub — fake session, user switcher, no identity provider
How the kit gets from the repository into a prototype, and what keeps it from rotting between prototypes.
A GitHub template repository
A one-line clone path
create-next-app takes a GitHub URL directly — pnpm create next-app --example "https://github.com/..." my-app (CLI reference). degit is the framework-agnostic alternative and is actively maintained. Both need re-checking whenever the scaffold moves a major.Automated dependency updates
A missing item costs minutes once, in one prototype, and announces itself immediately. A wrong item costs minutes in every prototype forever and never announces itself at all. The test is biased toward exclusion for that reason, and this list is where the bias is recorded.
A domain model, or any product schema
Why out: The next portfolio company has a different one. This is not a decision you have made a hundred times; it is a decision you have made differently every time.
What including it would cost: Every prototype starts by deleting yours, which is slower than starting from nothing and considerably more irritating.
The agent’s tool set and its actual behaviour
Why out: This is the product question the prototype exists to ask. A kit that answers it has answered the wrong question in advance.
What including it would cost: You demo your kit’s assumptions back to a stakeholder who wanted to see theirs.
A canonical run-state machine
Why out: Whether a run can be paused, resumed, partially rejected or rolled back differs per product. It looks like infrastructure and is a product decision wearing infrastructure’s name — the most common way a kit turns into a framework.
What including it would cost: The prototype whose product needs resumable runs either fights the state machine or forks it, and both cost more than the forty minutes it saved elsewhere.
Real persistence
Why out: A three-hour prototype has no data worth surviving a restart, and a database is a decision with schema, migration and hosting attached.
What including it would cost: Migration plumbing during a timed run, in service of durability nobody in the demo will ever test.
Real auth, real evals, deployment hardening
Why out: Production concerns. Each is a settled decision in a production context and an unsettled one here — the kit is scoped to prototypes precisely so these stay out.
What including it would cost: A prototype that takes a day, which is the exact failure this whole course is arranged to prevent.
Anything that has appeared in only one timed run
Why out: One run measures the target and the mood. Two, against different domains, start measuring the work.
What including it would cost: A kit shaped by whichever domain you happened to practise against first, permanently, with no signal that it happened.
Four commitments. The first three are cheap and insufficient; the fourth is the one that measures anything.
learning/prototyping-velocity/PRACTICE-LOG.md, against two different target domains.Every claim on these pages links to its source. If a source looks wrong or out of date, check the resource list and tell your teaching agent — the course is meant to be corrected.