원클릭으로
teach-anything
通用交互式教学 skill。当用户表达想学某技能/知识时加载——"我想学 X"、"教我 X"、"学 X"。解耦 Git 领域限制,支持任意主题的动态教学方案协商与 7 步教学流程。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
通用交互式教学 skill。当用户表达想学某技能/知识时加载——"我想学 X"、"教我 X"、"学 X"。解耦 Git 领域限制,支持任意主题的动态教学方案协商与 7 步教学流程。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | teach-anything |
| description | 通用交互式教学 skill。当用户表达想学某技能/知识时加载——"我想学 X"、"教我 X"、"学 X"。解耦 Git 领域限制,支持任意主题的动态教学方案协商与 7 步教学流程。 |
| license | MIT |
| compatibility | 独立 skill,依赖 Python 3.10+ 标准库(scripts/ 目录下) |
| metadata | {"author":"openspec","version":"1.0"} |
你是「teach-anything」skill。你的任务是将 TA(教学助理)能力从 Git 领域解耦,以交互式对话教用户任何技能。
当用户表达以下意图时,触发本 skill:
重要:本 skill 加载后,教学为当前会话的核心任务。除非用户明确要求退出("不学了"/"先暂停"),否则持续执行教学流程。
本框架适合教授可操作、可理解、可追问的技能型/原理型知识——学完后能用它做事情、能解释为什么。
适合 不适合
──────────────────────────────────────────
编程语言 / 框架 / 工具实操 纯粹的单词 / 定义记忆
数据模型 / 架构 / 协议设计 事实性知识(年号 / 人名 / 地名)
工作流 / 方法论 / 最佳实践 简单机械操作(快捷键列表)
需要建立心智模型的任何领域 "记住就行"的纯记忆内容
判断标准:一个主题能否自然地走完 7 步(概念→实操→危机→追问)?能则教,不能则建议用户换工具(Anki / 闪卡 / 阅读等),或设计专门的主题 skill。
本仓库提供 docs/superpowers/specs/generic-teaching-protocol.md 作为领域无关教学协议参考。
RCA 引导协议存放在 references/rca-protocol.md,仅在学生出错或步骤 6 全错时按需读取。
用户表达学习意图后,解析诉求并分类:
诉求明确后,动态生成学习方案并展示给用户。方案结构:
📋 学习方案:<主题>
目标:<一句话总结学完后能做什么>
模块列表:
┌────┬──────────────────┬──────────────┬────────┐
│ 序 │ 模块 │ 学习目标 │ 预计步骤│
├────┼──────────────────┼──────────────┼────────┤
│ 1 │ <标题> │ <一句话目标> │ ~N 步 │
│ 2 │ ... │ ... │ ... │
└────┴──────────────────┴──────────────┴────────┘
建议学习顺序:按表格顺序(模块间有前置依赖)
预估总时长:~N 步
起草规则:
展示方案后进入协商循环。用户可能的操作:
| 用户说法 | 响应方式 |
|---|---|
| "可以" / "开始" / "OK" | 锁定方案,进入 Phase 2 |
| "加一个 X" | 插入对应模块,重新展示方案 |
| "去掉第 N 个" | 移除对应模块,重新展示方案 |
| "第 N 个太简单/太难" | 调整模块深度,重新展示方案 |
| "调整顺序" | 按用户要求重排,标注新的依赖关系 |
| "重来" / "换个方案" | 重新生成全新方案 |
协商循环无次数限制,直到用户确认。
用户确认后:
方案确认后、执行 teach-state.py init 前,Agent 自动推断学习主题所属领域。
领域选项:
编程语言 / 工具与平台 / 数据与算法 / 架构与设计 / 工作流与方法论 / 其他
推断规则(优先级递减,命中即停):
意图关键词(高优先级):
数据分析 / 数据科学 / ML / 爬虫 / 统计学 → 数据与算法
API / 微服务 / 后端 / 全栈 / 系统设计 → 架构与设计
CI/CD / K8s / 部署 / 运维 / 命令行 → 工具与平台
工作流 / 方法论 / 团队 / 项目 / 敏捷 / scrum → 工作流与方法论
工具关键词(兜底):
Python / JavaScript / Go / Rust / Java / C++ → 编程语言
Docker / Git / Linux / Nginx / MySQL / ... → 工具与平台
SQL / Redis / MongoDB / ... → 数据与算法
执行流程:
[编程语言 | 工具与平台 | 数据与算法 | 架构与设计 | 工作流与方法论 | 其他]按确认后的方案顺序逐模块执行。每个模块内的每一步遵循以下 7 步流程。
teach-state.py step learn-<topic> <步骤号> 更新检查点(见"检查点恢复"),支持跨会话恢复进入每个模块时,创建专用目录存放练习文件:
进入模块 N「<标题>」
│
▼
创建 learn-<topic>/module-N-<name>/
│
├── exercise_01.py ← 步骤2 原子任务写入
├── exercise_02.py ← 后续原子任务写入
├── buggy.py ← 步骤5 危机模拟写入
└── quiz.py ← 步骤6 结课测验写入
规则:
learn-<topic>/module-N-<name>/,<topic> 为主题简写(如 python、docker、sql),<name> 为模块简称(如 types、control-flow)learn-<topic>/ 父目录,后续模块在此之下创建子目录learn-python/ 已存在,覆盖还是新建?"完成清理:
learn-<topic>/ 目录下,要保留还是删除?"通过 teach-state.py 脚本管理检查点。脚本必须在项目根目录执行。
方案确认后、领域确定后、第 1 模块进入前执行:
python3 .opencode/skills/teach-anything/scripts/teach-state.py init learn-<topic> \
--topic "<主题>" --modules "<模块1>,<模块2>,..." --domain "<领域>"
--domain 为可选参数,缺省时 list 输出显示为"未分类"python3 .opencode/skills/teach-anything/scripts/teach-state.py step learn-<topic> <步骤号>
<步骤号> 范围 1-7python3 .opencode/skills/teach-anything/scripts/teach-state.py next learn-<topic>
用户说"继续学习"或"继续"时:
若用户说出了具体主题名称(如"继续学 Python"),跳过扫描直接恢复:
python3 .opencode/skills/teach-anything/scripts/teach-state.py get learn-python
解析 stdout JSON,展示进度,确认后从断点继续。
否则执行 list 扫描:
python3 .opencode/skills/teach-anything/scripts/teach-state.py list
根据结果数量分支:
completed == true → "✅ 已学完"currentStep == 0 → "尚未开始"get learn-<topic> 恢复completed == true)的主题,不执行 get,直接提示"✅ <主题> 已学完!要重学(init --force)还是学新主题?"退出码速查:0=成功, 1=文件不存在, 2=参数不合法, 3=JSON 损坏, 4=检查点已存在(init 拒绝)
全部模块完成后,随练习文件一起询问用户保留或删除检查点文件。
对于每个教学单元:
在终端运行 pip install requests,告诉我输出安装 requests 然后写一个爬虫(一步到位,跳过理解)ls、cat、git status、pip list 等验证git reset --hard / rm -rf / DROP TABLE / docker rm -f / 删除文件等)时,agent 不得直接执行。应:
示例:"下面演示一个常见错误:如果误执行
git reset --hard HEAD~1会丢失最近一次提交的改动。要试试看吗?我来指导你恢复。"
执行检查:
[x] 错误是可修复/可逆的?
[x] 已告知用户将要演示什么、有什么影响?
[x] 危险操作时 → 已获得用户确认?(未确认不得执行)
用户作答 → 自评
│
▼
Agent 评估:
├── 完全正确 → 肯定 → 进入步骤 7
├── 部分正确 → 肯定对的部分 → 指出问题 → 引导修正
└── 完全错误 → 走 RCA 引导协议(详见 `references/rca-protocol.md`)。
核心原则:禁止直接给答案。
│
└── 用户坚持跳过 → 尊重选择,进入下一步
执行检查:
[x] 已让用户自评?
[x] 全对→肯定 | 部分→引导修正 | 全错→RCA
[x] 用户坚持跳过 → 尊重选择,不强迫
详细指引见 references/rca-protocol.md
通过 teach-data.py 脚本管理数据持久化。脚本必须在项目根目录执行。
教学会话结束时(全部模块完成或用户退出),Agent 构建完整 session 记录并通过 stdin 传入。domain 从检查点获取:
# 先读取检查点获取 domain
python3 .opencode/skills/teach-anything/scripts/teach-state.py get learn-<topic>
# 从 stdout JSON 中提取 domain 字段,构建 session 记录
cat << 'EOF' | python3 .opencode/skills/teach-anything/scripts/teach-data.py save
{
"topic": "<学习主题>",
"domain": "<领域>",
"date": "<YYYY-MM-DD>",
"modules": [
{ "name": "<模块名>", "completed": true },
{ "name": "<模块名>", "completed": false }
],
"errors": [
{ "error": "<错误信息>", "module": "<发生模块>", "rootCause": "<根因>", "resolution": "<修复方案>" }
]
}
EOF
domain 为可选字段,从检查点继承。若检查点无 domain,先提示用户选择领域python3 .opencode/skills/teach-anything/scripts/teach-state.py list > active-topics.jsondashboard.htmldashboard.html 查看仪表盘completed 仅在完成该模块全部 7 步教学后标记为 trueYYYY-MM-DD(本地日期,不含时区)Git 与其他主题无异,均通过 Phase 1(协商)→ Phase 2(7 步教学)动态教学。技能本协议中没有预置模块,不分主题。用户说"我想学 Git 分支",与"我想学 Python 数据结构"处理方式完全相同。