Skip to content
zero2vibecodelearn vibe coding
Level 1 · Your first build 7 min Reviewed by the author · Aug 4, 2026

Your first prompt

A good first prompt has four parts — goal, shape, done-criteria, and how you will run it — and this lesson builds one from a bad one, line by line.

Level 1 · 0 / 3 lessons0%

No hands-on task in this lesson — just read it through and answer the questions.

Here is a almost everyone writes first:

Build me an app to save links.

You will get something. It might be a React project with a build step, a Python server, or a single page. It might store links in memory and lose them on refresh. It will be somebody’s app, just not yours.

Not because the agent is bad. Because you did not say.

The four parts

A good first prompt has four parts. None of them are clever.

1. Goal — what it does, in user terms.

Not “a link saver”. What the user does and what happens.

2. Shape — the constraints that matter to you.

Which technology, how many files, what it must not use. These are not about what is technically best. They are about what you can run, read and review today.

3. Done — the finish line from the previous lesson.

Paste it in, as a list.

4. How you will run it.

The single most skipped part. If you cannot start the thing, you cannot see whether it works, and the loop is broken at step two.

Quick check

Which prompt part do beginners skip most often, and pay for immediately?

The same request, written properly

Build a single web page called Readlist.

What it does:
- There is a text box and a Save button
- I paste a URL, click Save, and it appears in a list below
- Each item in the list has a Delete button
- The list survives a page refresh

Shape:
- One HTML file, with the CSS and JavaScript inside it
- No build step, no frameworks, no dependencies
- Store the list in the browser's local storage
- Plain, readable styling; it should not look broken on a phone

Done when:
- I can open the file in a browser, add two links, refresh, and still see them
- I can delete one and it stays deleted after a refresh

Tell me exactly how to open and run it when you are finished.
Ask me if anything is ambiguous instead of guessing.

Long? It is two minutes of typing. It replaces about an hour of “no, not like that”.

Tip

Notice there is nothing clever in there. No role-play, no “you are an expert developer”, no threats or pleading. Modern agents do not need that. They need to know what you want.

Why each constraint earns its place

“One HTML file, no build step.” You can open it by double-clicking. Nothing to install, nothing to configure. When something goes wrong there is exactly one file to look at. As a beginner this is worth more than any technical advantage a framework would give you.

“No dependencies.” Every package added is a thing that can break, needs updating, and might carry a security problem. Zero of them is a wonderful number for a first project.

“Store the list in the browser’s local storage.” Local storage is a small amount of space the browser keeps for a page, which survives closing the tab. Naming it means you get a page with no server and no account system — which is exactly right for version one. If you had not said, you might have got a login screen you did not ask for.

“Plain, readable styling.” Prevents the agent from spending its effort on a design you did not ask for and cannot judge yet.

Quick check

Why specify 'no frameworks, no dependencies' for a first project?

Sending it

Now send it and watch. Three things to look for while it works:

  1. Does it ask a question? If it does, answer precisely. A question is the cheapest moment in the whole session.
  2. Does it create the files you expected? One HTML file, not eleven.
  3. Does it tell you how to run it? You asked. If it did not, ask again before touching anything else.

Then run it. Open the file. Paste a link. Click Save.

Note

Do not read the code yet. Run it first. A minute of watching the actual behaviour tells you more than ten minutes of reading a language you do not know — and level 3 will teach you the reading part properly.

What good looks like on the first try

Roughly: a page that mostly works, with one or two things off. A button that looks odd, a list that does not clear the text box after saving, styling that is uglier than you hoped.

That is a success. The first result is not supposed to be final — it is supposed to be concrete, so you finally have something specific to react to.

If it is completely wrong — different shape, wrong technology, does not run — that is the subject of the next lesson, and it is fixable in one message.

Quick check

Your first result works but the text box does not clear after saving. What does this mean?

Try it yourself

Two versions of the same request, and what each one gets you.

Check your understanding

Answered 0/3
Mode:

Which part is missing from "Build me a link saver app"?

Why is "keep it to one HTML file with no build step" a useful constraint for a beginner?

What does adding "ask me if anything is ambiguous" to a prompt do?

Finish the task in the terminal and answer the questions to complete the lesson.

📝 My notes

Saved automatically in this browser · shows up on the Notes page.

Lesson Q&A

Which part is missing from "Build me a link saver app"?

It names a category, not a thing. Every decision that matters is left for the agent to guess.

Why is "keep it to one HTML file with no build step" a useful constraint for a beginner?

Constraints are about what you can handle, not about what is technically best. A single file you can open beats a project structure you cannot navigate.

What does adding "ask me if anything is ambiguous" to a prompt do?

The default behaviour is to fill gaps silently. This line converts some of those gaps into a question, which is far cheaper.

Which prompt part do beginners skip most often, and pay for immediately?

Without a way to run it, you cannot see, test or steer anything. The loop stalls before it starts.

Why specify 'no frameworks, no dependencies' for a first project?

It is a reviewability constraint. You are optimising for what you can understand today, not for architecture.

Your first result works but the text box does not clear after saving. What does this mean?

First results are meant to be concrete, not perfect. Small wrongness is the input to the steering half of the loop.

Related reading on the blog

Move between lessons with · search with ⌘K