
geist-learning-lab
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.
- Installs
- 139
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/vercel-labs/skill-geist-learning-labs --skill geist-learning-lab- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads geist-learning-lab automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Geist Learning Lab
Build interactive learning experiences that teach by making the learner do something, get feedback, and iterate — using Geist's dark-first, minimal, precise UI language.
Design Philosophy
- Learning loops, not pages — Every screen completes: prompt → attempt → feedback → refinement → checkpoint
- Cognitive load management — Progressive disclosure, chunking, one concept + one action at a time
- Error-friendly design — Mistakes are expected; the UI normalizes them and turns them into learning moments
- Interactive representations — Sliders, toggles, diagrams, live code — not just text
- Geist precision — Dark backgrounds, tight tracking, semantic color, 4px grid, Swiss typography
Critical Rules
- Every lesson must include at least one attempt+feedback loop — No passive-only pages
- Every interactive control must have a visible effect — Within ~100ms or show loading state
- Progress/review must exist even in a prototype — Track steps completed, checkpoints passed
- Active attempt before explanation — Ask a question or show a task, then explain
- Immediate, specific feedback — "Correct" isn't enough; explain why
- Multiple representations — Always at least 2 of: text, code, visual, interactive, real data
- Color is learning signal — Green=correct, Red=incorrect, Amber=hint/warning, Blue=info/definition
- Progressive disclosure by default — Depth behind "Why?", "Edge Cases", "Formal Definition"
- URL state for exploration — Shareable slider/toggle configurations via search params
- Misconception-first design — Bake in common traps: "Most people get this wrong because..."
The Learning Loop (Central Doctrine)
Every lesson repeats this cycle:
| 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 |
"Aha Moment" Design Patterns
| 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 |
Quick Color Reference (Learning Semantics)
| Signal | Color Token | Hex | Usage |
|---|---|---|---|
| Correct | green-700 | #46A758 | Success feedback, completed steps |
| Incorrect | red-700 | #E5484D | Error feedback, failed checks |
| Hint/Caution | amber-700 | #FFB224 | Hints, warnings, "watch out" |
| Info/Definition | blue-700 | #0070F3 | Definitions, current step, links |
| Default | gray-400 | #737373 | Everything else: borders, muted text |
| Progress done | green-700 dot | #46A758 | Completed step indicator |
| Progress current | blue-700 ring | #0070F3 | Current step focus state |
| Progress pending | gray-400 dot | #737373 | Upcoming steps |
Component Library (23 Patterns)
Lesson Flow & Progress
<LessonShell /> <ProgressRail /> <StepFlow /> <CheckpointCard /> <ResumeBanner />
Explorable Explanations
<ParameterDock /> <LiveOutputPanel /> <ConceptExplorer /> <InteractiveDiagram /> <BeforeAfterSplit /> <TimelineExplorer /> <ConceptMap />
Code Learning
<CodePlayground /> <DiffEditor /> <TaskRunner /> <SnippetCopy />
Quizzes & Active Recall
<QuickCheck /> <ConfidenceRating /> <HintLadder /> <MistakeAnalyzer />
Reading Support
<GlossaryPopover /> <Callout /> <WorkedExample />
Typography in Learning Context
| Element | What It Means | Style |
|---|---|---|
| Big heading | "What you're doing" | text-heading-{32|24} semibold, negative tracking |
| Small label | "Where you are" | text-label-{14|12} gray-400 |
| Mono | "What the computer sees" | text-copy-14-mono or text-label-14-mono |
| Body | Reading content | text-copy-14 or text-copy-16, max-w-2xl |
Layout Patterns
| Context | Max Width | Structure |
|---|---|---|
| Reading content | max-w-2xl / max-w-4xl | Single column, comfortable line length |
| Interactive lab | max-w-6xl | Two panels: explanation + playground |
| Full explorer | max-w-7xl | Three zones: nav + content + lab panel |
App Router Structure
/ → Landing / course picker
/learn → Course catalog + resume
/learn/[courseSlug] → Course overview, modules, progress
/learn/[courseSlug]/[moduleSlug] → Module overview
/learn/[courseSlug]/[moduleSlug]/[lessonSlug] → Lesson shell
File Organization
content/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 scheduling
References
references/lesson-shell.md— LessonShell, ProgressRail, StepFlow, CheckpointCard, ResumeBanner TSX patternsreferences/explorable-explanations.md— ParameterDock, LiveOutputPanel, ConceptExplorer, InteractiveDiagram, BeforeAfterSplit, TimelineExplorer, ConceptMapreferences/code-learning.md— CodePlayground (read-only/guided/free), DiffEditor, TaskRunner, SnippetCopyreferences/quiz-assessment.md— QuickCheck, ConfidenceRating, HintLadder, MistakeAnalyzer with feedback patternsreferences/reading-support.md— GlossaryPopover, Callout variants, WorkedExample with stepwise revealreferences/pedagogical-framework.md— The Learning Loop doctrine, progressive disclosure rules, aha patterns, scaffolded complexityreferences/architecture.md— Next.js App Router routing, MDX content system, state management, file organizationreferences/progress-state.md— Progress schema, localStorage adapter, spaced repetition, URL state for explorationsreferences/learning-animations.md— Step transitions, feedback reveals, diagram animations, reduced-motion compliance
FAQ
What does the geist-learning-lab skill do?
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.
How do I install geist-learning-lab?
Run npx skills add https://github.com/vercel-labs/skill-geist-learning-labs --skill geist-learning-lab in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/geist-learning-lab/ (personal) or .claude/skills/geist-learning-lab/ (project).
Which AI agents can use geist-learning-lab?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is geist-learning-lab safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains geist-learning-lab?
It is published by vercel-labs in vercel-labs/skill-geist-learning-labs, and it is an official skill from the maker of the technology it covers. It has 139 recorded installs.
Popular education & science skills
teach
mattpocock/skills
Teach the user a new skill or concept, within this workspace.
scaffold-exercises
mattpocock/skills
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.
paper-context-resolver
lllllllama/rigorpilot-skills
Rigor Paper Context helper for README-first deep learning repo reproduction. Use only when the README and repository files leave a narrow reproduction-critical gap and the task is to resolve a specific paper detail such as dataset split, preprocessing, evaluation protocol, checkpoint mapping, or runtime assumption from primary paper sources while recording conflicts. Do not use for general paper summary, repo scanning, environment setup, command execution, title-only paper lookup, or replacing README guidance by default.
caveman-learn
juliusbrussee/caveman
Act on a Caveman learn report - review the ranked token sinks, apply cost-lowering fixes with per-edit consent, and report what those fixes returned. Use when asked to lower an agent's token cost, what caveman has saved, to trim a heavy CLAUDE.md, or to offload re-pasted context into cavemem.
gsap-plugins
greensock/gsap-skills
Official GSAP skill for GSAP plugins — registration, ScrollToPlugin, ScrollSmoother, Flip, Draggable, Inertia, Observer, SplitText, ScrambleText, SVG and physics plugins, CustomEase, EasePack, CustomWiggle, CustomBounce, GSDevTools. Use when the user asks about a GSAP plugin, scroll-to, flip animations, draggable, SVG drawing, or plugin registration.
teach-impeccable
pbakaus/impeccable
DEPRECATED: Use /impeccable teach instead. This command has been folded into the impeccable skill.