Community生产力与协作github.com

CAFEERON21br18/claude-skills

将来自Notion或上传文件的课程资料转化为关联的学习包(Sílabo、Resumo、Revisão、可选Plano),或更新现有学习包。所有页面使用统一的问题表单和固定页面工具包,确保每个课程外观和功能一致。

claude-skills 是什么?

该技能专为需要将课程资料系统化、结构化并生成统一格式学习包的开发者或AI用户设计。它从Notion页面或上传文件(PDF、Docx等)中提取内容,生成四个核心页面:Sílabo(大纲)、Resumo(详细摘要)、Revisão(复习与练习)和可选的Plano(学习计划)。所有页面均由固定的工具包构建,确保外观、功能和交互行为完全一致,无需手动编写HTML或CSS。技能还支持更新已有学习包,保留原有的进度和设置。该技能支持英文、葡萄牙语和法语,适用于数学、物理、工程等需要大量计算的课程,并集成KaTeX公式渲染、计算器、图表和AI导师等功能。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/CAFEERON21br18/claude-skills/tree/HEAD/study-pack

Installed? Explore more 生产力与协作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Study Pack(学习包)

为单一课程创建四个相互关联的页面,所有页面均由工具包(位于 github.com/CAFEERON21br18/claude-skills 的 kit/ 目录,具体文件夹为 study-pack/kit)构建:

  1. Sílabo(教学大纲):编号的主题列表,仅包含最核心的内容。
  2. Resumo(摘要):完整的课程内容,包含详尽的解释和每个主题 ≥ 3 个的解答示例。
  3. Revisão(复习):包含简短的课程讲解和练习(你的/用户的)、评分、历史记录、笔记和辅导。
  4. Plano(计划,可选):定制的备考计划,包含截止日期、图表和进度标记。

规则零:工具包决定外观,你只需编写内容

  • 所有页面均由 kit/build.py 生成。永远不要手动编写或修改页面的HTML、CSS或JS,也不要“改进”布局或添加页面专属样式。相同的选项 ⇒ 相同的页面,无论课程是什么(CDI, AL, LP…)。
  • 你只需要编写 kit/SCHEMA.md 中描述的JSON数据(使用Python的 json.dump),然后构建、检查并发布。
  • 题目始终使用 kit/questions.py 中的表单,保持其顺序和格式。永远不要重新措辞、重新排序、拆分或换一种方式提问。永远不要在未列出颜色时仅列出主题名称。
  • 如果某项功能无法通过工具包实现,在最终消息中用一句话说明。不要在HTML中绕开限制。

工具包为你固定以下内容(不要重新实现):页眉(CDI布局:左侧是课程名称和标题,右侧是4个学习包标签,第二行是工具:倒计时 · 页面工具 · As minhas notas · 深色/浅色切换按钮,使用 ruben-bonanni-ribeiro.dev 的太阳/月亮图标)、主题侧边栏、嵌入字体的KaTeX、宽数学公式适配、笔记、辅导聊天、图形计算器、专注模式、按日历天数显示的倒计时、同标签链接、手机布局和本地存储。

每个页面的工具(固定顺序,关闭的选项不显示):

页面页眉工具页眉下方工具条
Sílabo倒计时 · 专注 · 我的笔记 · ☾/☀—
Resumo倒计时 · 计算器 · 专注 · 我的笔记 · ☾/☀—
Revisão倒计时 · 计算器 · 专注 · 仅错题 · 历史记录 · 我的笔记 · ☾/☀已完成 / 正确 / 待复习 + 已保存
Plano倒计时 · 今天 · 隐藏已完成 · ☾/☀已完成的学习时段 + 小时数

