/flashcard — 管理複習卡片
將已收錄(/ingest)的單字納入個人複習清單,該單字隨後將出現在
/review-word 的每日複習任務中。
/flashcard — manage your flashcards
Enrol an already-ingested word into your own review queue so that
/review-word can later show it to you as a flip card.
為什麼需要這個功能?
並非所有納入字典的單字都值得每日複習。例如在閱讀時偶爾遇到的冷僻詞,您可能只想透過
/ingest
留存語素拆解紀錄,但不希望它干擾日常複習進度。/flashcard
即是「正式納入複習計畫」的開關 ——
只有開啟此開關的單字,才會出現在每日複習頁面中。
/flashcard 是複習流程的上游節點。其功能僅負責在
review/flashcards.json 登記卡片,並設置 SM-2
演算法的初始參數(複習間隔 0、連續答對次數 0、易記度
2.5、到期日為本日)。後續的「翻牌評分」與「動態計算下次到期日」則由
/review-word
啟動的網頁處理並更新資料。這兩個技能分工明確,共同構成學習循環。
權限劃分:本技能不具備修改卡片
history(複習歷史)的權限,該欄位由
/review-word
伺服器獨佔。若您在伺服器運行期間手動編輯檔案,可能會導致資料衝突。建議統一透過
/flashcard 指令增刪卡片,以確保資料完整性。
Why this exists
Not every word you put in the dictionary deserves your daily
drilling. You run into kowtow while reading and want to
know where it comes from, so you run /ingest kowtow to
archive it and make it searchable — but you probably do not want to
be hit with that word every morning. /flashcard is the
explicit "yes, drill this" switch. Ingestion captures; flashcarding
is a separate, deliberate decision.
/flashcard is the upstream of
/review-word: it only registers the card in
review/flashcards.json and sets the initial SM-2 state
(interval 0, repetition 0, ease 2.5, due today). The actual
flipping, grading, and next-due-date math is handled by the web app
that /review-word launches, which writes back to the
same file. Two skills, one loop.
Clean boundary: this skill
never touches the per-card
history field — that belongs exclusively to the
server that /review-word starts. If you hand-edit
flashcards.json while the server happens to be
running, you risk corrupting the review log. To add or remove
cards, use /flashcard; to record review progress, use
/review-word.
範例演示
假設您已執行
/ingest unbelievable,目前字典已有檔案但複習清單尚未登記。若要將其正式納入複習:
# 在對話框輸入:
/flashcard unbelievable
# 回傳結果:
已將 unbelievable 加入複習清單 (到期日: 2026-05-24, 易記度: 2.5)
在 review/flashcards.json 中生成的卡片物件範例:
{
"version": 1,
"cards": [
{
"word": "unbelievable",
"added": "2026-05-24",
"ease": 2.5,
"interval": 0,
"repetition": 0,
"due": "2026-05-24",
"lastReview": null,
"history": []
}
]
}
欄位說明:added 為註冊日期;ease 為 SM-2
難易係數(起始值 2.5);interval 為複習天數間隔;repetition
為連續答對次數;due 為預定複習日;history
則會記錄每次在網頁上的評分表現。
若要移除已完全掌握的單字:
# 從複習計畫中移除(原始字典檔案不會被刪除)
/flashcard remove unbelievable
注意:移除卡片會一併刪除其複習進度(歷史資料)。日後若重新加入,系統將從新卡狀態重新起算。
A concrete example
Suppose you ran /ingest unbelievable yesterday, so
dictionary/words/unbelievable.md exists but
review/flashcards.json has no entry for it yet. Today
you decide to enrol it for daily drilling:
# Type this in the Claude Code chat box:
/flashcard unbelievable
# Claude Code replies with something like:
Added unbelievable (due: 2026-05-24, ease: 2.5)
The card object actually written into
review/flashcards.json looks like this:
{
"version": 1,
"cards": [
{
"word": "unbelievable",
"added": "2026-05-24",
"ease": 2.5,
"interval": 0,
"repetition": 0,
"due": "2026-05-24",
"lastReview": null,
"history": []
}
]
}
What each field means: added is the enrolment date;
ease is the SM-2 easiness factor (starts at 2.5,
floored at 1.3); interval is the gap in days between
the last and next review (0 for a new card);
repetition is the number of consecutive correct recalls
(grade ≥ 3), 0 for a new card; due is the next due
date — a new card is due today; lastReview is
null because it has not been flipped yet;
history is an append-only array of review records,
empty at first and only ever written by the review server.
To remove a card (for example, you have fully mastered it and no longer need to drill it):
# Remove from the review queue (dictionary/words/unbelievable.md is NOT deleted)
/flashcard remove unbelievable
# Claude Code replies with something like:
Removed unbelievable (was ease: 2.6, repetition: 4, history: 7 entries)
Notice that the removed card's progress is gone with it. If you re-add the word later, SM-2 starts again from scratch — all the prior review history is lost.
操作指南
-
確認字典已存在該單字:檢查
dictionary/words/下是否有對應檔案。若無,請先執行/ingest <word>。 -
執行指令:輸入
/flashcard <word>。單字會自動轉為小寫處理以避免重複。 -
支援批量操作:可用空格分隔多個單字,如
/flashcard unbelievable international biology。 -
確認狀態:直接輸入
/flashcard(不帶參數)可列出所有卡片統計,包含今日到期數量。 -
啟動複習:執行
/review-word開啟網頁介面。
學習節奏建議:建議於每週固定時間一次性加入該週目標單字。每日只需花數分鐘執行
/review-word 即可。針對已內化的單字,應果斷執行
remove 以維持複習效率。
Step by step
-
Confirm the target word is in the dictionary.
Check whether
dictionary/words/<word>.mdexists. If not, run/ingest <word>first;/flashcardrefuses outright when the dictionary page is missing and tells you to run/ingest. -
Type
/flashcard <word>in the Claude Code chat. Words are always normalised to lowercase (Applebecomesapple) so that case differences cannot create duplicate cards. -
You can enrol several words at once. Separate
them with spaces:
/flashcard unbelievable international biology. Each word is checked independently — if one fails (for example, it has not been ingested yet) only that word is skipped, the others still go in, and you get a per-word report of what succeeded. -
Verify the enrolment. Type
/flashcardwith no arguments. It lists every card with itsword,due,easeandrepetition, plus a count of cards due today, so you can see at a glance that your new card is in. You can also openreview/flashcards.jsondirectly, but for daily use/flashcardalone is enough. -
Then run
/review-wordto start flipping. A freshly added card is due today, so it appears immediately on the review page. -
To drop a card, use
/flashcard remove <word>. Only the entry insideflashcards.jsonis deleted;dictionary/words/<word>.mditself is untouched, so lookups and reverse links from other words keep working.
A rhythm that works: on Sunday evening, enrol the
week's target words into your own queue in one shot —
/flashcard a b c … for all ten. Each morning, spend
three minutes on /review-word. After a while,
/flashcard remove <word> the ones you have
clearly internalised, freeing the queue for the next batch.
常見問題與限制
尚未收錄單字:若嘗試加入未
/ingest
的字,系統會提示先執行收錄流程。這是為了確保複習時有完整的 IPA
與語素資訊可供檢視。
Stopwords 限制:位於白名單(如
the、is)的單字無法加入複習計畫,因為過度簡單的單字會降低學習效率。
進度重置風險:執行
remove 後再次加入,該單字的學習軌跡(Ease
值與歷史紀錄)將全部抹除。移除前請務必確認已完全掌握。
下一步:
- /review-word — 啟動複習介面
- /ingest — 建立單字字典頁面
- /stopword — 管理單字白名單
- SM-2 演算法詳解 — 深入理解學習資料的意義
Common mistakes & next steps
Trying to flashcard a word you have not ingested.
You get back "<word> has no dictionary page,
please run /ingest <word> first", and that word
is skipped. Without a dictionary page there would be no IPA,
gloss, or breakdown to show during review — so this restriction is
intentional. /ingest first, then
/flashcard.
Trying to flashcard a stopword. Words like
the, a, and are rejected
with "<word> is in the stopwords list, no
review needed". Also intentional: you use these every day already,
drilling them wastes time. If you really must (rare), remove the
word from the allow-list with /stopword first.
Hand-editing flashcards.json. It
looks like easy JSON, but the history field is owned
by the server that /review-word launches. If you save
the file by hand while the server is also running, you can corrupt
the review log. Use /flashcard for add/remove, use
/review-word for grading — do not work around the
skills.
Remove, then re-add. SM-2 progress resets to a
brand-new card: repetition: 0,
interval: 0, ease: 2.5,
history: []. All the memory trace you had built up is
gone. This is a deliberate trade-off (we do not keep orphan
history), so before removing, be sure you really do not want that
card's progress.
Next:
- /review-word — open the review web app and actually flip the cards you just enrolled
- /ingest — if the word you wanted is not in the dictionary yet
- /stopword — use the allow-list to block words that are too simple from being flashcarded by mistake
- How SM-2 spaced repetition works — understand what each card field actually means to the algorithm