Loading...
Loading...
Build explorative, interactive learning experiences as Next.js apps using the Geist design system. Use when creating tutorials, explorable explanations, interactive lessons, code sandboxes, quizzes, or any educational UI. Covers the Learning Loop pedagogy, 23+ learning component patterns, progress tracking, spaced repetition, and Bret-Victor-style interactive exploration — all with Geist's dark-first minimal aesthetic.
npx skill4agent add vercel-labs/skill-geist-learning-labs geist-learning-lab| Step | What Happens | Component |
|---|---|---|
| Orient | What you'll learn in 5-10 min | Heading + learning objective |
| Attempt | Learner predicts/answers/edits first | QuickCheck, CodePlayground, ParameterDock |
| Feedback | Immediate + specific response | Feedback surface (green/red panel) |
| Explain | Short explanation anchored to their attempt | Callout, WorkedExample |
| Extend | Variation, edge case, or transfer task | BeforeAfterSplit, ConceptExplorer |
| Checkpoint | Quick recall question | QuickCheck with ConfidenceRating |
| Reflect | "What changed in your understanding?" | Optional text input or self-rating |
| Pattern | How It Works | When to Use |
|---|---|---|
| Prediction Gap | "What do you think happens if...?" then reveal | Before introducing a concept |
| Contrast Pair | Two near-identical cases with different outcomes | Clarifying subtle distinctions |
| Slider to Failure | Let learner push a parameter until it breaks | Understanding boundaries/limits |
| Time Travel | Scrub algorithm step-by-step, watch invariants | Algorithms, state machines |
| Misconception Trap | Tempting wrong option, then explain why wrong | Common errors in a domain |
| Signal | Color Token | Hex | Usage |
|---|---|---|---|
| Correct | green-700 | | Success feedback, completed steps |
| Incorrect | red-700 | | Error feedback, failed checks |
| Hint/Caution | amber-700 | | Hints, warnings, "watch out" |
| Info/Definition | blue-700 | | Definitions, current step, links |
| Default | gray-400 | | Everything else: borders, muted text |
| Progress done | green-700 dot | | Completed step indicator |
| Progress current | blue-700 ring | | Current step focus state |
| Progress pending | gray-400 dot | | Upcoming steps |
<LessonShell /><ProgressRail /><StepFlow /><CheckpointCard /><ResumeBanner /><ParameterDock /><LiveOutputPanel /><ConceptExplorer /><InteractiveDiagram /><BeforeAfterSplit /><TimelineExplorer /><ConceptMap /><CodePlayground /><DiffEditor /><TaskRunner /><SnippetCopy /><QuickCheck /><ConfidenceRating /><HintLadder /><MistakeAnalyzer /><GlossaryPopover /><Callout /><WorkedExample />| Element | What It Means | Style |
|---|---|---|
| Big heading | "What you're doing" | |
| Small label | "Where you are" | |
| Mono | "What the computer sees" | |
| Body | Reading content | |
| Context | Max Width | Structure |
|---|---|---|
| Reading content | | Single column, comfortable line length |
| Interactive lab | | Two panels: explanation + playground |
| Full explorer | | Three zones: nav + content + lab panel |
/ → Landing / course picker
/learn → Course catalog + resume
/learn/[courseSlug] → Course overview, modules, progress
/learn/[courseSlug]/[moduleSlug] → Module overview
/learn/[courseSlug]/[moduleSlug]/[lessonSlug] → Lesson shellcontent/courses/<courseSlug>/course.json → Metadata, module order
content/courses/<courseSlug>/<module>/<lesson>.mdx → Lesson content
components/learning/ → Reusable learning components
lib/learning/progress.ts → Schema + storage adapters
lib/learning/grading.ts → Quiz validation, code tests
lib/learning/spaced.ts → Review schedulingreferences/lesson-shell.mdreferences/explorable-explanations.mdreferences/code-learning.mdreferences/quiz-assessment.mdreferences/reading-support.mdreferences/pedagogical-framework.mdreferences/architecture.mdreferences/progress-state.mdreferences/learning-animations.md