mcpField
A
anki

anki

github.com/terkelg生産性49513 回インストール4 週間前に更新
リポジトリ

anki について

Anki Flashcard Managementは、`anki.sh`スクリプトとAnkiConnectを使ってAnkiカードを作成、管理するスキルです。カード形式の指針を含み、追加や重要な変更の前にユーザーの承認を求めます。

主な機能

  1. 01AnkiConnect経由のカード作成と管理
  2. 02基本カードと穴埋めカードの指針
  3. 03Markdown、数式、コードの書式規則
  4. 04カード追加や変更前の承認確認

活用シーン

  1. 01一問一答形式のカード作成
  2. 02ヒントや数式を含む穴埋めカードの作成
  3. 03追加前のカード案の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/terkelg/anki-markdown --skill anki

インストール後、Claude Code で/ankiを入力して読み込まれたか確認します。

同梱ファイルscripts/anki.sh

詳細

Anki フラッシュカード管理

anki.sh スクリプトを使用して、AnkiConnect 経由でフラッシュカードを作成、管理します。

ANKI="$(dirname "$SKILL_PATH")/scripts/anki.sh"

事前確認:

  • Anki デスクトップが起動しており、AnkiConnect が有効になっていることを確認します
  • curl と jq が PATH で利用可能であることを確認します

重要:ユーザーの承認が必要です

ユーザーの明示的な承認なしに、Anki にカードを追加してはいけません。

カードを追加する前に:

  1. 提案するカードをすべて(表面+裏面)完全な形で表示します
  2. ユーザーに確認します:「これらのカードを追加してよろしいですか?」
  3. 明示的な「はい」/承認を得てから実行します

これは必ず守ってください。ユーザーがカードを追加する前に品質を確認する必要があります。

破壊的または取り消せない可能性のある操作について:

  • delete:ノートを削除する前に、明示的な確認を求めます
  • update:ノートを更新する前に、対象のフィールド/IDを正確に確認します
  • rate:カードと提案する評価を表示し、送信前にユーザーの確認を待ちます

ガイドライン

  • 基本カードには Anki Markdown ノートタイプ、穴埋め問題には Anki Markdown Cloze を必ず使用します
  • 表面と裏面の両方のフィールドに Markdown を使用します
  • 1 枚のカードで検証する事実や概念は 1 つだけにします
  • 質問は要素ごとに分け、シンプルにします
  • 質問と回答は短く、明確で、曖昧さのないものにします
  • 各カードの回答は、固有で具体的なものを 1 つだけにします
  • 長いリストや複数の項目を 1 枚のカードにまとめないようにします
  • 将来の自分が理解できるよう、背景情報やヒントを加えます
  • 役立つ場合は、例や記憶術を使って自分に関連付けます
  • 重要な概念には、シンプルなカードを複数作成できます
  • 重要な質問は、異なる視点から複数のバリエーションを作成します
  • カードが「孤立した」事実にならないよう、自分の目標やプロジェクトと結び付けます
  • コードには常にシンタックスハイライトを使用します(「コードスニペット」セクションを参照)
  • 関連するカードを複数作成するときは、効率化のため一括操作を使用します

カードタイプの選択

特定の質問を書く一問一答形式には、Anki Markdown(表面/裏面)を使用します。 質問を書くよりも文の一部を隠すほうが自然な穴埋めカードには、Anki Markdown Cloze(テキスト/補足)を使用します。

数式

Anki 標準の区切り文字を使用します。インライン数式には \(x^2\)、ディスプレイ数式には \[x^2\] を使用します。レビュー画面では Anki 組み込みの MathJax が使用されます。外部スクリプトやフォントは追加しないでください。ドル記号による区切り文字はサポートされていません。TeX の記述例を文字列として示す場合は、コード書式を使用します。

