The practice repository for Claude Code: Everything You Need to Know. The lessons live in the guide; this repository holds the small app you practice on and a check for every core lesson and capstone.
The learning app, npm run learn, at the end of Beginner lesson 1.
- Select Use this template > Create a new repository to make your own copy, then clone it.
- Or open your copy in a Codespace: Node.js, Claude Code and the sandbox's dependencies come preinstalled.
You need Node.js LTS and git. There is nothing to install with npm: the app and its checks use only Node.js itself.
Run the learning app in one terminal, and use Claude Code in a second terminal beside it:
npm run learnIt shows one step of a lesson at a time, watches your copy, and turns a step green as soon as your work is there. The help shrinks each time a skill comes back: every command at first, then hints, then only the goal. Every Beginner and Intermediate lesson, each level's capstone included, is in the app. From lesson 2 on, a lesson opens with one warm-up question from an earlier lesson when you missed a question on its skill before. Help fades within each level: each lesson after a level's first is planned to give less help than that first one. A lesson you skipped doesn't count toward that, so a skill from it can come back with more help. The Advanced lessons are on the map too, one level a page: while you follow a lesson's page, the app watches its check, and counts the lesson done once the whole check passes (press r for the slower parts).
- Keys: arrows or numbers to choose,
enterto go on,hfor a hint,mfor the map of lessons,qto quit. Your place is saved in.practice/learn.json. - If PowerShell refuses to run
npm, runnpm.cmd run learn. - Odd symbols or colors? Set
LEARN_PLAIN=1(in PowerShell,$env:LEARN_PLAIN=1) beforenpm run learn. The app also followsNO_COLOR. - Prefer a still screen? Start with
npm run learn -- --calm, or setLEARN_CALM=1the same way asLEARN_PLAIN. - The app has no AI in it and changes none of your work: it reads your files, runs the lesson's check and git's read-only commands (
git status, and whether a work folder is a repository that ignores.practice/), and writes only its own file.
From Intermediate on, the lessons ask you to practise in one of your own repositories. Each later level has its own work folder, this practice copy until you pick another:
- Press
fon a level's page of the map, or on a lesson's check, and type or paste the folder's path. The map shows each level's folder. The first lesson of a level that you open in the app asks too, until the level has a folder. - To pick it ahead of time, start with
npm run learn -- --dir <path>, a path relative to this copy or in full. It sets the work folder of the level the app opens on. - The app then checks, watches and runs
git statusthere, and says which folder each step happens in. - The Intermediate capstone always runs in this copy. Lesson 5 and the capstone of Advanced run in a new copy of the template: each asks for that copy's folder, which can't be this copy, and checks nothing until you give it.
- Your progress stays in this copy, so run
npm run learnfrom here. Only the folders you picked are saved with it.
Each core lesson and each capstone ends with a check. Run it from the root of your copy:
npm run check -- b-1Each item prints PASS or FAIL, with a hint for what to fix. To check a lesson you did in one of your own repositories, run the same command from your copy with --dir and the path to that repository, relative to your copy or in full. Here it is a folder next to your copy:
npm run check -- b-1 --dir ../my-projectSome items read a file you save under .practice/, for state that exists only for a moment, such as a plan before you approve it. Git ignores that folder, so those items are checked on your machine only.
- Every push runs the Progress workflow, which lists each check's result in the run's summary. It never fails: an exercise you have not finished shows as "not yet", and items that read
.practice/show as "checked locally". - Open an issue from the Track my progress template for a checklist of every lesson and capstone.
- The
solutionsbranch of the template holds a reference solution for every check. Read it after an honest attempt.
A small Markdown link checker. It reports relative links whose file is missing:
npm run linkcheck -- samples
npm testThe app is src/, test/ and samples/. The rest belongs to the course: checks/ holds the checks, learn/ the step-by-step learning app, capstone/ the capstone briefs, and .github/ the workflows. The Assert checks workflow does its work only in the template repository: in your copy its job is skipped, which GitHub shows as a skipped check, so you can commit your exercises on any branch, main included.
- The Claude Code Dev Container Feature always installs the latest Claude Code release (Dev containers). The guide is checked against the
stablerelease, which is the same or older, so the lessons still apply. - If the browser sign-in finishes but the terminal keeps waiting, copy the code the browser shows and paste it at the
Paste code here if promptedprompt (Dev containers). - If sandboxed commands fail with
Can't mount proc on /newroot/proc: Operation not permitted, the container is blocking the sandbox's own/procmount. Settingsandbox.enableWeakerNestedSandboxtotrueworks around it, but use it only when the container already provides the isolation you need (Sandboxing). - Codespaces compute time counts against your GitHub account's included usage (Codespaces billing).
MIT. See LICENSE. Claude Code is a product of Anthropic; this is an independent community project, not affiliated with or endorsed by Anthropic.
Sources: Dev containers, Sandboxing, Codespaces billing