重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
educates-course-design by educates/educates-course-design-skill
npx skills add https://github.com/educates/educates-course-design-skill --skill educates-course-design本技能指导 Educates 课程的设计,课程是由多个工作坊组成的结构化集合,涵盖从初始需求到每个工作坊详细实施计划的完整流程。输出是一套规划文档,作为使用 educates-workshop-authoring 技能创建工作坊的蓝图。
工作流程包含六个步骤,从建立需求到制定每个工作坊的实施计划。每个步骤都会在 planning/ 目录中生成一份规划文档。一个集中的任务跟踪文件 (planning/tasks.md) 用于记录跨工作坊的待办工作,并在整个工作流程中更新。对于新课程,这些步骤通常按顺序执行,但在扩展现有课程时,可以从任何步骤开始(例如,跳转到步骤 3 来规划新工作坊,或跳转到步骤 4 为单个工作坊创建计划)。当将此技能应用于已有工作坊的项目时,请参阅“改造现有课程”部分,了解如何审计现有工作和引导规划文档。对于较小的课程,某些步骤会被简化或完全跳过——工作流程会根据步骤 1 中确定的课程范围进行调整。
在收集详细需求之前,先了解用户设想的规模和结构。倾听他们如何描述需求——他们可能会说“我想建立一个关于 X 的综合课程”或“我有关于 Y 的一两个工作坊的想法”,或者介于两者之间的任何描述。
根据对话评估范围,并提出以下分类之一:
在继续之前与用户确认范围。范围并非一成不变——后续可以修订——但它决定了工作流程引入多少结构。将范围记录在课程简报中。
从用户处收集以下信息或根据上下文推断:
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
如果用户提供了广泛的主题但没有明确的细节,请提出合理的默认值并在继续之前确认。课程简报在头脑风暴任何主题之前,捕获课程的“为什么”和“是什么”。
创建 planning/course-brief.md。以下部分会根据课程范围进行调整——仅包含相关部分:
有关每个部分的详细指导,请参阅 课程简报参考。
在项目根目录创建一个 AI 助手指令文件,以便未来的 AI 交互能自动了解项目上下文以及使用哪些技能。对于 Claude Code,此文件是 CLAUDE.md;其他 AI 编码代理使用不同的约定(例如 AGENTS.md)。
指令文件应包含:
README.md 的指针,用于项目概述、目录结构和导航模型planning/course-brief.md 的指针,用于完整的课程愿景和设计原则planning/resources.md 的指针,作为课程外部文档和参考资料的精选列表——代理在搜索网络获取课程主题信息之前应查阅此文件planning/course-brief.md 获取详细信息保持此文件专注于 AI 特定指令和项目特定的覆盖。不要复制 README.md 或 planning/course-brief.md 中已有的内容——而是引用这些文件。
创建 planning/resources.md,用于跟踪与课程主题相关的外部文档、参考资料和学习材料,这些是在课程设计过程中发现的。此文件作为一个持久的、精选的注册表,跨越会话保存——当对话上下文被清除且稍后恢复工作时,代理可以查阅此文件,而不是重新搜索相同的资源。
此文件用于课程教授主题的资源(例如,语言文档、框架指南、API 参考、教程),而不是用于 Educates 平台文档。关于 Educates 工作坊结构、配置和创作约定的知识由 educates-course-design 和 educates-workshop-authoring 技能提供——无需在资源文件中复制这些内容。
在需求收集过程中,您通常会研究课程主题以了解其范围并评估可行性。每当网络搜索或网络获取产生有用的资源时——文档页面、教程、API 参考、指南——立即将其添加到此文件中。 不要依赖信息保留在对话上下文中;将其记录在文件中,以便在未来的会话中可用。
用步骤 1 中找到的任何资源启动文件。随着在工作流程中主题头脑风暴(步骤 2)、工作坊分解(步骤 3)和详细规划(步骤 4)过程中发现更多资源,此文件将不断增长。
课程作者可以随时查看和编辑此文件,以更正版本、标记过时材料或添加首选替代方案。文件末尾的精选注释部分记录了这些更正。
有关文件结构、条目格式和维护约定的信息,请参阅 课程资源参考。
此步骤根据课程范围进行调整:
此步骤是协作和迭代的——AI 根据课程愿景提出主题,用户进行细化、添加、删除和重新排序。主题列表是一个清单,而不是与工作坊的一对一映射。该映射在步骤 3 中进行。
在主题头脑风暴期间,您通常会研究外部文档以了解存在哪些主题、它们如何运作以及什么会成为好的动手练习。将发现的任何有用资源添加到 planning/resources.md,并用它们相关的主题编号注释条目。
创建 planning/course-topics.md,包含:
多个主题可能合并到一个工作坊中,或者一个大型主题可能拆分到多个工作坊中。该映射在步骤 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},其中代码是模块字母和一个两位数的零填充工作坊编号(例如 a01、a02、b01)。这将其在课程中的位置嵌入其名称中,确保文件在目录列表中按模块和顺序排序,并使交叉引用明确无误。
对于聚焦型和标准型课程,在模块文件末尾包含一个未来扩展想法部分,建议增长方向——用户未来可能添加的主题或工作坊。这支持增量课程开发。
有关详细指导,请参阅 工作坊分解参考。
对于步骤 3 中定义的每个工作坊,创建一个详细的实施计划,作为工作坊创建的蓝图。
加载工作坊创作知识:在会话中编写第一个计划之前,调用 educates-workshop-authoring 技能以加载其关于 Educates 工作坊结构的知识。这并不意味着创建工作坊文件——而是拥有创作技能的知识,以便计划使用正确的可点击操作类型、现实的 YAML 配置选项、适当的页面结构约定和准确的练习文件布局。创作技能的知识确保计划是可供实施的,而不是空想的。
查阅课程资源:阅读 planning/resources.md,了解与工作坊主题相关的外部文档和参考资料。直接使用列出的资源,而不是重新搜索网络以获取在设计早期步骤中已经找到的信息。如果在编写计划时发现了其他资源,请立即将其添加到文件中,并注释它们相关的工作坊名称。检查精选注释部分,了解课程作者已指出的任何版本更正或首选替代方案。
对于在顺序链中具有前驱的工作坊(核心工作坊,或线性序列中跟随另一个工作坊的任何工作坊):在编写新计划之前,务必阅读紧接前一个工作坊的计划(以及两个工作坊的工作坊分解描述)。这确保了连续性并防止不必要的重叠。
对于选修工作坊:阅读模块文件中列出的核心先决条件,但不要假设任何其他选修工作坊已完成。
对于独立工作坊或课程中的第一个工作坊:无需阅读先前的计划。
在 planning/workshop-plans/ 中创建计划文件,命名与工作坊目录匹配(例如,对于将位于 workshops/lab-a01-first-decorator/ 的工作坊,创建 planning/workshop-plans/lab-a01-first-decorator.md)。
每个计划遵循标准的 8 部分结构:
exercises/ 下的每个文件,包括文件名、用途和初始内容创建计划后,将详细计划链接添加到模块文件中的工作坊条目(参见步骤 3)。
创建工作坊计划后,如果存在已知问题、未决问题或标记为需要未来关注的领域,请将它们作为任务添加到 planning/tasks.md 中。如果文件尚不存在,则创建它。
规划期间识别的常见任务包括:
将状态行添加到模块文件中的工作坊条目以及计划的“工作坊元数据”部分,链接到 tasks.md 中该工作坊的部分。
有关文件结构、任务格式和优先级级别的信息,请参阅 任务跟踪参考。
一旦存在每个工作坊的计划,就移交给 educates-workshop-authoring 技能来创建实际的工作坊文件。
在开始实施之前,阅读 planning/resources.md,了解在设计阶段收集的外部文档和参考资料。这些资源已在早期步骤中收集和审查——首先查阅它们,而不是从头开始搜索网络。检查精选注释部分,了解课程作者已指出的版本更正或首选替代方案。如果在实施过程中发现了新资源,请将其添加到文件中。
对于每个要实施的工作坊:
planning/workshop-plans/ 读取每个工作坊的计划工作坊文件创建在 workshops/ 目录中,与 planning/ 目录分开。
实施工作坊后,根据计划审查结果并更新 planning/tasks.md:
[x])当实施与计划有显著差异时,更新规划文档以反映实际构建的内容。计划应描述实际构建的设计,而不仅仅是原始意图——顺序中的未来工作坊会读取前一个计划,而过时的计划会导致错误的假设。
在以下情况下更新工作坊计划文件 (planning/workshop-plans/lab-*.md):
保持页面文件名与其内容一致。如果页面主题在实施过程中发生变化,请重命名文件以匹配(例如 03-old-topic.md → 03-new-topic.md),并更新计划的页面列表以反映新文件名。
如果更改影响了工作坊的学习目标或叙事弧,还要更新模块文件 (course-module-X.md) 中的工作坊条目,以保持其准确性。
对于顺序工作坊,还要检查后续工作坊计划或实施是否引用了任何已更改的内容。后续工作坊的“与先前工作坊的连接”部分、练习文件或叙事钩子可能假设了原始方法——审查并更新它们,以保持序列的连贯性。
定期检查规划文档和生成的工作坊之间的一致性。这在创建多个工作坊后或中断后返回项目时特别有用。以下检查根据课程范围进行调整——跳过不适用的检查。
规划文档一致性:
course-module-X.md) 中列出的所有工作坊在 workshop-plans/ 中都有对应的计划文件course-topics.md 中 (如果没有主题文档,则跳过)实施一致性(对于已创建的工作坊):
workshops/ 下都有对应的目录exercises/ 目录中content/ 目录中的实际页面文件匹配(文件名、顺序和主题)交叉引用完整性:
任务跟踪一致性 (如果 tasks.md 存在):
tasks.md 中的工作坊状态值与每个工作坊的实际状态一致tasks.md 中的正确锚点[x]) 准确反映了已解决的问题增长路径 (聚焦型和标准型课程):
将验证过程中发现的问题作为任务记录在 planning/tasks.md 中,而不仅仅是在对话中报告。这确保发现的问题被跟踪,并且可以在以后解决,尤其是在中断后返回项目时。
如果 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。在每个任务中包含指向相关文件的源链接。
为具有现有工作坊的课程创建或更新规划文档时:
请注意,现有工作坊可能是进行中的工作。目标是准确捕获其当前状态,以便任务跟踪可以指导它们完成,而不是根据完成的标准来评判它们。
在处理现有课程时,在做出更改之前检测正在使用的命名约定。
检查现有的 planning/course-module-*.md 文件:
course-module-a.md,工作坊名称如 lab-a01-workshop-name。这是当前约定——所有新工作都使用它。course-module-1.md,工作坊名称如 lab-workshop-name(无工作坊代码)。这是先前的约定。新课程始终使用基于字母的约定。没有选项可以以数字约定开始新课程。
如果现有课程使用数字约定,继续一致地使用它。不要在课程内混合约定——在数字约定旁边添加基于字母的工作坊名称会造成混淆。
扩展遗留课程时:
course-module-N.mdlab-workshop-name,不带工作坊代码仅在用户明确请求时才进行迁移。在继续之前,警告:
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.mdworkshops/lab-name/ → workshops/lab-X01-name/规划文件内容更新:
lab-name → lab-a01-namecourse-topics.md 中的主题编号:从跨模块顺序编号更改为每个模块从 1 重新开始;将模块标题更新为使用字母工作坊文件内容更新:
resources/workshop.yaml):更新 metadata.name项目根文件更新:
README.md:更新模块引用和工作坊名称CLAUDE.md(或等效文件):更新对规划文件名或工作坊名称的任何引用迁移后,验证规划文件或工作坊内容中是否没有对旧数字约定的引用。
如果现有课程仓库使用较旧的“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:
planning/course-topics.md:
planning/course-module-X.md(重命名后的工作坊分解文件):
planning/tasks.md:
planning/workshop-plans/ 中的工作坊计划文件:
lab- 前缀后添加工作坊代码(例如 lab-name → lab-a01-name)part-N-workshops.md 的引用 → course-module-X.mdlab-name.md → lab-a01-name.md)README.md:
planning/part-N-workshops.md 的引用 → planning/course-module-X.mdCLAUDE.md(或等效的 AI 助手指令文件):
重命名工作坊目录以包含工作坊代码:workshops/lab-name/ → workshops/lab-a01-name/
更新工作坊元数据和资源文件:
resources/workshop.yaml 中的 metadata.name:添加工作坊代码type: spine → type: core完成迁移后,验证:
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 # 步骤 1:课程愿景、范围和需求
├── resources.md # 步骤 1:外部参考资料和文档
├── course-topics.md # 步骤 2:按模块组织的主题
├── course-module-a.md # 步骤 3:模块 A 工作坊分解
├── course-module-b.md # 步骤 3:模块 B(如适用)
├── tasks.md # 任务跟踪(在问题出现时创建)
└── workshop-plans/ # 步骤 4:每个工作坊的详细计划
├── lab-a01-first-workshop.md
├── lab-a02-second-workshop.md
└── ...
对于单模块课程,只有 course-module-a.md。无论课程有多少个模块,布局都是相同的。
workshops/ 目录(位于项目根目录,与 planning/ 并列)保存步骤 5 中创建的实际 Educates 工作坊实现。
有关文件命名约定和交叉引用链接模式的信息,请参阅 规划目录参考。
有关特定主题的详细指导,请参阅:
当被问及技能版本时,读取 VERSION.txt 文件并将其内容报告给用户。
有关 Educates 的更多信息,请访问 Educates 文档:https://docs.educates.dev/
每周安装次数
56
仓库
首次出现
202
This skill guides the design of Educates courses, which are structured collections of workshops, from initial requirements through to detailed per-workshop implementation plans. The output is a set of planning documents that serve as blueprints for workshop creation using the educates-workshop-authoring skill.
The workflow progresses through six steps, from establishing requirements down to per-workshop implementation plans. Each step produces a planning document in the planning/ directory. A centralized task tracking file (planning/tasks.md) captures outstanding work across workshops and is updated throughout the workflow. Steps are typically done in order for a new course, but you can enter at any step when extending an existing course (e.g., jump to Step 3 to plan new workshops, or Step 4 to create a plan for a single workshop). When applying this skill to a project with existing workshops, see Retrofitting Existing Courses for guidance on auditing existing work and bootstrapping planning documents. For smaller courses, some steps are simplified or skipped entirely — the workflow adapts based on the course scope established in Step 1.
Before gathering detailed requirements, understand the scale and structure the user has in mind. Listen to how they describe what they want — they might say "I want to build a comprehensive course on X" or "I have an idea for a workshop or two on Y" or anything in between.
Gauge the scope from the conversation and propose one of these classifications:
Confirm the scope with the user before proceeding. The scope is not rigid — it can be revised later — but it shapes how much structure the workflow introduces. Record the scope in the course brief.
Gather the following information from the user or infer from context:
If the user provides a broad topic but not explicit details, propose reasonable defaults and confirm before proceeding. The course brief captures the "why" and "what" of the course before any topics are brainstormed.
Create planning/course-brief.md. The sections below adapt to the course scope — include only what is relevant:
Refer to Course Brief Reference for detailed guidance on each section.
Create an AI assistant instructions file in the project root so that future AI interactions automatically know the project context and which skills to use. For Claude Code, this file is CLAUDE.md; other AI coding agents use different conventions (e.g., AGENTS.md).
The instructions file should contain:
README.md for the project overview, directory structure, and navigation modelplanning/course-brief.md for the full course vision and design principlesplanning/resources.md as the curated list of external documentation and references for the course — the agent should consult this file before searching the web for course subject informationplanning/course-brief.md for detailsKeep this file focused on AI-specific instructions and project-specific overrides. Do not duplicate content that already exists in README.md or planning/course-brief.md — reference those files instead.
Create planning/resources.md to track external documentation, references, and learning materials related to the course subject matter discovered during course design. This file serves as a persistent, curated registry that survives across sessions — when conversation context is cleared and work resumes later, the agent can consult this file instead of re-searching for the same resources.
This file is for resources about the subject the course teaches (e.g., language documentation, framework guides, API references, tutorials), not for Educates platform documentation. Knowledge about Educates workshop structure, configuration, and authoring conventions is provided by the educates-course-design and educates-workshop-authoring skills — there is no need to duplicate that in the resources file.
During requirements gathering, you will often research the course subject to understand its scope and assess feasibility. Any time a web search or web fetch yields a useful resource — documentation pages, tutorials, API references, guides — add it to this file immediately. Do not rely on the information staying in conversation context; record it in the file so it is available in future sessions.
Start the file with whatever resources are found during Step 1. It will grow throughout the workflow as more resources are discovered during topic brainstorming (Step 2), workshop breakdown (Step 3), and detailed planning (Step 4).
The course author can review and edit this file at any time to correct versions, flag outdated material, or add preferred alternatives. A curation notes section at the end of the file captures these corrections.
Refer to Course Resources Reference for the file structure, entry format, and maintenance conventions.
This step adapts to the course scope:
This step is collaborative and iterative — the AI proposes topics based on the course vision and the user refines, adds, removes, and reorders them. The topic list is an inventory, not a 1:1 mapping to workshops. That mapping happens in Step 3.
During topic brainstorming, you will often research external documentation to understand what topics exist, how they work, and what would make good hands-on exercises. Add any useful resources discovered to planning/resources.md, annotating entries with the topic numbers they relate to.
Create planning/course-topics.md with:
Multiple topics may be combined into a single workshop, or a large topic may be split across workshops. That mapping happens in Step 3.
Refer to Course Topics Reference for detailed guidance.
Map the topics from Step 2 (or the user's workshop ideas, if Step 2 was skipped) into concrete workshops.
Create one file per module, named planning/course-module-X.md where X is a lowercase letter (e.g., course-module-a.md, course-module-b.md). Modules are identified by letters (A, B, C, etc.) rather than numbers. For focused and standard courses with a single module, create planning/course-module-a.md.
Each file opens with:
Then each workshop is described with:
course-topics.md are addressed (omit if Step 2 was skipped)As per-workshop plans are created in Step 4, add a Detailed plan link to each workshop entry in the module file. The link uses a relative path to the workshop-plans/ subdirectory:
### 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`
Workshop names use the format lab-{code}-{descriptive-name}, where the code is the module letter and a two-digit zero-padded workshop number (e.g., a01, a02, b01). This embeds the workshop's position in the course into its name, ensuring files sort by module and sequence in directory listings and making cross-references unambiguous.
For focused and standard courses , include a Future Expansion Ideas section at the end of the module file suggesting directions for growth — topics or workshops the user might add later. This supports incremental course development.
Refer to Workshop Breakdown Reference for detailed guidance.
For each workshop defined in Step 3, create a detailed implementation plan that serves as the blueprint for workshop creation.
Load workshop-authoring knowledge : Before writing the first plan in a session, invoke the educates-workshop-authoring skill to load its knowledge of Educates workshop structure. This does not mean creating workshop files — it means having the authoring skill's knowledge available so plans use correct clickable action types, realistic YAML configuration options, proper page structure conventions, and accurate exercise file layouts. The authoring skill's knowledge ensures plans are implementation-ready rather than aspirational.
Consult the course resources : Read planning/resources.md for external documentation and references relevant to the workshop's subject matter. Use listed resources directly rather than re-searching the web for information that was already found during earlier design steps. If you discover additional resources while writing a plan, add them to the file immediately, annotated with the workshop name they relate to. Check the curation notes section for any version corrections or preferred alternatives the course author has noted.
For workshops with a predecessor in a sequential chain (core workshops, or any workshop in a linear sequence that follows another): always read the plan for the immediately preceding workshop (and the workshop breakdown descriptions for both workshops) before writing the new plan. This ensures continuity and prevents unnecessary overlap.
For elective workshops : read the core prerequisites listed in the module file but do not assume any other elective has been completed.
For standalone workshops or the first workshop in a course : no prior plan reading is needed.
Create the plan file in planning/workshop-plans/, named to match the workshop directory (e.g., planning/workshop-plans/lab-a01-first-decorator.md for the workshop that will live in workshops/lab-a01-first-decorator/).
Each plan follows a standard 8-section structure:
exercises/, with filename, purpose, and initial contentsAfter creating the plan, add the Detailed plan link to the workshop's entry in the module file (see Step 3).
After creating a workshop plan, if there are known issues, open questions, or areas flagged for future attention, add them as tasks in planning/tasks.md. Create the file if it does not yet exist.
Common tasks identified during planning include:
Add a Status line to the workshop's entry in the module file and to the plan's Workshop Metadata section, linking to the workshop's section in tasks.md.
Refer to Task Tracking Reference for the file structure, task format, and priority levels.
Refer to Workshop Plan Reference for the full structure, and Plan Authoring Guidelines for conventions on sequential workshop flow, deliberate gaps, elective independence, and other guidelines.
Once a per-workshop plan exists, hand off to the educates-workshop-authoring skill to create the actual workshop files.
Before starting implementation, read planning/resources.md for external documentation and references curated during the design phase. These resources have been gathered and vetted across earlier steps — consult them first rather than searching the web from scratch. Check the curation notes section for version corrections or preferred alternatives the course author has noted. If you discover new resources during implementation, add them to the file.
For each workshop to be implemented:
planning/workshop-plans/The workshop files are created in the workshops/ directory, separate from the planning/ directory.
After implementing a workshop, review the result against the plan and update planning/tasks.md:
[x]) if implementation resolved themWhen implementation diverges significantly from the plan, update the planning documents to reflect what was actually built. The plan should describe the as-built design, not just the original intent — future workshops in a sequence read the preceding plan, and stale plans lead to incorrect assumptions.
Update the workshop plan file (planning/workshop-plans/lab-*.md) when:
Keep page filenames consistent with their content. If a page's topic changes during implementation, rename the file to match (e.g., 03-old-topic.md → 03-new-topic.md) and update the plan's page listing to reflect the new filename.
If changes affect the workshop's learning objectives or narrative arc, also update the workshop entry in the module file (course-module-X.md) so it remains accurate.
For sequential workshops, also check whether subsequent workshop plans or implementations reference anything that changed. A later workshop's "Connection to Previous Workshop" section, exercise files, or narrative hooks may assume the original approach — review and update them so the sequence remains coherent.
Periodically check for consistency across planning documents and generated workshops. This is especially useful after creating multiple workshops or when returning to a project after a break. The checks below adapt to the course scope — skip checks that do not apply.
Planning document consistency:
course-module-X.md) have corresponding plan files in workshop-plans/course-topics.md (skip if no topics document)Implementation consistency (for workshops that have been created):
workshops/exercises/ directorycontent/ directory (filenames, order, and topics)Cross-reference integrity:
Task tracking consistency (iftasks.md exists):
tasks.md are consistent with the actual state of each workshoptasks.md[x]) accurately reflect resolved issuesGrowth path (focused and standard courses) :
Record issues found during verification as tasks in planning/tasks.md rather than only reporting them in conversation. This ensures findings are tracked and can be addressed later, especially when returning to a project after a break.
If planning/tasks.md does not yet exist, create it when issues are found. If no issues are found, no tasks file is needed.
The user can ask "what should I work on next?" at any point. When they do, consult planning/tasks.md and recommend work based on priority (P1 first), workshop status (worst status first), and sequential dependencies (earlier workshops in a chain first). The user can also add tasks at any time outside the normal workflow steps — add them with an appropriate priority.
When applying this skill to a project that already has workshops (in the workshops/ directory) but lacks planning documents, or has incomplete planning documents, offer to audit the existing workshops and bootstrap the planning artifacts.
At the start of a session, if the project has a workshops/ directory with existing workshop subdirectories, check whether corresponding planning documents exist:
planning/workshop-plans/ for each existing workshop?planning/course-module-X.md)?planning/tasks.md?If workshops exist but planning documents are missing or incomplete, proactively offer to review the existing workshops and create the missing planning artifacts, including a tasks file.
When reviewing existing workshops, assess each one for completeness:
workshop.yaml, instruction pages, and exercise files?Based on this assessment, assign each workshop a status value (Mostly complete, Needs moderate fixup, Incomplete, or Significantly incomplete) and populate planning/tasks.md with specific issues found. Include source links in each task pointing to the relevant files.
When creating or updating planning documents for a course with existing workshops:
Be mindful that existing workshops may be works-in-progress. The goal is to capture their current state accurately so that task tracking can guide them to completion, not to judge them against a finished standard.
When working with an existing course, detect which naming convention is in use before making changes.
Check for existing planning/course-module-*.md files:
course-module-a.md, workshop names like lab-a01-workshop-name. This is the current convention — use it for all new work.course-module-1.md, workshop names like lab-workshop-name (no workshop code). This was the prior convention.New courses always use the letter-based convention. There is no option to start a new course with the numeric convention.
If an existing course uses the numeric convention, continue using it consistently. Do not mix conventions within a course — adding letter-based workshop names alongside numeric ones creates confusion.
When extending a legacy course:
course-module-N.mdlab-workshop-name without workshop codesOnly migrate when the user explicitly requests it. Before proceeding, warn that:
git mv preserves history, the rename affects all downstream references.Get explicit confirmation before proceeding.
The migration covers:
File renames (use git mv to preserve history):
planning/course-module-N.md → planning/course-module-X.md (where N maps to the corresponding letter: 1→a, 2→b, etc.)planning/workshop-plans/lab-name.md → planning/workshop-plans/lab-X01-name.mdworkshops/lab-name/ → workshops/lab-X01-name/Planning file content updates:
lab-name → lab-a01-namecourse-topics.md: change from sequential across modules to restarting at 1 per module; update module headings to use lettersWorkshop file content updates:
resources/workshop.yaml): update metadata.nameProject root file updates:
README.md: update module references and workshop namesCLAUDE.md (or equivalent): update any references to planning file names or workshop namesAfter migration, verify that no references to the old numeric convention remain in planning files or workshop content.
If an existing course repository uses the older "parts" and "spine" terminology, follow this guide to update it to the current "modules" and "core" conventions.
Use git mv to preserve history:
| Old name | New name |
|---|---|
planning/part-N-workshops.md | planning/course-module-X.md (where X is the corresponding letter: 1→a, 2→b, etc.) |
planning/workshops.md (if exists) | planning/course-module-a.md |
After renaming files, update content within:
planning/course-brief.md:
planning/course-topics.md:
planning/course-module-X.md (the renamed workshop breakdown files):
planning/tasks.md:
Workshop plan files inplanning/workshop-plans/:
lab- prefix (e.g., lab-name → lab-a01-name)part-N-workshops.md → course-module-X.mdlab-name.md → lab-a01-name.md)README.md:
planning/part-N-workshops.md → planning/course-module-X.mdCLAUDE.md (or equivalent AI assistant instructions file):
Rename workshop directories to include workshop codes: workshops/lab-name/ → workshops/lab-a01-name/
Update workshop metadata and resource files:
metadata.name in resources/workshop.yaml: add workshop codetype: spine → type: core if applicableAfter completing the migration, verify:
grep -ri "spine" planning/ returns no results (except in any deliberate notes explaining the terminology change)grep -ri "part-[0-9]" planning/ returns no resultsls planning/part-* returns no results (all renamed)ls planning/workshops.md returns no results (renamed to course-module-a.md)lab-a01-name, not lab-name)tasks.md)All planning documents live in the planning/ directory at the project root.
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
└── ...
For single-module courses, there is just course-module-a.md. The layout is the same regardless of how many modules the course has.
The workshops/ directory (at the project root, alongside planning/) holds the actual Educates workshop implementations created in Step 5.
Refer to Planning Directory Reference for file naming conventions and cross-reference linking patterns.
For detailed guidance on specific topics, see:
When asked about the skill version, read the VERSION.txt file and report its contents to the user.
For more information about Educates, visit the Educates documentation: https://docs.educates.dev/
Weekly Installs
56
Repository
First Seen
Feb 18, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
github-copilot56
opencode56
cursor55
kimi-cli51
gemini-cli51
amp51
前端打磨(Polish)终极指南:提升产品细节与用户体验的系统化检查清单
59,700 周安装
调试向导 - 系统化代码调试方法,Python/JavaScript/Go调试工具与工作流程
1,400 周安装
AI会议纪要生成器 - 自动创建清晰可执行的会议摘要与行动项跟踪模板
1,400 周安装
React Native 专家技能:构建高性能跨平台移动应用的完整指南与最佳实践
1,400 周安装
CLI开发者指南:Node.js/Python/Go命令行工具开发全流程与最佳实践
1,400 周安装
Claude AI前端项目构建器:React + TypeScript + Vite + Parcel打包成单HTML文件
1,300 周安装
客户旅程地图专家:绘制、分析与优化全流程指南 | 包含模板与研究方法
45 周安装