关于 lesson-quiz
供 Claude Code 使用的测验技能,依据指定题库测试十个教程课程之一。它分轮呈现打乱选项的选择题,逐题反馈并提供成绩与复习建议。
主要功能
- 01测验十个课程之一
- 02使用预设题库
- 03打乱选择题选项
- 04每轮结束后反馈
- 05成绩与复习建议
- 06按测验时机调整结果说明
适用场景
- 01课前检查已有知识
- 02跟踪课程学习进度
- 03课后验证掌握情况
- 04复习答错的主题
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ luongnv89/ claude-howto --skill lesson-quiz安装后在 Claude Code 中输入/lesson-quiz确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdreferences/question-bank.mdresults-template.md详细介绍
课程测验
互动测验,通过 10 道题测试对特定 Claude Code 课程内容的理解程度,提供逐题反馈,并指出需要复习的内容。
前提条件
此技能要求:
- 已检出教程仓库,以便读取课程目录
01-slash-commands/…10-cli/和其中的每个README.md。 - 此技能中存在
references/question-bank.md(所有问题的来源)。
开始前,确认目标课程的 README.md 存在。如果文件缺失,不要编造问题——提醒用户检查仓库结构(参见错误处理)。
防护措施:
- 绝不编造问题或答案。 仅从
references/question-bank.md中为所选课程提取问题;如果题库中没有某课程的条目,请如实说明,不要自行编造。 - 准确评分。 记录每道题的正确答案在打乱后的选项中的位置,并据此核对每个回答——绝不猜测分数。
- 评分前确认测验时间。 测验前/中/后的选择会影响结果的呈现方式;不要跳过此步骤。
说明
步骤 1:确定课程
如果用户提供了课程参数(例如 /lesson-quiz hooks 或 /lesson-quiz 03),将其映射到课程目录:
课程映射:
01、slash-commands、commands→ 01-slash-commands02、memory→ 02-memory03、skills→ 03-skills04、subagents、agents→ 04-subagents05、mcp→ 05-mcp06、hooks→ 06-hooks07、plugins→ 07-plugins08、checkpoints、checkpoint→ 08-checkpoints09、advanced、advanced-features→ 09-advanced-features10、cli→ 10-cli
如果未提供参数,则使用 AskUserQuestion 提示用户选择:
问题 1(标题:“课程”): “你想测验哪一课?” 选项:
- “斜杠命令(01)” — 自定义命令、技能、frontmatter、参数
- “记忆(02)” — CLAUDE.md、记忆层级、规则、自动记忆
- “技能(03)” — 渐进式披露、自动调用、SKILL.md
- “子 Agent(04)” — 任务委派、Agent 配置、隔离
问题 2(标题:“课程”): “你想测验哪一课?(续)” 选项:
- “MCP(05)” — 外部集成、传输、服务、工具搜索
- “Hooks(06)” — 事件自动化、PreToolUse、退出代码、JSON I/O
- “插件(07)” — 打包解决方案、市场、plugin.json
- “更多课程……” — 检查点、高级功能、CLI
如果用户选择“更多课程……”,则显示:
问题 3(标题:“课程”): “选择课程:” 选项:
- “检查点(08)” — 回退、恢复、安全试验
- “高级功能(09)” — 规划、权限、打印模式、思考
- “CLI 参考(10)” — 标志、输出格式、脚本、管道
步骤 2:阅读课程内容
阅读课程 README.md 文件以熟悉上下文:
- 阅读文件:
<lesson-directory>/README.md
然后使用 references/question-bank.md 中对应课程的题库(包含 10 道预先编写的问题及其答案和解释)。为控制上下文预算,只阅读所选课程的 README,不要阅读全部十个课程的 README。
步骤 3:开始测验
询问用户测验时间背景:
使用 AskUserQuestion(标题:“时间”): “你是在课程的哪个阶段参加测验?” 选项:
- “之前(预先测试)” — 我还没读课程内容,想测试自己的已有知识
- “期间(进度检查)” — 我正在学习课程
- “之后(掌握度检查)” — 我已完成课程,想验证自己的理解
此背景会影响结果的呈现方式(参见步骤 5)。
第 4 步:分轮呈现问题
从题库中按每轮 2 道题的方式呈现 10 道题(共 5 轮)。每道题使用 AskUserQuestion,包含题目文本和 3-4 个答案选项。
重要:使用 AskUserQuestion 时,每道题最多 4 个选项,每轮 2 道题。
对于每一轮,呈现 2 道题。用户回答每一轮后,立即显示每道题的反馈:每道答案是否正确,如果错误,显示正确答案和简要解释。然后进入下一轮。所有 5 轮结束后,进入最终评分。
每轮的题目格式:
题库中的每道题包含:
question:题目文本options:3-4 个答案选项(其中一个正确,在题库中标注)correct:正确答案标签explanation:该答案为什么正确category:"conceptual" 或 "practical"
关键 — 打乱答案选项:对于每道题,在通过 AskUserQuestion 呈现之前,你必须随机化答案选项的顺序。不要按题库中出现的顺序(A、B、C、D)呈现,也不要把正确答案放在第一位。为每道题使用不同的随机排列。记录打乱后哪个位置包含正确答案,以便准确评分。
示例:如果题库列出的选项是 A(正确)、B、C、D — 你可以将它们呈现为:C、A、D、B。现在正确答案位于位置 2。
使用 AskUserQuestion 呈现每道题。记录用户对每道题的回答。
第 5 步:评分并呈现结果
所有轮次结束后,计算分数并呈现结果。
评分:
- 每道正确答案 = 1 分
- 总分 = 10 分
等级划分:
- 9-10:已掌握 — 理解出色
- 7-8:熟练 — 掌握良好,存在少量缺口
- 5-6:发展中 — 已理解基础,需要复习
- 3-4:起步 — 存在明显缺口,建议复习
- 0-2:尚未掌握 — 从本课开头重新开始
输出格式: 遵循 references/results-template.md 中的报告模板。它定义了分数行、逐题结果表格、"错误答案 — 复习这些" 区块、时间相关的消息(测试前 / 测试中 / 测试后),以及 "推荐的后续步骤" 部分。用本次运行的数据填充其中的方括号占位符。
第 6 步:提供后续操作
呈现结果后,使用 AskUserQuestion:
"你接下来想做什么?" 选项:
- "重做本测验" — 再次尝试同一课的测验
- "测验另一课" — 切换到不同的课
- "解释我答错的主题" — 获取对某个错误答案的详细解释
- "完成" — 结束测验会话
如果选择 重做:返回第 4 步(跳过时间问题,使用相同的时间)。 如果选择 测验另一课:返回第 1 步。 如果选择 解释主题:询问是哪个题号,然后从该课的 README.md 中阅读相关部分,并结合示例进行解释。
验收标准
一次完成的测验运行必须满足以下所有条件——在呈现最终结果前请逐项验证:
- 在提出任何问题之前,已恰好解析出一节课(01-10)。
- 已通过 AskUserQuestion 捕获时间上下文(之前 / 期间 / 之后)。
- 已呈现该节课来自
references/question-bank.md的 10 道问题,分 5 轮、每轮 2 道,且每道题的答案选项均已打乱。 - 每道答案都已对照所跟踪的正确位置进行评分,得出 0-10 范围内的整数分数。
- 预期输出:一份
## Lesson Quiz Results报告,包含分数行(Score: N/10及评级标签)、每道题的结果表格、针对每道错题的 "Incorrect Answers — Review These" 区块,以及一条针对时间上下文的消息。 - 已提供后续提示词(重考 / 另一节课 / 解释 / 完成)。
示例:对于 Hooks 的一次 7/10 的“之后”运行,报告会断言 Score: 7/10 — Proficient,在结果表格中列出全部 10 行,并展开 3 道错题,附上正确答案、解释和复习指引。
边界情况与错误处理
无效的课程参数
如果参数与任何课程都不匹配,请显示有效课程列表,并请用户选择其一。
用户想在测验中途退出
如果用户在任意一轮中表示想停止,请针对目前已回答的问题呈现部分结果(分数以已作答的题数为分母,而非以 10 为分母)。
未找到课程 README
如果 README.md 文件在预期路径下不存在,请告知用户并建议检查仓库结构。不要用编造的内容继续。
题库缺少某节课的条目
如果 references/question-bank.md 中没有已解析课程的问题,请告知用户并停止——绝不要编造问题来填补空缺。
验证
触发测试套件
应触发:
- "quiz me on hooks"
- "lesson quiz"
- "test my knowledge of lesson 3"
- "practice quiz for MCP"
- "do I understand skills"
- "quiz me on slash commands"
- "lesson-quiz 06"
- "test me on checkpoints"
- "how well do I know the CLI"
- "quiz me before I start the memory lesson"
不应触发:
- "assess my overall level"(使用 /self-assessment)
- "explain hooks to me"
- "create a hook"
- "what is MCP"
- "review my code"