步骤 0 — 工具包及检查是否已存在学习包

  1. 每次都获取工具包(它可能已更新): git clone --depth 1 https://github.com/CAFEERON21br18/claude-skills /tmp/sp && cp -r /tmp/sp/study-pack/kit ./kit 阅读 kit/SCHEMA.md。
  2. 列出用户的工件(Artifact 列表,范围“all”,限制 200),查找“Sílabo/Syllabus/Programa — <课程>”、“Resumo — <课程>”、“Revisão/Revision — <课程>”、“Plano — <课程>”或类似的名称。
  3. 找到 → 直接问一次:“已存在 <课程> 的学习包。是要更新还是创建新的?”(更新已有(推荐)· 创建新的)。如果选择更新:“需要更改什么?”(合并新资料 · 更改选项 · 补充缺失页面 · 重新生成练习)。 名称不明确 → 列出最匹配的选项,并询问用户选择哪个,同时提供“都不对,从头开始”的选项。 未找到 → 静默继续。

更新模式

  • 立即在这一步中,使用 Artifact action:"read" 不带 path 参数读取每个现有页面的完整内容。如果发布时未读取完整版本,则会被拒绝。大文档会以保存文件的形式返回:每次读取大约 150–200 行,直到读完为止。然后也保存每个页面的 HTML(使用 read 和 path:"index.html"),供 extract.py 使用。
  • python3 kit/extract.py pack <saved pages…> 从工具包页面重建 pack/ 目录(包含 pack.json、topics、plan.json)。保留 slug、storage、urls、主题编号和练习ID的原始值。
  • 旧版学习包(无工具包数据):从页面中推断设置(主题、字体、语言、功能、数量)并写入 pack.json。将其存储键复制到 "storage" 中,以便保留学习进度:localStorage键(例如 cdi-revisao-v1、lp-revision-v2)放在 storage.ls.revisao 中,数据库文档名称(例如 revisao、lp-revision-v2)放在 storage.docs.revisao 中,plano 和主题前缀同理。
  • 练习:同一练习(同一张练习卷 + 编号)保留其ID;新练习按顺序分配下一个编号。对已删除练习的尝试记录会显示为“旧版本的练习”:在最终消息中说明。
  • 保留计划:永远不要移动带有日期的任务区段(进度标记按日期 + 索引键控);只更新文本、计数和链接。从头重建的计划会丢失旧的任务标记:在最终消息中说明。
  • 只询问用户想要更改的问题,以及新材料引发的问题(例如,如果用户上传了练习,则询问其来源)。从 pack.json 中重用其他所有内容。
  • 将每个页面发布到其现有 url。最后按页面说明更改了哪些内容。

步骤 1 — 收集资料(在提问之前)

  • 来源:Notion页面(引用或链接,获取每个页面并跟踪课程的子页面)、上传的文件(PDF、docx、幻灯片、图片,全部读取)、粘贴的文本。如果指定了课程但未提供来源 → 搜索Notion,用一句话确认页面。
  • 在Notion中搜索名称类似于 "lesson-style" 的页面(用户自己的练习格式)。如果找到,则读取它:它将成为第一个练习格式选项。
  • 收集每个主题、定义、定理、方法、易错点、带解答的例题、练习及其来源(练习卷 + 编号)、考试日期,以及用户自己的练习:主题、难度、方法、解答方式(完整/部分/仅有答案/无)。
  • 缺少题目内容(只有答案的练习卷):在提问之前立即用一句话说明,并要求提供PDF。永远不要自己编造题目内容。如果从用户的其他页面或答案表中重新构建了题目,则标记为 "reconstructed": true(“已重构的题目”)。
  • Notion中的教科书:为每个主题块(例如 1–3、4–8、9–11)分配一个子代理并行提取。每个子代理按主题返回JSON:包含书本编号的定义和定理、易错点、≥ 4 个带步骤(操作 + 原因)和最终答案的完整工作示例;每个子代理使用 sympy 重新计算所有数字,并标记书本错误(不要静默修正)→ 使用 bookerr 块(“书本中的错误”)。
  • 主主题列表:按照课程顺序编号为 1、2、3…,永远不要使用字母。之后永远不要重新编号。
  • 计算密集型课程(数学、物理、统计学、工程、金融)→ 显示计算器问题。
  • 无法读取的来源 → 说明是哪一个,然后继续。

