You do not need a template for everything. But when a request matters, four parts will
carry you a long way.

1. Goal — what you want, and why

The “why” matters more than people expect. It lets the model make sensible choices about
things you forgot to mention.

“Build a page that shows a student all the cards they have to review today, so they can
start studying within a few seconds of opening the app.”

That “so they can start within a few seconds” quietly rules out a dozen bad designs.

2. Limits — what it must and must not use

“Use TypeScript. Use the existing database setup. Do not add any new libraries. Do not
change any file outside the src/review folder.”

Limits are the part people leave out most often, and the part that saves the most time.
“Do not change anything else” prevents a whole category of unpleasant surprises.

3. Examples — what the result looks like

Real inputs and real outputs. One good example is worth a paragraph of description. This is
important enough to have its own lesson, next.

4. Done-criteria — how you will know it worked

“It is done when: opening /review shows only cards due today or earlier; a student with
no due cards sees the message ‘Nothing to review, well done’; and npm test passes.”

This part does something valuable that is easy to miss. It gives the model something to
check itself against. In Module 5 you will connect this directly to tests, and the agent
will start fixing its own mistakes without you.

Before and after

Before:

Make a page showing cards to review.

After:

Goal:
Build a page at /review that shows a student every card due for review today,
so they can start studying within a few seconds of opening the app.

Limits:
- TypeScript only.
- Use the existing database connection in src/db.ts.
- Do not add new libraries.
- Only create or change files inside src/review/.

Examples:
- A student with 12 due cards sees all 12, oldest due date first.
- A student with 0 due cards sees the text "Nothing to review, well done".
- A card due tomorrow does not appear.

Done when:
- Opening /review shows only cards due today or earlier.
- The empty case shows the message above.
- npm test passes.

The second one took four minutes to write. It saves an afternoon.

You will not always need all four

For a small change, one clear sentence is enough. Use the four parts when the task is big,
when you have been burned before, or when you notice yourself about to type a feeling word.

Try this before the next lesson

  1. Rewrite your request from Lesson 2.2 using all four parts.
  2. Give it to a model. Compare the result with your earlier attempt.
  3. Which of the four parts was hardest to write? That is usually the part you had not
    actually decided yet.