The LearnSpec Suite
LearnSpec is a family of fourteen Markdown-based formats that cover the full lifecycle of educational content, from a single lesson to a complete certification path.
Each format is independent, each is valid Markdown, and each composes with the others through the shared mechanisms defined in the Architecture Charter.
Overview
| Format | Ext. | Role | Status |
|---|---|---|---|
| LearnMD | .learn.md | Structured educational content | Stable, v0.3 (v0.4 drafting) |
| QuizMD | .quiz.md | Quizzes and assessments | Stable, v0.3 drafting |
| ExerciseMD | .exercise.md | Exercises with model solutions and grading rubrics | Draft v0.1 |
| TrackMD | .track.md | Sequenced learning paths | Draft v0.1 |
| FlashMD | .flash.md | Flashcards and spaced repetition | Draft v0.1 |
| NuggetMD | .nugget.md | Micro-learning concepts for spaced repetition | Draft v0.3 |
| ListenMD | .listen.md | Speech-only rendition of a content format, rendered for ears | Draft v0.1 |
| DiagramMD | .diagram.md | Diagram syntax + reusable diagrams referenced via !ref | Draft v0.2 |
| AnimMD | .anim.md | Step-reveal animations over vector scenes | Draft v0.1 |
| MediaMD | .media.md | Media catalogue with licences | Draft v0.1 |
| GlossaryMD | .glossary.md | Term definitions | Draft v0.1 |
| CurriculumMD | .curriculum.md | Reference frameworks and syllabi | Draft v0.1 |
| BadgeMD | .badge.md | Micro-credentials | Draft v0.1 |
| CertMD | .cert.md | Macro-credentials | Draft v0.1 |
How the formats relate
The suite forms three layers, plus one relationship that sits outside the !import / !ref model entirely:
- Orchestrator:
TrackMDsequences everything else. - Content formats:
LearnMD,QuizMD,ExerciseMD,FlashMD,NuggetMDcarry the actual material. - Leaf formats:
DiagramMD,MediaMD,AnimMD,GlossaryMD,CurriculumMD,BadgeMD,CertMDare referenced but never reference anything else (AnimMD scripts ride inside the DiagramMD / MediaMD entries they animate). - Rendition formats:
ListenMDis not imported and not referenced, it is derived from a content format (typically LearnMD) by an editorial rewrite, and resynchronised to its source through chapter anchors rather than through a directive.
┌──────────────┐
│ TrackMD │ ← orchestrator
└──────┬───────┘
┌──────────┬──────────┬─────┴────┬──────────┐
▼ ▼ ▼ ▼ ▼
LearnMD QuizMD ExerciseMD FlashMD NuggetMD ← content
│ │ │ │ │
└──────────┴──────────┴────┬─────┴──────────┘
▼
DiagramMD, MediaMD, AnimMD, GlossaryMD, CurriculumMD ← leaves
│
BadgeMD, CertMD ← credentials
LearnMD ┄┄editorial rewrite┄┄▶ ListenMD ← rendition
(not !import'd, not !ref'd)The full compatibility matrix, who can !import whom, who can !ref whom, lives in the charter.
Stable formats
LearnMD
Status: stable, v0.3 in production; v0.4 drafting to align with the new suite (extracts diagrams to DiagramMD, media to MediaMD, definitions to GlossaryMD).
The educational content format, explanations, examples, exercises, inline checkpoints. A complete course can live in a single .learn.md file; !import is a composition tool, not a prerequisite.
QuizMD
Status: stable, v0.3 drafting consolidates the "YAML everywhere" principle across the three levels.
The assessment format, single questions, full quizzes, configurable behaviour through YAML at every level. Natively embeddable inline in a LearnMD via !import.
Draft formats
The formats below are at draft v0.1 or v0.2, their specifications are still moving. That is a statement about the spec, not about availability: several are already implemented and used in production. Expect refinements, not upheaval.
ExerciseMD
Role: exercises, tasks where the learner produces work (a derivation, an essay, a translation, a program), graded against a model solution, explicit expectations, and a rubric.
The split with QuizMD is deliberate and enforced: if an answer can be graded by matching, it belongs in QuizMD; if grading requires judging a production, it belongs here. ExerciseMD therefore defines no closed-answer syntax at all, and a mixed exam paper composes both through TrackMD.
Key decisions: the canonical file holds statement and grading kit, with the subject and the answer key derived from it mechanically, parallel copies drift, derived views cannot. Rubrics come in two shapes: additive (one observable criterion per point) and levels (profile descriptors with floor scores) for holistic work.
TrackMD
Role: sequence learners through an ordered path of LearnMD, QuizMD, and FlashMD files, with completion criteria and progress checkpoints.
TrackMD is the only format that can !import all content types. A Level 0 .track.md is a human-readable table of contents in any standard Markdown reader.
Key decisions so far:
- v0.1 is a linear sequence; conditional prerequisites deferred to v0.2.
- TrackMD references
BadgeMDandCertMDthroughon_completionmetadata.
FlashMD
Role: front/back flashcards for spaced-repetition review. Consumed in a context separate from the lesson (review session, notification, flashcard mode), never inlined in a LearnMD.
Key decisions: inline LaTeX is available from Level 0, mathematical content is a fundamental element of cards, not an advanced feature. Visual richness (media:slug) comes at Level 2.
NuggetMD
Role: collections of nuggets, short, self-contained concepts read in under three minutes each, reviewed over time via spaced repetition.
NuggetMD sits between FlashMD and LearnMD: larger than an atomic fact, smaller than a full lesson. The author controls granularity, a file may hold one nugget or dozens.
Key decisions: each nugget enters its own FSRS slot; FlashMD and NuggetMD feed separate review queues, never mixed. A nugget that exceeds the three-minute reading limit belongs in LearnMD.
ListenMD
Role: the suite's first rendition format, a speech-only script for audio episodes, an ordered sequence of @role speech turns (@host, @signpost, @guest…) grouped into optional chapters, editorially derived from a content format (typically LearnMD) for a listener who cannot see a diagram, a table, or a list.
Key decisions: the derivation is editorial, not mechanical, tables get re-linearized into prose, visual references get narrated instead of pointed at, numbers get written the way they're spoken. Unlike every other format above, ListenMD is never !imported or !referenced, it stands alone, resynchronised to its source through ## Chapter {#source-anchor} headings whose anchor reuses the source document's own heading slug. Voice, provider, and style binding are kept entirely out of the file, resolved by whatever pipeline renders it.
DiagramMD
Role: dual-purpose. It is both the canonical syntax specification for diagram blocks across the entire suite (mermaid, abc, chess, vega, d3, smiles, …) and a standalone file format for reusable named diagrams referenced by slug via !ref from any content format.
Other specs (LearnMD, QuizMD, FlashMD) delegate diagram documentation to DiagramMD, a diagram block valid in DiagramMD is valid everywhere in the suite. Rendering implementation is left to players.
AnimMD
Role: step-reveal animation scripts over existing vector scenes, a DiagramMD entry or a MediaMD SVG asset. A script only chooses the order of revelation of named elements (five verbs, prose captions); it contains no keyframes and no coordinates.
Key decisions: the script never contains a renderer id, a binding layer maps author-chosen names to the scene's source identifiers, resolved per generator at render time. Every failure mode degrades to the static scene: the worst case is exactly what the host displays today.
MediaMD
Role: centralise the metadata, sources, and licences for media assets so that other formats can reference images by a symbolic identifier without managing licensing themselves.
Resolution model:
A standard Markdown reader displays the image via the fallback URL. A LearnSpec player resolves media:heart through the MediaMD file pulled in by !ref, using the canonical source and licence.
Licence convention: SPDX identifiers (CC-BY-4.0, CC0-1.0, …). The value custom is reserved for cases SPDX does not cover, and must be accompanied by license_url or license_text.
GlossaryMD
Role: centralise definitions of key terms in a corpus. Referenced via !ref so a compatible player can highlight terms, surface tooltips, and link related entries, without modifying source content.
This is the format with the most natural graceful degradation: a Level 0 .glossary.md is a perfectly readable glossary in any Markdown viewer with no specific syntax at all. Inline Markdown and LaTeX are allowed in definitions; fenced blocks (Mermaid, quiz, rich examples) are not, a definition that needs a diagram is a lesson, not a glossary entry.
CurriculumMD
Role: describe what a corpus must cover, a school syllabus, a certification framework, an internal training plan, without being pedagogical content itself.
CurriculumMD is the first meta format in the suite: it holds no lessons or quizzes, only reference learning objectives. Content formats declare alignment with !ref; the actual coverage check is performed by the AI or the player.
Key decisions: a pure leaf format, imports and references nothing. Level 2 adds per-objective attributes (id, bloom, weight, mandatory) for machine-readable alignment.
BadgeMD
Role: define a micro-credential that recognises mastery of a specific, granular skill. Badges are stackable: a learner accumulates them along a path.
Designed for compatibility with Open Badges 3.0 (IMS Global / 1EdTech), so a .badge.md can be issued to LinkedIn, Credly, and similar platforms. SVG-native: the badge image lives next to the file and is bakeable.
CertMD
Role: define a macro-credential attesting mastery of a complete domain, typically requiring completion of one or more TrackMD paths, a passing score on a formal assessment, and possibly prerequisite badges.
CertMD is to BadgeMD what a degree is to a module completion certificate: same family, different scope. Kept as two separate formats to keep each spec focused.
Where to next
- Read the Architecture Charter for the principles every format inherits, graceful degradation, levels, frontmatter, directives, validation.
- Read the LearnMD and QuizMD specifications for the stable formats.
- Follow github.com/learnspec for the draft specifications and their changelogs.