Card Format
Store decks anywhere, for example:
flashcards/
math.md
science/
physics.md
chemistry.md
Cards live in everyday Markdown. repeater scans for tagged sections and turns them into flashcards, so you can mix active-recall prompts with your normal notes.
-
Basic cards
Q: What is Coulomb's constant? A: The proportionality constant of the electric force.Multi-line basic:
Q: List the SI base units. A: meter (m) kilogram (kg) second (s)Single-line variant:
What is Coulomb's constant?::The proportionality constant of the electric force. -
Cloze cards
C: The [order] of a group is [the cardinality of its underlying set].Each non-empty
[hidden]span becomes its own review card. In the example above,repeaterasks one card for[order]and another for[the cardinality of its underlying set]; the inactive bracketed spans stay visible while the active one is masked.
Parsing Logic
- Cards are detected by the presence of
Q:/A:,C:, or::. A horizontal rule (---) or the start of another card marks the end. - Lines with
::are treated as single-line basic cards (left side = question, right side = answer). - Each card gets a hash (think fingerprint) built from its letters, numbers, and any
+/-signs. Punctuation, spacing, and capitalization are ignored, so only meaningful text changes create a new history. - Metadata lives in
cards.dbunder your OS data directory (for example,~/Library/Application Support/repeater/cards.dbon macOS). Delete this file to reset history; the Markdown decks remain untouched. - Multi-line content is supported.
Edge case examples
- Markers must start at column 0. Indented
Q:,C:, or---lines are ignored by the scanner, so the snippet below produces zero cards.Q: Skipped A: Because the tag is indented - Next marker auto-closes the previous card. A new
Q:orC:flushes the current buffer even without---.Q: First? A: Ends here Q: Second starts now - Notes need a separator. Without a flush-left
---, trailing notes remain part of the last card.Q: Term? A: Definition This line still belongs to the answer - Basic cards require both tags. Missing or blank
Q:/A:blocks throw a parse error for that card.Q: What is ATP? --- ← rejected; no answer was captured - Single-line cards require both sides. Blank answers are rejected.
What is ATP?:: - Empty cloze brackets are skipped. A cloze block with only empty brackets produces no reviewable cards.
C: Skips [] but asks [this] C: Skips [] entirely