Anthropic's Claude Engineering Masterclass: Prompting, Agent Architecture, Routines, and Memory (Full 4-Hour Session)

A complete recording of Anthropic's "Code with Claude London" workshops — eight applied-AI engineers walking through the exact prompting techniques, agent-decomposition decisions, verification frameworks, proactive routines, and memory architecture they use every day.

Video thumbnail — Anthropic Free 4-Hour Course
🎬 Anthropic (Code with Claude London) ⏱️ 3:46:21 📅 2026
Prompt Engineering Agent Architecture Skills & Tools Evals Memory Routines
Part 1 · The Prompting Playbook — Margot Vanlar, applied AI engineer

🎯 Two Scenarios & Why Evals Come First 0:00

The opening session reframes prompting as a debugging discipline, not a writing exercise. "We are rarely writing a prompt from scratch — we're often debugging an existing prompt." Margot frames the whole playbook around two scenarios every engineer hits: (1) maintaining a production prompt that's being migrated to a new model or architecture and has stopped working as well; and (2) building a brand-new agentic use case from zero to one.

The non-negotiable starting point for both is evaluations — "we need evaluations to provide that rigor, to understand whether a change to our prompt is actually correlating to an improvement." When you migrate models and performance drops, there are exactly two causes: either the new model is capable but behaving differently (fixable with prompting), or the new model is genuinely less capable (no amount of prompting will fix it). You can't tell which is which without an eval suite.

The core loop is "hill climbing": run the evals to get a baseline, target one failure mode at a time, change the prompt, rerun, and watch the score climb. Every fix in the session is validated this way — never by vibes.

📋 The Meridian Mobile Test Suite 2:45

The worked example is a customer support bot for Meridian Mobile, a fictional telco — "a miniaturized example" representative of real prompts (no clear owner, multiple contributors, patches for old models mixed in, covering policy, tone, and process). The eval suite has just five test cases, but they're deliberately chosen to cover three key case types every suite needs:

Case typePurposeMeridian example
Control caseShould always pass; unambiguous"What's the data limit on the basic plan?"
Edge caseWhere the model failed before; instructions prevent regressionProration calculation (switching plans mid-month)
Handoff / refusalModel knows the limits of its capabilitiesEscalate billing errors to a human; don't withhold accessible info

The first eval run is a sobering baseline: only the control case passes, and the other four areas perform "pretty poorly." The rest of the session is systematically fixing those failure modes, one at a time.

🧹 General Hygiene: Structure & Role 6:15

Before targeting specific failures, apply "general prompting 101" hygiene. The sample prompt is a realistic mess: it tells the bot it's a human (untrue), contains text copied from a website (a stray "hero image" reference and a cookies clause), and lumps reasoning, role, policy, and tone into one giant undifferentiated paragraph.

The cleanup is structural: add XML tags to separate role, general guidelines, policy, and tone of voice, and rewrite the role description honestly. Just this cleanup — no behavioral changes — measurably improves the prepaid-plan scenario. The rule of thumb Margot returns to constantly:

"If you're reading a prompt and you can't tell guidelines from policy from data, most likely the model isn't able to either." Structure isn't cosmetic — it's how the model disambiguates what you actually want.

📄 Output Contracts & Stop Sequences 11:00

The second hygiene step is an output contract — defining the format the model must return. For a conversational support bot this is low-stakes, but "if you're dealing with more complex output structures like nested JSONs," it becomes critical. The demo adds an XML output format to the prompt, then reinforces it at the harness level with a stop sequence that detects the closing XML tag and stops generation there.

