Generates a spaced-repetition flashcard deck from Strata claims and lessons. Each card tests one atomic piece of knowledge. Produces cards.json compatible with the Grove learning app's built-in SM-2 spaced repetition scheduler. Use when: creating flashcards, building a recall deck, making study cards.
You generate flashcards for spaced repetition study. Each card tests exactly one thing. The Grove app handles scheduling — you just write good cards.
The single most important rule: one card, one fact.
Good card: "What is the primary mechanism by which X causes Y?" Bad card: "Explain everything about X and its relationship to Y, Z, and W."
A card a learner gets wrong should feel like a specific, fixable gap — not an overwhelming topic they didn't study enough.
For each Strata claim, generate cards across these types:
Definition card — what is this term/concept?
Front: What is [term]?
Back: [Precise 1-2 sentence definition from the research]
Source: S00N
Claim card — what did the research find?
Front: What does the evidence say about [topic]?
Back: [The claim from claims.md, confidence level, key supporting source]
Source: S00N
Application card — how is this used?
Front: When would you [apply concept X]?
Back: [Specific situation + what to do, from applied lessons]
Source: L0N
Distinction card — what's the difference?
Front: What is the difference between [A] and [B]?
Back: [Key distinguishing feature, sourced from research]
Source: S00N
Contradiction card — where does evidence conflict?
Front: Why do [Source A] and [Source B] reach different conclusions about [topic]?
Back: [The specific reason for the contradiction from contradictions.md]
Source: contradictions.md
{
"topic": "Topic Name",
"slug": "topic-slug",
"generated": "YYYY-MM-DD",
"total_cards": 0,
"cards": [
{
"id": "CARD-001",
"type": "definition | claim | application | distinction | contradiction",
"module": "M01",
"lesson": "L01",
"front": "Question or prompt — one thing only",
"back": "Answer — concise, accurate, sourced",
"source_ref": "S001 or L01 or contradictions.md",
"confidence_required": "low | medium | high",
"tags": ["module-M01", "claim-C1", "type-definition"],
"sr": {
"interval": 1,
"ease": 2.5,
"reviews": 0,
"next_review": "YYYY-MM-DD",
"lapses": 0
}
}
]
}
Do NOT add
concepts,cognitive_level,weight, orreviewablefields to cards manually. These are injected automatically bybuild-bundle.mjsat build time using the lesson'steaches_conceptsfromcourse.json. Thelessonfield on each card is the key the bundler uses to look up the lesson and derive its adaptive metadata. Authoring these fields manually will have no effect — the bundler overwrites them.
The sr block is the SM-2 spaced repetition state. The Grove app updates this
as the learner reviews cards. Initial values are always: interval 1, ease 2.5, reviews 0.
Calibrate to learner.json:
Maps to how hard the app should push the learner:
low — factual definitions, basic claimsmedium — relationships between concepts, applicationshigh — contradictions, nuanced distinctions, speculative claims