穴埋めは数式を含めることができ({{c1::\(x^2\)}})、数式の中に入れることもできます(\(x + {{c1::y}}\))。数式の中では、隠された穴埋めは [...] または角括弧付きの TeX ヒントとして表示されます。表示された内容には穴埋めのスタイルは適用されず、::blur は [...] を使用します。数式全体をぼかすには、数式の区切り文字の外側に穴埋めを置きます:{{c1::\(x^2\)::blur}}。

内容が隠されても、残りの TeX が有効な状態になるようにします。\begin{aligned} の後に穴埋めを置く場合は、ヒントがオプション引数として解釈されないよう {} を追加します。

隣接する TeX の閉じ波括弧の間にはスペースを入れ、本文が } で終わる場合は、穴埋めの閉じ }} の前にもスペースを入れます。例:\(x + {{c1::\frac{1}{\sqrt{2} } }}\)。これにより、Anki が穴埋めの境界を明確に認識できます。TeX はスペースを無視します。

穴埋めカード

穴埋めカードには Anki Markdown Cloze を使用します。フィールドは Text と Extra です。

構文

形式は 3 つあります:

  • {{c1::answer}} - 表面に [...] を表示します
  • {{c1::answer::hint}} - 表面に [hint] を表示します
  • {{c1::answer::blur}} - 表面にぼかした内容を表示します(形状は分かりますが、テキストは表示されません)

穴埋めの中では、太字、斜体、ハイライト、言語タグ付きインラインコード、リンク、画像、コードブロック、表など、Markdown をすべて使用できます。

複数のカード

穴埋め番号(c1、c2、c3 など)ごとに、個別のカードが生成されます。同じノート内の異なる事実を検証するには、異なる番号を使用します:

{"Text": "{{c1::HTML}} provides structure, {{c2::CSS}} provides style."}

これにより 2 枚のカードが生成されます。カード 1 では「HTML」が隠され、カード 2 では「CSS」が隠されます。

同じ番号を複数回使用すると、同じカード上ですべての該当箇所が隠されます:

{"Text": "{{c1::React}} and {{c1::Vue}} are frontend frameworks."}

これにより、「React」と「Vue」の両方が隠されたカードが 1 枚生成されます。

共有削除

カンマ区切りの穴埋め番号は、Anki desktop 26.05 以降でのみ使用してください。同じテキストを複数のカードで隠せます:

{ "Text": "The {{c1::CPU}} and {{c2::GPU}} both execute {{c1,2::instructions}}." }

このノートからは2枚のカードが生成されます。カード1では「CPU」と「instructions」が隠されます。カード2では「GPU」と「instructions」が隠されます。

ネストされた穴埋め

穴埋め削除はネストできます。外側の穴埋めでは、内側を含むすべてが隠されます:

{"Text": "{{c1::Canberra was {{c2::founded}}}} in 1913."}

カード1では「Canberra was founded」が隠されます。カード2では「founded」のみが隠されます。

穴埋め内のインラインコード

言語タグ付きのインラインコードは穴埋め内で使用できます。コードで {lang} 構文を使う場合は、閉じ波括弧が3つ(}}})になる点に注意してください:

{"Text": "Use {{c1::`querySelector()`{js}}} to find DOM elements."}
追加フィールド

Extra フィールドはすべてのカードの裏面に表示されます。文脈、例、参考情報などに使用してください。コードブロックやコールアウトを含む完全な Markdown に対応しています。

穴埋めの例
# Basic cloze
$ANKI add "MyDeck" "Anki Markdown Cloze" '{"Text":"The {{c1::CPU}} executes {{c2::instructions}}.","Extra":"Basic computer architecture."}' --tags "cs"

# Cloze with hint
$ANKI add "MyDeck" "Anki Markdown Cloze" '{"Text":"{{c1::JavaScript::language}} was created in {{c2::1995::year}}.","Extra":"Created by Brendan Eich."}' --tags "history"

