= is a definition. A line marked ! is a warning to remember. A line marked
. is a procedure to practice. The operator is already the card type.
Traditional workflow:
Three passes. Three cognitive loads.
CLN workflow:
One pass. Semantic typing happens at authoring time.
= → definition, ! → warning, . → procedure. The card type is already there.
| Op | Semantic Role | Card Type Generated |
|---|---|---|
| = | Definition / Essence | Basic or Cloze card Front: "What is X?" · Back: the definition |
| ! | Risk / Warning | High-priority retention Tagged "critical" · higher interval penalty |
| . | Action / Procedure | Procedural card Front: "How do you do X?" · Back: the steps |
| ? | Unknown / Hypothesis | Research card "Status of this question?" · tracks resolution |
| → | Result / Conclusion | Synthesis recall card "What is the outcome of X?" · high-value |
| ~ | Tension / Trade-off | Decision card "Which side of this trade-off applies now?" |
Example — the same CLN block produces three different card types:
! column for unmitigated risks ##audit-stepThis block generates: 1 definition card, 1 critical warning card, 1 synthesis card, 1 procedural card. Zero extra authoring work.
~ line generate?
A decision card. The tension has no resolution yet — Anki forces you to revisit it until you choose a side.
Gap detection transforms CLN from a note format into a thinking audit tool. It surfaces things you wrote down but never resolved — the most valuable items to review.
The gap between?and→is where your actual thinking happens. Anki can make you review that gap until it closes.
! line without a following . mean in your notes?
An unmitigated risk. You identified a danger but never wrote the response. Gap detection flags it and forces you to decide: add a mitigation or consciously accept the risk.
Three patterns that maximize card quality with minimal extra effort:
Using || spoilers || (v2.2) inside * lines creates self-test moments
directly in your source document — these become cloze-deletion candidates automatically:
.cln file or CLN block in .md#deck:tag|| spoiler || lines → cloze candidates (v2.2)(operator, content, indent, block) tuples|| ... || spans as cloze deletions// and document tags.apkg via genanki (Python){{cloze}} syntax for Obsidian SR