# Exam Paper

> 课件路径、保存路径、出考卷；从 Markdown 课件生成 100 分试卷，输出纯试卷与参考答案两份文件

- Skill: `spaceyuan/exam-paper` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add spaceyuan/exam-paper`
- Raw SKILL.md: https://api.skillmd.com/api/skills/spaceyuan/exam-paper/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: spaceyuan (https://skillmd.com/u/spaceyuan)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/spaceyuan/exam-paper

---


# Exam Paper Skill

## What I do

- 从 Markdown 课件中抽取知识点并生成考卷
- 固定输出两份内容一致的试卷
- 生成 `纯试卷` 和 `试卷 + 参考答案` 两个 Markdown 文件
- 按固定题型、题量、分值生成总分 100 分的考卷

## When to use me

当用户给出 Markdown 课件路径，并要求按课件内容出题、同时保存到指定目录时使用。

适用于需要批量生成课堂测验、阶段测试、期末复习卷、培训考核卷的场景。

## Invocation format

推荐输入格式：

`exam-paper @<课件路径> <保存路径>`

也支持显式指定知识点领域覆盖策略：

- `exam-paper @<课件路径> <保存路径> --coverage balanced`
- `exam-paper @<课件路径> <保存路径> --coverage "网络基础:2,路由协议:1,交换技术:1"`
- `exam-paper @<课件路径> <保存路径> --paper-set A`
- `exam-paper @<课件路径> <保存路径> --paper-set A+B`
- `exam-paper @<课件路径> <保存路径> --count 3`
- `exam-paper @<课件路径> <保存路径> --paper-set A+B --count 3`

- `<课件路径>` 必须是 Markdown 课件文件路径
- `<保存路径>` 必须是当前工作目录下的目录名或相对目录路径
- 保存路径不存在时必须自动创建
- `--coverage` 为可选参数，默认值为 `balanced`
- `--paper-set` 为可选参数，默认值为 `A`
- `--count` 为可选参数，默认值为 `1`，且必须是正整数

## Input contract

- 只接受 Markdown 课件作为出题依据
- 必须先读取课件内容，再生成题目
- 题目范围只能来自课件原文，不得引入课外知识
- 所有题目和参考答案必须可从课件 Markdown 原文直接找到内容依据
- 若课件内容不足以覆盖某类题型，应优先从高频知识点、定义、流程、规则、术语中抽取

## Output contract

当 `--paper-set A` 且 `--count 1` 时，必须在 `<保存路径>` 下输出两份 Markdown 文件：

- `纯试卷.md`
- `试卷-参考答案.md`

当 `--paper-set A+B` 且 `--count 1` 时，必须在 `<保存路径>` 下输出四份 Markdown 文件：

- `A卷-纯试卷.md`
- `A卷-参考答案.md`
- `B卷-纯试卷.md`
- `B卷-参考答案.md`

当 `--count > 1` 时，必须按套数编号输出：

- `--paper-set A --count 3` 输出 `A1卷`、`A2卷`、`A3卷`
- `--paper-set A+B --count 3` 输出 `A1/B1`、`A2/B2`、`A3/B3`

命名格式固定为：

- `A1卷-纯试卷.md`
- `A1卷-参考答案.md`
- `B1卷-纯试卷.md`
- `B1卷-参考答案.md`
- 其余套数按相同规则递增命名

两份文件必须：

- 题目顺序一致
- 题号一致
- 题目内容一致
- `纯试卷.md` 仅包含题目正文，不包含参考答案
- `试卷-参考答案.md` 必须同时包含题目与对应参考答案，且按题号逐题对应
- `试卷-参考答案.md` 禁止只输出答案汇总、答案目录、答案列表或文末集中答案区

若生成 A+B 两套卷，则 A 卷和 B 卷都必须分别满足以上规则。

## Exam composition

总分固定 100 分，题型固定如下：

1. 填空题
   - 10 题
   - 每题 1 个填空项
   - 每题 2 分
   - 合计 20 分

2. 单项题
   - 10 题
   - 每题 3 分
   - 合计 30 分

3. 问答题
   - 5 题
   - 题目形式必须是名词问答
   - 每题 6 分
   - 合计 30 分

4. 简答题
   - 5 题
   - 题目形式必须是内容问答
   - 每题 4 分
   - 合计 20 分

## Question generation rules

1. 题目必须覆盖课件的核心概念、关键术语、流程、规则、注意事项
2. 题目难度应由浅到深，避免 30 题完全同质化
3. 填空题优先考察定义、术语、关键数字、步骤名称、条件限定
4. 单项题优先考察辨析、判断、唯一正确选项
5. 名词问答题优先考察概念解释、术语定义、对象说明
6. 内容简答题优先考察方法、流程、原理、原因、总结
7. 不得出现课件中没有依据的知识点
8. 不得为了凑题数重复出题

## Coverage rules

`--coverage` 用于控制整张试卷对课件知识点领域的覆盖倾向，不改变固定题型、题量与总分。

默认规则：

- 未传 `--coverage` 时，按 `balanced` 处理
- `balanced` 表示按课件识别出的主要知识点领域尽量均衡覆盖

自定义规则：

- `--coverage "网络基础:2,路由协议:1,交换技术:1"`
- 其中领域名表示课件中的知识点领域
- 数值表示相对权重，不是百分比
- 权重越高，该领域在整张试卷中的题目覆盖倾向越高

匹配规则：

- 领域名必须能在课件 Markdown 结构中找到明确对应的标题、章节或知识点区域
- 优先按 Markdown 标题匹配知识点领域
- 若存在同名歧义，应优先选择最贴近课件主结构的那一项
- 若找不到对应领域名，不得猜测映射，必须报错并提示用户修正 `--coverage`

质量规则：

- `--coverage` 是覆盖倾向，不是死板配额
- 不得为了满足权重而重复出题
- 不得为了满足权重而编造课件中不存在的内容
- 如果某领域内容不足，可适当减少该领域题量，并将剩余题量分配给其他有效领域
- 即使使用 `--coverage`，所有题目和答案仍必须以课件原文为依据

## Paper set rules

`--paper-set` 用于控制生成一套试卷还是两套试卷。

默认规则：

- 未传 `--paper-set` 时，按 `A` 处理
- `A` 表示只生成 A 卷
- `A+B` 表示同时生成 A 卷和 B 卷

B 卷规则：

- B 卷作为补考卷
- B 卷总分固定 100 分
- B 卷题型、题量、分值结构必须与 A 卷完全一致
- B 卷的题目和参考答案也必须完全来自课件 Markdown 原文
- B 卷必须与 A 卷保持相近的知识点覆盖范围与整体难度
- A 卷和 B 卷的考题内容不能相同
- A 卷与 B 卷之间不得出现完全相同的题目正文
- A 卷与 B 卷之间不得出现仅替换题号但题干实质相同的题目
- 可以考查相同知识点，但题干表达、切入角度、问法、选项、填空点必须不同

题型差异化规则：

- 填空题：A 卷和 B 卷的填空句子不能相同
- 单项题：A 卷和 B 卷的题干不能相同，选项组合也不能相同
- 问答题：允许围绕同一知识点采用不同方式提问，但题目问法不能相同
- 简答题：允许围绕同一知识点采用不同方式提问，但题目要求与作答对象不能相同

多套试卷差异化规则：

- 所有 A 卷之间的考题内容不能相同
- 所有 B 卷之间的考题内容不能相同
- 任意 A 卷与任意 B 卷之间的考题内容也不能相同
- 不得出现仅替换题号、仅轻微改写措辞、但题干实质相同的题目
- 可以覆盖相同知识点，但题干表达、提问角度、选项组合、填空点、作答要求必须不同

同知识点不同问法规则：

- 对于问答题和简答题，允许围绕同一知识点采用不同问法命题
- 只要题干表达、提问角度、作答要求不同，即可视为不同题目
- 若仅做极小措辞替换，但题意、结构、答案要点基本一致，仍视为重复题

与 coverage 的关系：

- `--coverage` 同时作用于 A 卷和 B 卷
- 若为 `balanced`，两套卷都应尽量均衡覆盖主要知识点领域
- 若为命名权重模式，两套卷都应遵守同一覆盖策略

边界规则：

- 若课件内容不足以支撑两套差异化试卷，不得强行凑题
- 遇到内容不足时，必须明确报错并告知无法稳定生成 B 卷

## Count rules

`--count` 用于控制生成多少套试卷。

默认规则：

- 未传 `--count` 时，按 `1` 处理
- `--count` 必须为正整数

组合语义：

- `--paper-set A --count 3` 表示生成 `A1`、`A2`、`A3`
- `--paper-set A+B --count 3` 表示生成 `A1/B1`、`A2/B2`、`A3/B3`

数量边界：

- 若课件内容不足以支撑 `count` 对应数量的差异化试卷，不得强行凑题
- 必须明确报错，并告知课件内容不足以稳定生成所需套数

## Answer rules

- 填空题：给出唯一正确答案，必要时给出同义表述
- 单项题：标明正确选项
- 名词问答：给出简明定义，且定义内容必须能在课件原文中找到依据
- 简答题：给出要点式参考答案，所有要点必须能在课件原文中找到依据

## Answer file required format

`试卷-参考答案.md` 必须按题目逐题展开，禁止省略题目正文。

每一道题都必须严格使用以下结构：

```markdown
### <题号>. <题目正文>

