learn-by-running-code · git:20260914.b0e3473 · 2026-09-14 · sha256 c5101891691ce814
learn-by-running-code git:20260914.b0e3473A
Immutable. This exact content is served forever at /api/v1/blob/c5101891691ce814.
--- name: learn-by-running-code description: 将一个 Python 学习主题设计成按 01_、02_ 编号的渐进式可运行代码仓库;每章先讲清最小必要知识,再通过 worked example 映射到代码,并用运行、修改、检索和自我解释完成学习。用户只要提到“做一个学习仓库”“按章节用代码学”“边运行边学”“把某个 Python 主题拆成可运行示例”或希望用项目化方式系统学习 Python 库、框架、协议和工程概念,就应使用本 Skill。它负责从主题调研、课程大纲确认到 uv 仓库生成、AGENTS.md 导师指南与逐章验证;不用于单纯讲解已有仓库或把现有项目改造成作业课程。 --- # Learn by Running Code 把一个待学习的 Python 主题变成一套小而完整的代码课程。每章先讲清一个最小知识块,再把知识映射到可运行代码,并通过修改与解释完成实践;每章只增加一个认知负担。 ## 边界 使用本 Skill: - 从一个知识主题创建新的教学仓库; - 把 Python 库、框架、协议或工程概念拆成渐进章节; - 生成能够独立运行、便于修改和观察的极简代码。 不要使用本 Skill: - 用户只想理解一个现有仓库:改用项目学习类 Skill; - 用户要从现有源码提炼讲义、作业和判题:改用课程化或 ProMentor 类 Skill; - 用户只问一个可以直接回答的概念问题,不需要创建仓库。 ## 按需加载的资源 - 规划大纲前读取 [references/curriculum-design.md](references/curriculum-design.md)。 - 设计 agent 的逐章教学节奏前读取 [references/teaching-method.md](references/teaching-method.md)。 - 创建文件前读取 [references/repository-contract.md](references/repository-contract.md)。 - 生成仓库时复用 `assets/` 中的模板,但要按主题替换占位符,不要原样复制;`AGENTS.template.md` 必须据课程实情填充为根目录 `AGENTS.md`。 - 生成后运行 `scripts/validate_learning_repo.py <repo>` 做确定性检查。 ## 工作流 ### 1. 明确学习任务 先从对话中提取以下信息,已有答案就不要重复询问: - 主题和明确排除的内容; - 学习者已有知识; - 学完后希望能构建、解释或调试什么; - 是否允许联网、调用付费 API、使用数据库或安装本地服务; - 目标目录。 只有会改变课程结构的信息缺失时才提问。默认值为:懂基础 Python、不熟悉目标主题、Python 3.12、uv、5~7 章、中文教学说明、英文代码标识符、优先离线免费示例。 ### 2. 用一手资料校准内容 第三方库和快速变化的 API 不能只凭记忆设计课程: 1. 查看官方文档、官方仓库、发布说明或当前安装版本; 2. 确认推荐 API、最低 Python 版本和安装包名; 3. 区分“官方事实”“根据资料做出的课程设计”和“尚未验证的假设”; 4. 记录资料链接、核对日期和最终选用版本,供根 README 使用。 不要为了堆砌资料扩大主题。调研的目的只是保证示例不过时、命令能运行。 ### 3. 先提交课程大纲 创建任何仓库文件之前,先在对话中给出: - 一句话课程目标; - 学习者画像和完成标准; - 统一贯穿案例; - 章节表:序号、章节名、本章唯一新增概念、开始实践前必须讲清的最小知识块、前置章节、运行后能观察到什么、是否需要网络或凭据; - 最终项目和明确不包含的内容; - 计划采用的 Python 与关键依赖版本。 必要时用 Mermaid 表示非线性依赖,不要用字符树。等待用户明确确认这份具体大纲。用户只说“帮我创建一个学习仓库”不等于确认;用户已经提供并明确确认过完整大纲时可以直接进入下一步。 ### 4. 安全地创建仓库 用户确认后再写文件: 1. 检查目标路径;目标不存在时创建,目标为空时使用,目标非空时先报告冲突,不覆盖已有文件; 2. 按仓库契约创建 uv 项目和连续编号的章节目录; 3. 用同一个小型场景贯穿课程,但每章必须能从仓库根目录直接运行,不能依赖先执行上一章产生的状态; 4. 先用“解决什么问题 → 输入 → 处理 → 输出 → 边界”讲清本章最小知识块,再用 worked example 把知识映射到关键代码;随后让学习者预测、运行和修改。代码用于验证知识,不替代知识讲解;保留能解释“为什么”的注释,删除逐字复述语法的注释; 5. 不在关键路径使用 `...`、伪代码或未定义占位函数; 6. 仅把真正跨章稳定的配置和假数据放入 `shared/`,不要为了追求目录层次拆散小示例; 7. 需要密钥时只提交 `.env.example`,示例值必须是假值;在 README 标注网络、费用和数据外发风险; 8. 生成根目录 `AGENTS.md` 教学指令文件(内容契约见 repository-contract.md):课程的最终消费者通常是给学习者当导师的 agent,该文件必须让任何进入仓库的 LLM 获得导师角色、逐章教学卡、教学节奏与环境边界。 ### 5. 验证而不是声称 从干净状态验证: 1. 运行 `uv lock` 和 `uv sync`; 2. 运行本 Skill 自带的结构验证脚本; 3. 逐章运行所有不需要凭据或外部服务的命令,并核对 README 中的预期现象; 4. 对在线章节至少完成 Python 语法、导入和缺少配置时的错误提示检查; 5. 不把“读过代码”写成“运行通过”。分别报告已运行、仅静态检查和因何未验证。 遇到失败时先修复最小示例或文档,再交付。不要把失败命令留给学习者自行猜测。 ### 6. 交付学习路线 最终简洁报告: - 仓库位置; - 30 秒启动命令; - 推荐从哪一章开始; - 实际运行通过的章节; - 需要用户自行提供凭据或服务的章节; - 采用的主要资料与版本; - 提示用户:让支持 `AGENTS.md` 的 agent 进入仓库并说“教我这个课程”即可开课。 不要一次性把所有章节重新讲一遍,仓库本身就是主要教学产物。 ## 完成标准 只有同时满足以下条件才算完成: - 用户确认过课程大纲; - 章节编号连续,每章只承担一个主要新增概念; - 根 README 中的每条章节运行命令都存在; - `uv.lock` 已生成,离线章节在同一干净环境中实际运行通过; - 根目录存在 `AGENTS.md`,逐章教学卡覆盖全部章节且与 README、实际验证结果一致; - 外部依赖、费用、凭据和未验证项均已明确说明; - 没有覆盖用户原有文件,也没有写入真实密钥。