Tools · Memory · Feb 2026
CLN → Anki
! Your CLN notes already contain the cards. You just need to extract them. # #anki #spaced-repetition #tools #memory
When you write a CLN document you are already classifying every piece of information. A line marked = 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.
01/ One Authoring Act. Two Outputs.

Traditional workflow:

take notes
→
make cards
→
review cards

Three passes. Three cognitive loads.

CLN workflow:

write CLN
→
reference doc
+
Anki deck

One pass. Semantic typing happens at authoring time.

* Self-Test: Why does CLN eliminate a separate card-authoring step? Because operators classify information at write time. = → definition, ! → warning, . → procedure. The card type is already there.
02/ Operator → Card Type Mapping
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:

= Signal-source decoupling: severing of reliable correlation between signal and source
! Heuristics fire correctly but produce wrong conclusions in AI-saturated environments
→ CLN stabilizes semantic signal by encoding type at write time
. Audit your CLN document: scan ! column for unmitigated risks ##audit-step

This block generates: 1 definition card, 1 critical warning card, 1 synthesis card, 1 procedural card. Zero extra authoring work.

* Self-Test: What card type does a ~ line generate? A decision card. The tension has no resolution yet — Anki forces you to revisit it until you choose a side.
03/ Gap Detection — Thinking Audit Most Powerful Feature

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.

Gap Pattern 1
? without following →
= open question with no conclusion
→ generates "research needed" card 🔴
Gap Pattern 2
! without following .
= risk with no mitigation action
→ generates "action required" card 🔴
Gap Pattern 3
~ without following →
= unresolved tension or trade-off
→ generates "decide" card 🟡
The gap between ? and → is where your actual thinking happens. Anki can make you review that gap until it closes.
* Self-Test: What does a ! 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.
04/ Authoring Patterns for Better Cards

Three patterns that maximize card quality with minimal extra effort:

Pattern A — Definition Block
= concept name: definition
+ key implication 1
+ key implication 2
→ 1 definition card + N implication cards
Pattern B — Risk-Action Pair
! risk description
. mitigation step
→ "What is the response to [risk]?" card
Pattern C — Q&A Block
? open question
→ answer or resolution
→ direct Q&A card — most natural type

Using || spoilers || (v2.2) inside * lines creates self-test moments directly in your source document — these become cloze-deletion candidates automatically:

* Example: The three CLN gap patterns are: ? without →, ! without ., ~ without →
* Example: cln2anki step 3 is: run gap detection — pattern matching on operator sequences
05/ cln2anki: Implementation Sketch
. Input
= any .cln file or CLN block in .md
= optional deck name from document header #deck:tag
= || spoiler || lines → cloze candidates (v2.2)
. Algorithm
= step 1: parse lines → (operator, content, indent, block) tuples
= step 2: apply operator → card-type mapping
= step 3: run gap detection — pattern match operator sequences
= step 4: extract || ... || spans as cloze deletions
= step 5: generate Anki import file
= step 6: tag cards by block header // and document tags
. Output Formats
= Anki .apkg via genanki (Python)
= AnkiConnect JSON for direct API import
= plain CSV for any spaced-repetition tool
= Markdown with {{cloze}} syntax for Obsidian SR
* Self-Test: What does step 4 of cln2anki do that wasn't possible in v2.1? Extracts || spoiler || spans as cloze deletions. The v2.2 inline spoiler syntax doubles as a card-authoring primitive — the hidden text becomes the cloze answer.