跳到正文
cccskills
免费在 GitHub 公开

course-helper

课程学习资料整理与习题解答方法:把讲义、课件、PDF 整理成复习大纲,解答习题,生成公式速查表与易错辨析;并维护跨会话的教学交接文档(学习进度)、管理项目提示词库、按模块拆分项目资料档案(B 层)。

当用户在课程学习类项目中要求整理讲义或课件、编写或续写复习大纲、讲解课程概念、解答作业题(HW/习题)、续写学习进度或教学交接文档、登记常用提示词时使用。不适用于纯代码工程项目。

中文简介正在准备中。当前显示原文说明。

xxxhhhccc458/course-helper星标 13(GitHub 13 + cccskills 0)

实测评分 未实测

查看安装方法

包含的文件(7)

  • SKILL.md21.6 KB
  • .gitattributes101 B
  • .gitignore243 B
  • AGENTS.md1.3 KB
  • LICENSE1.0 KB
  • README.md5.0 KB
  • 提示词.md9.2 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

课程资料整理与习题解答方法(A 层 · 通用)

本 skill 只含可迁移的方法。项目事实(资料在哪、编号怎么定、什么不考、提示词库内容) 一律放在 <当前会话工作区根目录>/.dsh/skills/course-notes-profile/(下称 B 层)。 B 层的「取舍特例」优先级高于本文件的通用判据。 不要再把 B 层写成平铺文件 <工作区根目录>/.dsh/course-notes-profile.md: 那个位置 DSH 不扫描,skill-manager 插件还会报「缺少完整 YAML frontmatter」。

0 开工规程(每次任务都要执行)

  1. 读 <工作区根目录>/.dsh/skills/course-notes-profile/SKILL.md。它是 B 层索引,含模块路由表。
  2. 按需加载模块:只读与本次任务相关的模块文件,不要一次读完整个 B 层。常见对应:
    • 整理大纲 / 讲概念 → 资料源.md + 取舍.md + 定位与记号模块
    • 解答习题 / 定位原题 → 定位.md
    • 续写进度 / 交接 → 产物.md(进度文档位置与模板)+ 第 11 节
    • 进度文档不存在(或用户说「不知道学到哪」)→ 按第 11.2 节的三轮访谈重建,不得凭一句话直接生成
    • 调用或登记提示词 → 提示词.md + 第 12 节
  3. 不存在 → 先执行第 1 节「初始化 B 层」,生成后交用户确认,再开始正题。
  4. 只找得到旧路径 <工作区根目录>/.dsh/course-notes-profile.md → 先按第 15 节迁移成标准目录包,删掉旧文件,再继续。
  5. 是单文件 B 层,但已触发第 13 节的拆分阈值 → 按第 13 节拆分,内容不丢。
  6. 存在,但资料源可能已变 → 只重扫资料源模块里的清单,其余不动。
  7. B 层与本文件冲突时,以 B 层为准。
  8. B 层声明的产物缺失时,要主动报:若 产物.md 写了某产物的落盘位置而文件不存在(典型是进度文档),任何任务开工时都必须主动告知并提议初始化,不得等用户专门要求。

1 初始化 B 层(新项目首次使用)

B 层落盘位置固定为技能目录包,不是单个散落的 md:

<工作区根目录>/.dsh/skills/course-notes-profile/
├── SKILL.md          ← 唯一带 frontmatter 的索引
├── 资料源.md
├── 定位.md
├── 取舍.md
├── 产物.md
└── 提示词.md

勘查,不要凭空写:

  1. 列出项目根目录结构,识别资料源(讲义 / 课件 / 教材 / 作业 / 数据 / 既有笔记 / 既有进度文档)
  2. 统计每个资料目录的文件数与类型;会新增文件的目录只记通配符,不记清单
  3. 打开 1–2 个既有产物,反推用户已认可的规范;没有产物就跳过,不要编
  4. 抽 1 份 PDF 试提取文字,记录可读性(正常 / 乱码 / 无文本层)
  5. 抽查特殊文件:CSV 是否带 BOM、PPTX 能否解析、.venv 里是否缺 pymupdf 之类
  6. 按第 10 节模板写出 B 层,索引开头必须带 frontmatter(name + description),正文逐条标注证据来源;查不到的一律留空并写「待确认」
  7. 小项目可先写单文件(第 13 节阈值内),大项目直接按模块拆
  8. 交用户确认后才算完成

写完后在 skill-manager 面板核对:应出现在「项目技能 → Project DSH」下且可启用/停用。 若提示「缺少完整 YAML frontmatter」,是 frontmatter 没写对,见第 15 节。

