Start a guided lesson on a Claude Code feature.
Teach the requested Claude Code feature following the lesson framework.
Read lessons/$ARGUMENTS/README.md for the lesson content. If $ARGUMENTS is empty, read .claude-progress.json and show this menu with the next uncompleted lesson highlighted:
Chapter 1 — Fundamentals:
a) 01-CLAUDE-md — project instructions that shape Claude
b) 02-settings — permissions, model config
c) 03-skills — slash commands you can build
d) 04-hooks — automated actions on events
Chapter 2 — Advanced:
e) 05-agents — subagents and parallel work
f) 06-mcp — Model Context Protocol
g) 07-putting-it-together — capstone: combine everything
→ Next: [next uncompleted lesson]
Check .claude-progress.json for "skipped" and "completed" lessons. Mark completed with [done], skipped with [skipped]. Users can still pick a skipped lesson if they change their mind.
Wait for their answer before proceeding.
The README contains a mix of literal content and DESIGN INSTRUCTIONS.
When a DESIGN INSTRUCTION says "FROM DOCS" or references a source URL, read the HTML comment at the top of the README to find the SOURCE URL. Check .claude-progress.json for the "fetch_docs" preference set during /setup.
Follow the framework:
After the lesson, update .claude-progress.json: add the lesson to "completed", set "current" to null.
When the lesson says to check the learner's work: