---
name: flashcards
license: Apache-2.0 (adapted from anthropics/claude-for-legal, law-student/skills/flashcards; complete terms in LICENSE.txt)
description:
  生成和复习记忆卡片——Leitner 分桶间隔重复、按学科存储、自评式复习。
  Use when 用户说"帮我做闪卡""抽认卡""考我一下这些卡片""我要背这些规则/单词/
  概念"等需要记忆巩固的场景。不是完整的 SRS 系统——如果用户已经在用 Anki 之类
  的工具，建议他们继续用；这是"在对话里就想快速过一遍"的轻量方案。
metadata:
  origin: 卡片结构、写卡规则、Leitner 分桶间隔表、生成/复习/统计模式，
    改编自 anthropics/claude-for-legal 的 law-student/skills/flashcards
    （Apache-2.0）；已移除该项目的法学院场景专属内容（"这是真实法律问题请找律师"
    检查、Westlaw/CourtListener 引用核验、和 socratic-drill/bar-prep-questions
    的联动），改为通用记忆卡片方法论
---

# Skill: flashcards

大纲/笔记是用来综合理解的，记忆卡片是用来强记的。这个技能从用户提供的材料
（或在用户明确要求时，从模型知识）生成卡片，用轻量间隔重复复习，并追踪哪些
概念还没记牢。

**不是完整的 SRS 系统。** 只是简单的 Leitner 分桶。够用、不重——如果用户已经
习惯用 Anki 之类的专门工具，建议继续用那个；这个技能是给在对话里想快速过一遍
的场景用的。

## 置信度纪律

- 从用户提供的材料（笔记、教材节选、课件）生成的卡片：内容来自材料本身，
  可信。
- 从模型知识（用户没给材料）生成的卡片：每张卡片如果陈述的规则不是模型有
  把握的，标注 `[待核实]`。生成前先说清楚"这些卡是从我的知识生成的，不是
  从你的材料，请自行核对"。
- 如果某个领域模型把握不大，宁可少生成几张有把握的卡，也不要为了凑数瞎编。
  8张靠谱的卡比20张里有5张错的要好。

## 存储

```
~/.octo/learning-data/flashcards/[学科]/cards.md
```

每个学科一个文件，跨会话持久（不受技能本身版本更新影响）。

## 卡片结构

```markdown
### 卡片 [N]
**问：** [问题——一个概念一张卡]
**答：** [答案——规则/定义，一到两句话]
**来源：** [材料出处：笔记/教材页码/课堂日期]
**分桶：** new
**上次复习：** —
**下次复习：** [今天日期]
**备注：** [可选——易混淆点、例外情况、常见陷阱]
```

## 写卡规则

1. **一个概念一张卡。** "光合作用的三个阶段"应该拆成3张卡，不是1张。
2. **正面是问题，不是主题。** "光合作用"不好；"光合作用的三个阶段分别是
   什么"好。
3. **背面是规则/定义，不是一段话。** 如果答案需要一整段才能说清楚，拆成
   多张卡。
4. **标注来源**，方便复习时回去核对。

## 模式

Flag: `--generate | --drill | --review | --stats | --session <n>`（不带 flag 时先问用户要哪种）

### `--generate`——生成卡片

**输入：** 学科/主题、来源材料（笔记路径、教材节选，或"就用我已有的大纲"）、
可选的目标卡片数量（默认每次10-20张）。

按上面的卡片结构和写卡规则生成，写入 `~/.octo/learning-data/flashcards/
[学科]/cards.md`（已有文件则增量追加，不要覆盖）。

**如果是从模型知识生成的**：每张卡的规则/答案是模型生成的，未经核实。用户
背下来之前，建议对照教材、笔记或权威来源核实一遍——背了一张错卡比没有这张
卡更糟。

### `--drill`（默认）——复习

**优先级：**
1. `下次复习 <= 今天` 且分桶不是 mastered 的卡
2. 还没复习过的新卡
3. 如果没有到期卡也没有新卡：问用户要不要复习已经 mastered 的卡（防遗忘）

**复习流程（逐张）：**
1. 显示问题，等用户回答
2. 用户回答（或输入"跳过"/"不会"）
3. 显示答案
4. 用户自评：`对` / `部分对` / `错` / `不会`
5. 按下表更新分桶和下次复习时间：

| 自评 | 分桶变化 | 下次复习 |
|---|---|---|
| 对 | 升一档（new→learning→review→mastered） | +1天(new) / +3天(learning) / +7天(review) / +21天(mastered) |
| 部分对 | 不变 | +1天 |
| 错 | 降一档（review→learning；learning→new；new不变） | 今天+4小时 |
| 不会 | 降一档 | 今天+4小时 |

### `--review`——浏览卡组

按分桶分组展示某学科的所有卡片。用于快速扫一眼卡组内容，或手动调整卡片。

### `--stats`——进度快照

按学科统计：卡片总数、各分桶分布、今天到期数、本周已复习数。标出反复降到
`new` 两次以上的卡——这些是真正卡住的概念，值得用 `weak-point-drill` 或
向老师/教材再确认一遍，光靠卡片记不住的东西说明理解上有缺口。

### `--session <n>`——聚焦N卡片小节

用户说"来5张合同法的卡"或类似需求时用这个模式。

- 读取 `~/.octo/learning-data/study-plan.yaml`（如果存在）里该学科的
  `session_history`。
- 优先级：之前答错的卡 > 到期卡 > 新卡。
- 按 `--drill` 流程逐张跑完N张。
- 小节结束后，把结果追加到 `study-plan.yaml` 的 `session_history`：

```yaml
session_history:
  - date: 2026-05-08
    subject: 合同法
    type: flashcards
    n_cards: 5
    right: 3
    partial: 1
    wrong: 1
    stuck_topics: [不可抗力条款]
```

如果 `study-plan.yaml` 不存在，写到 `~/.octo/learning-data/session-history.yaml`。

## 和其他技能的配合

- **outline-builder：** 建好或扩充大纲之后，主动提议从新内容生成卡片。
- **weak-point-drill：** 某张卡连续错2次以上，说明光靠卡片记不住，路由给
  `weak-point-drill` 做更深入的针对性练习或建议回去重新理解这个概念。
- **study-plan：** `--session` 的结果写入学习计划，供计划自适应调整。

## 这个技能不做的事

- **替代专门的 SRS 工具。** 如果用户已经有 Anki 之类的习惯，建议继续用；
  这个技能是给不想切换工具、想在对话里快速过一遍的场景用的。
- **为了凑数量编卡片。** 材料只够生成8张有把握的卡，就给8张。硬凑一堆
  `[待核实]` 的猜测卡比小卡组更糟。
- **强制学习纪律。** 漏复习的天数会累积，这个技能只负责告诉用户今天该复习
  什么，要不要复习是用户自己的事。
- **教会用户规则本身。** 卡片是用来复习已经学过的内容的。如果一张卡反复
  答错，问题出在更上游——用 `weak-point-drill` 或回去重新看材料。
