Install
openclaw skills install @ivangdavila/ankiBuilds and repairs Anki decks: card writing, FSRS and SM-2 deck options, leeches, review workload, imports, and sync. Use when making cards from notes, PDFs, lectures, textbooks, or vocabulary lists; when reviews pile up, take too long, or a backlog builds after time off; when retention drops, cards keep failing, or a deck falls into ease hell; when choosing FSRS vs SM-2, or setting desired retention, new cards per day, learning steps, and leech thresholds; when a deck asks to upload or download in a one-way sync, loses media, or fails Check Database; when importing CSV/TSV, an .apkg, or a shared deck, or migrating from Quizlet, Memrise, or SuperMemo; when cards are due but nothing appears; and when a fixed exam date forces a study plan. Covers language decks, medical and board decks, code and math material, and personal decks such as names and faces or poetry. Not for generic flashcard writing outside Anki, spaced-repetition algorithm theory, study-session planning, or add-on development.
openclaw skills install @ivangdavila/ankiUser preferences and memory live in ~/Clawic/data/anki/ (see setup.md on first use, memory-template.md for the file format). If you have data at an old location (~/anki/ or ~/clawic/anki/), move it to ~/Clawic/data/anki/. Nothing else is stored: the collection is never opened or modified — you work from text, files, exports and stats the user hands over, and you emit cards the user imports.
flashcards), spacing-algorithm theory for its own sake (spaced-repetition), study scheduling and technique choice (studying), or writing add-on code| Situation | Play |
|---|---|
| "Make cards from this" | Extract atomic facts, one per card, then state the intake cost of rule 5 → bulk-generation.md; how to word each card → cards.md |
| A card is written but wrong — ambiguous, a hidden list, leaks its answer | Atomicity test, cloze rules, interference, reversals, mnemonics, worked leech rewrite → cards.md |
| A card keeps failing, 8 lapses reached | Leech: rewrite the card, then reset its history — not more reviews (rule 4) → retention.md |
| Reviews per day keep climbing | Intake exceeds throughput: new/day × reviews-per-card is the steady state (rule 5) → retention.md |
| Retention below 0.85 while desired is 0.90 | Grading drift or bad cards before settings — check the Again-rate by deck first → retention.md |
| Backlog after time off | New cards to 0, cap reviews, burn down oldest-first; never marathon → retention.md |
| "Which numbers do I set?" | Every default and what changes it → scheduling.md |
Ease hell (core band 130-180%, screened with prop:ease<2.0) | SM-2 artifact: move to FSRS, or reset ease AND fix the cards → retention.md |
| Cards are due but nothing appears | Daily limit, parent-deck limit, burial, suspension — in that order → troubleshooting.md |
| Anki asks Upload or Download | One-way sync: keep the side with the work, the other is overwritten → sync-and-backup.md |
| Import made duplicates, or one giant card | Field mapping, separator, HTML setting → importing.md |
| Need to find or bulk-edit a subset of cards | Search syntax and filtered decks → search.md |
| Card needs a hint, typed answer, or styling | Note type and template surgery → note-types.md |
| Labelled diagram, anatomy plate, map, circuit, UI screenshot | Image Occlusion: masks, and Hide All vs Hide One → image-occlusion.md |
| Deck structure, tags, merges, duplicates | organization.md |
| Vocabulary, audio, conjugation, false friends | language.md |
| Med school, boards, AnKing-style shared decks | medicine.md |
| Programming, syntax, math, theorems | code-and-math.md |
| Names and faces, poetry, music, chess, birds, work facts | Non-academic decks and how to keep them alive → personal-decks.md |
| Exam in N days | Capacity math before content — can the deck even be finished → exam-prep.md |
| Which add-ons, and what breaks on upgrade | addons.md |
| Anything else | Ask what the user sees on screen — a count, a button, an exact error — map it to a row above, then propose one change at a time |
Depth on demand — read SKILL.md alone by default, then exactly one of these: cards.md (wording a card that survives) · bulk-generation.md (source material → importable batch) · note-types.md (fields, templates, CSS, typed answers) · image-occlusion.md (masking a labelled image, and the Hide All / Hide One choice) · scheduling.md (every deck-options number) · retention.md (deck diagnosis, ease hell, leeches, backlog) · search.md (query syntax, bulk edits, filtered decks) · organization.md (decks vs tags, duplicates, maintenance) · importing.md (CSV/TSV, .apkg, migrations, media, export) · sync-and-backup.md (one-way sync, .colpkg, corruption) · troubleshooting.md (the app misbehaving) · addons.md (what to install, what is already built in) · exam-prep.md (fixed date, capacity math, triage) · language.md · medicine.md · code-and-math.md · personal-decks.md (the four subject guides) · setup.md (first-use preference loading).
new_per_day × reviews_per_card. Read reviews_per_card from your own collection (Stats: total reviews ÷ total cards; commonly 8-15 after the first year on defaults). 20 new/day × 10 = ~200 reviews/day, indefinitely. Work backwards from time you will actually spend: new_per_day = (minutes_available × 60 / seconds_per_review) / reviews_per_card.anki >=23.10) defaults to 0.90. Pushing to 0.95 buys a few points of recall for roughly double the daily reviews; dropping under 0.80 spends the savings on relearning. Do not guess the trade — deck options ships a simulator that prices it against your own history (scheduling.md).reviews_per_card × seconds_per_review / 60 minutes. At 10 reviews × 8 s, one card ≈ 1.3 minutes of your life, so 500 cards ≈ 11 hours. The filter for adding a card is "worth 1-2 minutes of review time", not "is true".The scheduler sees nothing but which button you pressed. Grading drift is the most common cause of "the algorithm is broken".
| Button | Means | SM-2 effect | FSRS effect | Misuse |
|---|---|---|---|---|
| Again | Retrieval failed | Ease −20pp, lapse counted, card returns to relearning | Difficulty up, stability collapses | Pressing it for "knew it, but slowly" — that is Hard |
| Hard | Retrieved with effort | Ease −15pp, interval ×1.2 | Small stability gain, difficulty up | Using it as a soft fail; habitual Hard ratchets intervals back toward daily |
| Good | Retrieved normally | Interval × ease | Normal stability gain | None — this is the default answer |
| Easy | Instant; the interval was too short | Ease +15pp, interval × ease × 1.3 | Large stability jump, difficulty down | Farming Easy to shrink today's queue, then losing the card for months |
Consistency beats correctness: one grading standard applied the same way daily gives FSRS something to fit. Changing your standard mid-collection is what makes optimized parameters stop matching.
Every workload question is one of these four, and none of them needs a guess.
daily_reviews ≈ new_per_day × reviews_per_card (rule 5) — the number you are signing up for, not today's count.minutes/day = daily_reviews × seconds_per_review / 60. Stats reports seconds/review directly; 5-8 s is typical for vocabulary, 10-20 s for reasoning-heavy cloze.new_per_day = remaining_new / (days_until_exam − 21). The 21 days are deliberate: a card first seen inside the last three weeks never reaches mature interval (interval >= 21 days) and will not hold through exam day (exam-prep.md).days_to_clear ≈ backlog / (cap − incoming_due). If cap <= incoming_due the backlog never clears — set new cards to 0 first, which is what removes tomorrow's incoming (retention.md).Symptom on the review screen → what is actually wrong → what to change. Writing the replacement card — atomicity test, cloze rules, interference, reversals, worked leech rewrite: cards.md.
| Symptom | Diagnosis | Fix |
|---|---|---|
| Fails every time, feels unlearnable | The card holds a list or two facts | Split into atoms (rule 1) |
| "I know this but can't say it" | The answer is a paragraph, not a fact | Cut the answer to its testable core; move the prose to a source field |
| Right answer, wrong card | Interference with a near-identical sibling | Put the discriminator in BOTH questions, or merge them into one contrast card |
| Passes in the deck, fails in the exam | Recognition: the phrasing gave it away | Rephrase; kill giveaway wording and blanks sized to the answer |
| Always Easy, never forgotten | Below your knowledge floor | Delete it — a card you cannot fail teaches nothing and still costs reviews |
| Correct only because its sibling came first | Sibling ordering leak | Turn on sibling burying (scheduling.md) |
| Several answers would be accepted | The question underspecifies the domain | Add the context prefix (rule 2) |
| Passes alone, useless in practice | Isolated fact with no network | Add its cause, contrast and use — or accept it is trivia and cut it |
Saying this early saves more time than any card-writing tip.
exam-prep.md).Before handing over a batch of generated cards, verify:
card_format, with separator and field order stated so the import maps correctly?User-dependent variables. Defaults apply until the user states a preference; store them in ~/Clawic/data/anki/config.yaml.
| Variable | Type | Default | Effect |
|---|---|---|---|
| scheduler | fsrs | sm2 | fsrs | Selects which settings advice applies: desired retention and the optimizer (FSRS) vs ease factor and interval modifier (SM-2), in scheduling.md and retention.md |
| desired_retention | number (0.70-0.97) | 0.90 | The FSRS workload dial (rule 6); every review-count estimate in Workload Math scales with it |
| new_per_day | number (0-9999) | 20 | Drives the steady-state projection of rule 5 and the deadline math in exam-prep.md |
| card_format | tsv | csv | markdown | apkg-notes | tsv | Shape of every generated batch: separator, field order, and whether HTML is emitted (importing.md) |
| tag_style | hierarchical | flat | hierarchical | Whether generated tags read subject::topic::subtopic or single-level (organization.md) |
| note_type | text (note type name) | Basic | Which note type generated cards target; sets the field names in the output header (note-types.md) |
| batch_size | number (5-200) | 25 | Cards produced per pass before pausing for the user's review, instead of dumping a whole chapter |
| audio_source | none | tts | forvo | user-supplied | none | Whether language cards carry an audio field and what fills it (language.md) |
Preference areas — customizable dimensions; a stated preference gets recorded in config.yaml and applied:
addons.md)organization.md, note-types.md)scheduling.md)sync-and-backup.md)exam-prep.md)| Trap | Why it fails | Do instead |
|---|---|---|
| Answering Hard to keep a card close | Hard is a pass with a shrinking multiplier; used habitually it drives intervals toward daily and inflates difficulty | Again for failures, Good for successes; Hard only for genuine slow retrievals |
| Deleting a leech | Removes the evidence and the fact; the same gap reappears from the source material next month | Suspend, rewrite, reset history, unsuspend (rule 4) |
| Studying a giant shared deck as-is | Thousands of unsuspended cards on material not yet taught — a backlog by day three | Unsuspend by lecture or topic tag as you cover it (medicine.md) |
| Editing deck options from a subdeck | Presets are shared; the edit hits every deck using that preset | Check the usage count, clone the preset first (rule 7) |
| Fixing retention by raising desired retention | The recall gap is usually card quality or grading; the dial only buys reviews | Diagnose the Again-rate by deck first (retention.md) |
| Enabling FSRS and skipping Optimize | Default parameters model an average stranger, not you | Optimize once real history exists, then periodically (scheduling.md) |
| Treating AnkiWeb as a backup | Sync mirrors deletions and corruption to every device | Keep local .colpkg exports; automatic backups are per-profile and local (sync-and-backup.md) |
| Importing with "update existing notes" on the wrong key | Silently overwrites edited notes that match on the first field | Dry-run on a copy of the collection and verify the key column (importing.md) |
| One deck per lecture, five levels deep | Navigation and per-deck limits become the thing you manage | Shallow decks, hierarchical tags (organization.md) |
| Carding a textbook you have not read | Produces recognition of phrasing, not knowledge | Understand first, card second (When Anki Is The Wrong Tool) |
language.md).medicine.md).More Clawic skills, get them at https://clawic.com/skills/anki (install if the user confirms):
flashcards — card writing when the tool is not Anki, or not yet decidedstudying — study plans, technique choice, exam countdown beyond deck mathspaced-repetition — the scheduling theory behind these settingsusmle — board-exam content strategy that medicine.md here plugs intoPart of Clawic, the verified skill library. Get this skill: https://clawic.com/skills/anki.