2 资料清单:现场扫描,永不写死

  • 写死清单 = 新增文件永远不会被看到。凡是「以后还会加文件」的目录,B 层只记通配符 + 刷新规则。
  • 每次任务开始时重新扫描并现场生成对照表,旧表作废。

3 内容取舍(本文件最重要的一条)

判据:这段内容会不会出现在任何一道题的题干或解答里?不会,就不进正文。

写进正文不进正文(或压成一行)
定义、判定条件、计算公式软件/编程实现(除非 B 层声明本课程考它)
定理及其成立前提人物生平、学派故事
典型题型与解题模板发展史叙事、与考点无关的工程背景
易错点、反例、概念辨析示例性代码与输出截图
  • 资料里写了但明显不考的 → 剔除,最多留一句「另附 ××,略」
  • 拿不准 → 保留但压成一行,不展开推导
  • 一致性服从取舍:旧产物里已有的不考内容,不要为了「保持一致」继续复制

4 忠实与纠错

  1. 按资料原有目录结构与编号组织,不重排、不合并、不擅自「优化」编号
  2. 资料自身编号冲突 → 原样保留,开头加 > ⚠️ **编号说明**
  3. 发现笔误或条件自相矛盾 → 不改原意,收进「勘误」节并在正文对应处提示;若该错题本身有教学价值,写明可复用的检验方法
  4. 手写批注不作为内容来源,只收录印刷体正文与例题解答
  5. 不编造资料里没有的定理、例题、数据;确需补充课外内容,标注「补充」并说明理由

5 输出骨架(整理大纲时)

  1. 标题 # <课程名> · <文档名>
  2. 三行前置说明:资料来源 / 覆盖范围 / 整理原则
  3. 资料清单表(现场扫描结果)
  4. 核心知识脉络速览:放进围栏代码块(语言标记 text),两空格缩进,└ 表示从属
  5. 正文层级:# 第X章 → ## X.Y → ### X.Y.Z
  6. 附录:A 公式速查表 / B 概念辨析与记忆表 / C 常见题型与解题模板(以上必写);D 勘误与提示 / E 图表说明(可选)
  7. 末尾一行 > **复习建议**:…,指出重点与使用路径

6 每节微格式

  • 标题下紧跟溯源行:> 对应 `文件名` 第 a–b 页
  • 用 **一、定义**、**二、…** 中文序号分块,块名点明该块作用
  • 独立公式 $$…$$ 单独成行;行内符号用 Unicode(Ω、σ²、Φ、λ、≤、∪、∩、Ā、⌊⌋)
  • 记号全文统一,以 B 层记号表为准
  • 例题给完整解答,不只给答案;定理证明分写「证明(充分性)」「证明(必要性)」
  • 节末固定 **📌 补充与易错提醒**,条目式,然后 ---

7 习题解答规范

  1. 先给答案,再给步骤;开头一行写 **考查点**:…(对应 X.Y)
  2. 按 B 层的编号约定回查原题,确认题干与已知条件,不凭记忆改写
  3. 判类型 → 套模板(见附录 C)→ 完整推导 → 回代检验(单调性 / 归一性 / 端点 / 量纲)
  4. 多小问分别作答,标明 (1)(2)
  5. 条件不足或自相矛盾要指出来,不硬凑答案
  6. 不省略中间步骤,不写「显然」「易得」
  7. 有典型坑时,末尾补一句「易错点」

8 记号与排版

  • 人名首次出现:外文原名(中文译名)
  • 书名:斜体原文 + 加粗中译名 + 年份
  • 表格内公式含竖线必须转义为 \|(如 P(A\|B))
  • 概念辨析优先用「A vs B:前者…,后者…」句式

9 禁止

  • 不整本读大部头教材,按需定位页码
  • 不把旧产物当内容规范
  • 不写考不到的内容
  • 不省略解答步骤
  • 不用「一般来说」「大致」代替精确公式
  • 不新增资料里没有的编号
  • 不把 B 层写成平铺的 .dsh/course-notes-profile.md,也不要写没有 frontmatter 的 SKILL.md
  • 不凭压缩摘要或记忆复述项目结构:目录名、文件数一律现场 ls 核实后再写进产物
  • 不在 B 层子模块里再放 frontmatter 或 SKILL.md(插件不递归扫描,等于失联)

10 B 层模板(初始化时照此生成)

10.1 索引 SKILL.md(唯一带 frontmatter 的文件)

