Wrap-up and resources
Final recap
- 1. The scene: The tool changed how fast you type, not where judgement lives. The engineer defines what “correct” means.
- 2. Install: Do not move on before you see the grey text and get a reply in chat. Verification is a step, not optimism.
- 3. Completion and chat: Completion speeds up typing, chat speeds up understanding. And
"yes" == trueis notBoolean("yes"), comparing by running is what exposed the difference. - 4. Agent mode:
exit 0means “finished without an exception”, not “the code is correct”. A file that prints and asserts nothing is not a test, we broke the code,roll(6) -> 7appeared on a six-sided die, and it passed. - 5. Context and rules: Context is the product. And a rule written once in
AGENTS.mdtravels with the project to every session and every teammate. - 6. A whole app: Contract, then test, then code. One assertion caught a shorter, prettier suggestion that deleted the wrong task and returned
true. - 7. The trap: What weakens your skill is merging what you do not understand. Evidence is a run or documentation, not a confident tone and not “are you sure?”.
- 8. API Prototyper: An API is a contract written before the code: requirements in plain words, then resources named as nouns rather than verbs, then an endpoints table carrying the method and the auth, then an OpenAPI file with schemas wired by $ref. The validator judges syntax, not meaning, so quality stays your decision.
The thread connecting all sevenIn every part the suggestion looked fine, and in every part one thing exposed it: running it.
Boolean(u.subscribed) looked clearer and changed behaviour, the agent's test looked sufficient and checked nothing, splice/findIndex looked shorter and deleted the wrong task, and flatten() looked real and was not. The difference between an engineer who uses AI and someone who pastes code is this single step: owning a measure that does not believe appearances.Complete glossary
| Term | Definition | Part |
|---|---|---|
| Inline completion | A grey suggestion appearing as you type, accepted with Tab; it speeds up typing, not thinking. | 3 |
| Chat | A conversation where you ask for an explanation or a solution; the output is text you read and copy yourself. | 3 |
| Agent mode | A mode where the assistant really writes to your files and runs commands inside a self-correcting loop. | 4 |
| diff | A line-by-line view of a change: + added, - removed. The only control point before the write. | 4 |
| Exit code | The number a program returns when it ends: 0 means it finished without an exception; non-zero means failure. | 4 |
| Assertion | A statement saying “this value must be X” that fails when it is not. What separates a test from printing. | 4 |
| Context window | Everything the model sees before answering: your question, the files, the rules. Always finite. | 5 |
| Indexing | Building an index of your project so it can answer questions spanning files you never opened; it means code is read and sent. | 5 |
| Rules file | AGENTS.md, or .mdc files inside .cursor/rules; instructions read with every request. | 5 |
| @-mention | Loading one named file, folder or symbol into the context window, more precise than automatic indexing. | 5 |
| The contract | Two sentences fixing the input, the output and the edges before any code is written; what the assistant commits to. | 6 |
| Domain and transport | Separating decisions (store.js) from the network (server.js) so logic is tested fast and decisions are reviewed in one place. | 6 |
| Edge cases | Empty, missing, wrong type, repeated operation. Where most bugs live. | 6 |
| Happy-path test | A check of the normal case only; it almost always passes and hides the bugs at the edges. | 6 |
| Plausible invention | A function or package name that does not exist, written confidently because it resembles real ones. | 7 |
| The invented package | A package name with no owner; a stranger may publish it, so your install runs their code. | 7 |
| Knowledge debt | Every line in your project you cannot explain; repaid by reading, not by asking the assistant. | 7 |
| The protocol | Seven questions before every merge, chiefly: can I explain it? and would I sign it with my name? | 7 |
| Resource | The kind of thing the API lets you read or change; named with a noun rather than a verb, and plural for collections | 8 |
| Endpoint | A path and an HTTP method together, such as GET /books/3, not the path on its own | 8 |
| OpenAPI | A YAML or JSON format describing an API in a machine-readable way: paths, parameters, bodies, responses and authentication | 8 |
| Schema | The shape of a piece of data: its fields, their types, and which are required | 8 |
| $ref | A pointer to a definition written once under components, keeping a single source of truth for the shape | 8 |
| Mock response | A hand-written example of what the API will return, used to try the design before any code exists | 8 |
| diff | The difference between two versions; what you review, not the whole repo. | 9 |
| Failure scenario | A specific input that makes the code go wrong. | 9 |
| Static tool | Analyses code without running it, like ruff and eslint. | 9 |
| Structured brief | User, task, content, states, constraints, accessibility. | 10 |
| Small change | A specific, checkable change instead of re-asking. | 10 |
| aria-current | Announces the current item in a sequence to screen readers. | 10 |
| Non-functional requirements | Load, latency, availability and cost, in numbers. | 11 |
| ADR | Architecture decision record: context, decision, alternatives, consequences. | 11 |
| C4 | A layered diagram model: context, containers, components, code. | 11 |
| API hallucination | A function or argument that does not exist in the installed version. | 12 |
| Slopsquatting | An attacker registering a package name that models invent. | 12 |
| Edge case | An input at the extremes: empty, zero, very large. | 12 |
Sources
The best outside resources for these lessons, classified by kind and level. All are open to everyone and need no account on any platform. Use the filters to narrow the list.
0 resources
Video (3)
VideoJavaScript Programming: Full Course (freeCodeCamp)The whole language, from variables to async code.youtube.comBeginnerVideoNode.js and Express.js: Full Course (freeCodeCamp)Build an HTTP server and a REST API step by step.youtube.comIntermediateVideoLarge Language Models explained briefly (3Blue1Brown)The idea behind the models these API prototypes call.youtube.comBeginner
Interactive tools (9)
Interactive toolGitHub Copilot on the VS Code MarketplaceThe extension's own page: version, publisher and requirements. Always check the publisher before installing.marketplace.visualstudio.comBeginnerInteractive toolDownload Node.jsNeeded in parts 4 and 6 to run the tests. Any recent supported release is enough.nodejs.orgBeginnerInteractive toolVS Code, the editor itselfThe official download page for the free, open-source editor the whole of Part 2 rests on.code.visualstudio.comBeginnerInteractive toolContinue, an open-source coding agentOne of the options the project names for adding AI to your editor; open source, and you choose the model yourself.continue.devIntermediateInteractive toolGoogle AI Studio, where the API key comes fromThe page the project points you to for creating the key your editor add-on uses. Remember Part 2: the key lives in settings, never in code.aistudio.google.comBeginnerInteractive toolCline, an open-source coding agentA VS Code agent extension that plans then acts, letting you approve each step or auto-approve. The clearest live example of Part 4.cline.botIntermediateInteractive toolCursor, an AI-first editorThe editor Part 5 explains: indexing, context and the agent are built in rather than bolted on.cursor.comIntermediateInteractive toolSwagger EditorA browser editor that validates your OpenAPI file as you type and shows the interactive documentation in the facing pane.editor.swagger.ioBeginnerInteractive toolPrompt Engineering Interactive Tutorial (Anthropic)Exercises on writing prompts that return reliable, well-formatted output.github.comBeginner
Official documentation (30)
Official docsVisual Studio Code DocumentationThe official reference for the editor this whole track rests on, start here when you want the truth rather than a tutorial.code.visualstudio.comBeginnerOfficial docsGitHub Copilot Documentation, HomeThe entry point for every mode: completion, chat, agent mode and organisation policies.docs.github.comBeginnerOfficial docsSetting up VS Code on Every PlatformThe official install steps for Windows, macOS and Linux, including what genuinely differs between them.code.visualstudio.comBeginnerOfficial docsThe VS Code User InterfaceLearn the names of the regions (side bar, panel, terminal) so later instructions make sense without guesswork.code.visualstudio.comBeginnerOfficial docsInstall the Copilot Extension in Your IDEThe official install and sign-in steps, the reference to return to if a step in part two stalls.docs.github.comBeginnerOfficial docsGetting Code Suggestions in Your IDEHow inline completion works: when it appears, how to cycle suggestions, and how to dismiss without accepting.docs.github.comBeginnerOfficial docsChat in Your IDEThe second mode: explanation, discussion and proposed edits, and when it beats guessing at suggestions.docs.github.comBeginnerOfficial docsMDN, Equality (==)The reference explaining exactly why "yes" == true is false. Read the coercion table once and you will not forget it.developer.mozilla.orgBeginnerOfficial docsMDN, TruthyThe other half of part three's exercise: what JavaScript treats as truthy, and why it differs from == true.developer.mozilla.orgBeginnerOfficial docsUse Agent ModeThe official reference for the mode that edits files and runs commands, and how to review before approving.docs.github.comIntermediateOfficial docsUse Plan ModeA very useful intermediate step: read and edit the plan before anything touches your files.docs.github.comIntermediateOfficial docsUse Chat in VS CodeThe editor's own view: session controls, permissions and model choice, a complement to the Copilot docs.code.visualstudio.comIntermediateOfficial docsNode Docs, The assert ModuleWhat turns a printing file into a test that can fail: strictEqual, deepStrictEqual and throws.nodejs.orgIntermediateOfficial docsNode Docs, process and Exit CodesWhere exit 0 comes from and why it does not mean “the code is correct”. The exitCode section is the one you want.nodejs.orgIntermediateOfficial docsCursor DocumentationThe official reference: agent, planning, review and plugins. Check it rather than blog posts, names change.cursor.comIntermediateOfficial docsCursor Rules.cursor/rules and AGENTS.mdWhere rules live, their types and their application modes. This is precisely part five's exercise reference.cursor.comIntermediateOfficial docsCustomizing Copilot with Custom InstructionsThe Copilot equivalent: the same rules-file idea. Read it to see the skill is transferable, not tool-specific.docs.github.comIntermediateOfficial docsExcluding Content from CopilotThe practical side of the indexing concern: how to stop sensitive files or folders being sent.docs.github.comIntermediateOfficial docsNode Docs, The http ModuleEverything server.js needs in part six with zero dependencies: createServer, writeHead and end.nodejs.orgIntermediateOfficial docsMDN, Array.prototype.findIndexHalf the cause of part six's bug: what this method returns when it finds nothing.developer.mozilla.orgIntermediateOfficial docsMDN, Array.prototype.spliceThe other half: a negative index counts back from the end. The page has an explicit splice(-2, 1) example.developer.mozilla.orgIntermediateOfficial docsMDN, HTTP Response Status CodesWhy 201 for created, 400 for bad input, 404 for missing and 204 for a delete with no content.developer.mozilla.orgIntermediateOfficial docsThe Complete JavaScript Reference on MDNThe practical weapon against plausible invention: confirm a method exists before you use it, in two seconds.developer.mozilla.orgAdvancedOfficial docsAuditing Package Dependencies with npm auditWhat to do after you accept a package: how to read the vulnerability report and what needs manual review.docs.npmjs.comAdvancedOfficial docsOpenAPI, Structure of an OpenAPI DescriptionThe top-level fields and which are genuinely required, and why version under info is your API's version rather than the specification's.learn.openapis.orgBeginnerOfficial docsThe OpenAPI SpecificationThe complete reference for every field. Not read end to end, but searched when the validator asks about a field.swagger.ioAdvancedOfficial docsMDN, RESTA short, honest definition: REST is a set of design constraints, and much of what is called RESTful does not meet all of them.developer.mozilla.orgBeginnerOfficial docsMDN, HTTP request methodsThe precise difference between PUT and PATCH, and why GET must stay safe and change nothing.developer.mozilla.orgIntermediateOfficial docs
http, assert and process.exitAn official reference covering the topic precisely.nodejs.orgIntermediateOfficial docsto verify a method exists before you use itAn official reference covering the topic precisely.developer.mozilla.orgIntermediateArticles and explainers (2)
ArticleAGENTS.md, An Open Format for Guiding AgentsA “README for agents”: a predictable place for build steps, test commands and conventions. Read it before part five.agents.mdBeginnerArticleOWASP Cheat Sheet SeriesThe reference to reach for whenever an assistant proposes code touching authentication, input or secrets.cheatsheetseries.owasp.orgAdvanced
- Every terminal output in this guide is the real result of running Node on the code shown, none of it is hand-written.