参考答案：<对应答案>

评分要点：
- <要点1>
- <要点2>
```

适用规则：

- 填空题和单项题也必须保留完整题目正文
- 问答题和简答题必须保留完整题目正文与答案要点
- 不允许先输出一整份纯试卷，再单独附一个答案汇总区替代逐题答案
- 不允许只写“答案见上文”或“同纯试卷”

## File writing rules

1. 先检查 `<保存路径>` 是否存在
2. 若不存在，自动创建目录
3. 若目标输出文件已存在，必须自动覆盖同名旧文件，不再额外询问用户
4. 文件内容必须是标准 Markdown
5. 输出完成后，明确告诉用户全部生成文件的完整路径

## Validation rules

写入文件前必须自检：

1. `纯试卷.md` 是否只包含题目、不包含答案
2. `试卷-参考答案.md` 是否包含与纯试卷完全一致的全部题目正文
3. `试卷-参考答案.md` 是否每道题后都紧跟对应参考答案
4. `试卷-参考答案.md` 是否存在仅答案汇总而缺少题目正文的情况
5. 若生成 B 卷，B 卷是否与 A 卷保持相同题型结构、相近难度、相近覆盖范围
6. 若生成 B 卷，A 卷和 B 卷是否不存在完全相同题目或实质相同题目
7. 若生成 B 卷，各题型是否满足 A/B 卷差异化规则
8. 若 `--count > 1`，所有 A 卷之间是否不存在完全相同题目或实质相同题目
9. 若 `--count > 1`，所有 B 卷之间是否不存在完全相同题目或实质相同题目
10. 若 `--count > 1`，所有 Ai 与所有 Bj 之间是否不存在完全相同题目或实质相同题目

若任一检查不通过：

- 不得保留错误结果
- 必须按正确格式重写 `试卷-参考答案.md`
- 若问题出在 B 卷与 A 卷重复，必须重写 B 卷对应题目
- 若问题出在多套试卷之间重复，必须重写对应套数的重复题目
- 直到答案版同时包含题目与答案、且逐题对应后才算完成
- 直到 A 卷与 B 卷所有题目都不相同后才算完成

## Recommended document structure

纯试卷与答案版都应包含：

- 试卷标题
- 适用范围或课件来源
- 总分与题型说明
- 题目正文

答案版额外包含：

- 每题的题目后紧跟参考答案
- 评分要点
- 不允许将答案集中放在文末而不对应题目
- 每道题必须独立成块，格式为“题目正文 + 参考答案 + 评分要点”

## Final response format

输出完成时只需简洁列出结果路径：

- 当 `--paper-set A` 时：
  - 纯试卷：`<保存路径>/纯试卷.md`
  - 参考答案：`<保存路径>/试卷-参考答案.md`
- 当 `--paper-set A+B` 时：
  - A 卷纯试卷：`<保存路径>/A卷-纯试卷.md`
  - A 卷参考答案：`<保存路径>/A卷-参考答案.md`
  - B 卷纯试卷：`<保存路径>/B卷-纯试卷.md`
  - B 卷参考答案：`<保存路径>/B卷-参考答案.md`
- 当 `--count > 1` 时：
  - 按 `A1/A2/...` 或 `A1/B1/A2/B2/...` 的完整文件路径逐项列出

