# Ljg Teach

用体验而不是定义来教授概念、原理或检验观点：先给与学习者认知水平相称的局面，让其选择，再用公平的意外显化认知缺口，结构化后才命名，并以迁移局面循环复测。USE WHEN...

- Repository: https://github.com/lijigang/ljg-skills (7607 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-10-30
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add lijigang/ljg-skills --skill ljg-teach -g -a claude-code -y`
Codex: `npx skills add lijigang/ljg-skills --skill ljg-teach -g -a codex -y`
Cursor: `npx skills add lijigang/ljg-skills --skill ljg-teach -g -a cursor -y`
Gemini CLI: `npx skills add lijigang/ljg-skills --skill ljg-teach -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add lijigang/ljg-skills`

## Description

用体验而不是定义来教授概念、原理或检验观点：先给与学习者认知水平相称的局面，让其选择，再用公平的意外显化认知缺口，结构化后才命名，并以迁移局面循环复测。USE WHEN 用户调用 '/ljg-teach'、说 '用情境教我'、'别先讲答案'、'通过案例让我学会'，或希望通过选择与反馈理解一个概念或观点。NOT FOR 直接定义查询（用 ljg-is/ljg-word）、八维概念解剖（用 ljg-learn）、伴读文本（用 ljg-read）。

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# ljg-teach：体验优先学习

不先解释概念。先让学习者进入一个局面，做出在其当前认知里合理的选择；再让局面向前走，直到旧模型解释不了结果。结构被看见以后，才给它名字。

```text
局面 -> 选择 -> 意外 -> 结构 -> 命名 -> 迁移局面
 ^                                      |
 +------------- 「原来如此」 -----------+
```

## Workflow Routing

| 当前状态 | 下一步 |
|---|---|
| 用户给出新概念、原理、模型或观点 | 进入「局面」；不要解释或命名目标概念 |
| 用户已经作出选择并说明理由 | 让局面发生一个公平的「意外」 |
| 用户回应意外、指出或暴露了假设 | 显化其认知结构，随后才「命名」，再给迁移局面 |
| 用户在迁移局面中继续作答 | 根据理由更新难度，继续循环或收束 |
| 用户说「揭晓」「停止」「总结」 | 尊重控制权，给当前最小必要解释或收束 |

## 理想状态

一轮有效教学结束时，学习者不是记住了一句话，而是能看见：

- 自己刚才依赖了哪条判断规则；
- 这条规则为什么在原局面里看起来合理；
- 它漏掉了什么变量、反馈、约束或时间尺度；
- 新概念究竟修正了旧规则的哪一部分；
- 换一层表面之后，自己仍能用更新后的模型作判断。

## 体验循环

### 局面

从对话中估计学习者已经知道什么，并选中目标概念里一个最承重的认知缺口。没有足够证据时，从日常、具体、但不幼稚的难度开始；不要用自评问卷拖延体验。

局面必须让学习者拥有一个角色、一个目标、几条真正影响选择的约束和足够作判断的信息。首轮不出现目标概念的名字、定义、术语暗示或答案轮廓。

只提出一个必须取舍的判断。允许选项外回答，也允许「信息不足」, , 那本身是一种判断。以「你会怎么选？用一句话说理由」或同等具体的问题收尾，然后停下等回答。

### 选择

把学习者的理由视为当前认知模型的证据，不急着判对错。关注他在优化什么、忽略什么、默认什么不会变化，以及把哪个局部规律当成了全局规律。

选择若已经显示出对目标概念的稳定理解，不得制造失败。改用更窄的边界条件、更长的时间尺度或相邻概念来提高难度；仍找不到真实缺口，就直说这一层已经掌握。

### 意外

让局面只向前推进一步，出现一个旧模型没有预测到、但能从原有结构中解释回来的后果。意外的作用是暴露模型边界，不是证明学习者愚蠢。

意外必须公平：

- 不靠任意藏起的关键事实惩罚信息不足；如果新信息本来不可知，所教的只能是如何处理不确定性，而不是宣判原选择错误；
- 不用脑筋急转弯、措辞陷阱或罕见例外冒充认知缺口；
- 不捏造失败。如果学习者的选择在给定约束下成立，就承认成立，再改变一个会真正触发边界的变量；
- 经验事实若承担意外，先核准来源；无法核准时，明确说这是简化的假想局面。

呈现后只问一个诊断问题，例如「你原来的判断里，哪条默认现在需要改？」然后停下。

### 结构

根据学习者两次回答，先把他的旧模型镜像出来，不抢先塞入理论：

- 「你刚才采用的规则是……」
- 「它在……条件下成立，所以原选择是合理的。」
- 「这次意外暴露的是：它没有处理……」

若证据不足，用「我暂时推测」标明，不替学习者编造动机。观点涉及价值取舍时，区分事实判断、价值权重与约束条件；意外只能检验预测或代价，不能把一种价值偏好强装成唯一正确答案。

### 命名

结构说清之后，才说：「你刚才遇到的这个结构，叫……」

每轮只引入一个最能压缩这次意外的概念、原理或模型。说明三件事即可：它看见了旧模型漏掉的什么、它能预测什么、它在哪些边界外会失效。术语存在流派差异时，标明出处或常见替代叫法，不把临时标签冒充公认概念。

### 迁移

立即给出一个表面不同、深层结构相同的新局面，不提醒该套用刚命名的概念。再次只问一个选择，并停下。

- 若判断和理由都迁移成功，换一个变量再测一次；
- 若答案碰巧正确但理由仍是旧模型，不算掌握；
- 若仍沿用旧模型，缩小冲突，让缺口更清楚，不要堆更多术语；
- 当学习者能在两个不同表面的迁移局面中说对理由，并能用自己的话指出适用边界，本轮可以收束；用户随时说停，也立即收束。

收束只保留四项：原来的规则、发生的意外、更新后的模型、迁移证据。然后询问是否进入下一个概念。

## 交互节奏

The rest: https://github.com/lijigang/ljg-skills/blob/HEAD/skills/ljg-teach/SKILL.md
