Skip to content

LearnMD

The open format for structured learning content.

LearnMD is the companion format to QuizMD: where QuizMD covers assessment (testing what you know), LearnMD covers instruction (explaining what to know). Together they form a complete teach → assess stack, all in portable plain-text files.

Key Principles

PrincipleDescription
Markdown-firstA .learn.md file is valid Markdown — readable in any editor
Git-nativeVersionable, diffable, and mergeable like code
AI-nativeGeneratable and consumable by LLMs without special tooling
Progressively enrichedPlain text (Level 0) up through special fenced blocks (Level 2)
QuizMD-interoperableInline quiz blocks and !import directive to embed checkpoints

Format Levels

LevelMechanismPurpose
0Plain .learn.md, pure MarkdownMinimal learning content, human-readable
1YAML frontmatter + GFM calloutsMetadata, estimated time, language
2Special fenced blocks + directivesExamples, summaries, inline quizzes, imports

Each level is a strict superset of the previous one. A Level 0 file is valid at Level 1 and 2.

Quick Example

markdown
---
title: Introduction to Python
lang: en
estimated_time: 15min
tags: [python, variables]
---

# Introduction to Python

## Module 1 — Variables

A variable is a named reference to a value in memory.

\`\`\`python
age = 25
name = "Alice"
\`\`\`

> [!tip]
> Use descriptive names: `student_count` is clearer than `n`.

\`\`\`quiz
? Which syntax is valid Python?
- [x] age = 25
- [ ] int age = 25
- [ ] var age = 25
\`\`\`

Next Steps

Released under the MIT License.