{"id":50929357,"url":"https://github.com/lroman242/anki-skill","last_synced_at":"2026-06-17T02:30:58.056Z","repository":{"id":360407231,"uuid":"1249600467","full_name":"lroman242/anki-skill","owner":"lroman242","description":"Claude Code skill for managing Anki flashcards from the terminal — create, update, delete, and browse cards via AnkiConnect, with quality rules to keep your deck clean.","archived":false,"fork":false,"pushed_at":"2026-05-26T08:20:17.000Z","size":29,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-26T10:17:52.284Z","etag":null,"topics":["anki","anki-cards","anki-flashcards","claude","claude-code","claude-code-skill","claude-skill"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lroman242.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-25T21:50:48.000Z","updated_at":"2026-05-26T08:20:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lroman242/anki-skill","commit_stats":null,"previous_names":["lroman242/anki-skill"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/lroman242/anki-skill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lroman242%2Fanki-skill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lroman242%2Fanki-skill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lroman242%2Fanki-skill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lroman242%2Fanki-skill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lroman242","download_url":"https://codeload.github.com/lroman242/anki-skill/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lroman242%2Fanki-skill/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34431810,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-17T02:00:05.408Z","response_time":127,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anki","anki-cards","anki-flashcards","claude","claude-code","claude-code-skill","claude-skill"],"created_at":"2026-06-17T02:30:57.128Z","updated_at":"2026-06-17T02:30:58.051Z","avatar_url":"https://github.com/lroman242.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Anki Skill\n\nA Claude Code skill for managing Anki flashcards during coding sessions. Create, update, delete, and browse cards without leaving the terminal. When you're learning something new — a concept, gotcha, or mental model — Claude proposes a card, you approve it, and it's in your deck.\n\n## Usage scenarios\n\n**During a coding session** — you hit a gotcha, learn a new concept, or want to remember a pattern. Ask Claude to add it to Anki mid-session without breaking your flow:\n\u003e *\"/anki add this — the difference between `INNER JOIN` and `LEFT JOIN` when one side has NULLs\"*\n\n**Learning a topic with Claude** — you're exploring something new and want to retain the key ideas. Ask Claude to build a deck from the conversation:\n\u003e *\"/anki we just covered B-trees, LSM trees, and SSTables. Create a deck with the most important things to remember for future review.\"*\n\n**Interview prep** — work through a problem with Claude, then have it card the patterns and techniques used, organized by topic deck:\n\u003e *\"/anki we just solved a sliding window problem — card the pattern and when to recognize it\"*\n\n**Kata exercises** — store implementation exercises as cards to revisit on a daily or weekly schedule. The front describes the task, the back holds key constraints or hints. Build a personal training deck over time:\n\u003e *\"/anki add a kata — implement a worker pool with a fixed concurrency limit and graceful shutdown\"*\n\u003e *\"/anki add a kata — implement an LRU cache with O(1) get and put\"*\n\u003e *\"/anki add a kata — implement a fan-in function that merges multiple channels into one\"*\n\nClaude proposes each card, you approve, and it lands in Anki. No copy-paste, no switching apps.\n\n## How it works\n\n1. You're coding or learning with Claude Code\n2. Claude notices something worth remembering, or you invoke `/anki`\n3. Claude proposes the card — front, back, deck, and tags\n4. On approval, the card is added to Anki via AnkiConnect\n\nNo dependencies — just `curl`, which is pre-installed on macOS and Ubuntu.\n\n## Prerequisites\n\n- **Anki desktop** running on your machine\n- **AnkiConnect addon** installed — open Anki, go to Tools \u003e Add-ons \u003e Get Add-ons, paste code `2055492159`, restart Anki. This exposes a local API on port 8765 that the skill talks to.\n\n## Setup\n\n1. Copy this folder to `~/.claude/skills/anki/`\n2. (Optional) Add a SessionStart hook to remind Claude about card creation:\n\n```json\n{\n  \"type\": \"command\",\n  \"command\": \"echo \\\"Reminder: You can create Anki flashcards with /anki. If you notice the user learning something new, proactively suggest a card.\\\"\"\n}\n```\n\n## Usage\n\n### Check connection and list decks\n\n```bash\n./scripts/anki_connect.sh\n```\n\n### Create a card\n\n```bash\n./scripts/create_card.sh \\\n  --deck \"CS\" \\\n  --front \"What problem does a bloom filter solve?\" \\\n  --back \"Probabilistic membership test — O(1) space-efficient check with no false negatives, possible false positives.\" \\\n  --tags \"algorithms,data-structures\"\n```\n\n### Create a card with an image on the front\n\nThe text and image are centered, with the image on a new line below the text.\n\n```bash\n# From a local file\n./scripts/create_card.sh \\\n  --deck \"CS\" \\\n  --front \"What does this diagram show?\" \\\n  --back \"B-tree node split\" \\\n  --image-path \"/path/to/diagram.png\" \\\n  --tags \"algorithms\"\n\n# From a URL (AnkiConnect downloads it)\n./scripts/create_card.sh \\\n  --deck \"CS\" \\\n  --front \"What pattern does this show?\" \\\n  --back \"CQRS\" \\\n  --image-url \"https://example.com/cqrs.png\" \\\n  --tags \"architecture\"\n```\n\n### Update a card\n\nAny combination of `--front`, `--back`, and `--tags` — only the fields you pass get updated.\n\n```bash\n./scripts/update_card.sh --id 1502298033753 --front \"Better question?\" --back \"Cleaner answer\"\n./scripts/update_card.sh --id 1502298033753 --tags \"algorithms,trees\"\n./scripts/update_card.sh --id 1502298033753 --back \"Revised answer only\"\n```\n\n### Delete a card\n\n```bash\n./scripts/delete_card.sh --id 1502298033753\n```\n\n### List cards\n\n```bash\n./scripts/list_cards.sh --deck \"CS\"\n./scripts/list_cards.sh --tag \"algorithms\"\n./scripts/list_cards.sh --query \"tag:algorithms added:7\"\n```\n\n## Card quality rules\n\n1. **Atomic** — one fact per card\n2. **Short, specific front** — few words, one unambiguous answer\n3. **Minimal back** — no unnecessary text\n4. **Visual over prose** — file trees and code blocks over sentences\n5. **No trivia** — only things worth remembering long-term\n6. **Tag consistently** — lowercase, comma-separated\n\n### Good cards\n\n**Algorithms**\n- Front: `What is the time complexity of heapify?`\n- Back: `O(n) — building a heap from an array is linear, not O(n log n)`\n\n**Data structures**\n- Front: `When does a hash map degrade to O(n) lookup?`\n- Back: `When all keys collide into the same bucket — worst case with a bad hash function`\n\n**Software architecture**\n- Front: `What does the Strangler Fig pattern do?`\n- Back: `Incrementally replaces a legacy system by routing new functionality to a new system until the old one can be retired`\n\n**CS fundamentals**\n- Front: `What guarantee does a WAL provide?`\n- Back: `Durability — changes are written to a log before being applied, so committed transactions survive crashes`\n\n### Bad card\n\n- Front: `Explain CAP theorem, PACELC, and distributed consistency models`\n- Back: (four paragraphs) — too many facts, split into separate cards.\n\n## AnkiConnect API reference\n\n`Anki-Connect.md` documents the full HTTP API exposed by the AnkiConnect addon — all available actions, request/response formats, and authentication. Useful if you want to extend the scripts or add new operations.\n\n## Project structure\n\n```\nanki-skill/\n├── SKILL.md            # Claude Code skill definition\n├── README.md\n├── Anki-Connect.md     # Full AnkiConnect API reference\n└── scripts/\n    ├── anki_connect.sh   # health check + list decks\n    ├── create_card.sh    # create a card (supports --image-path / --image-url)\n    ├── update_card.sh    # update front, back, or tags by note ID\n    ├── delete_card.sh    # delete a note by ID\n    └── list_cards.sh     # list/filter cards\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flroman242%2Fanki-skill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flroman242%2Fanki-skill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flroman242%2Fanki-skill/lists"}