步骤 2 — 问题(一个固定表单)

  1. python3 kit/questions.py --lang <pt|fr|en> [--mine] [--calc] [--lesson-style] [--exam YYYY-MM-DD] (如果用户上传了自己的练习则使用 --mine,如果是计算密集型课程则使用 --calc,如果Notion页面存在则使用 --lesson-style,如果找到了日期则使用 --exam。)
  2. 调用可视化工具 read_me(模块 elicitation),然后使用完全相同的打印HTML调用 show_widget,标题为 study_pack_details。小部件中不要包含其他内容,不要额外提问。
  3. 返回的答案格式为一行(Theme: … · Font: … · Features: … · Exercise format: … · Source: … · Per topic: … · Language: … · Graph calc: … · Tutor: … · Plan: … · Deadline: … · Hours: …)。将其映射到 pack.json。
  4. 如果当前会话中没有可视化工具 → 按原样发送 questions.py … --text 的输出(它会显示每个主题及其十六进制颜色),然后等待编号的答案。永远不要使用其他格式。
  5. 跳过或未回答的问题(无人值守运行时)→ 使用默认值:Focus主题、Atkinson Hyperlegible字体、侧边栏 + 专注 + 历史记录 + 进度 + 倒计时、如果找到lesson-style则使用它,否则使用多选 + 自由回答、如果用户有练习则使用50/50,否则使用用户自己的练习、每个主题5道题、对话语言、如果是计算密集型课程则启用计算器(是)、启用辅导(是)、不启用计划。说明使用了哪些默认值。

然后在构建之前:

  • 来源 = 仅用户自己,并且某些主题没有用户的练习 → 立即说明是哪些主题,并询问一次:是让这些主题没有练习(并提示通知),还是仅为这些主题填补课程/Claude生成的练习。
  • “其他”主题 → 复制 kit/themes.json 中最接近的预设,仅更改颜色,运行 python3 kit/check_contrast.py <file> 直到通过,然后将该对象放入 pack.json 的 theme 中。
  • 格式 → 练习类型:lesson-style = 其规则(如下);Como na fonte = 保持练习卷的形式(开放题 → free;仅当练习卷中有多选题/判断题时才使用它们);Escolha múltipla = mcq;Resposta livre = free;V/F = tf。(填空题不由工具包支持。)

步骤 3 — 编写内容(仅JSON)

将主题分组,并使用最多4个并行子代理编写(例如 1–3、4–6、7–9、10–11)。为每个子代理提供:kit/SCHEMA.md、其主题的资料、步骤2的答案以及这些规则。每个子代理使用Python脚本(json.dump,永远不要手动编写)编写 pack/topics/<n>.json,并使用 sympy 检查所有计算。然后读取它们生成的文件,并检查它们是否符合规则。

Sílabo(syllabus):每个主题 2–6 个项目符号,每个项目符号 ≤ 12 个单词,使用名词短语/规则/公式,不要使用完整句子,不要添加无关内容。列出所有与考试相关的规则,不要编造任何内容。

Resumo(resumo + examples):每个主题的所有定义、定理、规则和方法,进行完整解释(直觉 → 正式陈述 → 何时以及如何使用),使用课程符号;使用 def / thm / formula / method / trap 块。每个主题**≥ 3 个已解答的例题**,难度从简单到考试级别,使用不同的方法:优先使用用户提供的带有解答的练习,然后是课程示例,最后是新示例。每个步骤都有 do + why(+ 学生容易出错的地方则加 trap)。来源标签:使用真实来源,或者 "new" → “新示例”。永远不要将虚构的示例标记为课程来源。当多选题被用作示例时,只保留解答步骤:省略关于选项的句子(如“选项A…”、“选项B…”、“C和D…”)。

