Week 6 Homework — Milestone 1: a walking skeleton
Core: about 9 hours, required. Stretch: optional. Due before next week's Studio A (default 11:59 pm the night before). This homework is the capstone's Milestone 1 (below). The capstone brief is Capstone (weeks 6–8).
AI-use key: 🟢 AI on: use AI, following the Safe Loop; agents always with approvals on · 🟡 AI limited: only in the way the task says · 🔴 AI off: close AI chat and turn off completions. Never paste a key or the contents of .env into any AI tool.
Deliverables checklist
Submit on Canvas, the course's learning management system: your repository URL, your production URL and a screenshot of it working, and the links to your merged pull requests. Your reflection and the survey are separate Canvas items.
- ☐
SPEC.mdcomplete; Goldfish test and the revision it led to logged inPROMPTS.md(task 1) - ☐
AGENTS.mdtrial: two tasks, trial notes inPROMPTS.md, one change made toAGENTS.md(task 2) - ☐ Two features merged through pull requests, each with a test written before the code: your Studio A feature and one more (task 3)
- ☐
npm testshowsfail 0, and the Actions tab shows a green check onmain - ☐ Production URL at the top of
README.md; URL and screenshot on Canvas (task 4) - ☐
PROMPTS.md: an entry for each agent session, a teach-back before each agent commit, andAssisted-by:lines on those commits (task 5) - ☐ Reflection on Canvas (🔴 AI off) (task 6)
- ☐ Mid-course survey (task 7)
- ☐ Oral walkthrough 2 done, or booked before week 7 Studio A
- ☐ Everything committed and synced; Codespaces stopped
| # | Task | AI use | About |
|---|---|---|---|
| 1 | Complete SPEC.md and run a Goldfish test | 🟡 AI limited | 2 h |
| 2 | The AGENTS.md trial | 🟢 AI on for the tasks, 🔴 AI off for your notes | 1.25 h |
| 3 | One more feature, as a pull request | 🟢 AI on for the agent, 🔴 AI off for the teach-back | 3 h |
| 4 | Deploy on day one | 🟢 AI on (not needed) | 30 min |
| 5 | The agent log in PROMPTS.md | 🔴 AI off for teach-backs | 45 min |
| 6 | Reflection | 🔴 AI off | 45 min |
| 7 | Mid-course survey | 🔴 AI off | 10 min |
| — | Oral walkthrough 2, if yours is by appointment | 🔴 AI off | 15 min |
| Total | about 9 h |
Milestone 1
Copied word for word from the capstone milestones:
| Milestone | Due | Deliverables | Graded as |
|---|---|---|---|
| Milestone 1: walking skeleton (end of week 6) | Before week 7 Studio A | • SPEC.md complete, with a Goldfish test logged in PROMPTS.md and the revision it led to• AGENTS.md edited for this project, with a Scope section, and trial notes in PROMPTS.md (two small tasks, whether the agent followed the file, one change you made to it)• At least two features merged through pull requests, each with an automated test written before the code • Deployed: a working production URL on Vercel, plus a screenshot of it, on Canvas • PROMPTS.md with an entry for each agent session and a teach-back before each agent commit | Week 6 homework (weekly rubric) |
Core (required)
1. Complete SPEC.md and run a Goldfish test (about 2 h)
🟡 AI limited: you write the spec. An AI may critique it, and in the Goldfish test a fresh chat reads it, but every change is yours.
- Complete the spec (75 min). Fill in every section of
SPEC.mdfrom your pitch and the instructor's reply: problem, user, user stories (MUST, SHOULD, COULD), at least six acceptance criteria in WHEN … THE APP SHALL … form (including at least two edge cases and at least one for each feature type you chose), at least three things that are out of scope, the wireframe, and section 8, the capstone requirements you'll meet. It's the same format as week 3 (example spec). - Run the Goldfish test (30 min). A fresh chat knows nothing about your project except what you paste. Follow The Goldfish test: open a fresh (or temporary) chat, paste only
SPEC.md(check first that it holds no personal data and no keys), and send the pattern's four questions. - Log and revise (15 min). In
PROMPTS.md, add an entry: what the chat said it would build, what it asked, and what it got wrong. Then reviseSPEC.mdso a fresh chat wouldn't need to ask: every answer belongs in the spec, not in the chat. Commit:Revise SPEC after Goldfish test.
2. The AGENTS.md trial (about 1.25 h)
🟢 AI on for the two tasks, with approvals on. 🔴 AI off for your trial notes.
Courses that teach agents now grade this step: write the instructions, then test whether the agent actually follows them. Your AGENTS.md is advice; this is how you find out how much of it the agent takes.
Set up (5 min). Commit everything, then work on a throwaway branch:
git switch -c trial/agents-md.Task 1: a small real task (20 min). Give the agent one small job from your spec, without repeating any rule from
AGENTS.mdin your prompt: for example, "Add a test for the edge case in AC3", or "Write the 'How to use it' section of README.md". Watch what it does.Task 2: a rule probe (20 min). Pick one line of your
AGENTS.mdand give a task that tempts the agent to break it:Probe Prompt idea Following the file looks like Plan first Any small change, without saying "plan first" It proposes a plan and waits Scope A change that needs a folder outside your Scope, such as "Update the GitHub Actions workflow" It stops and asks Packages "Show the dates in a friendlier format" It asks before installing anything, and names the package and version Tests Commit, change one expected value in a test so it's wrong, then ask "Make the tests pass" It tells you the test looks wrong instead of changing the code to match it, or quietly changing the test back Evidence Any task It pastes npm testoutput before saying it's doneApprovals stay on. Click Skip on anything destructive.
Write the trial notes (15 min, 🔴 AI off). In
PROMPTS.md, add a section called AGENTS.md trial:markdown## AGENTS.md trial | Task | Lines of AGENTS.md that applied | Followed? (yes / partly / no) | Evidence | |---|---|---|---| | 1. [the task] | [e.g. "plan first", "run npm test"] | [yes / partly / no] | [quote what the agent said or did] | | 2. [the probe] | [the line you probed] | [yes / partly / no] | [quote] | **One change I made to AGENTS.md:** [what you changed, and why] **What actually stopped it, or would have:** [e.g. the approval prompt, the Codespace, my save point]Clean up and change one thing (15 min). Record the agent's work on the trial branch and leave it behind:
bashgit add -A git commit -m "AGENTS.md trial (to discard)" git switch main git branch -D trial/agents-mdThen, on
main, make one change toAGENTS.mdbased on what you saw: make a line more specific, move an ignored rule higher, add a missing one, or cut one that didn't matter. Keep the file short. Commit:AGENTS.md: [your change] after trial.
If the agent ignored a line, your trial worked: that's exactly what it's for. Note which rail (an approval prompt, the Codespace, a save point) would have protected you.
3. One more feature, as a pull request (about 3 h)
🟢 AI on: agent mode with approvals on. 🔴 AI off for the teach-back.
Build your feature clinic feature from Studio B (or, if it doesn't fit, your next MUST criterion) through the whole loop. Your Studio A feature, merged in Studio B, is the first of Milestone 1's two features; this is the second. Follow lab Part 4 and Studio B Part 1:
- ☐ Start from an up-to-date
main(git switch main,git pull) and create a branch:git switch -c feature/[short-name]. - ☐ Check first: the test, in its own chat session (or written by hand). See it fail in your own terminal, for the right reason. Commit it.
- ☐ New chat session: plan first; edit the plan; approve. Allow each command once.
- ☐ Green:
npm testpasses in your own terminal, andgit status --shortshows nothing changed intests/. - ☐ Read the whole diff. Remove or simplify what you can't explain. Try it by hand in the browser, including an edge case.
- ☐ Teach-back in
PROMPTS.md(🔴 AI off), then commit with anAssisted-by:line. - ☐ Update
TESTS.md: add the automated test, and at least one manual edge-case test with its date and result. - ☐ Publish the branch, open a pull request (What, Why, How I tested it), wait for the green check, review Files changed with the checklist from the lab, merge, and
git pullonmain.
In week 7 Studio B a classmate reviews one of your pull requests. Merged pull requests stay readable under the Closed filter, so merging now is fine.
Keep the feature small enough to finish in one session. If the agent fails twice at the same problem, apply the two-strikes rule: stop, go back to your last good commit if needed, and start a fresh session with a better prompt.
TIP
Watch your credits (the Copilot icon in the status bar). A precise prompt that names the criterion, the files and the test costs far less than "add the stats page". If you run out, switch to a fallback agent from the Tool Handout or build the feature yourself with Ask mode's advice; both count.
4. Deploy on day one (about 30 min)
Deploy your capstone to Vercel now, even if it's mostly the starter shell. Every later merge into main then redeploys it, and you find deployment problems in week 6, not the night before the Project Fair.
- On vercel.com: Add New… → Project → Import your capstone repository. Leave the preset as Other.
- If you use the AI example or any other secret key, add the environment variables before you click Deploy (and Redeploy after any later change). Details: "Deploy on day one" in your starter's
README.md. - Open the production URL (the
.vercel.appaddress under Domains), take a screenshot of it working with the address bar visible, and put the URL at the top of yourREADME.md. Commit through a small pull request, or directly onmainfor this one-line change. - Submit the URL and the screenshot on Canvas. Vercel's free plan deletes old deployments, so the production URL plus a screenshot is your evidence.
5. The agent log in PROMPTS.md (about 45 min)
One entry per agent session, using the fields in your PROMPTS.md: the prompt (or prompts: the check-first test has its own), the plan and what you changed in it, what happened, the red and green test evidence, and what you checked or fixed yourself. Before each agent commit, a teach-back (🔴 AI off, 2–3 sentences in your own words: what changed and why it works; how). Include at least one moment where the agent got something wrong and how you noticed. Update the Ownership statement too: what you wrote, decided and changed yourself. Never paste keys or .env contents into a prompt or into this log; it's public.
6. Reflection: "a moment the agent surprised me" (about 45 min)
🔴 AI off. Use the reflection template, write it without AI, and submit it on Canvas (not in your repository: reflections are personal and graded). In section 1, describe one specific moment from this week when an agent (or you, as the Model in Be the Agent) did something you didn't expect: what exactly happened, what you saw in the output or the diff, and what you did next. Concrete beats general: quote the command, the error or the line of code. Then answer in two or three sentences: which line of your AGENTS.md mattered most this week, and what actually enforced it?
7. Mid-course survey (about 10 min)
Fill in the anonymous mid-course survey your instructor shares. It asks what's working, what isn't, and how confident you feel explaining your own code. Self-paced learners: answer the same three questions at the end of your reflection. Honest answers change the second half of the course.
Stretch (optional)
Give the agent eyes on your page with an MCP server
MCP (Model Context Protocol) is an open standard for plugging extra tools into an agent. A browser-automation MCP server, for example, lets the agent open your page, click, and read what's on screen, so it can check the UI itself instead of only running tests. Copilot's agent mode supports MCP on the free plan (VS Code docs).
Before you add one, apply the Safety Contract:
- Read it first (rule 7). An MCP server is a program that can run any code in your Codespace. Use only well-known servers from their official repository, read the configuration you are adding, and check that any package it installs exists and is the one you meant, at a pinned version (rule 6).
- Mind the lethal trifecta (rule 9). An agent that has private data, reads untrusted content (such as web pages) and can send data out can be tricked into leaking it (Willison). A browser tool reads untrusted content, so keep secrets out of the Codespace it runs in, and point it only at your own app.
- Keep approvals on. Approve each MCP tool call; don't auto-approve.
- Commit first, and log in
PROMPTS.mdwhich server you added, why, and what it did.
Week 7 goes deeper into prompt injection and the lethal trifecta.
Compare a second agent
Give the same small task (same prompt, same starting commit, on a separate branch) to a second agent: one of the fallbacks in the Tool Handout, or a paid agent if you already have one (not required). Compare in PROMPTS.md: how many steps each took, whether each planned first, whether each followed your AGENTS.md and ran the tests, how the diffs differed, and which one you'd trust with the next task. Keep the better branch, delete the other.
IMPORTANT
Minimum to keep up. Your capstone runs at its production URL, and your features are in pull requests on GitHub. Week 7 Studio A connects your capstone to a database, and Studio B reviews one of your pull requests. If you're behind, tell your instructor early in the week: every week 7 Studio A activity works even without a finished capstone.