# Cloze with blur
$ANKI add "MyDeck" "Anki Markdown Cloze" '{"Text":"The speed of light is {{c1::299,792,458 m/s::blur}}.","Extra":"Often approximated as 3 x 10^8 m/s."}' --tags "physics"

表面フィールドの形式

質問の対象となる重要な用語を強調するため、表面では Markdown を使用してください:

  • 問われている主な概念には、太字または ==ハイライト== を使用します
  • 技術用語、関数、構文にはインラインコードを使用します

例:WGSL で **vertex_index** が返す値は何ですか?

裏面フィールドの形式

裏面フィールドには次の形式を使用してください:

  1. 答えを端的に示す太字の一文
  2. 空行
  3. 通常のテキストで追加の文脈を記述(任意)
すばやく目を通すための書式
  • ==ハイライト== を使って、重要な用語がひと目でわかるようにします
  • 説明内の重要な概念には太字を使用します
  • インラインコードを含むすべてのコードブロックで、シンタックスハイライトを使用します
  • 素早く視覚的に確認できるように整え、読者が要点をすぐにつかめるようにします
キーボードショートカット

キーボードのキーには <kbd> タグを使用してください:

Press <kbd>Cmd</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd> to open the command palette.
コードスニペット

常にシンタックスハイライトを使用してください:

  • フェンス付きブロック:言語を指定した3つのバッククォートを使用します(js、python、```rust など)
  • インラインコード:`code`{lang} 形式を使用します(例:`const x = 1`{js})

高度な機能:

  • 行のハイライト:```js {2} で2行目をハイライトします
  • 単語のハイライト:```js /pattern/ で特定の単語をハイライトします
  • フォーカスモード:// [!code focus] コメントを追加して、特定の行に焦点を当てます
コールアウト

重要な注記には、GitHub 形式のアラートを必要に応じて使用してください:

> [!TIP]
> Brief helpful insight here.

> [!NOTE]
> Useful context the learner should know.

> [!WARNING]
> Common mistake or gotcha to avoid.
例
Front: What does `passEncoder.draw(3)`{js} do with **no vertex buffer**?
Back:

**Invokes the ==vertex shader== 3 times.**

The shader uses `@builtin(vertex_index)`{wgsl} to generate positions ==procedurally==.

> [!TIP]
> Useful for fullscreen quads without geometry data.

一般的な操作

$ANKI <action> [args...] で実行します。

アクション説明例
syncAnkiWeb 同期を開始する$ANKI sync
decksデッキを一覧表示する$ANKI decks --stats
modelsノートタイプを一覧表示する$ANKI models
fieldsモデルのフィールドを表示する$ANKI fields "Anki Markdown"
findノートを検索する$ANKI find "deck:Spanish tag:verb"
infoノートの詳細を表示する$ANKI info 1234 5678
addノートを 1 件追加する$ANKI add "My Deck" "Anki Markdown" '{"Front":"Q","Back":"A"}' --tags "t1 t2"
add-bulkノートを複数追加する$ANKI add-bulk "My Deck" "Anki Markdown" '[{"Front":"Q1","Back":"A1"}]'
updateフィールドを更新する$ANKI update 1234 '{"Front":"New Q"}'
deleteノートを削除する$ANKI delete 1234 5678
due学習期限のカードを取得する$ANKI due "My Deck" --limit 5
reviewカードを表示する$ANKI review 1234
rateカードを評価する(1~4)$ANKI rate 1234 3
tagsタグを一覧表示する$ANKI tags --pattern "verb"
一般的なワークフロー
$ANKI sync                          # sync first
$ANKI decks                         # check available decks
$ANKI models                        # verify required model exists
$ANKI fields "Anki Markdown"        # verify field names for selected model
$ANKI find "deck:MyDeck front:test" # check for duplicates
$ANKI add "MyDeck" "Anki Markdown" '{"Front":"...","Back":"..."}'
$ANKI sync                          # sync after changes

コメント