textbook-exercises
生成带 Bloom 层级标注的成套习题时用它:示范例题(完整解题过程)、引导练习(带提示)、独立习题(附参考答案)三类,每道计算题的答案都真算核对过再输出。触发语如"出几道矩阵乘法的练习题"、"给这一章生成例题"。通常由 textbook-chapter 调用,也可单独运行。不适用于文科论述题(stem 学科档案未为其定义验证手段),也不负责组卷。需与 textbook 系列其余 skill 装在同一 skills 目录下。
Install
npx skills add https://github.com/cabbage2000-lab/textbook-writer-skills/tree/main/skills/textbook-exercises
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install cabbage2000-lab-textbook-writer-skills@llmmart
git clone https://github.com/cabbage2000-lab/textbook-writer-skills.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole cabbage2000-lab/textbook-writer-skills collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
textbook-exercises
生成三类题(示范例题/引导练习/独立习题),每道题带 Bloom 层级标注,每道题的答案都经过验证才输出。学科无关的设计与验证纪律见 references/exercise-design.md;本次出题的题型集与每型的验证手段取自输入契约 学科档案 指定的档案第 2 节(规格与索引见 ../textbook/references/subject-profile-spec.md)。
何时不触发
- 题型在所用档案第 2 节里没有对应验证手段的(如
stem档案下的文科论述题、案例分析题)——按 exercise-design.md 第 7 节反模式 5 处理:改出档案内最接近的题型(stem档案下改概念辨析题)并在输出中说明替换 - 组卷/试卷排版(本 skill 只产题目内容)
- 与教材无关的一般性问答
两种调用模式
- 被 textbook-chapter 调用(常规):输入 = 契约
{章上下文, 题目计划, 术语表, 学科档案}(字段定义见 ../textbook/references/handoff-contract.md 第 2 节)。按题目计划逐条生成,不多不少。 - 独立触发:一轮问清
{主题, 读者水平, 三类题各要几道, 期望 Bloom 层级分布}(用户已说明的不重复问);按主题自行判定学科档案(索引见 subject-profile-spec.md 第 5 节,找不到匹配项按该文档第 7 节处理:说明将按最接近的档案处理并指出差异),并在输出开头说明用了哪份档案;术语自拟并保持内部一致;编号中的章号默认取 1,用户指定章号则从之。
生成流程(每道题走完 1–4 才算完成一道)
设计题面:题型从档案第 2 节的题型集里选(表外的题型不出,见"何时不触发"),支撑纪律按 references/exercise-design.md 第 4 节,具体教学动作按档案第 4 节;对照题目计划的主题与 Bloom 层级,层级判定标准查 ../textbook-outline/references/bloom-levels.md 第 4 节(同题多问取最高层,歧义就低不就高;六层对照标尺在档案第 3 节)。
同步写完整解答:示范例题 = 逐步推导每步一行理由;引导练习 = 提示阶梯(提示 1 方向 → 提示 2 关键步骤)+ 完整解答;独立习题 = 参考答案或含关键中间结果的解题路径。禁止先攒题后补答案。
验证(红线,不可省略):到档案第 2 节查该题型的「验证手段」列,照它执行;执行不了时照同一行的「无法验证时的降级」列处理,不自行发明第三种做法。两条与学科无关的硬纪律:
- 验证必须走与解答不同的路径——沿同一条路径重走一遍,重复的是同一个错误,等于没验证;
- 档案里每型的「验证手段」列都非空,即没有任何题型可以跳过验证(spec 第 2 节)。
处理验证结果:核对一致 → 标
✅ 已验证(<方式>);不一致 → 修题或修解答后重新验证;连续 2 次验证失败 → 弃题换题。手段与降级路径都走不通(如开放性探究题)→ 标⚠️ 需作者确认(<原因>),绝不假装已验证。
输出
- 按契约逐题给出
{编号, 类型, 题干, 解答或提示, Bloom层级, 验证状态}; - 正文格式遵循 exercise-design.md 第 6 节(编号规则
例 N-M/习题 N-M,引导练习计入"例"序列加后缀),文体附加条款按档案第 4 节; - 验证过程逐题附上(放在该题"验证"行后的代码块中,每题都要有):能用代码复算的,附这道题自己的、复制即可运行的代码——不写"多题共用一个外部脚本 + 逐题只附调用命令",因为章文件里没有安放共享脚本的位置,脚本落在章外读者就复核不了;靠核验依据完成的附核验记录(详见 exercise-design.md 第 3 节末);
- 术语用词严格对照传入的术语表;独立触发时保持自拟术语的内部一致。
纪律(违反任何一条即返工)
- 绝不输出未验证的答案——"应该没错"不是验证;
- 开放题给参考要点并标注"开放题",不编造标准答案;
- 每题必有 Bloom 标注与验证状态行,漏任一即不完整——不需要算的题同样要标,方式取档案第 2 节该题型的「验证手段」列(
stem档案:概念/记忆理解类写✅ 已验证(核对定义来源:…),开放题写⚠️ 需作者确认(开放题,不设标准答案));交付前数一遍,题目数必须等于验证行数; - "留给读者作为练习"式悬空 = 违规(exercise-design.md 第 3 节第 6 条);
- 出题偏离题目计划的主题或层级时,须在输出中注明偏离原因(如"该主题在应用层无自然题型,改为分析层"),由调用方决定是否接受。
Files (textbook-writer-skills)
-
references
-
exercise-design.md 10.7 KB
# 例题/习题设计与验证规范 本文档是 textbook-exercises skill 的出题唯一权威来源,也被 chapter-template.md 的例题段落引用。核心使命:**每一个进入教材的答案都必须经过验证**——用什么手段验证随学科而变,"必须验证"这件事不变。 本文档只写学科无关的纪律。**题型集与每型的验证手段**在输入契约 `学科档案` 指定的档案第 2 节,规格与索引见 [../../textbook/references/subject-profile-spec.md](../../textbook/references/subject-profile-spec.md)。 ## 1. 三类题的定位差异 | 类型 | 定位 | 支撑程度 | 数量/章 | | ------ | ------ | ---------- | --------- | | 示范例题 | 教——完整解题过程给读者看 | 全脚手架(每步带理由) | 1–3 | | 引导练习 | 扶——读者半独立地做 | 部分脚手架(提示阶梯) | 1–3 | | 独立习题 | 放——读者独立完成 | 无脚手架(仅附参考答案) | 3–8 | **与 Bloom 梯度的正交关系**:三类题是"支撑程度"维度,Bloom 是"认知高度"维度,**不可混为一谈**。示范例题可以是分析层(示范一个错误诊断),独立习题也可以是理解层(独立解释一个概念)。不存在"引导练习=理解层"之类的绑定。层级判定标准见 [../../textbook-outline/references/bloom-levels.md](../../textbook-outline/references/bloom-levels.md) 第 4 节。 ## 2. 题型集与验证手段(取自学科档案) 题型集、每型的验证手段、验证不了时的降级路径,一律查所用档案第 2 节,本文档**不复制**——复制一份就会与档案漂移,而漂移的那份必然是被人忘掉维护的那份。出题前先读该节。 档案第 2 节的表格形状固定为 `| 题型 | 示例 | 验证手段 | 无法验证时的降级 |`,其中**「验证手段」列不允许为空**:任何学科都不存在"这类题不用验证"的题型(spec 第 2 节)。题目计划要求的主题落不进任何一个已定义题型时,按第 7 节反模式 5 处理,不许临时发明一个没有验证手段的题型。 ## 3. 答案验证流程(红线,逐条硬性) 1. **出题时同步写完整解答**,禁止先攒题目后补答案的分离式编造; 2. **验证必须走独立路径**:按档案第 2 节为该题型选定的手段,用与解答**不同的路径**重做一遍再比对(`stem` 档案的计算题:优先写一段 Python 用 Bash 实际执行,解答用行变换求的,验证就用 numpy 直接求)。沿同一条路径再走一遍,重复的是同一个错误,等于没验证; 3. **复算不一致 → 修题或修解答后重新验证;连续 2 次验证失败 → 弃题换题**,不允许"大概率对"的答案进入教材; 4. **每道题都必须带验证状态行,无一例外**——标注只有两种:`✅ 已验证(<方式>)` / `⚠️ 需作者确认(<原因>)`,不存在第三种含糊状态,**也不存在"这道题没有验证行"这种状态**。非计算题同样要标,方式按档案第 2 节该题型的"验证手段"列写(`stem` 档案:概念辨析与记忆/理解类写 `✅ 已验证(核对定义来源:<教材设计文档某节 / 学科公认定义>)`;开放、探究、建模类写 `⚠️ 需作者确认(开放题,不设标准答案)` 并给参考要点)。**漏掉验证行的题等同于未验证**,落盘前必须补齐——"这题不用算所以不用标"是本条最常见的误读; **第 4 条的边界——题内局部 ⚠️ 不是第三种状态**:题面里引用的某一项(一处引文、一个统计数值、一条史实)核不实,而解答与结论并不依赖它时,可以就地给该项标 `⚠️` 并写明「该项未核,不参与本题结论」;整题的验证状态行照常存在、照常二值。但**整题能否判 ✅ 有一个硬条件:把这一项整个删掉,题目与答案依然完全成立**——成立才可以 ✅(局部标注只是给读者的诚实提示);不成立就说明结论其实依赖它,整题必须是 `⚠️ 需作者确认`。这条界限必须守住:局部 ⚠️ 用来标「顺带提到但不承重」的内容,不是把核不实的材料重新贴上 ✅ 的漂白手段。 5. **独立习题的参考答案同样走验证**;给"解题路径"的题至少含关键中间结果(可核对的锚点),不能只写"同例 N-M 方法"; 6. **"留给读者作为练习"式悬空 = 违规**。任何题都必须有参考答案、解题路径或参考要点三者之一。 验证过程**逐题附上**,放在该题"验证"行之后的代码块里——**每道题都要有,不能只在交付末尾给一份总的**。动机在交付物的读法:读者看到的是题目本身,验证过程搁在别处等于他无法就地复核,而"能就地复核"正是这条纪律要换来的东西。 **本 skill 只管产出、不管落位**:题干、解答、验证行、验证过程一律完整返回调用方,独立触发时同样照此输出。调用方若按 `answer_layout=separate` 把独立习题的答案搬进 `98-参考答案.md`(规则见 [../../textbook/references/handoff-contract.md](../../textbook/references/handoff-contract.md) 3.1 节),"就地"随之指该文件里题号对应处——**答案、验证行、验证过程三件必须同行同处**,绝不允许只搬答案、把验证过程留在章内:验证代码几乎必然含答案数值,留下就等于没搬。 两种形态,按该题型在档案第 2 节的验证手段选: - **用代码复算的**(如 `stem` 档案的数值计算、符号推导、代码题):在该题验证行后附**这道题自己的**复算代码,**复制这一段就能跑**,不依赖任何别处的脚本文件。**禁止"多题共用一个外部脚本、逐题只附调用命令"的写法**——交付到读者手里的是章文件 `NN-<章标题>.md`,而章骨架([../../textbook-chapter/references/chapter-template.md](../../textbook-chapter/references/chapter-template.md) 第 2 节)只有「引言 + 四段 + 本章小结」,没有安放共享脚本的位置;脚本一旦落在章外,读者拿到章文件就复核不了,这条纪律也就白立了。几道题的代码彼此相似不是问题:各 5–15 行、各自完整,比一个大脚本加四条调用有用得多; - **靠核验依据完成的**(如概念辨析,或 `humanities` 档案的引文与史实核对):附核验记录,逐条列出所引定义/定理/文献及其出处与核对结果,并标明结论实际依赖的是哪几条。 ## 4. 三类题各自的设计要点 三类题在本学科的**具体教学动作**见档案第 4 节,本节只写支撑纪律。 ### 示范例题 - 题面紧贴本章刚讲的概念,不引入未讲知识; - 全脚手架:**每步一行理由**,而不是裸给结果(`stem` 档案示例:"两边同乘 A 的逆(A 可逆由上一步行列式非零保证)"); - 按档案第 4 节收尾(`stem` 档案:加一句"回顾:这道题用到了<概念>的<哪个性质>",把题拉回概念主线)。 ### 引导练习 - 与某道示范例题**同构**——练的是同一认知程序("同构"的具体做法见档案第 4 节); - 提示阶梯固定两层:提示 1(方向性,指出从哪入手)→ 提示 2(关键步骤,给中间关键的那一步)→ 完整解答(供对照); - 提示不能直接泄露答案,完整解答同样走验证流程。 ### 独立习题 - 无脚手架;题目构成见档案第 4 节(`stem` 档案:变式题、组合题、少量开放题); - 按 Bloom 阶梯先低后高排列; - 开放题给参考要点,不编造标准答案。 ## 5. Bloom 标注规范 - 每题必标,格式 `【Bloom:应用】`,紧跟题目标题; - 层级判定按 bloom-levels.md 第 4 节(看认知操作不看表面难度); - 同题多问取**最高**层级;判定歧义时**就低不就高**; - 标注结果按输出契约回传调用方(供全书梯度统计),不许漏标。 ## 6. 输出格式 题干、解答与提示的文体附加条款取自档案第 4 节(`stem` 档案 = [../../textbook-chapter/references/writing-style.md](../../textbook-chapter/references/writing-style.md) 第 13 节:定界符、矩阵环境统一、公式内不写中文)——题目与正文出自同一本书,两套语法会让读者以为换了本书。 正文格式(与 chapter-template.md 第 4 节一致,全书统一;下例的验证方式取自 `stem` 档案): ```markdown #### 例 3-1:矩阵乘法的行视角【Bloom:理解】 **题目**:…… **解**:(逐步推导,每步一行理由) **验证**:✅ 已验证(Python/sympy 复算,结果一致) #### 习题 3-2【Bloom:应用】 **题目**:…… **参考答案**:……(或 **解题路径**:关键步骤 1 → 2 → 3) ``` 上面是**本 skill 的输出格式**,题目与答案在一起——调用方拿到后按 `answer_layout` 决定独立习题的答案落在章内还是 `98-参考答案.md`,那是调用方的事,本 skill 不做裁剪。 编号规则:`例 <章号>-<序号>`、`习题 <章号>-<序号>`,章内各自从 1 连续编号;引导练习计入"例"编号序列,标题后缀"(引导练习)"。类型与正文标记的对应关系(供对账):`例` 前缀且无后缀 = 示范例题;`例` 前缀 +"(引导练习)"后缀 = 引导练习;`习题` 前缀 = 独立习题。**编号是答案分居两个文件后唯一的对账凭据**,章内与 `98-参考答案.md` 必须逐字一致。 对调用方(textbook-chapter)的输出契约:`{题目[]}`,每题 `{编号, 类型, 题干, 解答或提示, Bloom层级, 验证状态}`(类型 ∈ 示范例题/引导练习/独立习题)。 ## 7. 反模式清单(出现即返工) 1. **全章题目同一 Bloom 层级**——没有认知阶梯,违背梯度设计初衷; 2. **题目与本章学习目标无关**——好题但不服务本章,删或移; 3. **解答跳步**——"易得""显然可知"是教材大忌,每步都要有着落; 4. **无验证直接给答案**——红线违规,任何理由都不接受; 5. **出了档案题型集之外的题**——题型不在所用档案第 2 节的表里,就没有为它定义过验证手段,出这种题等于绕过红线。改用档案内最接近的题型(如 `stem` 档案下遇到论述、案例分析类需求,改出概念辨析题),并在输出中说明这次替换及原因;确有必要长期支持该题型,按 spec 第 6 节给档案补一行(连同验证手段一起补),而不是在本次出题里临时放行; 6. **提示泄底**——引导练习的提示 1 直接给出完整做法,等于没有阶梯; 7. **开放题假装有标准答案**——开放题必须明示"开放题"并只给参考要点。
-
-
SKILL.md 5.8 KB
--- name: textbook-exercises description: 生成带 Bloom 层级标注的成套习题时用它:示范例题(完整解题过程)、引导练习(带提示)、独立习题(附参考答案)三类,每道计算题的答案都真算核对过再输出。触发语如"出几道矩阵乘法的练习题"、"给这一章生成例题"。通常由 textbook-chapter 调用,也可单独运行。不适用于文科论述题(stem 学科档案未为其定义验证手段),也不负责组卷。需与 textbook 系列其余 skill 装在同一 skills 目录下。 slug: textbook-exercises displayName: 教材写作·习题生成 version: 0.6.2 summary: 生成示范例题、引导练习、独立习题三类题并逐题验证答案(stem 学科档案下为真算复核),每题带 Bloom 层级标注。需与 textbook 系列其余 skill 同级安装。 --- # textbook-exercises 生成三类题(示范例题/引导练习/独立习题),每道题带 Bloom 层级标注,**每道题的答案都经过验证才输出**。学科无关的设计与验证纪律见 [references/exercise-design.md](references/exercise-design.md);本次出题的**题型集与每型的验证手段**取自输入契约 `学科档案` 指定的档案第 2 节(规格与索引见 [../textbook/references/subject-profile-spec.md](../textbook/references/subject-profile-spec.md))。 ## 何时不触发 - 题型在所用档案第 2 节里没有对应验证手段的(如 `stem` 档案下的文科论述题、案例分析题)——按 exercise-design.md 第 7 节反模式 5 处理:改出档案内最接近的题型(`stem` 档案下改概念辨析题)并在输出中说明替换 - 组卷/试卷排版(本 skill 只产题目内容) - 与教材无关的一般性问答 ## 两种调用模式 - **被 textbook-chapter 调用**(常规):输入 = 契约 `{章上下文, 题目计划, 术语表, 学科档案}`(字段定义见 [../textbook/references/handoff-contract.md](../textbook/references/handoff-contract.md) 第 2 节)。按题目计划逐条生成,不多不少。 - **独立触发**:一轮问清 `{主题, 读者水平, 三类题各要几道, 期望 Bloom 层级分布}`(用户已说明的不重复问);按主题自行判定学科档案(索引见 subject-profile-spec.md 第 5 节,找不到匹配项按该文档第 7 节处理:说明将按最接近的档案处理并指出差异),并在输出开头说明用了哪份档案;术语自拟并保持内部一致;编号中的章号默认取 1,用户指定章号则从之。 ## 生成流程(每道题走完 1–4 才算完成一道) 1. **设计题面**:题型从档案第 2 节的题型集里选(表外的题型不出,见"何时不触发"),支撑纪律按 [references/exercise-design.md](references/exercise-design.md) 第 4 节,具体教学动作按档案第 4 节;对照题目计划的主题与 Bloom 层级,层级判定标准查 [../textbook-outline/references/bloom-levels.md](../textbook-outline/references/bloom-levels.md) 第 4 节(同题多问取最高层,歧义就低不就高;六层对照标尺在档案第 3 节)。 2. **同步写完整解答**:示范例题 = 逐步推导每步一行理由;引导练习 = 提示阶梯(提示 1 方向 → 提示 2 关键步骤)+ 完整解答;独立习题 = 参考答案或含关键中间结果的解题路径。禁止先攒题后补答案。 3. **验证(红线,不可省略)**:到**档案第 2 节**查该题型的「验证手段」列,照它执行;执行不了时照同一行的「无法验证时的降级」列处理,不自行发明第三种做法。两条与学科无关的硬纪律: - 验证必须走**与解答不同的路径**——沿同一条路径重走一遍,重复的是同一个错误,等于没验证; - 档案里每型的「验证手段」列都非空,即**没有任何题型可以跳过验证**(spec 第 2 节)。 4. **处理验证结果**:核对一致 → 标 `✅ 已验证(<方式>)`;不一致 → 修题或修解答后重新验证;**连续 2 次验证失败 → 弃题换题**。手段与降级路径都走不通(如开放性探究题)→ 标 `⚠️ 需作者确认(<原因>)`,绝不假装已验证。 ## 输出 - 按契约逐题给出 `{编号, 类型, 题干, 解答或提示, Bloom层级, 验证状态}`; - 正文格式遵循 exercise-design.md 第 6 节(编号规则 `例 N-M` / `习题 N-M`,引导练习计入"例"序列加后缀),文体附加条款按档案第 4 节; - **验证过程逐题附上**(放在该题"验证"行后的代码块中,每题都要有):能用代码复算的,附**这道题自己的、复制即可运行**的代码——不写"多题共用一个外部脚本 + 逐题只附调用命令",因为章文件里没有安放共享脚本的位置,脚本落在章外读者就复核不了;靠核验依据完成的附核验记录(详见 exercise-design.md 第 3 节末); - 术语用词严格对照传入的术语表;独立触发时保持自拟术语的内部一致。 ## 纪律(违反任何一条即返工) - 绝不输出未验证的答案——"应该没错"不是验证; - 开放题给参考要点并标注"开放题",不编造标准答案; - 每题必有 Bloom 标注**与验证状态行**,漏任一即不完整——不需要算的题同样要标,方式取档案第 2 节该题型的「验证手段」列(`stem` 档案:概念/记忆理解类写 `✅ 已验证(核对定义来源:…)`,开放题写 `⚠️ 需作者确认(开放题,不设标准答案)`);交付前数一遍,题目数必须等于验证行数; - "留给读者作为练习"式悬空 = 违规(exercise-design.md 第 3 节第 6 条); - 出题偏离题目计划的主题或层级时,须在输出中注明偏离原因(如"该主题在应用层无自然题型,改为分析层"),由调用方决定是否接受。
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.