关于 educates-course-design
用于规划 Educates 课程的技能,覆盖需求梳理、主题选择和工作坊计划。适合创建新课程或扩展现有课程的作者,流程会按课程规模调整,并集中跟踪任务。
主要功能
- 01按课程规模调整规划
- 02整理需求并创建课程简介
- 03按模块组织主题
- 04拆分并规划工作坊
- 05集中跟踪待办任务
适用场景
- 01规划新的 Educates 课程
- 02为现有课程添加工作坊
- 03跟踪未完成的规划工作
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ educates/ educates-course-design-skill --skill educates-course-design安装后在 Claude Code 中输入/educates-course-design确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
CLAUDE.mdREADME.mdVERSION.txt.claude/settings.local.json.github/workflows/release.yamlreferences/course-brief-reference.mdcourse-resources-reference.mdplan-authoring-guidelines.mdplanning-directory-reference.mdcourse-topics-reference.mdtask-tracking-reference.mdworkshop-breakdown-reference.mdworkshop-plan-reference.md详细介绍
Educates 课程设计技能
此技能指导 Educates 课程的设计工作。Educates 课程由一系列结构化的研讨会组成,设计过程从初步需求一直延伸到每场研讨会的详细实施计划。输出是一组规划文档,可作为研讨会创建蓝图,并配合 educates-workshop-authoring 技能使用。
工作流分为六个步骤,从明确需求逐步推进到每场研讨会的实施计划。每个步骤都会在 planning/ 目录中生成一份规划文档。集中管理的任务跟踪文件(planning/tasks.md)用于记录所有研讨会的待办工作,并会在整个工作流中持续更新。创建新课程时通常按顺序完成各步骤,但扩展现有课程时也可以从任意步骤开始(例如,跳到第 3 步规划新的研讨会,或跳到第 4 步为单场研讨会制定计划)。如果要将此技能应用于已有研讨会的项目,请参阅改造现有课程,了解如何审核现有内容并建立规划文档。对于规模较小的课程,部分步骤会简化或完全跳过;工作流会根据第 1 步确定的课程范围进行调整。
第 1 步:明确课程需求
确定课程范围
在收集详细需求之前,先了解用户设想的课程规模和结构。留意他们描述需求的方式——他们可能会说“我想围绕 X 打造一门内容全面的课程”,也可能会说“我有一个关于 Y 的想法,想做一两场研讨会”,或者介于两者之间。
根据对话判断课程范围,并提出以下一种分类:
- 聚焦型(1–3 场研讨会):一组规模较小的研讨会,也可能只是用户想要进一步完善的初步想法。采用单个模块。核心/选修模式可选。用户可能还没有完整规划;帮助他们规划当前已有的内容,并建议之后可以添加哪些内容。
- 标准型(4–10 场研讨会):由多场研讨会组成的连贯课程。包含一个或多个模块。核心/选修模式可选。默认采用简单的线性顺序;如果用户希望顺序更灵活,也可以采用核心/选修模式。
- 综合型(跨多个模块,10 场以上研讨会):结构完整的大型课程。包含多个模块。建议采用核心/选修模式,帮助学习者安排学习内容。
继续之前,先与用户确认课程范围。范围并非固定不变,之后可以调整,但它会影响工作流引入的结构量。请在课程简介中记录范围。
收集需求
向用户收集以下信息,或根据上下文进行推断:
- 主题和范围:课程涵盖哪些内容,以及内容的广度和深度
- 目标受众:课程面向哪些人,以及课程涵盖的难度范围(初级、中级、高级,或从低到高的进阶过程)
- 导航模式(仅适用于标准型和综合型):课程采用核心/选修模式(建议综合型课程采用,让学习者可以选择学习内容),还是线性顺序。聚焦型课程中的研讨会相互独立,或按简单的线性顺序排列,因此无需设置导航模式部分。
如果用户只提供了宽泛的主题,没有明确细节,请提出合理的默认方案,并在继续之前征求确认。课程简介会在开始构思主题之前,记录课程的“原因”和“内容”。
创建课程简介
创建 planning/course-brief.md。以下各部分可根据课程范围调整——仅包含相关内容:
- 课程愿景 — 课程涵盖什么内容,以及开设课程的原因。对于包含多个模块的课程,请描述课程的递进过程,以及贯穿各模块的组织主题或叙事脉络。对于主题集中的课程,只需用几段文字介绍主题内容和学习目标。
- 目标受众 — 课程面向哪些人、默认学员具备哪些先备知识,以及课程如何照顾不同经验水平的学员。
- 交付平台 — 说明课程通过 Educates 培训平台以交互式浏览器工作坊的形式交付。
- 课程结构 — 概述课程划分为哪些模块,并简要说明各模块的主题和重点。每门课程至少包含一个模块。对于只有一个模块的主题集中型课程,此部分可以简短一些——用一两句话说明模块主题即可。
- 导航模型 (仅适用于标准型和综合型课程) — 说明工作坊之间的关系。对于核心/选修型课程:说明核心和选修的含义、先修要求如何运作,以及学员如何以非线性方式进行学习。对于线性课程:说明预期的学习顺序。主题集中型课程省略此部分。
- 设计原则 — 推荐的学员交互方式(默认采用引导式体验,通过可点击操作完成;课程作者也可以选择更注重动手实践的方式,让学员自行输入代码和命令),以及针对课程的设计决策(例如如何处理概念性内容)。
- 范围与拓展路径 (仅适用于主题集中型和标准型课程) — 记录当前范围,并建议未来的拓展方向。例如:“这门主题集中型课程通过 N 个工作坊讲解 X。自然的下一步可以包括 Y 和 Z。”这有助于希望逐步构建课程、日后再回来添加工作坊的用户。
有关各部分的详细指导,请参阅 课程简介参考。
创建 AI 助手指令文件
在项目根目录中创建 AI 助手指令文件,以便后续的 AI 交互自动了解项目背景以及应使用哪些技能。对于 Claude Code,此文件为 CLAUDE.md;其他 AI 编码 Agent 使用不同的约定(例如 AGENTS.md)。
指令文件应包含:
- 指向
README.md的链接,其中包含项目概览、目录结构和导航模型 - 指向
planning/course-brief.md的链接,其中包含完整的课程愿景和设计原则 - 指向
planning/resources.md的链接,其中列出了课程精选的外部文档和参考资料——在搜索课程主题信息之前,Agent 应先查阅此文件 - 项目专属的工作坊约定,在此步骤中确立——例如工作坊命名前缀、工作坊需要启用的会话应用(终端、编辑器、Kubernetes 等)、编程语言和运行时版本,以及适用于本课程所有工作坊的其他默认设置
- 技能参考 — 说明何时调用各项技能:
- 进行课程规划(主题、工作坊划分、各工作坊计划)时,使用 educates-course-design 技能
- 处理工作坊编写相关知识时,使用 educates-workshop-authoring 技能(编写各工作坊计划和创建实际工作坊文件时均需使用)
- 设计原则 — 简要说明课程简介中选择的方法(例如完全引导式的可点击操作,或更注重动手实践的方式),并指向
planning/course-brief.md以了解详情
此文件应聚焦于 AI 专属指令和项目专属覆盖规则。不要重复 README.md 或 planning/course-brief.md 中已有的内容——请改为引用这些文件。
开始创建课程资源文件
创建 planning/resources.md,用于追踪课程设计过程中发现的、与课程主题内容相关的外部文档、参考资料和学习材料。该文件是一份持久维护的精选资源目录,可跨会话保留——当对话上下文被清除、工作稍后恢复时,Agent 可以查阅此文件,而不必再次搜索相同资源。
此文件用于记录课程所教主题的相关资源(例如,语言文档、框架指南、API 参考资料、教程),而不是 Educates 平台文档。关于 Educates 工作坊结构、配置和编写规范的知识由 educates-course-design 和 educates-workshop-authoring 技能提供——无需在资源文件中重复记录。
在需求收集阶段,你通常会研究课程主题,以了解其范围并评估可行性。**每当网页搜索或网页抓取找到有用资源——文档页面、教程、API 参考资料、指南——都要立即将其添加到此文件中。**不要依赖对话上下文来保留信息;将其记录在文件中,以便在未来的会话中使用。
使用步骤 1 中找到的资源开始创建此文件。随着在主题构思(步骤 2)、工作坊拆分(步骤 3)和详细规划(步骤 4)中发现更多资源,文件内容会不断扩充。
课程作者可随时查看和编辑此文件,以修正版本、标记过时内容或添加偏好的替代资源。文件末尾的整理备注部分用于记录这些修改。
有关文件结构、条目格式和维护规范,请参阅 课程资源参考。
步骤 2:构思并整理主题
此步骤会根据课程范围灵活调整:
- 聚焦型:此步骤为可选。如果用户已经确定 1–3 个工作坊的内容,则直接跳到步骤 3(如果只有一个工作坊,则跳到步骤 4)。如果用户希望构思要涵盖的主题或探索扩展方向,则创建一份简要的主题列表,无需追求面面俱到。
- 标准型:与用户共同确定课程将涵盖的主题,并记录未来扩展的想法。目标是覆盖计划范围并记录扩展方向,而不是罗列该主题可能包含的所有内容。
- 全面型:全面列出课程可能涵盖的主题,并将其整理到课程简介中定义的模块里。目标是完整覆盖——宁可多列一些主题,之后再精简。
此步骤需要协作并反复迭代——AI 根据课程愿景提出主题,由用户进行完善、添加、删除和重新排序。主题列表是一份清单,并不与工作坊一一对应。两者的对应关系将在步骤 3 中确定。
在构思主题时,你通常会研究外部文档,以了解有哪些主题、这些主题如何运作,以及哪些内容适合作为动手练习。将发现的有用资源添加到 planning/resources.md,并在条目中注明相关的主题编号。
创建主题文档
创建 planning/course-topics.md,内容包括:
- 按模块组织的主题(适用于包含多个模块的课程),或采用扁平编号列表(适用于只有一个模块的课程)——每个主题都有一个标题(带编号以便引用),以及描述其涵盖内容的项目符号列表。
- 主题选择备注——标注以下内容:
- 主要偏重概念、可能需要并入相邻实践主题的主题
- 代码结构相似、适合作为选修内容的主题集群(适用于采用核心/选修模式的课程)
- 未来扩展想法——用户目前不打算讲授、但以后可能想要添加的主题(对聚焦型和标准型课程尤其有价值)
- 其他有助于指导如何将主题映射到工作坊的观察
多个主题可以合并到一个工作坊中,也可以将一个大型主题拆分到多个工作坊中。这种映射在第 3 步完成。
详细指南请参阅 课程主题参考。
第 3 步:规划工作坊结构
将第 2 步中的主题(如果跳过第 2 步,则将用户提出的工作坊构想)映射到具体工作坊。
创建工作坊结构
为每个模块创建一个文件,命名为 planning/course-module-X.md,其中 X 是小写字母(例如,course-module-a.md、course-module-b.md)。模块使用字母(A、B、C 等)而非数字标识。对于只有一个模块的聚焦型和标准型课程,请创建 planning/course-module-a.md。
每个文件开头应包含:
- 简短介绍,说明主题如何映射到工作坊(聚焦型课程则说明每个工作坊涵盖的内容)
- 工作坊结构约定部分,定义每个工作坊条目包含哪些内容
随后描述每个工作坊,包括:
- 涵盖的主题——涉及
course-topics.md中的哪些主题(如果跳过第 2 步,则省略) - 类型(仅适用于采用核心/选修模式的课程)——核心(必修、按顺序进行)或选修(可选,满足先修条件后可按任意顺序学习)
- 先修条件——必须先完成哪些工作坊(明确列出,不要依赖暗示)。对于顺序简单的聚焦型课程,只需写“上一个工作坊”或“无”。
- 学习目标——学习者完成工作坊后将能够做什么
- 叙事脉络——从开始到结束的进展安排
- 代码练习——具体的动手活动,描述应足够详细,以便评估工作坊是否有足够的互动内容
- 关键代码示例——所需代码的类型(不需要完整实现,但应足以评估其可行性)
创建第 4 步中的各工作坊计划时,请在模块文件的每个工作坊条目中添加一个详细计划链接。链接使用相对于 workshop-plans/ 子目录的路径:
### Workshop A01: Workshop Title
**Detailed plan:** [workshop-plans/lab-a01-workshop-name.md](workshop-plans/lab-a01-workshop-name.md)
**Directory name:** `lab-a01-workshop-name`
工作坊名称采用 lab-{code}-{descriptive-name} 格式,其中 code 是模块字母加上两位零填充的工作坊编号(例如,a01、a02、b01)。这样,工作坊在课程中的位置会体现在名称中,确保文件在目录列表中按模块和顺序排序,并使交叉引用清晰明确。
对于聚焦型和标准型课程,请在模块文件末尾添加未来扩展想法部分,提出课程的发展方向——用户之后可能添加的主题或工作坊。这有助于课程逐步完善。
详细指南请参阅 工作坊结构参考。
第 4 步:创建各工作坊的详细计划
为第 3 步中定义的每个工作坊创建详细实施计划,作为创建工作坊的蓝图。
编写计划之前
加载 workshop-authoring 知识:在一个会话中编写第一个计划之前,调用 educates-workshop-authoring 技能,加载其关于 Educates workshop 结构的知识。这并不意味着要创建 workshop 文件,而是要掌握该创作技能的知识,以便计划使用正确的可点击操作类型、切实可行的 YAML 配置选项、恰当的页面结构惯例,以及准确的练习文件布局。该创作技能的知识可确保计划能够直接实施,而不是停留在设想层面。
查阅课程资源:阅读 planning/resources.md,了解与 workshop 主题相关的外部文档和参考资料。直接使用其中列出的资源,而不要重新搜索设计前期步骤中已找到的信息。如果在编写计划时发现其他资源,请立即将其添加到文件中,并注明相关的 workshop 名称。查看整理说明部分,了解课程作者记录的版本修正或首选替代方案。
对于在顺序链中有前置 workshop 的 workshop(核心 workshop,或在线性序列中紧跟另一个 workshop 的任何 workshop):编写新计划前,务必阅读紧邻其前的 workshop 计划,以及这两个 workshop 的拆分说明。这样可以确保内容连贯,避免不必要的重复。
对于选修 workshop:阅读模块文件中列出的核心先修内容,但不要假设学员已完成其他任何选修 workshop。
对于独立 workshop 或课程中的第一个 workshop:无需阅读先前的计划。
创建 Workshop 计划
在 planning/workshop-plans/ 中创建计划文件,文件名与 workshop 目录匹配(例如,为将放在 workshops/lab-a01-first-decorator/ 中的 workshop 创建 planning/workshop-plans/lab-a01-first-decorator.md)。
每份计划都遵循标准的 8 个部分:
- Workshop 元数据 — 名称、标题、描述、时长、难度、类型、先修条件
- Workshop 配置 — 所需的会话应用和任何特殊设置
- 学习目标 — 与模块文件(唯一事实来源)保持一致
- 与前一个 Workshop 的衔接 — 学员已掌握的知识,以及不应重复讲授的内容。有前置 workshop 时需详细说明;独立 workshop 或第一个 workshop 可省略此部分。
- 要创建的练习文件 —
exercises/下的每个文件,包含文件名、用途和初始内容 - Workshop 指导页面 — 按页面列出内容大纲和可点击操作类型
- 终端工作目录跟踪 — 起始目录,以及 workshop 期间目录的所有变更
- 设计说明 — 设计决策、理由,以及为后续 workshop 刻意设置的内容。对于聚焦型课程,注明扩展思路,即未来的 workshop 可以如何基于此处确立的模式继续构建。
创建计划后,在模块文件中该 workshop 对应的条目添加 Detailed plan 链接(见第 3 步)。
跟踪已知问题
创建工作坊计划后,如果存在已知问题、待解答的问题或标记为需要后续关注的事项,请将其添加为 planning/tasks.md 中的任务。如果文件尚不存在,请创建该文件。
规划过程中常见的任务包括:
- 需要在实施过程中验证的设计决策
- 设计说明中提到、需要跟踪的有意留白
- 标记为可能需要修订的练习文件或页面
- 计划中作出、需要核实的假设
在模块文件中该工作坊的条目,以及计划的 Workshop Metadata 部分中,添加一行 Status,并链接到 tasks.md 中该工作坊的部分。
请参阅 任务跟踪参考,了解文件结构、任务格式和优先级。
请参阅 工作坊计划参考了解完整结构,并参阅 计划编写指南了解连续工作坊流程、有意留白、选修内容的独立性等方面的约定和其他指南。
步骤 5:实施工作坊
每个工作坊的计划就绪后,交由 educates-workshop-authoring 技能创建实际的工作坊文件。
开始实施前,请阅读 planning/resources.md,了解设计阶段整理的外部文档和参考资料。这些资料已在前面的步骤中收集并审核——请先查阅它们,而不是从头开始搜索网络。查看整理备注部分,了解课程作者标注的版本更正或首选替代方案。如果在实施过程中发现新的资料,请将其添加到该文件中。
对于每个要实施的工作坊:
- 阅读
planning/workshop-plans/中对应工作坊的计划 - 调用 educates-workshop-authoring 技能
- 计划是实施蓝图——其中规定了练习文件、页面结构、可点击操作类型和终端模式
- 编写技能负责 Educates 特有的实施细节(YAML 配置、可点击操作语法、页面结构、验证清单)
工作坊文件应创建在 workshops/ 目录中,与 planning/ 目录分开。
更新任务跟踪
实施工作坊后,请根据计划检查实施结果,并更新 planning/tasks.md:
- 如果实施已解决既有任务,将其标记为已完成(
[x]) - 如果计划与实际实施之间存在差距(例如练习被简化、页面被推迟、可点击操作无法按计划实现),请添加新任务
- 如果实施过程中发现外部库或工具的行为与文档不符,请将调查情况(尝试了什么、为何失败、采用的变通方案,以及适用时的上游参考)作为子项记录在任务下——格式和示例请参阅 任务跟踪参考
- 更新模块文件和计划中该工作坊的 Status 行,以反映当前状态
更新规划文档
当实现与计划有较大差异时,应更新规划文档,以反映实际完成的内容。计划应描述实际构建的设计,而不只是最初的意图——后续工作坊会阅读前序计划,过时的计划会导致错误的假设。
出现以下情况时,更新工作坊计划文件(planning/workshop-plans/lab-*.md):
- 方法或技术发生变化(例如,从基于类切换为基于函数)
- 新增、移除、重新排序页面,或更改页面主题
- 练习文件与计划中的指定内容不同
- 根据实际可实现的内容调整了学习目标
确保页面文件名与其内容一致。如果页面主题在实现过程中发生变化,应重命名文件以匹配(例如,03-old-topic.md → 03-new-topic.md),并更新计划中的页面列表,使用新文件名。
如果更改影响工作坊的学习目标或叙事脉络,还应更新模块文件(course-module-X.md)中的工作坊条目,使其保持准确。
对于连续的工作坊,还应检查后续工作坊计划或实现是否引用了发生变化的内容。后续工作坊的“与前一工作坊的联系”部分、练习文件或叙事线索可能依赖原有方法——请检查并更新这些内容,确保整个系列衔接顺畅。
步骤 6:验证一致性
定期检查规划文档与生成的工作坊是否一致。在创建多个工作坊后,或中断一段时间后重新开始项目时,这尤其有用。以下检查项可根据课程范围调整——不适用的检查项可跳过。
检查内容
规划文档一致性:
- 模块文件(
course-module-X.md)中列出的所有工作坊,在workshop-plans/中都有对应的计划文件 - 工作坊条目中引用的主题都存在于
course-topics.md中 (如果没有主题文档,则跳过) - 计划和工作坊文件中引用的先修内容,确实已在定义的工作坊中涵盖
- 对于连续的工作坊:叙事链条衔接连贯——每个工作坊的摘要都能承接到下一个工作坊 (独立工作坊可跳过)
实现一致性(适用于已创建的工作坊):
- 已完成工作坊的所有计划文件,在
workshops/下都有对应目录 - 工作坊目录名称与计划文件中的名称一致
- 计划中列出的练习文件存在于工作坊的
exercises/目录中 - 工作坊计划中的页面列表与工作坊
content/目录中的实际页面文件一致(包括文件名、顺序和主题) - 页面文件名能反映其内容——没有因先前方法而遗留的文件名
交叉引用完整性:
- 工作坊文件中的“详细计划”链接指向路径正确的现有文件
- 规划文档之间的文件引用使用当前名称(没有重命名后遗留的旧引用)
任务跟踪一致性 (如果存在 tasks.md):
tasks.md中的工作坊状态值与各工作坊的实际状态一致- 模块文件条目和计划文件中的状态行链接到
tasks.md中正确的锚点 - 已完成的任务(
[x])确实反映了已解决的问题 - 没有已修复问题的过时任务遗留
扩展路径 (适用于精简版和标准版课程):
- 模块文件和课程简介中的未来扩展建议仍然适用,且未被实际创建的工作坊取代
将发现的问题记录为任务
将验证期间发现的问题记录为 planning/tasks.md 中的任务,而不只是通过对话报告。这可以确保问题得到跟踪并在之后处理,尤其是在休息一段时间后重新回到项目时。
- 为发现的每个问题添加任务,并设置适当的优先级
- 更新工作坊的 Status 行,反映验证结果
- 在对话中汇总结果,并引用创建的任务
如果 planning/tasks.md 尚不存在,则在发现问题时创建该文件。如果没有发现问题,则无需创建任务文件。
随时处理任务
用户可以随时询问“我接下来应该做什么?”。此时,请查阅 planning/tasks.md,并根据优先级(优先处理 P1)、工作坊状态(优先处理状态最差的工作坊)以及顺序依赖关系(优先处理依赖链中较早的工作坊)推荐任务。用户也可以在常规工作流步骤之外随时添加任务,并为其设置适当的优先级。
为现有课程补充规划
如果将此技能应用于已包含工作坊(位于 workshops/ 目录中)、但缺少规划文档或规划文档不完整的项目,请主动提出审核现有工作坊并补齐规划材料。
检查现有内容
在会话开始时,如果项目中存在包含工作坊子目录的 workshops/ 目录,请检查是否存在对应的规划文档:
planning/workshop-plans/中是否为每个现有工作坊都准备了工作坊计划文件?- 是否存在工作坊拆分文件(
planning/course-module-X.md)? - 是否存在
planning/tasks.md?
如果存在工作坊,但规划文档缺失或不完整,请主动提出审核现有工作坊并创建缺失的规划材料,包括任务文件。
审核现有工作坊
审核现有工作坊时,请评估每个工作坊的完整性:
- 工作坊结构:是否包含
workshop.yaml、说明页面和练习文件? - 说明页面:所有页面是否齐全且内容充实,还是有些页面只是占位内容或缺失?
- 练习文件:练习内容是否与说明页面配套,还是存在缺漏?
- 可点击操作:这些操作是否格式正确且可正常使用?
- 叙事流程:对于按顺序进行的工作坊,叙事链条是否连贯?
根据评估结果,为每个工作坊指定一个状态:大体完整、需要适度修补、不完整或严重不完整;并将发现的具体问题填入 planning/tasks.md。每项任务都应包含指向相关文件的源链接。
在规划中纳入工作坊现状
为包含现有工作坊的课程创建或更新规划文档时:
- 工作坊拆分应反映现有工作坊的实际状态,而不只是预期设计。对于已知存在问题的工作坊,请添加 Status 行。
- 对于已有工作坊,其单独的工作坊计划应说明已有内容和需要修改的部分,而不是把工作坊描述成从头开始构建。
- 课程简介应说明已有工作,并将规划工作定位为对现有内容的扩展或改进。
请注意,现有工作坊可能仍在开发中。目标是准确记录其当前状态,以便任务跟踪能够帮助它们完成,而不是用已完成的标准来评判它们。
处理现有命名约定
使用现有课程时,请先确定其采用的命名约定,再进行更改。
检测命名约定
检查是否存在 planning/course-module-*.md 文件:
- 字母命名约定(当前): 文件名类似
course-module-a.md,工作坊名称类似lab-a01-workshop-name。这是当前约定——所有新内容都应使用此约定。 - 数字命名约定(旧版): 文件名类似
course-module-1.md,工作坊名称类似lab-workshop-name(不含工作坊代码)。这是之前使用的约定。
新课程始终使用字母命名约定。新课程不能选择数字命名约定。
处理旧版课程
如果现有课程使用数字命名约定,请始终保持一致。不要在同一课程中混用不同约定——在数字命名的工作坊旁添加字母命名的工作坊会造成混乱。
扩展旧版课程时:
- 继续将模块编号为
course-module-N.md - 继续使用不带工作坊代码的
lab-workshop-name - 遵循所有其他当前指南(结构、交叉引用等)
从数字命名约定迁移到字母命名约定
仅在用户明确提出请求时才进行迁移。继续操作前,请说明:
- 部署影响: 重命名工作坊会更改其在 TrainingPortal 定义、URL 和所有外部引用中的名称。引用工作坊名称的现有部署将会失效。
- 仓库历史: 虽然
git mv会保留历史记录,但此次重命名会影响所有下游引用。
继续操作前,请获得明确确认。
迁移包括:
文件重命名(使用 git mv 保留历史记录):
planning/course-module-N.md→planning/course-module-X.md(其中 N 映射到对应字母:1→a、2→b 等)- 工作坊计划文件:
planning/workshop-plans/lab-name.md→planning/workshop-plans/lab-X01-name.md - 工作坊目录:
workshops/lab-name/→workshops/lab-X01-name/
规划文件内容更新:
- 模块标题:"Module 1" → "Module A"、"Module 2" → "Module B" 等
- 工作坊标题:"### Workshop 1:" → "### Workshop A01:",根据每个模块中的当前顺序分配
- 工作坊名称字段:
lab-name→lab-a01-name - 所有交叉引用链接和锚点(详细计划链接、状态链接、任务锚点)
- 前置条件:"Workshop 1: Title" → "Workshop A01: Title"
course-topics.md中的主题编号:从跨模块连续编号改为每个模块从 1 重新开始;更新模块标题以使用字母
工作坊文件内容更新:
- 工作坊元数据(
resources/workshop.yaml):更新metadata.name - 工作坊资源定义:更新工作坊名称
- 工作坊说明内容:更新文本交叉引用(例如,"as shown in Workshop 1" → "as shown in Workshop A01")
项目根目录文件更新:
README.md:更新模块引用和工作坊名称CLAUDE.md(或同等文件):更新所有对规划文件名或工作坊名称的引用
迁移后,请确认规划文件或工作坊内容中不再存在对旧数字命名约定的引用。
从 Parts/Spine 迁移到 Modules/Core
如果现有课程仓库使用较旧的“parts”和“spine”术语,请按照本指南将其更新为当前的“modules”和“core”约定。
文件重命名
使用 git mv 保留历史记录:
| 旧名称 | 新名称 |
|---|---|
planning/part-N-workshops.md | planning/course-module-X.md(其中 X 为对应字母:1→a、2→b 等) |
planning/workshops.md(如果存在) | planning/course-module-a.md |
规划文件中的内容更新
重命名文件后,更新以下文件中的内容:
planning/course-brief.md:
- 在 Course Structure 部分以及任何提及章节的地方,将 “Part N” → “Module X”(其中 X 为对应的字母)
- 如果 Navigation Model 部分使用了 “spine”,则将 “spine” → “core”
planning/course-topics.md:
- 章节标题:“## Part N —” → “## Module X —”(其中 X 为对应的字母)
- 主题编号:每个模块都从 1 重新开始编号,而不是在所有模块中连续编号
planning/course-module-X.md(重命名后的工作坊拆解文件):
- 章节标题:“## Spine Workshops” → “## Core Workshops”
- 工作坊标题:“### Workshop N:” → “### Workshop X01:”(使用模块字母和补零编号)
- 工作坊类型字段:“Type: Spine” → “Type: Core”(“Type — Spine”也改为“Type — Core”)
- 所有将 “spine/elective” 作为正文表述的地方 → “core/elective”
- 如果标题中提到 “Part N”,则更新为 “Module X”
planning/tasks.md:
- 章节标题:“## Part N:” → “## Module X:”
- 工作坊章节标题:更新为包含工作坊代码
planning/workshop-plans/ 中的工作坊计划文件:
- Workshop Metadata 中的类型字段:“spine” → “core”
- 名称字段:在
lab-前缀后添加工作坊代码(例如,lab-name→lab-a01-name) - 将对
part-N-workshops.md的引用替换为course-module-X.md - 将正文中提及 “spine” 工作坊的地方改为 “core” 工作坊
- 重命名计划文件以包含工作坊代码(例如,
lab-name.md→lab-a01-name.md)
项目根目录文件中的内容更新
README.md:
- 将章节标题 “Course Parts” → “Course Modules”
- 将 “Part N — Title” → “Module X — Title”
- 将对
planning/part-N-workshops.md的引用替换为planning/course-module-X.md - 将 “spine” → “core”
CLAUDE.md(或同等的 AI 助手说明文件):
- 将所有提及 “spine” 或 “parts” 的地方分别改为 “core” 和 “modules”
- 更新所有对规划文件名的引用
工作坊文件中的内容更新
重命名工作坊目录以包含工作坊代码:workshops/lab-name/ → workshops/lab-a01-name/
更新工作坊元数据和资源文件:
- 在
resources/workshop.yaml中,为metadata.name添加工作坊代码 - 如果适用,将
type: spine→type: core - 更新工作坊说明内容中的所有文本交叉引用(例如,“as shown in Workshop 1” → “as shown in Workshop A01”)
迁移后的验证
完成迁移后,验证以下内容:
grep -ri "spine" planning/无结果(有意说明术语变更的备注除外)grep -ri "part-[0-9]" planning/无结果ls planning/part-*无结果(所有文件均已重命名)ls planning/workshops.md无结果(已重命名为course-module-a.md)- 所有工作坊名称都包含工作坊代码(例如,
lab-a01-name,而不是lab-name) - 规划文件中的所有交叉引用链接均有效(尤其是从工作坊拆解条目指向计划文件,以及从计划文件指向
tasks.md的链接)
规划目录结构
所有规划文档都位于项目根目录下的 planning/ 目录中。
planning/
├── course-brief.md # Step 1: Course vision, scope, and requirements
├── resources.md # Step 1: External references and documentation
├── course-topics.md # Step 2: Topics organized by module
├── course-module-a.md # Step 3: Module A workshop breakdown
├── course-module-b.md # Step 3: Module B (when applicable)
├── tasks.md # Task tracking (created when issues emerge)
└── workshop-plans/ # Step 4: Per-workshop detailed plans
├── lab-a01-first-workshop.md
├── lab-a02-second-workshop.md
└── ...
对于单模块课程,只需使用 course-module-a.md。无论课程包含多少个模块,目录布局都相同。
项目根目录下与 planning/ 同级的 workshops/ 目录,用于存放在步骤 5 中创建的实际 Educates 工作坊实现。
请参阅规划目录参考,了解文件命名约定和交叉引用链接模式。
参考指南
如需了解特定主题的详细指南,请参阅:
- 规划目录参考 — 目录结构、文件命名约定和交叉引用链接模式
- 课程概要参考 — 课程概要应包含的内容,以及各部分的编写指南
- 课程资源参考 — 如何跟踪课程设计过程中发现的外部文档和参考资料
- 课程主题参考 — 如何构思、组织和注释主题
- 研讨会拆分参考 — 如何将主题划分为研讨会,并为其设置目标、先决条件和分类
- 研讨会计划参考 — 单个研讨会实施计划的标准 8 部分结构
- 计划编写指南 — 关于研讨会的顺序安排、合理留白、选修内容的独立性以及其他计划编写规范
- 任务跟踪参考 — 任务文件结构、状态值、优先级和生命周期规范
技能版本
当用户询问技能版本时,请读取 VERSION.txt 文件并将其内容告知用户。
获取帮助
如需了解 Educates 的更多信息,请访问 Educates 文档:https://docs.educates.dev/