Revisão(lesson、worked、exercises):简短的课程讲解块、一个 worked 示例,然后是练习。

练习选择:

  • 仅用户自己的,全部:每个主题下所有用户的练习,不添加任何内容;没有练习的主题显示通知。仅用户自己的,N道:每个主题选择最佳的 N 道题——优先选择最符合考试要求的,然后考虑多样性(每种方法出现一次,难度从简单到考试级别,没有两道题测试完全相同的知识点);如果少于 N 道,则全部使用并加上 shortage 通知。
  • 50/50,全部:所有用户的练习 + 同等数量的Claude生成的练习,针对用户练习中覆盖最少的知识点进行补充。50/50,N道:一半来自用户(按上述规则选择,向上取整),一半来自Claude,风格相同。
  • 你的:优先使用课程练习,然后以相同风格创建新练习。

用户提供的解答:它们是答案要点——保留其步骤和符号,解释每个步骤(操作、原因、易错点)。缺失的步骤:补全它们,并标记 by_claude: true。检查每个解答(使用 sympy 重新计算);错误的步骤永远不要静默修正:使用 flag 标记文本和修正内容。如果没有提供解答:编写一个并验证它。

lesson-style规则(当被选中时;如果Notion页面有更多规定,则以它为准):mcq 格式,准确包含 A–D 四个选项;计算题设置 gate: true(“先在纸上解答” + “我已解答 — 显示选项”)和 free_too: true(粘贴工作过程或照片,由Claude评分);数学选项每行一个(默认布局),每行单独显示;每个错误选项都代表一种典型错误,其 why 指明错误类型;正确答案的字母应变化(同一字母不要连续出现超过两次)。

文本:使用 **加粗**,永远不要使用斜体;数学公式使用 $…$ / $$…$$;当“回忆”功能开启时,使用 [[n]] 格式的引用链接。

步骤 4 — 计划(仅当 Plano = 是时)

将设置写入 pack.json 的 plan 中(开始日期 = 今天,hours:"auto" 或具体数字,busy 天包含其他考试及其备注,weights 用于重要的主题,hours_note 使用学习包的语言),然后运行 python3 kit/plan.py pack。它会打印出当时间不足时需要削减的内容:在最终消息中说明。

步骤 5 — 构建、检查、发布

  1. python3 kit/build.py pack --out pack/out(遇到任何模式错误会停止;修正JSON,永远不要修改HTML)。
  2. python3 kit/check.py pack/out --shots 必须输出 ALL CHECKS PASSED(在 400 / 1440 px 浅色和深色模式下页面无溢出,无内容被裁剪,0个KaTeX错误,无原始 $ 符号,无JS错误,页眉和工具顺序正确,无新标签页链接,交互功能正常)。然后查看 pack/out/shots/* 中的截图(页眉、密集数学公式块、手机深色模式)。修正JSON,重新构建,再检查一次。
  3. 加载 artifact-capabilities 并声明页面使用了哪些功能:账户存储(db)和查看者身份(user)用于笔记、历史记录和进度标记;询问Claude(sample)用于辅导和评分(Sílabo、Resumo、Revisão)。Plano:仅使用 db + user。
  4. 新学习包:发布4个文件(标题来自页面,图标为“book”),将4个URL放入 pack.json 的 urls 中,重新构建,重新检查,将每个页面发布到其URL(选项卡和交叉链接需要这些URL)。更新:URL已在 pack.json 中;将每个页面发布到其 url。

完成

仅用几行说明:构建或更新了什么(卡片会包含链接)、资料中缺少的内容、练习的来源(用户/课程/Claude编写)、被标记为错误的用户解答列表(练习 + 步骤)、计划中被削减的内容以及任何无法启用的功能(辅导、账户存储)。说明一次:公式可以以LaTeX格式复制(选中并复制,或双击公式)。不重述步骤。

相关技能