Skip to content
zero2vibecodelearn vibe coding
Claude Code: Pro LevelBy Mikhail Kuzmitskii

The Claude Code practicum on GitHub: 14 hands-on tasks with automatic checks

A free, open practicum for the Claude Code: Pro Level course: 14 tasks on a small real project that you do in your own terminal with the real Claude Code, while npm run check tells you what passed. Finish all 14 and you get a code for the Claude Code Practitioner badge.

In the Claude Code: Pro Level course, every topic is practiced in a simulator right in your browser: nothing to install, no subscription, nothing to break. That is a good way to learn the mechanics. But there is always a step between “I got it in the simulator” and “I did it in my project” — a real terminal, the real Claude Code and real mistakes.

A grid of square tiles marked with checks next to a desk where a robot works at a laptop, and a ribbon badge

That step now has its own home. This last post in the series introduces the Claude Code practicum: 14 tasks on a small working project, checked automatically.

What it is

The practicum is a public template repository from FunFactoryDev that continues the course. Same topics, but you work in your own terminal with the real Claude Code, and after each task npm run check shows what passed and what did not. There is also a short practicum page with the path laid out step by step.

  • Free. The tasks and the course cost nothing.
  • Open. MIT license, and the check script is in the repository for you to read.
  • Honest about the one paid part. You need access to Claude: a subscription (Pro or higher) or an API key.

What you need

  • Node.js 20 or newer. Check with node --version.
  • Claude Code, installed and signed in — covered in the install lesson of Claude Code from Zero.
  • Access to Claude, as above.

No access to Claude yet? Take the course in the browser first. The simulator practices the same topics with nothing to install or pay, and the practicum will still be there.

Getting started

Fastest: in the browser. The repository opens in GitHub Codespaces with Node and Claude Code already installed, so nothing lands on your computer. Type claude and sign in. According to the README, the free Codespaces hours on a personal GitHub account cover the whole practicum. If the environment is rebuilt, you will need to sign in again — the exact problem the dev containers post explains.

Or locally. Click Use this template → Create a new repository to get your own copy, or clone it:

git clone https://github.com/FunFactoryDev/claude-code-practicum.git
cd claude-code-practicum
npm test          # one test fails — on purpose, that is task 2
npm run check     # 0 of 14 — for now

Then start claude in the project folder and work through the tasks in order. To check one task with a hint and a link to its lesson, run npm run check -- 6.

The project you work on

src/links.js is a small utility for links in Markdown: find them, bring them to one form, drop duplicates. src/cli.js prints the links from a file with npm run links. The code has two bugs and one unwritten function — those are tasks 2, 3 and 13. In task 14 you add a new feature, from plan to commit.

The 14 tasks

Each task maps to a lesson, so if you get stuck, the explanation is one click away:

#TaskLesson
1Project memory: CLAUDE.mdCLAUDE.md
2Fix the failing test — plan firstPermission modes
3Test first, then the fix/rewind
4Allow and deny rulesAllow and deny rules
5A sandbox for commandsThe sandbox
6A guard hook for .envPreToolUse hooks
7Your own skillSkill patterns
8A reviewer subagentChoosing a pattern
9An MCP server for the projectMCP servers
10The status lineStatus line and output styles
11An unattended run with limitsUnattended runs
12Claude in GitHub ActionsGitHub Actions
13Finale: /goal and dedupeLinks/goal, /loop and Agent view
14The full cycle: from request to commitFrom request to commit

Task 6 is the guard from the hooks post, done for real: the check feeds your hook a .env edit and expects exit code 2, then an edit to src/links.js and expects 0.

The completion code and the badge

Once all 14 pass, npm run check prints a completion code in the form CCP-XXXX-XXXX. Enter it on the course page — the field asks for the code from npm run check — and you get the Claude Code Practitioner badge. The code carries a checksum that catches typos. As the check script itself puts it, it is a reason to be proud, not a diploma.

Why it is safe to run

You are about to run Claude Code in a repository someone else wrote, so looking first is the right instinct. The README spells out what is there:

  • No dependencies. No npm install, not a single package from the internet.
  • No hooks, MCP servers or Claude settings. There is no .claude/ folder; you create all of that yourself, task by task.
  • .devcontainer/devcontainer.json is only for Codespaces. It installs Node, Anthropic’s official Claude Code feature, and bubblewrap with socat for the sandbox. On your computer it runs nothing.
  • Only what you can see runs: npm test, npm run check and npm run links. The check reads project files and your ~/.claude/settings.json (for task 10), changes nothing and makes no network calls.

A habit worth keeping

A plugin kit to go with it

FunFactoryDev also publishes claude-kit, a plugin marketplace. Its English plugins are independent of each other, so you can take one or all three:

PluginWhat is insideRuns code on your machine
en-kitskills five-whys, tdd, review-diff, claude-md-review and a read-only code-reviewer agentno, instructions for Claude only
en-guarda hook that keeps Claude from editing .env files and lockfilesyes, node before every file edit
en-notifya hook that shows a desktop notificationyes, node on every Claude Code notification

You add the marketplace with /plugin marketplace add FunFactoryDev/claude-kit and install a plugin with, for example, /plugin install en-kit@claude-kit. The README is candid about the limits: en-guard does not catch shell commands such as echo X >> .env — it guards against an accidental edit, it is not a sandbox. And it asks you to read the hooks before installing, because they run with your permissions. The course lessons on plugins and a shared team kit cover how marketplaces work.

Frequently asked questions

Is the practicum paid?

No. The tasks and the course are free. The only paid part is access to Claude itself: a subscription (Pro or higher) or an API key.

Can I do it without a Claude subscription?

Not the practicum itself, since it runs the real Claude Code. The browser course practices the same topics in a simulator with nothing to pay.

How do I know a task is done?

Run npm run check for all tasks, or npm run check -- 6 for one task with a hint and a link to its lesson.

Where to start

Open the practicum repository, run npm run check to see the 0 of 14, and start on task 1. If a task stops matching what you see in Claude Code, the README asks you to open an “Outdated lesson” issue — Claude Code changes fast, and that is how the tasks keep up.

Read next

Try it hands-on

Free interactive courses on this topic — in your browser, from zero.