---
name: course-notes-profile
description: <项目名>课程项目的资料档案(B 层):记录资料源位置、编号定位约定、取舍范围、既有产物与进度文档位置、统一记号与常用提示词。在本项目整理讲义、续写大纲与学习进度、解答作业题时加载。
---

# <项目名> · 课程资料档案(B 层)
> 由 course-helper 生成。A 层方法见用户级 skill `course-helper`;本目录只记项目事实。
> B 层与 A 层冲突时以本文件为准。
> 生成日期:<YYYY-MM-DD> 资料源快照:<目录 → 文件数>

## 模块路由表

| 模块 | 负责什么 | 什么时候读 |
|---|---|---|
| `资料源.md` | 资料源地图、清单刷新命令、读取限制 | 每次开工(确认资料没变) |
| `定位.md` | 编号体系、页码口径、记号表 | 引用原文、写溯源行、统一符号 |
| `取舍.md` | 课程取舍特例、不考范围、勘误规则 | 决定某段进不进正文 |
| `产物.md` | 大纲/进度文档/习题解答的落盘位置与模板、既有产物地位 | 写任何产物之前 |
| `提示词.md` | 本项目常用提示词库 | 调用、登记、复用提示词 |

## 通用约定(模块外的最小公共集)
- 一句话项目定位:<课程名 / 性质 / 当前进度>
- 本课程「不考」的判定权归 `取舍.md`;无 `取舍.md` 时按 A 层通用判据

10.2 模块文件(无 frontmatter,标题即一级标题)

每个模块只写 A 层没写的项目事实,不复制 A 层方法:

  • 资料源.md:资料源地图(路径 / 类型 / 页数与文本层情况)、清单刷新命令、已知读取限制
  • 定位.md:编号约定(如 1.24 = 讲义 1.24 节习题)、页码口径(PDF 页序 vs 印制页)、记号表
  • 取舍.md:只写与 A 层通用判据不同的例外(「本课程考 R 语言实现」「不考证明题」),以及勘误登记
  • 产物.md:各类产物写在哪、叫什么名、用哪个模板;哪些旧产物只作格式参考
  • 提示词.md:按第 12 节格式维护

11 进度与教学交接文档

适用于跨多次会话持续推进的项目。它不是复习大纲的替代品,而是「下一个接续者(人或 AI)能不能无损接手」的凭据。

11.1 定性与分工

复习大纲进度与交接文档
内容知识本身(定义、定理、题型)状态与过程(学到哪、哪不会、怎么纠过错)
读者复习的人下一次接手的人 / AI
变化随资料增补每次教学都必须追加一行
  • 落盘位置与文件名由 B 层 产物.md 钉死(示例:项目内 课程ppt/学习进度.md),A 层不规定具体路径。
  • 一份项目只留一份,不按版本分叉;历史靠「更新记录」段承载。
  • 项目里还没有这份文档 → 不得凭印象直接写,按 11.2 的初始化访谈走完再落盘。
  • 发现即报:只要 B 层声明了该文档的位置而文件不存在,无论当前任务是写大纲、解答题还是维护档案,都要主动报一句并提议初始化。不要把「创建产物」当成用户必须单独下达的指令。

11.2 进度文档不存在时:初始化访谈协议

触发:按 B 层 产物.md 的路径找不到进度文档。禁止凭用户一句「我学到第三章了」就直接生成——那样得到的是自我感觉,不是可交接的状态。

走三轮访谈,每轮 3–5 问,答完再进下一轮(一次抛十几个问题,用户必然敷衍,数据就废了)。

第 1 轮 · 客观边界(只问事实,不问掌握度)

  1. 课程名 / 教材 / 班次;老师现在讲到哪一章哪一节(用 B 层 定位.md 的编号写法,不写「第三章」)
  2. 已讲完的章节清单(逐条列出,允许用户说「从 1.0 到 2.6 都讲了」)。
  3. 作业 / 实验布置到哪个(编号 + 是否已交)。
  4. 下次课大概讲什么(有教学日历直接要)。

→ 产出「已讲 / 正在讲 / 未讲」三条线。后续出题只考已讲范围。

第 2 轮 · 掌握度自评(按第 1 轮的已讲块分块,每块一问)

  • 不要问「学会了吗」,要问可判定的行为:「这块能不能不看书把公式写出来」「这块的题你大概能不能独立做完」。
  • 让用户对每块从五档图例里挑一档;挑不出就记 ⬜ 尚未学习。
  • 明确告诉用户:这一轮的自评会被第 3 轮校准,偏差会被写进文档。