The lesson is that the prompt isn't always the most reliable place to enforce consistency — the harness can do it more deterministically. For genuinely complex schemas, the recommendation is structured outputs, which enforce the format programmatically rather than hoping the model respects an instruction. This step doesn't visibly move the eval score (it wasn't the failure), but it's a best practice you should apply regardless.

🚫 Failure Mode 1: Withholding Information 13:24

The first targeted fix is the "hotspot" case: a customer asks how much hotspot data they have on an unlimited plan. The customer data clearly contains the answer (5 GB), but the model deflects — "since you're on a legacy plan, go check this yourself." Digging into the prompt reveals the culprit: an old instruction, "never give a customer the wrong plan details — instead point them to the URL," which reads exactly like a patch introduced for a previous, weaker model.

The lesson: we obsess over hallucinations — models inventing facts — but "the opposite can also happen: the model can withhold information that it actually has access to." As models improve at instruction-following, old defensive patches get over-fitted to and cause this. The fix: rewrite to "give a balanced view — the customer's accurate allowance is captured in the customer info," and use version control on defensive prompt changes so you can backtrack later.

🔧 Failure Mode 2: Instructions Don't Add Capability 17:05

The proration case is the clearest single lesson of the whole session. The prompt already says "critical: always calculate prorated amounts correctly" — and the model still does sloppy mental math. The problem: "telling the model to do a good job isn't particularly helpful when we don't give the model the capability to actually do a good job."

The fix is to give the model a tool. Three steps: tell the model in the prompt to use a calculate_proration tool whenever it does calculations, define the tool schema in the API (what it does and when to use it), and implement the tool (the actual math). The eval flips to passing.

"Instructions don't add capability." Saying "it's critical to calculate this right" doesn't make the model better at mental arithmetic — giving it a deterministic tool does. The right split is: let the model reason over hard problems, and use tools to execute reliably.

⚖️ Failure Mode 3: State Both Sides of the Trade-Off 20:00

The final failure is billing-error escalation. The model is supposed to escalate to a human, but instead it tries to diagnose the problem itself. The prompt says "avoid escalating unless absolutely necessary, as it costs ~$8 and counts against our fast-resolution metric" — which only gives the model one side of the story (the cost of escalating), so it over-fits to never escalating.

The fix is to give it both sides: escalating costs $8, but getting it wrong costs a refund and customer trust. The deeper point is about how models are evolving:

"As models become more intelligent, we need to state both sides of the trade-offs — because our models are becoming better at making those trade-offs themselves." Don't hard-code the decision; give the model the information to make it.

🏗️ Building From Scratch: The Scheduling Agent 23:00

The second scenario builds a new agent from zero: one that creates a week-long retail staff schedule for eight employees given availability and hard constraints. Because the rules are hard and checkable, the grader is a Python function that programmatically counts constraint violations — no LLM judge needed. This is the cleanest case for comparing approaches, because the eval is deterministic.

The hill-climb across model and prompt choices is the most instructive arc in the session:

ApproachResultTrade-off
Sonnet 4.6 + simple promptAll cases failBaseline; burns tokens, doesn't check its work
Opus 4.7 + same promptStill fails, but far fewer violationsMore reasoning = better, but not shippable
Opus 4.7 + adaptive thinkingReliably passes~3× the tokens and latency
Sonnet 4.6 + better prompt ("check your work")2/5 pass; hits output limitCheaper model can't finish in the token budget
Generate-evaluate-repair loopAll pass, fewer tokensThree simple prompts instead of one big one

The headline finding: a bigger model with adaptive thinking works, but a structured agentic loop on a smaller model beats it on cost and latency while still passing everything.

🔁 The Generate-Evaluate-Repair Loop 29:29

The winning architecture splits one monster prompt into three simple prompts running independently: a generator that drafts the schedule, an evaluator that reports specific violations (with evidence for every rule — an LLM checker, not a programmatic one), and a repairer that makes targeted fixes from the violation list.

The key benefit beyond efficiency is flexibility: because the evaluator is a prompt, you can inject soft constraints at runtime — "Harry doesn't like working with Sally, try to separate them" or "we need a third shift on Wednesday" — without touching the Python grader every time. The closing synthesis of the whole prompting playbook: general hygiene gives immediate uplift, evals make every change measurable, and isolating steps into separate prompt systems beats "one prompt to address everything."

Part 2 · Claude Code Best Practices

🧠 CLAUDE.md, Permissions & Context 33:17

The Claude Code session opens with a framing that recurs all day: Claude Code is an agent — it has tools and lightweight instructions but "doesn't really have memory." The primary way to share state across sessions and teammates is the CLAUDE.md file, which is plopped into context whenever Claude starts in a directory. You can put it in a project (checked in, shared), in your home directory (always-on), and it holds things like how to run tests, the project layout, and style guides.

Three more mechanics round out the basics. Permission management: reads are auto-allowed, but writes and bash commands trigger a confirm UI — and you can speed this up with auto-accept mode (Shift-Tab) or by always-approving specific commands. Integration: prefer well-documented CLI tools (like gh) over MCP servers when both exist. Context management: when the 200k-token window fills up, you have /clear (start over, CLAUDE.md survives) or /compact (insert a "summarize everything for the next developer" message that seeds the next session).

⚡ Efficient Workflows & Advanced Techniques 38:00

The workflow advice is a version of "smart vibe coding": instead of asking Claude to "fix this bug," ask it to search, diagnose, and give you a plan first so you can verify before it acts. Watch the to-do list it builds and hit escape the moment it goes off-path. Use TDD, small changes with tests passing each step, TypeScript/lint checks, and commit regularly so you can roll back.

Advanced techniques: run multiple Claude instances at once (people at Anthropic run four — "I can only do two"); use escape to interject mid-run, and escape twice to jump back in the conversation and reset tool expansion; reach for MCP servers when bash + built-in tools can't do something; and push screenshots of the UI (Claude is multimodal) rather than trying to describe a visual bug in words.

The session closes with what's new: /model and /config to check and switch models, thinking between tool calls (the models now think mid-task, visible as lighter gray text), and VS Code/JetBrains integrations. The one habit he insists on: check the Claude Code changelog once a week, "because even I can't keep up with it."

Part 3 · Agent Decomposition — Will, applied AI team

🏭 The StockPilot Problem 48:41

This workshop simulates the most common failure pattern Anthropic sees: an agent that worked great, then grew through repeated "add one more capability" requests until it degraded. The example is StockPilot, an inventory-management agent for a midsize retailer that flags low stock, forecasts demand, picks suppliers, files POs, and writes weekly reports. None of its capabilities are complex on their own — the problem is that they were bolted on without modernizing the architecture.

The "before" state is the anti-pattern in full: a single orchestrator with a ~400-line system prompt, 12 tools, and 3 sub-agents (forecasting, report writing, and one more) wrapped as tools with isolated context windows. The eval suite — 12 tasks across 5 grader types, split into regression (R, single-turn) and failure-mode (F, multi-turn) tasks, graded both deterministically (turn count, latency, tokens) and with an LLM judge (tone, style, quality) — comes back at 83%, then 62% on the live run. In manufacturing, "17% failure is a really expensive failure percentage."

📦 Skills: Progressive Disclosure 1:09:00

The first fix attacks the 400-line system prompt directly. The definition Will likes: "skills are packaged, composable information that Claude can pull into context whenever it realizes it needs that information to complete a task." The distinction is clean — and it's the whole point:

System prompt = what Claude needs in mind regardless of task. Skills = what Claude needs some of the time, not all of the time. Stuffing everything into the system prompt "pollutes the context window with information Claude does not need" for the current task. Move policies and procedures into skills and Claude pulls them in only when a task calls for them.

Applied to StockPilot, the 400-line prompt becomes ~50 lines, with forecasting, reporting, and supplier-selection logic moved into skills that activate on demand. This is the same "progressive disclosure" idea the agent world has converged on — it keeps context lean and the model focused.

🧰 Primitive Tools Over Custom Tools 1:13:00

The second fix is a philosophy about tools that recurs throughout Anthropic's talks: "when we build agents, we lean into the same primitives we as humans have access to." When you show up to work you can navigate files, search the web, and write/execute code — so Claude Code gives Claude those exact primitives, and you should start there and remove tools rather than build bespoke ones for everything.

For StockPilot, most of the 12 custom tools (one per data-retrieval task, one per analysis task) get replaced by bash, read, and write. The canonical example: instead of uploading a whole CSV into context, give Claude a bash tool to write a Python script, run it, and reason over the results. The measured effect is dramatic — over 200k tokens per task dropping sharply, with cost and execution time following. And on Claude Managed Agents, these primitives are included by default, so you get them without writing them.

The MCP ordering that avoids chaos: start with built-in Claude Code tools → add custom standalone tools only for your agent → reach for MCP only when you have a common set of tools that multiple agents/clients need, standardized and governed. "A lot of our customers run to MCP first and end up with chaotic, overlapping servers." MCP also pollutes context — sometimes code execution via CLIs/APIs is the better answer.

🤝 Sub-Agents: Callable Agents & When to Use Them 1:23:00

The third decision is when to keep a sub-agent. Will's heuristic is two cases: (1) throw a lot of Claude at a problem — parallelize deep research or codebase exploration across many minds; and (2) a fresh mind — you don't want the same instance that writes code to review it, so a separate context-free reviewer is ideal.

For StockPilot, the forecasting sub-agent is kept (forecasting should stay isolated from the customer-facing context), but the others are scrapped and replaced by primitive tools. Critically, instead of exposing the sub-agent as a tool (the old way), they use Claude Managed Agents' native "callable agents" — which adds observability and metrics for sub-agents as accurate as the main orchestrator, solving the two classic problems: orchestrator↔sub-agent communication breakdowns and hard-to-collect logs. The closing insight: as frontier models get smarter, "you just don't need as many sub-agents" — customers are increasingly consuming capability into the main agent.

📈 The Result: From 62% to 92% 1:29:00

The before/after is the cleanest summary of the whole decomposition workshop:

DimensionBeforeAfter
System prompt~400 lines~15 lines
Tools12 (incl. 3 sub-agent wrappers)3 (bash, read, write) + callable forecasting agent
Business logicStuffed into the promptPackaged as skills (progressive disclosure)
InfrastructureHand-rolled messages-API loopClaude Managed Agents (offload scaling/security)
Eval score62% (83% baseline)~92%
Tokens / cost / time200k+ tokens per taskSharply down (code execution)

The takeaway he leaves the room with: start with a single agent loop equipped with simple primitives, use skills for progressive disclosure, and lean on hill climbing with evals — updating your evals as your product capability expands, "so that you can actually make sure your agent is accomplishing the thing that you set out to accomplish."

Part 4 · How Anthropic Works

🖥️ HTML Files & the Bitter Lesson 1:33:17

Arno, an architect on the applied-AI team, opens the "How We Claude Code" session with the thesis he says is reshaping how the team works: as models get more capable, "you should resist constraining them." He grounds it in Richard Sutton's Bitter Lesson — hard-coding human knowledge up front loses to pouring in more data and compute — and extends it to prompting: "the model is probably better at extracting requirements from you than you are at defining your requirements."

The concrete change follows from a colleague's blog post, "The Unreasonable Effectiveness of HTML Files". Markdown was "the lingua franca of the AI-native SDLC," but long markdown specs — over ~200 lines — no one actually reads. The move is to HTML files, which are far more information-dense and ergonomic: you can visually explore a spec, screenshot it, and give Claude far richer feedback than a wall of text.

The throughline: the longer you let an agent run, the more important a comprehensive spec becomes — and the less likely you are to define everything up front. So let the model pull the spec out of you, and use a form factor (HTML) you can actually review.

🗣️ Let Claude Interview You & Plan Mode 1:39:00

The practical technique is to let Claude interview you. Bad prompting is "just make it better" — a vague demand. Good prompting gives Claude the domains to probe (audience, constraints, secondary audiences) and explicitly instructs it to use the AskUserQuestion tool, which triggers an interactive Q&A where Claude extracts requirements turn by turn. "You know what you want when you see it, but Claude is likely better at extracting it than you are at specifying it."

The session also emphasizes the mode and effort settings: use auto mode (it makes everything easier), set the effort parameter (his recommendation is extra-high), and use plan mode when you want Claude to propose what it will do before writing code — giving you a checkpoint to change direction or feed in design standards (e.g. via a Figma MCP server). The demo runs a bill-splitting app through the interview → spec → four generated HTML design directions (brutalist, "Tokyo fintech", etc.) so the human can pick an aesthetic instead of describing one.

✅ Verification Built Into the Artifact 1:46:00

The most forward-looking part of the session is making verification native to the artifact itself, so an agent can drive it. The demo is a React to-do app built with Storybook fixtures, a testing library, and data attributes, structured as schemas + fixtures (known states) + invariants (properties that must always hold) + probes. The key move: the component publishes its state to the DOM separately from React internals — so an agent reads a DOM "data contract" rather than scraping, and can run verification independently of app state.

Verification runs on three surfaces that map to each other:

SurfaceHowPurpose
Human-readableDashboard with schemas/invariants you run individuallyUnderstand what's verified
Agent-drivenPlaywright MCP; Claude runs the verification from the browserClaude diagnoses failures itself
Headlessbun verify in CIThe same steps run unattended

The demo deliberately plants a failing invariant (3 + 4 ≠ 10) so both the human dashboard and the agent catch it — then breaks a DOM contract without breaking the app to show the agent can "verify the contract, not just the tests." The end state is recording verification as evidence (clips stored on S3, shared with colleagues) — "the Cloud Code team records basically all their front-end changes like this" — so verification is generated by agents with fewer human touchpoints each cycle.

☁️ Claude on Google Cloud, Five Personas 2:03:30

Ivan Ardini (Google Cloud developer advocate) runs the same idea through a full product lifecycle, wearing five hats — PM, UI/UX, software engineer, security engineer, and growth/data analyst — to build and deploy a live feedback app end-to-end. Setup is the point: Claude Code on Google Cloud uses application default credentials (no API key to rotate), pays per token (no message cap), and can reserve provisioned throughput for production.

PersonaWhat Claude doesKey tooling
PMTurns a napkin sketch into a wireframeCLAUDE.md, vision (image → prototype)
UI/UXBuilds production pages from the wireframePlan mode + Figma design docs
Software engineerDesigns + implements the cloud-native backendDeveloper Knowledge API + MCP server, Google Cloud skills, parallel sub-agents
Security engineerRuns a security review, fixes issues, deploysPre-built security-review skill, service-account scoping
Growth/dataAnalyzes feedback, builds dashboardsBigQuery MCP, Looker MCP toolbox

The stack is Cloud Run (serverless) + Firestore + BigQuery + Looker, and the headline is that the engineer doesn't need to know GCP: the developer-knowledge MCP server serves fresh docs so Claude can pick the right architecture, Google Cloud skills cover the individual building blocks, and three parallel sub-agents (API, ingestion, dashboard) build the components like a sprint team. The app is live at the end, collecting real feedback from the room.

Part 5 · Proactive & Persistent Agents

⏰ Routines: Proactive Agents 2:29:24

Maya frames the problem sharply: "coding agents shouldn't wait for you to press enter." Today Claude Code is a powerful tool; the goal is a teammate that notices when something breaks and acts. Building proactive agents today means solving three painful problems — where to run them (hosting/persistence/auth), when to trigger them (cron/endpoints), and how to keep a human in the loop when you can't see what a headless session is doing.

Routines is the answer: an automation where you define a prompt, the repos and connectors it can use, and a trigger — Claude Code handles the rest. Three design principles: routines run on managed infrastructure (nothing depends on your laptop), they trigger on schedules, GitHub events, or your own webhooks, and every session is interactive and steerable from web/CLI/desktop as if you'd launched it yourself.

Every routine is really three decisions, and the internal example makes them concrete — a docs engineer drowning under a 200% increase in weekly PRs sets up a routine that reviews merged changes against the docs repo weekly and opens a PR. The framework:

DecisionQuestionExample
TriggerWhen should it run?Schedule (weekly) or event (issue opened, PR merged, deploy posted)
ContextWhat does it need?Source + docs repos, Drive connector, Slack connector — "context is the ceiling of success"
SteerabilityHow do you keep it honest?Agent-on-agent review (one routine creates, another critiques), live steering, verify outputs

Suggested use cases — a deploy verifier (post-deploy health check → go/no-go rollback), an on-call investigator, and a PM backlog prioritizer — all reduce to the same pattern. The closing line: "proactive agents beat reactive agents."

🧠 Memory Stores & Dreaming: Agents That Remember 2:50:56

Kevin's session addresses the isolation problem: agents are stateless across sessions — tell one session something, and the next has no idea. The demo proves it (write-then-recall test returns "I don't have access to that"), then introduces memory stores: a persistent, file-system-like store attached to sessions, giving agents read/write access across them. The design choice matters — it's mounted as a file system so the model can use bash, grep, and file reads the way it already works.

But memory stores "grow unbounded, disorganized, and stale" — which is where dreaming comes in. A dream is an asynchronous job: a multi-agent harness (one sub-agent per input session, an orchestrator on top) that reads your transcripts and the memory store, then fact-checks, enriches (dates, identifiers), organizes, consolidates, and deduplicates — producing an index file so future agents can grep a compact index instead of the whole store. It's non-destructive: it clones the input store and writes to an output store you can review and adopt (or retire the old one).

Three composable layers: a session is an isolated, ephemeral agent thread; a memory store connects information across sessions; dreaming organizes, enriches, and improves that memory over time so it doesn't blow up as you scale. On cost: dreaming is deliberately exhaustive but ~95% of tokens hit cache, with batch-style discounts on the roadmap.

🔄 The Shift: Bottlenecks Have Moved 3:19:00

The closing talk is a team-leadership retrospective on how the Claude Code team rewrote its norms as the bottleneck moved. The thesis, repeated like a mantra: "what served you prior may not serve you any longer." For years, engineering bandwidth was the expensive thing — hence waterfall, then agile, then design docs before every code change. Now coding throughput is no longer the bottleneck, and the expensive things have moved to verification, review, cross-functional partners, and security.

NormOld behaviorNew behavior
PlanningSix-month roadmaps, design docs"JIT planning" — prototype, discuss in PRs, less design docs
Technical debatesWhiteboard + argue"Code wins" — generate the 3 options as PRs and debate real impact
Code reviewHuman reviews everythingClaude does style/lint/tests/bug-catching; human keeps legal, security, product taste
Team makeupRoles siloedRoles blurring — PMs ship code, engineers do content design
Org shape10 ICs : 1 manager, deep nestingFlat, managers start as ICs, heavy dogfooding
Knowledge sharingDocs drift from codeCodebase is the source of truth; Claude answers from it

On rollout, the split is: mandate the must-dos (every team member uses Claude Code, "Claudify everything you can," explicit permission to kill processes) but leave pods room to adapt (triage, standups, on-call, which workflows to automate first). The three metrics he watches: onboarding ramp time down, PR cycle time down, Claude-assisted commits up — with the caveat that throughput alone is the wrong end goal; quality and reliability matter more than "% of code AI-generated." The closing story — canceling a 50-person weekly review after one "why are we having this?" — is the whole lesson in miniature: pick your noisiest workflow and ask if it still serves you.

💡 Key Takeaways

  1. Evals come before everything. Hill climbing — run, target one failure mode, fix, rerun — is the only way to know a prompt change is an improvement.
  2. Structure is semantics. "If you can't tell guidelines from policy from data, the model can't either." XML tags and honest role descriptions aren't cosmetic.
  3. Instructions don't add capability. Telling the model to "calculate correctly" is useless; give it a tool to do the calculation.
  4. State both sides of every trade-off. Smarter models make better trade-offs when you give them the full cost/benefit, not a hard-coded rule.
  5. Remove redundant patches. Defensive instructions written for older models get over-fitted; version-control them so you can backtrack.
  6. Prefer a generate-evaluate-repair loop on a smaller model over one giant prompt — and inject soft constraints at runtime.
  7. Skills are progressive disclosure. System prompt = always-needed; skills = sometimes-needed. A 400-line prompt becomes 15.
  8. Start with human-like primitives, not custom tools. Code execution over "upload the CSV into context" — and don't run to MCP first.
  9. Sub-agents have two jobs: parallelize a big problem, or provide a fresh reviewing mind. Use callable agents for observability.
  10. Verification belongs in the artifact. Publish state to the DOM, define schemas/fixtures/invariants/probes, and let the agent verify and record.
  11. Proactive beats reactive; persistent beats isolated. Routines turn Claude into a teammate; memory stores + dreaming give it continuity.
  12. Bottlenecks have moved. When coding stops being the expensive part, verification and review become it — rewrite the team norms, not just the code.

🔗 Resources & Links

This is a re-upload of Anthropic's Code with Claude London conference sessions. The description contains no external links; references mentioned on stage that are worth tracking down:

  • 📰 "The Unreasonable Effectiveness of HTML Files" — the Anthropic blog post (by "TK") that motivated the HTML-over-markdown workflow
  • 📄 "The Bitter Lesson" — Richard Sutton's essay, cited as the intellectual foundation for "resist constraining the models"
  • 🧰 Claude Code — the anthropics/claude-code GitHub repo (changelog + issue tracker referenced on stage)
  • 📚 Claude engineering blog — Anthropic's engineering-blog posts on harnesses and long-running agents

Source video: youtube.com/watch?v=QRlkSPF87jQ — re-uploaded by the A.D. Philip channel.

⏱️ Timestamp Index

0:00 The prompting playbook: two scenarios
2:45 Meridian Mobile: 5 test cases
6:15 General hygiene: XML structure
11:00 Output contracts & stop sequences
13:24 Failure 1: withholding info
17:05 Failure 2: give it a tool
20:00 Failure 3: both sides of trade-off
23:00 Scheduling agent from scratch
29:29 Generate-evaluate-repair loop
33:17 Claude Code: CLAUDE.md, permissions
38:00 Workflows & advanced techniques
48:41 StockPilot: the problem
1:09:00 Skills: progressive disclosure
1:13:00 Primitive tools over custom tools
1:23:00 Sub-agents & callable agents
1:29:00 Result: 62% → 92%
1:33:17 HTML files & the bitter lesson
1:39:00 Let Claude interview you & plan mode
1:46:00 Verification in the artifact
2:03:30 Claude on Google Cloud
2:29:24 Routines: proactive agents
2:50:56 Memory stores & dreaming
3:19:00 The shift: bottlenecks moved
☰ View all