| name | lesson-quiz |
| description | 针对单个 Claude Code tutorial lesson(01-10)进行 10 题互动测验,评分并标出薄弱点。用于用户明确要求单课测验、lesson quiz 或 MCP / hooks / skills 等主题练习;不用于整套教程评估,也不用于只解释某个主题。 |
| effort | high |
| metadata | {"version":"1.1.0","author":"Luong NGUYEN"} |
课程测验(Lesson Quiz)
这是一个针对单个 Claude Code lesson 的完整互动测验 skill,用于检查用户对某一课的理解程度。它只测一个 lesson,不用于整套教程的水平评估;整套评估请使用 self-assessment。
前置条件与护栏
本 skill 需要能读取教程仓库中的 01-slash-commands/ 到 10-cli/ 目录,以及本 skill 自带的 references/question-bank.md。
- 先确认目标 lesson 的
README.md 存在;如果不存在,停止并提醒用户检查仓库结构。
- 不要临时编题。 只使用
references/question-bank.md 中该 lesson 的预置题;如果题库缺失,直接说明并停止。
- 准确计分。 每题选项会随机打乱,必须记录正确选项在打乱后的新位置,再据此判分。
- 先确认测验时机。
Before / During / After 会影响结果解释,不能跳过。
使用说明
Step 1: 确认 lesson
如果用户提供了参数,就映射到 lesson 目录:
01 / slash-commands / commands → 01-slash-commands
02 / memory → 02-memory
03 / skills → 03-skills
04 / subagents / agents → 04-subagents
05 / mcp → 05-mcp
06 / hooks → 06-hooks
07 / plugins → 07-plugins
08 / checkpoints / checkpoint → 08-checkpoints
09 / advanced / advanced-features → 09-advanced-features
10 / cli → 10-cli
如果用户没提供参数,使用 AskUserQuestion 分 2-3 轮让用户选择 lesson。
Step 2: 读取 lesson 与题库
先读取:
<lesson-directory>/README.md
references/question-bank.md
只读取当前选中 lesson 的 README.md,不要为了测一个 lesson 一次性加载全部 10 个 lesson。题库中每个 lesson 应有 10 道预置题;如果该 lesson 题目不足,停止并报告题库需要维护,不要根据 README 临时补题。
Step 3: 询问测验时机
用 AskUserQuestion 询问用户当前是在:
学前(pre-test)
学习中(progress check)
学后(mastery check)
不同 timing 会影响结果解读。
Step 4: 出题
- 每次固定 10 题
- 每轮 2 题,共 5 轮
- 混合概念题和实践题
- 每题使用 AskUserQuestion,提供 3-4 个选项
- 每轮用户答完后,立即给出本轮逐题反馈:是否答对;如果答错,给出正确答案和简短解释
- 每题展示前必须随机打乱选项顺序,不要照搬题库里的 A/B/C/D 顺序,也不要固定把正确答案放在第一项
- 打乱后要记录正确答案对应的新位置,最终评分按打乱后的真实答案判定
每题必须包含这些信息:
category
question
options
correct
explanation
review
记录用户答案;每轮反馈不替代最终结果,所有 5 轮结束后仍要统一评分。
Step 5: 评分与结果输出
每题答对记 1 分,总分 10 分。
等级:
- 9-10:Mastered
- 7-8:Proficient
- 5-6:Developing
- 3-4:Beginning
- 0-2:Not yet
输出格式使用 references/results-template.md。填充模板里的占位符,保留分数行、单题结果表、错题复盘、按时机给出的反馈和推荐下一步。
Step 6: 根据 timing 解释结果
如果是学前测验
- 把成绩解释为“学习前基线”
- 强调用户接下来应重点关注哪些主题
如果是学习中检查
- 把成绩解释为“阶段性进度检查”
- 明确哪些点已经掌握、哪些点要补
如果是学后测验
- 把成绩解释为“lesson mastery check(课程掌握度检查)”
- 如果分数高,建议进入下一课
- 如果分数一般,列出明确回看点
Step 7: 提供后续动作
最后再用 AskUserQuestion 让用户选择:
重新测本课
测另一课
解释我没掌握的主题
结束
如果选第三项,先问错题编号,再读取该 lesson README 的相关部分,用中文解释并给例子。
验收标准
一次完整测验必须满足:
- 已解析且只解析了一个 lesson(01-10)
- 已通过 AskUserQuestion 获取
Before / During / After 测验时机
- 已从
references/question-bank.md 取出该 lesson 的 10 道题
- 已按 5 轮、每轮 2 题展示,并对每题选项随机打乱
- 已按打乱后的真实正确位置计分,最终分数为 0-10 的整数
- 最终报告包含
Score: N/10、10 行单题结果、每道错题的正确答案与复习建议
- 已提供“重新测本课 / 测另一课 / 解释我没掌握的主题 / 结束”后续选择
边界情况
- 无效 lesson 参数:展示可用 lesson 列表并让用户重新选择。
- 用户中途退出:给出已答题目的部分结果,分母用已答题数,不要写成 10 分满分。
- 目标
README.md 不存在:停止并提示检查仓库结构。
- 题库缺失:停止并说明缺少该 lesson 的题目,不要编造题目。
输出要求
- 中文表达清晰
- 保留关键英文术语
- 错题解释必须具体
- 复习建议要明确到 lesson 或章节
- 不要把测验做成泛泛聊天