第 3 轮 · 知识检验(实测,3–5 题)

出题规则:

维度要求
范围只从第 1 轮确认的已讲范围里出;考未讲内容只会得到假缺口
取材只用 B 层资料源里的原题、原定理、原例子,不编题
配比基础 2 题(复述定义 / 写出公式)、中等 2 题(小计算、判断对错并说明理由)、区分 1 题(解释为什么 / 指出前提条件)
优先级优先考「自评 🟡 的块」与「老师反复讲的点」,不随机抽

判分后:实测与自评不一致时以实测为准,并在状态总表备注「自评偏高/偏低」。用户答「不知道」直接记 ❌ 明确缺口,不追问。

第 4 步 · 落盘

  • 按 11.3 九段骨架填;查不到的一律写「待确认」或 ⬜ 尚未学习,不编造已学内容。
  • 「更新记录」第 1 行写:初始化(访谈 3 轮 + 检验 N 题)。
  • 薄弱点必须落到具体知识点(「向量形式求导」「Softmax 梯度」),不写「基础较差」。

第 5 步 · 交付确认

把「已讲清单 + 状态总表 + 后续路线」三块摘要给用户过目,确认后才算建立;之后转入 11.4 的增量更新。

反模式:一次抛十问;只问感受不问能力;考到未讲内容;边问边写(应全部收齐再写,否则反复改);把用户随口一句估算写成结论。

11.3 九段骨架(顺序即模板,续写时不得重排)

  1. 学习目标与教学约定 —— 教学口味(要不要推导、要不要先给结论)、补充内容的标注规则
  2. 已有基础与薄弱点 —— 决定后面讲多细
  3. 已学内容 —— 按知识块分节,每块给关键公式与结论,不重复大纲的完整推导
  4. 当前专题 —— 正在学的那一块要展开到能直接接着讲
  5. 当前学习位置 —— 原文定位 → 暴露的问题 → 局限 → 能力分解
  6. 学习状态记录 —— 状态总表 + 当前正在学 + 逐轮检验与纠正
  7. 后续路线 —— 分阶段,标出依赖关系
  8. 教学方式约定 —— 提问方式、判分方式、纠错方式
  9. 更新记录 —— 表格:第几次 / 改了什么 / 结果

11.4 硬规则

  1. 状态图例固定五档,不改不增:✅ 已掌握、🟡 基本掌握、需练习、🔵 当前正在学、⬜ 尚未学习、❌ 明确缺口
  2. 每次教学结束必须:① 追加「更新记录」一行 ② 同步改状态总表 ③ 改「当前正在学」
  3. 自己的推导或判分有错 → 必须显式写「勘误」并给出验算,不得静默修改历史记录
  4. 只记录已确认的事实;待确认的标「待确认」,不写成结论
  5. 检验仪式:每轮抛 2–3 个问题 → 书面判分 → 把纠正写回文档(不是只在对话里说)

11.5 迁移到其他项目时的检查项

  • 是否真有「跨会话持续推进」的性质(一次性作业项目不需要这个文档)
  • 新建时走过 11.2 的三轮访谈,而不是凭「我学到第几章」直接生成
  • 状态总表里「自评」与「实测」的偏差已标出
  • 状态图例与本文件一致
  • 更新记录记到「第几次」,可反推节奏
  • 薄弱点段落到具体知识点,而非「数学不太好」这类空话

12 提示词库

用途:把反复使用的提示词固化,避免每次重新组织措辞。

12.1 存放

  • 项目级:B 层 提示词.md(只在当前项目有效的,如本课程特有的题型模板)
  • 通用级:确属跨项目可复用的,收进 A 层同目录的 提示词.md,并在 B 层留一行指针
  • 两边都不许散落在正文段落里

12.2 单条格式

### P-03 <一句话名称>
- **场景**:什么时候用它(触发条件,不是「很好用」这类评价)
- **变量**:`{课程名}`、`{章号}`、`{页范围}`
- **提示词**:
  ```
  原文照抄,一个字都不改
  ```
- **备注**:效果、禁忌、配套注意事项

12.3 规则

  1. 原文照抄,不改写、不「优化」措辞——用户写的提示词是资产,改写会改变行为
  2. 可变部分一律抽成 {变量},并在「变量」行列出;不抽变量的提示词等于只能用一次
  3. 一条一个用途。复合提示词拆成多条并用编号引用,不要堆在一条里
  4. 编号 P-NN 只增不改,删掉的留 ~~P-07~~ 已废弃:原因,便于回溯
  5. 新提示词入册前先查重;语义重复的合并,并在旧条目标注「已并入 P-11」
  6. 用户后续提供的提示词原样入册:不替他润色,只在「备注」里写观察到的问题

