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

Choosing something small enough to finish

A first project has to be describable in one sentence, testable by looking at it, and finishable in one sitting — here is how to cut yours down until it is.

Level 1 · 0 / 3 lessons0%

The most common first-project failure has nothing to do with AI. People pick something they cannot finish, get 60% of the way, and quietly stop.

Your first build has one job: to be finished. It exists so you run the whole loop once, end to end, including the boring parts.

The three tests

A good first project passes all three.

1. One sentence, no “and”.

Good: “A page where I paste a link and it saves to a list I can see later.”

Bad: “A page where I save links, and tag them, and search them, and it syncs to my phone.”

Each “and” is a separate thing that can break. Four features do not take four times as long to review — they take longer, because now failures interact.

2. You can see whether it works.

Something visual and immediate. You do the thing, you look at the screen, you know.

Compare that to “a script that cleans up my spreadsheet”. Did it work? You would have to check hundreds of rows to be sure. That is a fine second project. It is a terrible first one, because you cannot review it with the skills you have today.

3. One sitting.

If you cannot imagine reaching a finish line in an hour or two, cut it down. You are not measuring your ambition here — you are buying repetitions of the loop.

Quick check

Which of these is the best first vibe coding project?

The project we will use

For the rest of this course, the running example is a small one:

Readlist — a single web page where you paste a link, click Save, and it appears in a list. The list survives closing the browser.

It passes all three tests. It is also honest about size: it is a page, a text box, a button, and a list.

You are welcome to build something else. Keep your own project on the same scale and everything here transfers.

Tip

Pick something you personally want to exist, even slightly. Motivation matters more than usual here, because the last 10% of any project is the least fun part, and nobody will make you do it.

Write the finish line first

Before you type a single , write down what “done” looks like. Three or four lines, plain language:

Done means:
- I paste a URL, click Save, and it appears in the list
- Refreshing the page does not lose the list
- I can delete an item
- It does not look broken on my phone

This takes two minutes and does more work than any prompting trick.

It gives you something to check the agent’s output against. Without it, “done” drifts — every time you look at the thing, you see one more improvement, and you never ship.

Quick check

What is the main benefit of writing the finish line before you start?

The cut list

Everything you want that is not on the finish line goes on a separate list, called Later. It stays there until version one is actually shipped.

For Readlist, the Later list is long and that is fine: tags, search, editing an item, a nicer design, syncing, sharing, a browser extension.

Not one of those is bad. Every one of them, added now, is a way of not finishing.

Note

The Later list is not a formality. Writing an idea down is how you let go of it. Ideas you refuse to write down are the ones that keep sneaking into your prompts.

Quick check

You are two prompts into your first build and think of a great extra feature. What do you do?

Set it up now

A finish line you are holding in your head is not a finish line. Give it a folder.

Three things, two files, one folder: the one sentence and the finish line go in done.txt, the cut list goes in later.txt, and the folder they sit in is the project. No code yet — the scope exists first.

The in this lesson is a simulator. Nothing you type touches your computer and nothing here can break, so type the four lines rather than reading them.

mkdir readlist
echo "Readlist: a page where I paste a link and it appears in a list." > readlist/done.txt
echo "Done means: the link shows up in the list and refreshing does not lose it." >> readlist/done.txt
echo "Later: tags, search, editing, syncing, a browser extension" > readlist/later.txt

mkdir makes a folder. The rest is one idea called : > sends a line into a file and replaces whatever was there, and >> adds a line to the end instead. That is why the second line into done.txt uses >> — with > it would have wiped the first one.

Read it back with cat readlist/done.txt and you are looking at the thing you will check the agent’s work against.

Building something other than Readlist? Use your own words. The task only checks that the folder exists, that done.txt contains a Done means: line, and that later.txt is there holding what you cut.

That folder is the entire input to your first prompt, which you write in the next lesson.

Check your understanding

Answered 0/2
Mode:

Why is "one sentence, no 'and'" a good test for a first project?

What makes a project good for a beginner even though it is small?

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.

Task

Set up the project workspace before any code exists: the folder, a done.txt holding the finish line, and a later.txt holding what you cut.

Tab complete · history · Ctrl+L clear · help commands

  • Not done: The readlist folder exists
  • Not done: done.txt holds your finish line
  • Not done: later.txt holds what you cut

Lesson Q&A

Why is "one sentence, no 'and'" a good test for a first project?

Every "and" doubles the surface you have to review and the number of places a failure can hide.

What makes a project good for a beginner even though it is small?

Visible correctness means you can review it without knowing the language. Invisible correctness needs skills you have not built yet.

Which of these is the best first vibe coding project?

It is one sentence, you can see whether it worked, and it fits in one sitting. The others fail at least one test — and the last one is not reversible.

What is the main benefit of writing the finish line before you start?

Without a written finish line, done is a feeling, and feelings expand. With one, done is a checklist.

You are two prompts into your first build and think of a great extra feature. What do you do?

Excitement mid-build is exactly how scope grows. The list captures it without derailing the run you are in.

Related reading on the blog

Move between lessons with · search with ⌘K