13 lessons, each a self-contained pack — study notes, flashcards, and a spoken recap. Open offline; learn at your own pace.
Each card opens a full lesson: notes to read, cards to drill, and a recap to listen to. Start anywhere; they stand alone.
The **Claude Developer Platform** is Anthropic's infrastructure for building with Claude programmatically. Instead of chatting with Claude in a browser, you send structured requests from your code and get structured responses back — with control over every detail: which model to use, how many tokens to spend, what tools Claude can use, and what system instructions it follows.
Saying hi to Claude might warm your heart, but it's not really useful. In this lesson we'll send Claude something real and get structured insight back — in just under 20 lines of code.
You're shipping an app with Claude. Which model do you pick? If you default to the smartest one, your API bill will surprise you. Pick the cheapest one, and the output might not hold up. Each model has different trade-offs, and picking the right one affects both **quality** and **cost**.
You've made API calls, but a single call only returns one response. If you want to automate a workflow, Claude needs to act, look at the result, decide what's next, and keep going. That pattern is what people mean when they talk about **agentic workflows**.
Your existing workflows rely on a lot of different technologies — project management software, databases, files. Claude can't just check these things itself. Instead, it relies on **tools** , which give Claude access to external data and actions.
Some tasks need more than a quick answer. Claude can work through a problem before responding — a feature called **extended thinking**. In this lesson, we'll look at what thinking is, how to turn it on, and when it actually helps.
You can build your own custom tools, but some capabilities are common enough that Anthropic ships them pre-built. You don't write the code. You don't host the sandbox. You just declare the tool, and Anthropic runs it.
Skills** are folders of instructions, scripts, and resources that Claude loads dynamically to improve performance on specialized tasks. At the core of every Skill is a `SKILL.md` file — a packaged set of instructions you upload once and then attach to any `messages.create` call. You're teaching Claude how _you_ do something: your status report format, your review checklist, your release notes. Claude reads the Skill, follows the procedure, and produces output in your shape.
We have tools, skills, and connectors. So why does **MCP** exist? At first glance it looks like a second API stacked on top of the API. Fair question — and the answer comes down to who maintains the integration code.
Every request you send Claude has a **context window**. A million tokens sounds like a lot, but it runs out faster than you think once you're shipping a real agent. That's where **context management** comes in: it's how you stay inside the window without losing what matters.
Claude Managed Agents** is a suite of APIs for building and deploying agents at scale. You define agents with specific tools, personas, and capabilities. You configure sandbox environments with the right packages and network controls. Then you fire off sessions from your own application, and Claude does the work inside an isolated container with full file system access, bash execution, and web search.
If you've built an agent loop by hand, you know the drill: while loops, stop reason switches, tool executions. That works, and for a lot of features it's actually the right shape. But sometimes that loop is going to run for a very long time — minutes, maybe even hours — across many tools, with state to keep, files to write, and work to resume after a network hiccup. At that point, you don't want to run the loop on your server. You want to delegate it. That's what **managed agents** are.
Writing code that calls the Claude API by hand works fine, but there's an even faster path: have Claude write it for you. In this lesson, we'll use **Claude Code** to fill in an API integration from a stubbed-out file — using the same primitives you've learned throughout this course.