Development priorities and feature specifications for the Anki Flashcards skill.
Last updated: December 31, 2025 · Theme Designer in progress, Image Occlusion testing
The minimum viable skill for getting early feedback. Users can create quality cards with minimal friction. Focus on speed, low token usage, and smooth onboarding.
Reduced from 726 lines to ~100. Pure intent detection and routing.
Documentation hub for skill development with procedures, architecture, and file references.
React-based card preview with flip, themes, and feedback export.
Python script for generating Anki packages with all card types.
One-turn card creation for common use cases. The primary user flow—must be fast and low-token.
Design Principles
- One turn to .apkg — User asks, gets package immediately
- Options, not gates — Present preview alongside, offer deeper review, but don't require engagement
- Skill read time is real cost — Quick cards logic should be in a dedicated workflow file, not bloating SKILL.md
Quick Card Types
- Vocabulary (single or batch) — Terms/definitions → Bidirectional concept cards. Quality check: don't use term in definition.
- Acronym unpacking — Generates 2 cards: Front-back (acronym → expansion) + Concept (term ↔ definition of the expanded term).
- Pre-formatted cards — User provides card content, Claude assigns appropriate card type + generates .apkg. Quality check: validate card type assignment (this is error-prone—Claude sometimes picks Front-Back when it should be Concept).
- Person (quick) — Photo + name → minimal Person card. After generating, offer to add more info ("We could also add role, location, interests—anything else you know about this person?").
- Image recognition — Image + "reminder card for X" → Image recognition card.
Implementation Notes
- Create
workflows/quick-cards.md with inline logic for all quick types
- SKILL.md routes to this file for quick card patterns
- Consider: can we use bash commands to generate preview + .apkg simultaneously so user gets both without extra turns?
Interactive HTML artifact that serves as both first-time onboarding and ongoing reference.
Implemented Features
- Matches developer portal design (sidebar nav, dark mode, mobile-responsive)
- "Notes vs Cards" section explaining Anki's data model
- Detailed field tables for each note type with defaults
- Setup checklists for Anki and Claude settings
- Anki alternatives for users who don't want AnkiMobile ($25)
- Links to Gwern's guide, shared decks, documentation
- Accessible via
/anki-help anytime
- Auto-presented after first interaction, respects opt-out
Developer tool for rapid CSS/HTML iteration on card themes. Full-viewport preview with side panel CSS editor, card selector, and live preview. Status: Local dev support and IO theme styles added; awaiting user review and bug fixes.
Implemented Features (v3.2)
- Full-viewport layout — Preview uses entire screen instead of narrow 500px container
- Side panel CSS editor — 400px panel slides in from right (replaces tiny modal)
- Card selector — Prev/next navigation to cycle through sample cards of same type
- Live CSS preview — Changes apply immediately with "Unsaved" indicator
- Status badges — Clear "Production" (green) vs "Working" (orange) distinction
- Dark mode toggle — Emoji indicator (☀️/🌙), card preview background updates
- Export — Copy-pasteable CSS formatted for themes.py
- Responsive design — CSS editor becomes full-width overlay on narrow screens
Remaining Work
- User testing and review of current iteration
- Bug fixes based on testing feedback
- Confirm IO card support in Theme Designer during testing
Launch Command
bash /home/claude/anki-flashcards/developer/tools/theme-designer-launch.sh [working_themes_file]
present_files(['/home/claude/theme-designer.jsx'])
Files
artifacts/theme-designer.jsx — Main React artifact (template with placeholders)
developer/tools/theme-designer-launch.sh — Generates artifact with production themes + sample cards
Make themes actually distinct and visually appealing. Important for initial rollout—users will have cards with these themes. Depends on: Theme Designer Tool
Current State
- Four themes exist: minimal, rich, bold, ios
- They're too similar and not particularly pretty
- Theme CSS is duplicated in
themes.py and preview-template.jsx
Goals
- Each theme should be visually distinct
- Cards should look polished—this matters for user perception
- May reduce to fewer themes if that's cleaner
Implementation
- Update
scripts/themes.py (source of truth)
- Update
artifacts/preview-template.jsx to match
- Test in both preview and actual Anki import
Fix known issues and improve UX through hands-on testing.
Known Issues
Image cards don't render correctly in test data (paths don't resolve) — Fixed in v2.8
- Need to verify image occlusion rendering works correctly with base64 images
- Need to test with various card volumes
- Various small UX issues to identify through usage
Approach
- Sit down and run through real use cases
- Document issues as encountered
- Fix iteratively
Single bash command to prep and present all developer files. Efficient entry into dev mode.
Implementation
developer/tools/dev-launch.sh — preps all files for presentation
- SKILL.md developer trigger runs this script
- Present: portal, roadmap, changelog, skill package (for folder navigation)
- Then wait for developer instructions
Rationale
- Multiple files presented = developer can click between them without spending tokens
- Claude only reads deeply what's needed for the specific task
- Roadmap, changelog extracted for token efficiency
Improvements based on early user feedback and features that weren't critical for initial launch.
Currently constrained to mobile-ish layout. Should adapt to different screen sizes.
Full support for image occlusion cards in preview and generation. OCR-based coordinate detection complete, Anki export testing pending.
Completed (v3.1)
- OCR-based coordinate detection via
detect_occlusion_regions.py
- Automatic text label detection with Tesseract OCR
- Multi-line label merging (e.g., "Left" + "Atrium" → "Left Atrium")
- Grid overlay generation for unlabeled images (10x10 with row/column labels)
- Preview image generation showing detected regions with bounding boxes
- Comprehensive documentation update with detection strategy guidance
- Claude's role shifted to validation/filtering rather than coordinate estimation
Completed (v3.0)
- Preview now embeds image inside SVG — masks stay aligned when resizing
generateIOEmbeddedSvg() replaces old overlay approach
- SVG viewBox uses actual image dimensions, not 0-100
preprocess_test_data.py extracts image dimensions via PIL
- Rectangular masks only (cleaner appearance)
- Heart anatomy test image added
Remaining Work
- Validate .apkg export produces working IO cards in Anki
- End-to-end testing with real diagrams
- Integration: connect detection script output to card generation workflow
Auto-generate cloze deletions from lists (e.g., "The four pillars of X are A, B, C, D").
Why Deferred
- Easy to make bad cloze cards
- Needs more guardrails than quick cards
- May require preview/review flow rather than one-turn
Replace freeform edit text in preview with common options: "too complex", "wrong card type", "add citation", etc.
For pre-formatted cards, offer optional deeper review that checks card quality more thoroughly.
"Add citation" feedback option that triggers web search and adds source to card.
Automatic tags based on content: vocabulary tags, source-based tags, topic detection.
Extract shared Python logic into a standalone pip-installable package hosted on GitHub.
Motivation
- Better modularity — Claude skill becomes thin orchestration layer
- Multi-agent friendly — other coding agents can work on the package with standard dev workflows
- Versioning — pin package versions in skill, test updates separately
- Reusability — package can be used outside Claude skills
- Standard tooling — pytest, mypy, proper IDE support
Proposed Package Structure
anki-tools/ (GitHub repo)
├── pyproject.toml
├── src/
│ └── anki_tools/
│ ├── __init__.py
│ ├── rendering.py # iframe rendering, base64 conversion
│ ├── preprocessing.py # image path → data URL
│ ├── themes.py # theme CSS definitions
│ └── export.py # .apkg generation
└── tests/
Migration Path
- Create GitHub repo with package structure
- Move
preprocess_test_data.py logic to preprocessing.py
- Move theme definitions from
scripts/themes.py to package
- Update skill scripts to
pip install and import
- Gradually migrate more logic as needed
Installation in Skill
pip install git+https://github.com/USER/anki-tools.git --break-system-packages
Bigger features for power users and complex workflows.
Upload PDF/doc → analyze → propose card breakdown → review → export.
Requirements
- Intermediate note generation step
- User reviews proposed card breakdown before generation
- May need chunking for large documents
CSV/JSON structured data → card transformation.
Cards that cite where info came from (e.g., "According to [book], X is Y"). Part of robust extraction workflow, not quick cards.
Systematic review of all paths. Identify where tokens are being wasted. Agent-optimized command suite.
Allow users to drop in existing Anki .apkg files to extract note type definitions, enabling the skill to create cards using the user's custom note types.
Concept
- User uploads an .apkg file containing their custom note type
- Skill extracts note type schema (fields, card templates, styling)
- Conversational flow to confirm understanding of the note type
- Update skill's supported card types to include the custom note type
- Propagate support across all relevant files (card type selector, export script, preview, etc.)
Scope Considerations
- Best suited for relatively simple/standard note types
- Complex note types with heavy JS/CSS customization may not be practical
- May need user guidance on which note types are "compatible"
Open Questions (Ask Ben Later)
- What level of complexity should be supported vs. declined?
- Should extracted note types persist across conversations (via skill update)?
- How to handle note types that conflict with existing built-in types?