-
01 Assignment 01 — Get Yourself Online A list of things to figure out. Nothing here tells you how.
Open as its own page ↗By next week you can take a change from idea to live on the internet without looking anything up.
Below is the list. Nothing here explains how — finding out is the assignment. Use AI, videos, docs, each other. There’s no cheating on the how. You’re judged on whether it works, whether you can explain it, and how you got yourself unstuck.
Each row has two halves. The left is the thing to make work. The right is the thing to understand — if you can’t answer it, you haven’t finished the row, no matter what’s on your screen.
On paper: assignment-01.pdfThe list
Accounts
Figure out Understand it when you can answer Get a GitHub account, with your real name and a photo on the profile Why a stranger reading your profile is the point of it Apply for the GitHub Student Pack What it gives you that you’d otherwise pay for Launch a Codespace, use its terminal, and stop it when you’re done What a Codespace actually is, and what’s still running after you close the tab Find the core-hours meter Why a 2-core machine burns your quota twice as fast as clock time The Git loop
Figure out Understand it when you can answer Make a repo, and get it open in a Codespace The difference between Git and GitHub Make a branch Why you don’t just edit mainCommit a change Why a commit is not a save, and what a good message says Push it Why committing ten times and pushing once is normal Open a pull request, and merge it What a PR is for if you could just merge it yourself Pull the merged change back down Where your copy and GitHub’s copy disagree, and what happens if you ignore it Run that loop start to finish, twice, without notes. That’s the bar.
Live on the internet
Figure out Understand it when you can answer Get something — anything, a heading will do — live at a public URL Why pushing isn’t deploying Find out what happens to your URL when you push again What “deploy” means in the thing you chose Work out what the three layers of a web page are Which layer a visitor can read, and how you know Write a .gitignore, working, before your first pushWhat it does and does not protect you from Secrets
Everything you commit is permanent, and on a public repo it’s instantly public. Bots scrape new commits within seconds of a push. API keys, tokens, passwords,
.envfiles: never.Figure out Understand it when you can answer Where a secret key is safe to live, and where it isn’t Why “it’s in the JavaScript” means “it’s public” What you’re supposed to do if you commit a key by accident Why the answer is not “delete it in the next commit” Hand in
1 Your GitHub profile 2 A pull request you opened and merged 3 Your live URL 4 What broke, and how you got unstuck done when All four handed in, and you can walk through the Git loop out loud with the screen off.
What you’re actually graded on
Three things, and only three:
1 Engagement Mr. Smith’s call, from what he sees in the room. If you’re not participating, he’ll notice — that’s the whole mechanism 2 The blank paper quiz Tuesday, next week 3 The portfolio Graded when it’s finished, end of this month Everything above is how you get ready for those. Nothing on the list is worth marks on its own — it’s worth marks because you can’t do 2 or 3 without it.
Limits worth knowing before you assume you’re stuck
- GitHub Pages needs a public repo on the free plan. Other hosts don’t.
- Your profile needs to look like a real person for the Student Pack. Nothing beyond that belongs in a repo — not your address, not your schedule, not your phone number.
When you’re stuck
That’s not the assignment going wrong. That’s the assignment.
Before you ask a person: search the exact error text, read the real documentation, ask an AI to explain it three different ways until one lands, find a video. Note where the answer came from — hand-in 4 is that note.
Build your own way inI need to learn X. Don’t explain it yet.
Find me the three best resources — the official docs page, one video, one worked example. Tell me what order to use them in and what I should be able to do after each. Then quiz me on it and tell me what I still don’t have.
The portfolio — due Friday 21 August
The list comes first — there’s no point styling a page you can’t deploy yet. But the portfolio is due at the end of this week. What it has to do and how it’s marked →
That live page becomes your portfolio, and you’ll add your work to it every unit. Nobody’s handing you a template — working out what makes a portfolio good, and what makes yours worth looking at, is the assignment.
Which makes this the place to plan before you build. Every project this year starts the same way — Goal, Scaffold, Evaluate — and you write all three down before you make anything. Write it in a file in the repo, so it’s committed and you can hold yourself to it later.
This isn’t paperwork. It’s the handoff. An AI will build whatever you ask, instantly, and has no idea what you actually want or when it’s finished — so these three, once you’ve got them aligned, are exactly what you hand it so it can go and work without you standing over it. Goal says what to build. Scaffold says in what order. Evaluate is the test it has to pass before either of you calls it done.
Get all three right and you’re driving. Leave one vague and you’re just accepting whatever came out.
plan your portfolio -
Goal
what you are making, and why it is worth makingWho is this for, and what do you want them to think after ten seconds on it? One sentence, specific. A portfolio for everyone is a portfolio for nobody, and “to show my work” isn’t a goal — every portfolio shows work. What’s yours for?
-
Scaffold
how you get there — the pieces, and the orderThe pieces, in the order you’ll build them, with what depends on what. What’s the smallest version that could be live today? What are you deliberately not building yet? If a step can’t be done in one sitting, it’s not a step yet — break it down until it is.
-
Evaluate
how we will know it is goodHow will you know it’s actually good — written down now, before you build, while you can still be honest about it. Not “it looks nice.” Something specific enough that someone else could check it for you and get the same answer you would. A plan with no standard in it can’t fail, and a thing that can’t fail can never be finished either — and an AI with no standard will cheerfully tell you it’s done.
Do this before you write a line of it, or you’ll end up with whatever the AI defaulted to. That’s the point of the prompt below — same trick as the one further up, make it find you the map instead of walking it for you.
Plan the portfolio before you build itI’m building a portfolio site that I’ll add school and personal projects to all year. Don’t build it, and don’t give me code or a template yet.
First: find me four or five real portfolios worth stealing ideas from — a mix of students, designers, and developers — and for each one tell me what it does well and what it does badly.
Then ask me the questions you’d need answered to plan mine: who’s meant to read it, what it’s for, what I actually want out of it. One at a time, and don’t move on until my answer is specific.
Then help me write three things down, and push back where I’m being vague: GOAL — who it’s for and what they should think after ten seconds SCAFFOLD — the pieces in build order, what depends on what, what I’m not building yet EVALUATE — how we’ll tell whether the finished thing is any good
Tell me which parts you’re least sure about and why.
Then, and only then, hand it over and let it work:
Hand it the plan and let it runHere is my plan. Goal, Scaffold, Evaluate:
[paste your three]
Before you build anything: tell me where this plan is ambiguous, and where two people could read it differently. Ask me about anything you’d otherwise have to guess. I’d rather answer five questions now than get the wrong thing.
Once it’s clear, work through the scaffold in order and build it. Then — separately, and strictly against my Evaluate section, not against your own taste — go back over what you built and tell me where it falls short of the standard I wrote. Be hard on it.
If it built the wrong thing, that’s information: your plan let it. Fix the plan, not just the page.
done when It’s live, something of yours is on it, and you can say why it looks the way it does — and “because the AI made it that way” isn’t a reason.
Extra — get an agent in your terminal
Only if you already have a paid Claude or ChatGPT plan — both agents need one, and neither free tier includes them.
Get it running inside your Codespace, not on your laptop. Things to look up, in order:
- The official install command for Claude Code, or for the Codex CLI
- How to authenticate it from inside a container. This is the awkward part. The first link you’re offered won’t work, and working out why is the exercise
- How to get it to read your whole project before you ask it for anything
- How to stop your login vanishing every time you create a new Codespace
done when It has explained your own repo back to you in plain English, and you’ve had it change something that you then reviewed line by line.
-
02 Codex in Your Terminal Install the ChatGPT Codex CLI and get it working on your own machine. Two paths — Mac and Windows.
Open as its own page ↗Codex is OpenAI’s coding agent that runs in your terminal, in your actual project folder, on your actual files. Not a chat window you copy out of — it reads the repo, writes to it, runs commands, and you approve or reject what it does.
This page is unusual for this class: it tells you the how. Not because the how matters, but because a broken install is a bad place to practice figuring things out. Getting it running is twenty minutes. What you do with it afterwards is the rest of the year.
Before you start
Know which machine you’re setting up, and stop if the answer is “the school one.”
Mac Follow the Mac path. You’ll install Apple’s command line tools first, for Git. Windows 10 (build 19041+) or 11 Follow the Windows path. You’ll install WSL first — that’s most of the work. Chromebook / school-managed laptop You probably can’t install this. Use a Codespace instead — see the bottom of the page. Codex itself has almost no prerequisites. It’s a single compiled program — no Node, no Python, no
npm install, no admin password. The installer needscurlandtar, which both systems already have.What you do need is Git and a copy of your repo on the machine, and that’s the part people get stuck on. Assignment 01 lived in a Codespace, so your code is on GitHub, not on your laptop. Codex reads the folder you launch it in — point it at an empty one and it has nothing to work with. Both paths below clone the repo first, deliberately.
Mac
Codex installed, signed in, and answering questions about your own repo.
-
Open Terminal (
⌘ Space, type “terminal”, Enter). -
Install Apple’s command line tools — this is what gives you
git:xcode-select --installA dialog box appears; click Install and wait. If it says the tools are already installed, good, move on.
-
Confirm Git works:
git --versionA version number means you’re set. A popup asking to install developer tools means step 2 didn’t finish.
-
Install Codex:
curl -fsSL https://chatgpt.com/codex/install.sh | shNo
sudo, and it won’t ask for your password — it installs to~/.local/bininside your own home folder. If you already use Homebrew,brew install --cask codexdoes the same job. -
Read the last two lines the installer printed. They tell you exactly what to do next — either
codexworks right now, or it saysPATH was added toa file and you need a fresh terminal. If in doubt, close the window and open a new one: the installer putcodexin~/.local/binand added that folder to yourPATH, and a shell that was already running never sees that change. -
Check it’s really there:
codex --versionA version number means installed.
command not foundmeans step 5 — or the PATH problem below. -
Get your repo onto the machine and move into it:
cd ~ git clone https://github.com/YOUR-NAME/YOUR-REPO.git cd YOUR-REPO -
Launch it:
codex -
Pick Sign in with ChatGPT. A browser tab opens, you log in, it hands the session back to the terminal. Same ChatGPT account as your plan.
-
Ask it something about the code that’s in front of it:
Read this repo and explain what it does, file by file. Don't change anything.
what that curl command actually does, and why you should be suspicious of it
curl -fsSL <url> | shmeans: download a script and immediately run it, without reading it. That is a real risk, and the instinct to distrust it is correct — it is exactly how people get compromised.What makes this one OK is where it comes from:
chatgpt.comis OpenAI’s own domain, over HTTPS, and it’s the command printed in their own documentation. The trust isn’t in the syntax, it’s in the hostname. Change the hostname and the same command is an attack.Want to see it first? Drop the pipe and read it:
curl -fsSL https://chatgpt.com/codex/install.sh | lessIt’s worth actually skimming. You’ll see it check for
curl,tarand a checksum tool, verify what it downloaded against a published hash, unpack into~/.codex/, symlink acodexcommand into~/.local/bin, and append anexport PATH=...line to your shell profile. Nothing hidden, nothing needing root. That’s what a trustworthy installer looks like — which is exactly why you should look before running one.
Windows
WSL2 installed, then Codex inside it — signed in and reading your repo.
OpenAI’s supported setup on Windows is through WSL2, and that’s what you should use. WSL is a real Linux system running inside Windows: same terminal, same commands, same everything as the Mac instructions above, on the machine you already own.
You need Windows 11, or Windows 10 build 19041 or newer. Winver in the Start menu tells you. The good news is the Ubuntu that WSL installs already includes Git and curl, so there’s no equivalent of the Mac’s command-line-tools step.
-
Open PowerShell as Administrator — Start menu, type “powershell”, right-click, Run as administrator.
-
Install WSL with Ubuntu:
wsl --installTwo things that go wrong here. If it prints a wall of help text instead of installing, WSL is already on the machine — run
wsl --install -d Ubuntuinstead. If the download hangs at 0.0%, runwsl --install --web-download -d Ubuntu. -
Restart your computer. Not optional, and not “later.”
-
After the reboot, Ubuntu opens on its own and asks you to create a username and password. This is a Linux account, separate from your Windows login. The password is invisible as you type it — no dots, no stars. That’s normal, keep typing.
-
From now on, everything happens in the Ubuntu terminal, not PowerShell. Find it in the Start menu as “Ubuntu”, or open Windows Terminal and pick Ubuntu from the tab dropdown.
-
Update the fresh system once. It’ll ask for the Linux password you just made:
sudo apt update && sudo apt upgrade -y -
Install Codex — the same command Mac users run, because you’re on Linux now. No
sudothis time:curl -fsSL https://chatgpt.com/codex/install.sh | sh -
Close the Ubuntu window, open a new one, and check:
codex --version -
Get your project into WSL. Clone it fresh inside Linux — don’t reach across to your Windows
C:drive:cd ~ git clone https://github.com/YOUR-NAME/YOUR-REPO.git cd YOUR-REPO codex -
Pick Sign in with ChatGPT. A browser opens on the Windows side and hands the session back to the Ubuntu terminal.
why cloning into Linux beats opening /mnt/c/Users/you/...
WSL can see your Windows drive at
/mnt/c/, so working there looks like it should be fine. It isn’t. Files on/mnt/ccross a translation layer on every read and write — file operations are dramatically slower, file-watching breaks, and Windows and Linux disagree about line endings and file permissions in ways that produce Git diffs where you changed nothing.Keep Linux work in the Linux filesystem (
~/, which is/home/yourname). Your repo lives on GitHub anyway — cloning it twice costs you nothing, and that’s the whole argument for Git.
If that didn’t work — the other routes
There is no single correct installer. There are four, they all end with the same program on your machine, and if one is blocked or broken you switch. Try them in this order.
Mac Windows 1. Official installer curl -fsSL https://chatgpt.com/codex/install.sh | shSame command, inside WSL 2. Package manager brew install --cask codexnpm install -g @openai/codex(needs Node)3. npm npm install -g @openai/codex(needs Node)— 4. Native Windows — powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"5. Manual binary Download from GitHub Releases, unpack, rename to codex, put it somewhere on yourPATHSame do you need npm first? No — and here's why it looks like you would
Reasonable question, because
npm install -gis how you install most command-line tools these days. Not this one.npm install -g @openai/codexgenuinely works — but the package is a 12KB wrapper. The real program is a compiled binary that npm pulls in as a platform-specific dependency, and it’s byte for byte the same binary thecurlinstaller downloads. npm isn’t building anything or adding anything; it’s just a delivery van.Which means installing Node and npm first doesn’t help the official installer at all — that one doesn’t use Node, doesn’t look for it, and doesn’t care whether it’s there. For a machine that doesn’t already have Node, going the npm route means installing an entire JavaScript runtime in order to download one file. That’s the only reason it’s not the headline instruction.
Use npm if you already have Node and you’d rather manage versions the way you manage your other global tools. It’s a completely legitimate choice, just not a shortcut.
Use the installer if you’re starting from a clean machine — which is most of you.
School network
Know whether the network is the problem before you blame the instructions.
This is a real possibility and worth checking first, because a filtered network produces errors that look like broken instructions. Codex needs to reach:
Host For chatgpt.comthe installer script, and the agent’s traffic releases.openai.comthe download (it falls back to github.comif that’s blocked)auth.openai.comsigning in api.openai.comthe model itself github.comcloning your repo Test it in ten seconds, before installing anything:
curl -I https://chatgpt.com curl -I https://auth.openai.comAny response at all — even
403or404— means you got through; that’s the server talking. No response, a timeout, or a certificate error means the network stopped you. After installing,codex doctorchecks the same ground and reports it in English.The workaround is a Codespace, and it’s a genuinely interesting one. In a Codespace the agent isn’t running on the school network at all — it runs in Microsoft’s data centre, and that machine talks to OpenAI. The only thing crossing the school firewall is your browser talking to
github.com. If GitHub is allowed and ChatGPT isn’t, that gap is the whole reason to work there. Which is also the answer to “why do we use Codespaces in this class” — see the bottom of this page.Failing that: install it at home, or on a phone hotspot. Once it’s installed and signed in, it still needs network to run — the model isn’t on your laptop.
Both: is it actually working?
Not “did it install.” Working.
Codex ships with a self-check. Run it from inside your repo:
codex doctorIt reports on your install, whether it can find Git, whether you’re authenticated, and whether it can reach the network — with a
✓,⚠or✗on each. Read the failures; they’re written in plain English and they tell you which of the steps above didn’t take.Then the part
doctorcan’t check for you:-
codexlaunches and shows you a prompt, in a folder that contains a real project. -
codex login statussays you’re signed in with ChatGPT — not with an API key. -
It has read your repo and explained it back to you, and the explanation was right. You are the one who can check that, which is the point.
-
It has made one change you asked for, and you read the diff line by line before accepting it.
Later on,
codex updatepulls down new versions — worth knowing, because this tool changes fast enough that a guide written today will be slightly wrong by the time you read it. Including this one.When it breaks
Run
codex doctorfirst — it names most of these for you.What you see What’s actually wrong codex: command not foundYou’re in the shell that was open before you installed. Open a new terminal. If it persists, ~/.local/binisn’t on yourPATH— that’s the thing to go read about.git: command not found, or a developer-tools popup (Mac)Step 2 of the Mac path. Codex works without Git, but it works far better with it, and you can’t clone a repo without it. It bills your API key instead of your plan An OPENAI_API_KEYenvironment variable is set, and Codex prefers it over your ChatGPT login. Unset it, orcodex logoutand sign in again.Browser opens, login never comes back You’re in a container or a remote machine and the callback can’t reach you. See the Codespaces note below — same trap as Assignment 01. Confidently wrong answers about your code It only knows what it has read. Tell it what to read first. wsl --installdoes nothing (Windows)Virtualization is off in your BIOS, or you weren’t running PowerShell as Administrator. The installer times out, or a certificate error The network, not the command. See School network above. git cloneasks for a username and passwordCloning a public repo needs neither — so either the URL is wrong, or the repo is private and you need a token. GitHub stopped accepting account passwords here years ago; typing yours will fail no matter how right it is. Author identity unknownwhen something commitsFresh machine, so Git doesn’t know who you are yet: git config --global user.nameanduser.email.Make it debug its own installI’m setting up the OpenAI Codex CLI on [Mac / Windows 11 with WSL2]. Here is exactly what I ran and exactly what came back:
[paste the command and the full error text, not a summary of it]
Don’t give me a list of five things to try. Tell me what this specific error means, what the most likely single cause is, how I can confirm that’s the cause before changing anything, and then the fix. If you’re guessing, say you’re guessing.
Understand it when you can answer
Installing something is not knowledge. These are.
The thing The question The agent runs locally What is Codex reading, and what is it sending to OpenAI? WSL What is it, and why isn’t it the same as a virtual machine or a dual boot? PATHWhy does a brand-new terminal find codexwhen the old one couldn’t?Approval prompts What could a coding agent do to your machine if you approved everything without looking? Plan vs API key Why is one a flat monthly fee and the other a number that can keep going up? .gitignoreand~/.codex/Your credentials are in a file on your disk. Which files must never reach a commit? Why doesn't the terminal find `codex` right after the installer says it succeeded? reveal
PATHis the list of folders your shell searches for commands, and it’s read when the shell starts. The installer added a folder to that list — but your already-running shell is still using the copy it loaded on launch. A new terminal reads the new list.Codex just told you a function does X. How do you know it's true? reveal
You read the function. The agent is fast and confident and sometimes wrong, and confidence isn’t evidence. This is the same job as the Evaluate slot in a plan: you supply the standard, because the tool can’t.
What's the difference between this and pasting your code into chatgpt.com? reveal
Access and scope. Codex reads whole files across the project without you choosing them, and it can edit and run things. That’s more useful and more dangerous — which is why it asks first.
done when Codex is installed on your own machine, signed in with your plan, and it has explained your repo back to you correctly — and you rejected at least one thing it wanted to do, on purpose, because you read it.
On a Codespace instead
No paid plan, or a locked-down laptop? A Codespace is Linux, so the Mac commands work as-is — run the
curlinstaller in the Codespace terminal.The sign-in is where it gets interesting, and it’s the same trap as the Assignment 01 extra: the normal login hands credentials back to a browser on
localhost, andlocalhostinside a container is not your laptop. So the link you’re given goes nowhere.There are two ways out. One is to forward the port so the container’s
localhostreaches your browser. The other is a flag oncodex loginbuilt for exactly this situation — machines with no browser of their own.codex login --helplists it. Which one you use is up to you; working out why the default fails is the part worth having.The other thing to know: a new Codespace is a new machine, so your login is gone again. Figuring out where credentials live and how to stop re-doing this is the follow-up.
What this is for
The tool isn’t the point. Being able to hand work to something that will do it without you watching is the point, and that only works if you can say what you want and tell whether you got it.
Which is the same three boxes as always — Goal, Scaffold, Evaluate. A terminal agent makes the cost of skipping them obvious and immediate: vague goal, and it builds the wrong thing in four seconds instead of four days. No Evaluate, and it announces it’s finished and you have nothing to argue with.
Point it at your own repo properlyRead this entire repository before answering anything.
Then tell me, in plain English: what this project is, how it’s structured, and the three things about it that would most confuse someone seeing it for the first time.
Then — don’t fix them — tell me what you’d change and why, and which of your suggestions you’re least confident about.
-
-
03 Agenda for 08/19 Three dates: the portfolio Friday, the book Monday, the quiz the week after.
Open as its own page ↗What When Portfolio site live at a public URL Friday 21 August Own a copy of the book — AI Engineering, Chip Huyen Monday 24 August Quiz — chapter 1 Friday 4 September 1. The portfolio — due Friday 21 August
You hand in a URL, submitted via AXIS. Have fun with the design.
Full details on this project →You have agents installed — use them
This assumes Claude Code or Codex is working on your machine. If it isn’t, that’s Assignment 02, and it comes first.
Hand it a plan, not a vibeHere’s my plan for my portfolio site.
GOAL: [one sentence — who it’s for and what they should think] SCAFFOLD: [the pieces, in build order] EVALUATE: [how we’ll both know it’s finished]
plan your portfolio -
Goal
what you are making, and why it is worth makingWho is this for, and what do you want them to think after ten seconds? One sentence, specific. “To show my work” isn’t a goal — every portfolio shows work. What’s yours for?
-
Scaffold
how you get there — the pieces, and the orderThe pieces, in the order you’ll build them. What’s the smallest version that could be live today? What are you deliberately not building this week?
-
Evaluate
how we will know it is goodMake it objective enough to fail. An AI will tell you it’s good and mean nothing by it — a measurable standard is the only thing it can’t talk its way past. Write one for each domain you care about: design is a different test from code.
2. The book — buy it by Monday 24 August
AI Engineering — Chip Huyen.
done when You have your own paper copy with you on Monday.
3. The quiz — Friday 4 September
Chapter 1 only. Closed book.
What does it mean to know a chapter, for this quiz? reveal
You can explain each main idea in your own words, unprompted, with nothing in front of you.
What gets handed in
-
-
04 The Portfolio The full brief. What it has to do, and the decisions you have to make yourself.
Open as its own page ↗Due Friday 21 August, submitted via AXIS. You hand in a URL — not a repo, not a screenshot, not a zip.
What it has to do
Make it work Understand it when you can answer The link opens on a school computer, a phone, and a machine you’ve never logged into Why “it works on my laptop” and “it’s live” are different claims It says who you are, in your own words What a stranger knows about you after ten seconds It shows at least one project, and what you were trying to do Why the write-up around a project is worth more than the project The design is a decision you made and can defend What you chose not to do, and why done when You paste the link into a browser on a computer that is not yours, in a window that is not logged into anything, and your site loads.
The decisions
Nothing below has one right answer. Research your options, pick one, and be able to say why you picked it.
Figure out Understand it when you can answer Where the site is going to live How a website is actually hosted, and what the services on offer differ on What you’re building it with What the “stack” is — frontend, middle, backend — and which parts yours even has Whether it’s safe to put on the internet What of yours is visible to anyone who views the page, and what should never be in it How to set the job up before you start What an agent needs from you up front to get it right the first time instead of the fifth why you're being asked to choose rather than told what to use
Every one of these has a default that works. The reason you’re picking is that a year from now the defaults will have changed and the question won’t have. Being handed a stack teaches you that stack; choosing one teaches you how to choose.
On the writing
The words are the assignment as much as the layout. “Hi I’m a student who likes coding” tells a reader nothing. Say what you’re actually into, what you’ve built, what you got wrong and fixed.
why the language carries so much of the mark
Everyone in the room has the same agents, so everyone can produce a page that looks fine. What an agent cannot do is know what you think, what you’ve done, or what you want. The generic-sounding portfolio is the one that got typed by something with no information about you — and it reads that way immediately.
Get it to build, without letting it write youBuild the smallest version of my portfolio site that satisfies the plan below and gets deployed to a public URL.
GOAL: [paste yours] SCAFFOLD: [paste yours] EVALUATE: [paste yours]
Ask me anything you need before you start. Leave every sentence about me as TODO — I’m writing those myself.
Your site is live and looks good. How do you know it's finished? reveal
Because you wrote the standard down before you started and it passes. If the only answer is “it looks done,” you skipped Evaluate — and so did the agent.