13 B 层拆分规范

13.1 插件行为(决定拆分边界)

skill-manager 只扫描 .dsh/skills/ 的顶层:每个含 SKILL.md 的子目录 = 一个技能,顶层的散装 .md = 一个平铺技能。它不递归子目录。

做法结果
course-notes-profile/SKILL.md + 同目录 资料源.md 等✅ 正常,附加文件被忽略、不报错、不误判为新技能
course-notes-profile/sub/SKILL.md❌ 不被发现(嵌套失联)
给子模块文件也写 frontmatter❌ 无意义,子文件不参与解析

13.2 何时必须拆

满足任一条就拆,否则单文件可接受:

  • 索引超过 15 KB 或 200 行
  • 需要承载提示词库(会持续增长)
  • 产物规则 ≥ 2 类(大纲 / 进度文档 / 习题解答分别有位置与模板)
  • 出现 ≥ 2 套编号或定位体系

13.3 拆分原则

  1. 索引只做路由:一句话项目定位 + 模块路由表 + 最小公共约定,不超过 100 行
  2. 一个模块一个关注点,模块名直接用中文短语(资料源.md、取舍.md),不加编号前缀
  3. 模块之间不重复:同一事实只写一处,别处写 见 <模块>.md §N
  4. 模块内不写 A 层方法,只写本项目的具体值
  5. 拆分后回归验证:面板仍能看到该技能且可启用/停用,索引里每个模块名都真实存在

14 交付前自检

  • 已读/已生成 B 层索引,且按需加载了对应模块(没整包读)
  • B 层位于 .dsh/skills/course-notes-profile/,索引第 1 行是 ---,name/description 齐全
  • 索引路由表列出的模块都真实存在,无死链
  • 子模块无 frontmatter、无嵌套 SKILL.md
  • 资料清单是现场扫描出来的,不是抄来的旧表
  • 每节都有溯源行
  • 编号与资料一致,冲突处有 ⚠️ 说明
  • 没有考不到的内容混进正文(复核:软件实现、生平、历史叙事)
  • 例题/习题都有完整解答与考查点标注
  • 新增概念已进速查表;发现的笔误已进勘误节
  • 若本次涉及教学推进:进度文档的「更新记录 / 状态总表 / 当前正在学」三处已同步
  • 若本次用到新提示词:已按第 12 节格式入册并查重

15 与 skill-manager 插件的兼容要求

插件(@michengai/dsh-skills-manager)按 目录包 + frontmatter 识别技能,任一不满足就会在面板报错、且不能启用/停用。

项规则违反时的表现
存放路径<工作区根目录>/.dsh/skills/<skill-name>/SKILL.md面板里看不到该技能
目录名与 frontmatter name 完全一致,本项目固定 course-notes-profile名称非法 / 详情对不上
首行文件第 1 行必须是 ---,不能有 BOM,约第 4 行闭合 ---报「缺少完整 YAML frontmatter」
name必填,kebab-case:^[a-z0-9]+(?:-[a-z0-9]+)*$(全小写、连字符分隔)名称缺失 / 名称非法
description必填且非空,≤ 500 字符,写清「什么时候该用」技能不可加载
可选字段whenToUse、metadata、disable-model-invocation、user-invocable;本 skill 一律不用配置解析异常
YAML 写法description 里含 :、#、引号或全角标点时,整行用双引号包裹(插件自身也用 JSON 字符串写该字段)解析出错 / 简介为空
正文体积≤ 256 KB面板拒绝保存
附加文件同目录下的 .md 允许存在,被忽略、不影响解析无影响
反例平铺文件 .dsh/course-notes-profile.md;嵌套在子目录深处的 **/SKILL.md不被发现

迁移旧 B 层:若存在旧文件 <工作区根目录>/.dsh/course-notes-profile.md, 新建目录 .dsh/skills/course-notes-profile/,把内容移动到其中的 SKILL.md, 在顶部补上第 10 节所示的 frontmatter,删除旧文件(避免两份档案分叉)。 若内容较多,同时按第 13 节拆成索引 + 模块。

验证:head -c 3 <工作区>/.dsh/skills/course-notes-profile/SKILL.md | xxd 应输出 2d2d 2d;面板中该技能应显示为可加载、可切换。

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

报告此技能的问题