Create exercise directory structures with sections, problems, solutions, and explainers that pass linting. Use when user wants to scaffold exercises, create exercise stubs, or set up a new course section.
cd ~/.claude/skills
git clone https://github.com/mattpocock/skills.git skills mkdir -p ~/.claude/skills/scaffold-exercises
curl -fsSL https://raw.githubusercontent.com/mattpocock/skills/HEAD/skills/misc/scaffold-exercises/SKILL.md \
-o ~/.claude/skills/scaffold-exercises/SKILL.md Create exercise directory structures that pass pnpm ai-hero-cli internal lint, then commit with git commit.
XX-section-name/ inside exercises/ (e.g., 01-retrieval-skill-building)XX.YY-exercise-name/ inside a section (e.g., 01.03-retrieval-with-bm25)XX, exercise number = XX.YYEach exercise needs at least one of these subfolders:
problem/ - student workspace with TODOssolution/ - reference implementationexplainer/ - conceptual material, no TODOsWhen stubbing, default to explainer/ unless the plan specifies otherwise.
Each subfolder (problem/, solution/, explainer/) needs a readme.md that:
When stubbing, create a minimal readme with a title and a description:
# Exercise Title
Description here
If the subfolder has code, it also needs a main.ts (>1 line). But for stubs, a readme-only exercise is fine.
mkdir -p for each pathreadme.md per variant folder with a titlepnpm ai-hero-cli internal lint to validateThe linter (pnpm ai-hero-cli internal lint) checks:
problem/, solution/, explainer/)problem/, explainer/, or explainer.1/ existsreadme.md exists and is non-empty in the primary subfolder.gitkeep filesspeaker-notes.md filespnpm run exercise commands in readmesmain.ts required per subfolder unless it’s readme-onlyWhen renumbering or moving exercises:
git mv (not mv) to rename directories - preserves git historyExample:
git mv exercises/01-retrieval/01.03-embeddings exercises/01-retrieval/01.04-embeddings
Given a plan like:
Section 05: Memory Skill Building
- 05.01 Introduction to Memory
- 05.02 Short-term Memory (explainer + problem + solution)
- 05.03 Long-term Memory
Create:
mkdir -p exercises/05-memory-skill-building/05.01-introduction-to-memory/explainer
mkdir -p exercises/05-memory-skill-building/05.02-short-term-memory/{explainer,problem,solution}
mkdir -p exercises/05-memory-skill-building/05.03-long-term-memory/explainer
Then create readme stubs:
exercises/05-memory-skill-building/05.01-introduction-to-memory/explainer/readme.md -> "# Introduction to Memory"
exercises/05-memory-skill-building/05.02-short-term-memory/explainer/readme.md -> "# Short-term Memory"
exercises/05-memory-skill-building/05.02-short-term-memory/problem/readme.md -> "# Short-term Memory"
exercises/05-memory-skill-building/05.02-short-term-memory/solution/readme.md -> "# Short-term Memory"
exercises/05-memory-skill-building/05.03-long-term-memory/explainer/readme.md -> "# Long-term Memory" Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Use when executing implementation plans with independent tasks in the current session
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes
Use when implementing any feature or bugfix, before writing implementation code
Use when creating new skills, editing existing skills, or verifying skills work before deployment