Learn What's Next. Today.
Adam Furmanczuk · nextacademy.io
From first prompt to black belt, on one real codebase.
Slides: mastering-claude-code.vercel.app
- This workshop: github.com/nextacademy-io/mastering-claude-code
- CLASH, the app you build and extend: github.com/pawsaw/clash
- Live deck: mastering-claude-code.vercel.app
- Trainer: Adam Furmanczuk, nextacademy.io
A guided workshop on Claude Code. You start with no experience. You end with the skills of an
expert: context engineering, reasoning and effort, planning boundaries, measurable verification,
skills, subagents, agent teams, dynamic workflows, hooks, MCP, bounded /goal runs, worktrees,
/batch, headless runs in CI, the Agent SDK, output styles, loops, background sessions, routines,
and your own MCP server.
The trainer explains and shows. Then you do it on your own machine. Every task has a reset branch, so nobody gets stuck.
CLASH is a small social app for Berlin. Clashes happen at a place and a time on a map. People join, hosts accept or reject, everyone gets notified.
In the first half you build CLASH yourself with Claude Code, from an empty repo and a spec. In the second half you work on the finished reference CLASH and learn to control and orchestrate Claude Code on it.
- Spec:
docs/SPEC.md - Reference CLASH: github.com/pawsaw/clash
Developers who want to use Claude Code well. No Claude Code experience needed. You should be able to read TypeScript and use git.
Do this before the workshop: docs/SETUP.md.
git clone https://github.com/pawsaw/clash
cd clash
git checkout 01-start
claude --version| Part | Belt | Tasks |
|---|---|---|
| I — Foundations | White | 01 |
| II — Build CLASH | Blue | 02 · 03 · 04 · 05 |
| III — Control the context | Brown | 06 · 07 · 08 · 09 · 10 |
| IV — Orchestrate and let go | Black | 11 · 12 · 13 · 14 · 15 · 16 · 17 · 18 · 19 |
The main line is Claude Code itself. Some blocks are optional and sit in an appendix at the end of the deck:
- A deep dive goes deeper into a Claude Code mechanic: the effort lab, the sandbox, automate (task 18).
- An excursion covers a method or framework outside Claude Code: Next.js, Example Mapping (task 09), coordination patterns, TDD (task 11), building an MCP server (task 19), Spec Kit and BMAD.
On the slides, a chip in the top-right corner jumps into a block ("Deep dive →" or "Excursion →"), and the block's last slide has a chip back to the main line. Skip a block, and the next task's reset branch lets you go on.
| # | Task | Part | Reset branch |
|---|---|---|---|
| 01 | Setup and first conversation | I | 01-start |
| 02 | Foundation | II | 02-start |
| 03 | Auth and clashes | II | 03-start |
| 04 | Venues, map, people | II | 04-start |
| 05 | Finish and ship | II | 05-start |
| 06 | Context and CLAUDE.md | III | 06-start |
| 07 | The clash-feature skill | III | 07-start |
| 08 | Subagent audit | III | 08-start |
| 09 | Example Mapping and the discover skill · excursion |
III | 09-start |
| 10 | Path-scoped rules | III | 10-start |
| 11 | The TDD inner loop · excursion | IV | 11-start |
| 12 | Team and workflow audit | IV | 12-start |
| 13 | Hooks | IV | 13-start |
| 14 | The browser closes the loop | IV | 14-start |
| 15 | Letting go | IV | 15-start |
| 16 | Agent SDK | IV | 16-start |
| 17 | Capstone | IV | 17-start |
| 18 | Automate · deep dive | IV | 18-start |
| 19 | Build your own MCP · excursion | IV | CLASH's 19-start |
Standalone index: tasks/README.md. What each branch contains:
docs/BRANCHES.md.
NN-start in your CLASH clone is the state at the start of task NN. If you fall behind, do
not debug. Reset and continue:
git stash -u # keep your own work, including new files, if you want it
git checkout 04-startCLASH's 01-start is an empty CLASH repository with the spec. CLASH's 06-start is the finished
reference CLASH. clash-conference has one reset branch of its own, 19-start.
- CLASH, built by you with Claude Code, and compared against the reference.
- A
CLAUDE.mdgrounded in real invariants, a reusableclash-featureskill, a hook set. - An authorization audit run three ways: subagent, agent team, dynamic workflow. With the fix merged.
- A browser test suite and a measured performance fix.
- The audit running headless in CI, a worktree flow, and a small Agent SDK program.
- One feature of your choice, shipped with everything above.
- Claude Code working with nobody at the keyboard: an output style, a goal, a loop, a background session, a routine in the cloud.
- Your own MCP server on CLASH, and a second app,
clash-conference, that publishes its talks as clashes through it.
Live deck: mastering-claude-code.vercel.app. It is
redeployed automatically whenever the slides change (a Claude Code Stop hook in the workshop
repository's .claude/settings.json runs .claude/hooks/deploy-slides.sh).
cd slides
npm install
npm run dev # opens the deck
npm run build # also exports dist/mastering-claude-code.pdfFACILITATOR.md holds the talking points, demo scripts and pitfalls per part.
Answer keys live in workshop-artifacts/.
Create a new task from the shared template, or check that task structure and theory links still match:
npm run task:new -- 15 My new task
npm run task:new -- My new task # picks the next task number
npm run task:checkThe slide base URL defaults to the deployed workshop. Override it when testing new aliases locally or if the deployment moves:
SLIDES_BASE_URL=http://localhost:3030 npm run task:check
SLIDES_BASE_URL=http://localhost:3030 npm run task:new -- 15 My new taskWith a localhost override, the linter accepts both existing deployed links and local links. CI still uses the deployed URL by default, so a localhost link cannot be committed unnoticed.
The speaker notes come in English and German. They live in slides/notes/en/ and
slides/notes/de/. The slides are the same in both languages. Only the notes change.
Pick the language when you start the deck:
cd slides
npm run dev # English notes (default)
npm run dev -- --lang=de # German notes
npm run build -- --lang=de # German build, also exports dist/mastering-claude-code.de.pdf
npm run export -- --lang=de # German PDF only
npm run check:notes # both languages still match: note keys, [click] markers, commands- Claude Code docs · Skills · Subagents · Agent teams · Dynamic workflows
- Hooks guide · Hooks reference · Permission modes · Settings
- MCP · Headless mode · Worktrees · GitHub Actions · Agent SDK
- Playwright MCP · Chrome DevTools MCP · Agent Browser
© nextacademy.io, a project of SunsetPicnic UG (haftungsbeschränkt). All rights reserved. See LICENSE.