Seventeen chapters keep the agent loop visible
Learn Claude Code starts with 1 loop and a Bash tool, then adds one harness concern per chapter until s17 introduces an independent goal evaluator. The route covers dispatch, permissions, hooks, planning, subagents, skills, context compaction, memory, task graphs, background work, schedules, teams, MCP, an integrated harness, saved workflows, and goal-controlled stopping. That sequence makes each mechanism inspectable instead of burying it inside a finished framework.
The 416-file checkout is small enough to inspect
Our measured checkout contained 416 files, about 35,596 lines of source, and used 4.4 MB before installation. That is a manageable amount of material for a course covering 17 mechanisms. Each current chapter has a standalone code.py, an English README, Chinese and Japanese translations, and diagrams where the topic needs them. You can compare adjacent chapters without first learning a package architecture.
There are 2 tutorial tracks, and the distinction matters. Root folders s01 through s17 are current. The docs/ and agents/ directories preserve an older 12-lesson track, with a mapping table because chapter numbers no longer line up. New readers should stay on the root path. Mixing the tracks can make a reference to s09 mean memory in one place and a different mechanism in another.
What happened when we ran it
Our sandbox installed commit 0dcafa2 in 19 seconds, adding 50 packages and using 59 MB on disk. The build succeeded in 5 seconds. Pytest then completed in 45 seconds with 482 passed and 0 failed out of 482. Pip-audit found 0 known vulnerabilities in the installed Python environment. Those are clean repository mechanics on Python 3.12.
The container had 3 CPUs, 8 GB of RAM, no secrets, and no elevated privileges. We did not make paid model calls, judge tool selection, or ask an agent to edit a live repository. A 482-test pass therefore supports the course's code quality at that commit. It cannot show whether a chosen model follows an approval rule, preserves intent through compaction, or behaves consistently through a compatible provider.
Three permission gates still let Bash bypass a workspace check
Chapter s03 adds 3 permission stages: a hard deny list, rule matching, and user approval. Its own README says the simple string matching is not a complete security boundary. Open issue 494 gives the practical example: file tools reject paths outside the workspace, while the Bash tool can perform an equivalent access without passing the same path validation. That is a serious limit if someone copies the lesson into a service.
For a teaching chapter, the gap is useful because it exposes where policy has to live. A production runtime must enforce filesystem and process limits beneath every tool, including shell commands, rather than trusting each handler to recognize dangerous text. It also needs timeouts, output caps, secret controls, and an audit trail. The course shows the decision point clearly; issue 494 shows why the example gate is only a starting point.
Current compaction and workflow reports expose failure paths
Issue 577 reports that s08 can lose the active user request after many tool calls because snip_compact() may archive the middle of the conversation. The agent in that report returned to an older prompt after working on the current one. Pull requests 578 and 580 propose fixes, but both were still open on September 29, 2026. Anyone borrowing the compaction code should test long turns where the newest request is short.
Issue 570 targets commit 0dcafa2, the same commit from our lab run. It reports that one failed parallel branch in s16 can close the workflow journal while another branch is still writing, losing a successful result and weakening resume behavior. Pull request 571 was open on September 29. The lesson explains stable journal keys and cached resume well, yet this failure shows why concurrency tests need to cover late results after one sibling errors.
Windows needs changes beyond the 3-line quick start
The documented Python start is short: install requirements, copy .env.example, and run s01. Issue 65 says Windows 11 users must adapt environment-file handling, model configuration, shell execution, and prompts because the examples target Bash. The current s03 commit includes a fix for matching the Windows del command, but that single change does not turn every shell path into a native PowerShell course.
The optional web platform has another Windows report. Issue 573 says its content extraction crashed under Node 22 before the development server could start, leaving no generated course data or assets. A related patch, pull request 574, remained open on September 29. Linux and macOS readers follow the intended route more closely; Windows readers should expect to translate commands and verify the web build separately.
A September 28 push outweighs the missing release tag
GitHub showed 77,809 stars and 61 combined open issues and pull requests on September 29, 2026. The open list contained 41 issues and 20 pull requests, including activity created that same day. The repository's last push was September 28. Those dates show ongoing maintenance and discussion rather than a course left behind after its first burst of attention.
GitHub's latest-release endpoint returned no release object, so there is no tagged version to pin as a course milestone. That matters less for a repository organized as readable chapters, but it makes commit pinning sensible for classrooms and internal training. Commit 0dcafa2 is the version behind our 482 passing tests; teams teaching from a later revision should rerun the suite and review open lesson-specific reports first.
Use the 482-test course to learn the harness seams
Learn Claude Code earns a recommendation because 17 small chapters make agent-harness decisions visible and our full 482-test run passed. The permission bypass, active-request loss, and parallel-journal report point to the same boundary: concise teaching code leaves production enforcement to you. Read it to understand where tools, context, memory, coordination, and stopping fit. Then implement those seams inside the sandbox, identity, storage, and observability systems your application already trusts.

