Vault / wiki/401/skill-course-builder.md
updated 2026-07-16Worked Example: The course-builder Skill
How a pile of markdown notes becomes a course. The skill (.claude/skills/course-builder/SKILL.md) encodes this site's answer: a track is just an ordered list of vault-note slugs plus an optional quiz and flashcard deck, declared in one config file (web/scripts/tracks.config.mjs).
The design idea: courses as configuration
Nothing about a course lives in application code. Adding "Introduction to Claude Cowork" to the site is: write the note, add its slug to a track array, rerun the content pipeline. That is what makes the weekly skill-vault-sync automation able to grow the catalog without touching React.
- Lesson slugs — filenames minus
.md; the pipeline warns (not fails) on unknown slugs, so tracks can be declared before their content lands. - Ordering discipline — each lesson may only depend on earlier lessons: overview → mechanics → edge cases → operations. Prev/next navigation is derived from array order.
- Attachment points —
quiz:binds a parsed practice file;deck:binds a generated flashcard deck. Both are ids produced by the same pipeline, so a typo is caught at build time.
Why validation is part of the skill
The skill ends with commands, not advice: run the pipeline, read the missing lesson slug warnings, preview the track route. A capability bundle that doesn't tell you how to verify success teaches the model to declare victory early.
Key terms
- Track — an ordered lesson list + optional quiz/deck, rendered as a course.
- Content pipeline — the build script that turns vault markdown into the JSON the site serves.
- Declared-before-built — registering future content so it lights up the moment the note exists.
- First-match ownership — a lesson's prev/next navigation belongs to the first track containing it.
Open .claude/skills/course-builder/SKILL.md and web/scripts/tracks.config.mjs together — the skill is short precisely because the system it operates is simple.