Skip to content

Course · Cursor

The Cursor course

This is a hands-on course, not a reference. It runs on one carried example project - budgetcli, a small self-hosted personal-finance API for tracking accounts, importing bank statements from CSV files, and flagging overspend - and every chapter takes a problem you’ll really hit (auto-retrieval pins the wrong files on a big repo, the agent reintroduces the same money bug, a refactor is worth doing but not one-at-a-time) and shows the exact Cursor move that fixes it. budgetcli is an illustrative scenario, not a story you need to have followed: this site ships no starter repository for it, every page restates the scenario facts it uses, and the substitutions section below maps each move onto a TypeScript repo you own.

This course is editor-first. Cursor is a GUI-first fork of VS Code, built by Anysphere and shipped as its own desktop app - so the first-class surface here is the editor you already know, with the AI bolted onto it. That’s a deliberate inversion of the Codex and Claude Code courses, which start at the terminal: here the editor is the spine and the CLI is a chapter near the end, not the other way round. The arc runs from your first in-editor edit out to headless and CI - and by the time it gets there, the review habit you build in the first hour is the part that hasn’t changed.

If you want the spec-level “what is this primitive” view, that’s Foundations - the course site’s per-tool reference pages - and, for the vendor half, Cursor’s own docs at cursor.com/docs. This course is the other half: the muscle memory. Read it start to finish to build up from zero, or drop into any chapter when a specific problem is in front of you.

The framework: capability, context, control, cost

Section titled “The framework: capability, context, control, cost”

Every coding agent you’ll meet, Cursor included, shares one shape of strength and blindness. It is extraordinary at the general - broad, fast, fluent across languages and frameworks - and blind to the particular: it doesn’t know your codebase, your conventions, or your domain. Four principles run through every chapter, and they’re worth naming up front because they name that gap and every move you make about it:

  • Capability - what the agent brings to the gap: what it can figure out and accomplish with its model and tools. Model choice and delegation live here.
  • Context - what it is missing: the information that isn’t in front of it when it decides - your conventions, your domain, the file it hasn’t read. Rules (standing instructions in your repo), briefs (short written task instructions), and skills (packaged procedures) feed it context.
  • Control - how you bound what it does with both: what guides execution, enforces boundaries, or lets you intervene. Modes (Agent/Ask/Plan/Debug postures), permissions (enforced boundaries), and hooks (deterministic gates) bound it with control.
  • Cost - what every attempt spends while you do it: money and usage, elapsed time, attention, and rework. The meter runs the whole time.

Context is the organizing theme: most of what you’ll build in this course is ways to get what you know into the agent’s context, and ways to check what came back. The other three frame the decisions around it - how much the agent can do, what stops it, and what it spends. Model choices spend capability exactly where it changes the answer. No lesson needs all four principles; the framework is a lens, not a template.

  • Cursor installed (download from cursor.com)
  • A Cursor account - the free tier is enough to start; pages name a higher tier where one is needed (plans as of October 2026)
  • Basic TypeScript familiarity
  • Git fundamentals
  • VS Code experience helpful (Cursor is a fork)
  • A small TypeScript repository you own or can freely edit, standing in for the course’s illustrative budgetcli scenario - the substitutions below map the moves onto it
  • jq and a disposable CI/VM environment for the later CLI and Cloud Agent chapters

The course uses budgetcli as a running scenario; no starter repository ships with this site. The examples are intentionally small enough to adapt - map every move onto a TypeScript repo you own:

  • Any small TypeScript service with an import path and a few recurring conventions works as the budgetcli stand-in; a personal project you can freely edit is ideal.
  • The rules chapter’s examples (money as integer cents, timestamps in UTC, Zod schemas for validation) map onto whatever conventions your repo actually has - write yours, not the course’s.
  • The extending chapter wires a Postgres database and a live exchange-rate API as MCP servers; use any database or HTTP API you’re authorized to access, and don’t paste internal URLs or credentials into config you might share.
  • The CI chapter wires a read-only check into a CI runner; any repo with a GitHub Actions-style workflow or similar works.

Eleven chapters, in reading order. Each is self-contained - it carries the example project one stretch further and restates the facts it needs - so start at the top, or pick the problem in front of you. Product surfaces like mode lists and menus shift between Cursor releases; every chapter dates its claims and links the primary doc, and the cards below name only what the final pages deliver.

Each chapter carries the same example project one stretch further, and the chapters build on each other: each one picks up a problem, adds a move to your repertoire, and hands off to the next. The order is deliberately editor-first: you start in the GUI where Cursor’s whole pitch lives, and only walk out to the terminal and CI once the in-editor habits are reflex.

So you get the most out of the course by reading it in order. But every chapter is also a direct entry: each page restates the scenario facts it needs, so you can drop in from a search with one specific problem in front of you and lose nothing but the accumulation.

What you won’t find is a fixed template stamped onto every chapter. Some need a long worked transcript, some a single setting and a warning, some a digression into why Cursor behaves the way it does. The shape follows the content, the way a good book varies its chapters.