Use when the user wants to start reviewing, studying, drilling, or practicing a topic in the current conversation. 触发:「开始复习」「go」「复习一下 X」「过一遍 X」「考考我」「带我学学」「刷题」「巩固 X」「帮我梳理 X」「X 还不太熟」「X 有哪些考点」「抽查 X」。
Scanned 8/31/2026
Install to Claude Code
npx -y skills add guoqiaoZhou/study-with-claude-code --skill go --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Go?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/guoqiaozhou-go)More formats (shields.io, HTML) on the badges page.
---
name: swcc-go
description: Use when the user wants to start reviewing, studying, drilling, or practicing a topic in the current conversation. 触发:「开始复习」「go」「复习一下 X」「过一遍 X」「考考我」「带我学学」「刷题」「巩固 X」「帮我梳理 X」「X 还不太熟」「X 有哪些考点」「抽查 X」。
argument-hint: "[topic] [study|test] [concept|scenario|mixed]"
user-invocable: true
---
# swcc · go — 开始系统化学习或复习(先讲后测)
发起一次学习或复习会话。**这是一次对话内的会话**:本技能围绕一个节点**先给全景、再预生成并 review 教学稿、然后按教学稿对话讲解、最后考核**;结束后用 `/swcc-stop` 归档。
> 开始前先读两份契约:`${CLAUDE_PLUGIN_ROOT}/skills/_shared/data-contract.md`(数据与目录布局)、`${CLAUDE_PLUGIN_ROOT}/skills/_shared/teaching-review-rubric.md`(教学稿 5 维评审与返回结构)。本技能**不写复习数据**——进度/掌握度的落盘由 `/swcc-stop` 完成;唯一例外是写一份 cwd 会话便签 `./.swcc-checkin.md`(深挖栈,见 data-contract 第十五节)。
参数:`$ARGUMENTS` —— 按 **token 匹配**解析,顺序无所谓,缺省走默认:
- **topic**:不在下列关键词里的那个词 = 专题名(默认 activeTopic)。
- **取向**(学还是考):`study`=先讲后测(**默认**);`test`=直接考、跳过讲解。
- **题型**(只作用于考核阶段):`concept` / `scenario` / `mixed`(**默认**)。
例:`/swcc-go redis` = redis + study + mixed;`/swcc-go redis test` = 直接考;`/swcc-go redis scenario` = 先讲后测、考核出场景题;`/swcc-go test scenario` = 当前专题 + 直接考 + 场景题。
**三种切换取向的方式**:
1. **调用时传参**:如上 `/swcc-go redis test`。
2. **会话中途口头切**(最常用):跟我说就行——「直接考我吧」(讲解中跳到考核)、「先别考,把 XX 再展开讲讲」(留在/回到讲解)、「可以了,开始考」(从讲解进考核)。
3. **自动**:定位到的是**到期薄弱点**(已学过)→ 直接进考核(相当于 `test`);**生疏/首次**的节点 → 默认先讲后测(`study`)。
---
## 核心原则
1. **先给全景,再进细节。** 默认先读 roadmap 给用户章节/专题全景,再展开当前节点。
2. **先学后测,别上来就考。** 默认先带用户把知识点过一遍,再考核。会背≠掌握,但**没过一遍就考会把"还没复习"冤枉记成一堆薄弱点**。
3. **讲解是 blog 级,不是聊天。** study 取向下,每个概念都要**充分展开讲透**(原理推导 / 设计取舍 / 边界陷阱 / 具体例子),**比源文档更详尽,宁深勿浅,绝不压成几句 bullet + "要不要展开"**。用户想深挖哪点就就地下钻、同样讲透。
4. **只有考核阶段算数。** 掌握度/薄弱点**只看考核阶段**的表现;讲解阶段不评判、不记薄弱点。
5. **覆盖该节点的关键机制。** 围绕 `knowledge-system.md` 中 `### 核心机制` 的要点清单逐个过、逐个考,别随机碰一两个就散。
6. **一次一个概念 / 一题。** 讲解一次推进一个概念,考核一次问一题。
7. **挂了书就用书。** 讲解与出题以原文为据;没书则靠自身理解,但不假称来源。
8. **为 stop 铺路。** 收尾小结要把「已讲解」与「考核结果」分开,薄弱点候选只来自考核阶段。
> 取向冲突时的优先级:**用户当前口头指令 > 调用参数 > 自动判断**。即使定位到到期薄弱点(默认直接考),用户若说「先带我过一遍」也走 study。
## 借口对照表(出现这些念头=正在偷懒,照右栏纠正)
| 借口 | 现实 |
|---|---|
| 「用户赶时间,浅讲几句 bullet 就行」 | study 就是要讲透;想快应切 `test` 直接考,而不是把 study 做浅。可提议「只过 2 个概念,但每个讲透」。 |
| 「答对一句关键词=懂了,下一题」 | 答对结论≠懂原理。必须追问一层「为什么/换条件还成立吗」才区分背诵与理解。 |
| 「knowledge-system 没写这点,所以我不展开」 | system 是教案不是教材,讲解深度必须超过它;没写的正是你该用自身知识补的。 |
| 「阶段4 刚讲过,阶段5 随便问一句」 | 讲过≠掌握。考核要陌生化(换场景/换角度)独立验证,否则掌握度虚高。 |
| 「讲解时用户答错了,记成薄弱点」 | 讲解阶段只纠正、不评判、不记薄弱。讲解期的错=还没学,不是薄弱点。 |
| 「把讲解表现写进收尾的『考核结果』栏」 | stop 只读对话评分,混入会误判。两栏严格分开,薄弱点只来自考核。 |
## Red Flags(自查,出现即停下纠正)
- 一个概念输出只有几行 bullet、或讲完就甩「要不要展开?」→ 没讲透,现在就展开。
- 用户答对你想直接说「对,下一题」→ 至少追问一层再走。
- 用户卡壳你给了答案、用户说「懂了」→ 换个角度再考同一概念,别放过。
- 想把多个概念揉进一条里讲 → 一次只讲清单里的一个。
- 要列 check-in 剩余项却想不起搁置了哪些 → 上下文已丢,读 `./.swcc-checkin.md` 找回;它也没有就从 system.md 该节点 `### 核心机制` 要点重建。
- 要开始考了却没先输出 `--- 考核开始 ---` → 先补这行标记再问第一题(否则 stop 无法区分讲解/考核)。
## 常见错误
1. **把 system 当教材念**:逐条复述要点当讲解。→ 以要点为骨架,用自身知识展开成 blog 级 + 例子 + 边界。
2. **讲解期顺手记薄弱点**:check-in 时用户答不上来就记薄弱。→ 讲解期只补讲,不记薄弱。
3. **考核一题就过**:答对就换。→ 答对后追问原理/取舍/边界。
4. **收尾混栏**:把「讲过」当「考过」。→ 已讲解 / 考核结果两栏分开。
5. **忘标考核开始**:进考核没输出 `--- 考核开始 ---`。→ stop 据此区分阶段,漏了会把讲解期问答误判成考核、冤记薄弱点;考核第一题前必须先输出该标记。
---
## 执行流程
| 阶段 | 名称 | 目的 |
|---|---|---|
| 1 | 加载专题 | 解析参数、读数据 |
| 2 | 定位节点 | 按优先级选当前该复习的节点 |
| 3 | **预生成 + review 教学稿** | 从 system 生成教学稿,subAgent review 后整合 |
| 4 | **讲解(按教学稿对话)** | 按 review 后的稿展开,可下钻;**不记薄弱点** |
| 5 | **考核(后测)** | 苏格拉底式追问验证;**只有这里算掌握度/薄弱点** |
| 6 | 收尾交接 | 结构化小结,提示 stop |
---
### 阶段 1:加载专题
- 先按上面「参数」对 `$ARGUMENTS` 做 token 解析,得到 topic / 取向(study|test) / 题型(concept|scenario|mixed)。
- topic 缺省 → 读 `$HOME/.study-with-cc/config.json` 的 `activeTopic`(config 不存在或缺 activeTopic 时,按数据契约第九节「兜底」扫 `topics/` 自愈,不要直接报错)。
- 该专题不存在 → 提示先 `/swcc-plan <topic>`,停止。
- 读 `progress.json`、`knowledge-tree.md`、`knowledge-system.md`、`references.json`。
- 读全局 `learner-profile.md`(若存在),据其中的讲解偏好与反复盲区**调整本次讲解/出题/追问风格**——只调风格,**不放松本技能纪律**(blog 级深度、考核才记薄弱)。见 data-contract 第十四节。
- 读 cwd 的 `./.swcc-checkin.md`(若存在):据 data-contract 第十五节**续载**上次搁置的深挖方向——`topic`/`node` 与本次匹配则接着挖,不匹配则忽略其内容、稍后按本次节点重建。没有则跳过。
### 阶段 2:定位当前复习节点
| 优先级 | 选谁 |
|---|---|
| 1 | `weakPoints` 中 `nextReview` ≤ 今天(`date +%F`)的薄弱点——优先复习到期薄弱点 |
| 2 | 否则 `currentNode` 指向的节点(若为 `in_progress`) |
| 3 | 否则下一个 `not_started` 的叶子节点 |
> 注:到期**薄弱点**已学过,定位到它时可直接进考核(相当于 `test` 取向);生疏/首次的节点走默认「先讲后测」。
### 阶段 3:预生成并 review 教学稿
**先给用户一个准备提示(不阻塞):**
```
🎯 当前节点:<topic> / <节点路径>
📅 上次复习:<lastReviewed 或「首次」>
🧭 取向:<study/test>
⏳ 正在准备教学稿…
```
#### 3.1 判定是否复习节点
以 `progress.json` 中该叶子节点的状态为准:
- **新学节点**:`status` 为 `not_started`,或 `lastReviewed` 为空 → 使用完整 4 段教学稿。
- **复习节点**:`status` 为 `in_progress`/`mastered`,或 `lastReviewed` 非空 → 跳过 `### 背景` 段,从 `### 本质问题` 开始。
#### 3.2 预生成教学稿
从 `knowledge-system.md` 读取当前节点内容,组合成完整教学稿:
- 新学节点:背景 → 本质问题 → 核心机制 → 进阶(全部 4 段)。
- 复习节点:本质问题 → 核心机制 → 进阶(跳过背景)。
教学稿内部保留 `###` 标题标记,便于阶段 4 按段展开。
#### 3.3 读取 roadmap 参考
从 `knowledge-tree.md` 读取当前节点所属 `##` 子主题的:
- **核心问题**(作为阶段 4 讲解开场定调用)。
- **本章考察点**(作为阶段 5 考核出题参考)。
#### 3.4 subagent 纪律
阶段 3 派出的 review 子智能体必须遵守以下纪律;主对话在 `go` 执行期间也默认遵守同样的联网限制。
1. **工具权限 —— 禁止联网。** subagent **严禁**调用 WebSearch、WebFetch 以及任何其他联网工具;只能使用 Read 读取输入上下文中已提供的文件、Bash 进行纯本地处理、Agent 返回结果。主对话在 `go` 执行期间也默认不调用 WebSearch/WebFetch,除非用户显式要求。
2. **输入来源 —— 只读既定材料。** subagent 只能基于以下素材工作:阶段 3.2 预生成的教学稿、所属 `##` 子主题的核心问题 + 本章考察点、topic + level + node 路径、`learner-profile.md`(若存在)、`${CLAUDE_PLUGIN_ROOT}/skills/_shared/teaching-review-rubric.md`。禁止主动检索外部网页、文档、博客、论文或在线课程。
3. **输出契约。** 必须严格按 3.5 要求的四桶对象数组返回;`type` 仅限 suggestion 形式(`diagram-suggestion`、`table-suggestion`、`example-suggestion`、`analogy-suggestion`、`wording-correction`、`depth-expansion`、`boundary-risk`),**不得**在返回中附带实际图、表、代码片段或完整改写后的教学稿。
4. **输出校验与失败回退。** 主对话收到子智能体返回后,若检测到内容中包含 `http(s)://` URL、引用了输入上下文未提供的网页/文章/在线资料,或出现「according to web/article/online / 据网络/文章/在线资料」等外部检索措辞,应**视为无效输出并丢弃**,按失败回退处理。
5. **失败回退。** 若 subagent 调用失败、超时,或输出违反上述纪律,直接按预生成稿进入阶段 4,并提示用户"教学稿 review 暂不可用,将直接开始讲解"。
#### 3.5 subAgent review(最多 2 轮)
用 **Agent 工具**派发一个 review 子智能体,输入:
- 预生成教学稿;
- `${CLAUDE_PLUGIN_ROOT}/skills/_shared/teaching-review-rubric.md`;
- 该节点所属 `##` 子主题的核心问题 + 本章考察点;
- topic + level + node 路径;
- 用户 learner-profile(若存在)。
要求子智能体按 `teaching-review-rubric.md` 的 5 个维度评审,并返回以下 JSON(只评估、不改写文件):
```json
{
"expansions": [
{
"dimension": "logical-rigor | conceptual-clarity | presentation-form | information-value | learner-comprehensibility",
"severity": "high | medium | low",
"suggestion": "具体要补什么、怎么补",
"type": "diagram-suggestion | table-suggestion | example-suggestion | analogy-suggestion | wording-correction | depth-expansion | boundary-risk"
}
],
"corrections": [],
"risky_points": [],
"others": []
}
```
**消费规则**:
- 读取 `expansions` / `corrections` / `risky_points` / `others` 四个数组,按 `dimension + suggestion` 去重。
- 优先处理 `high`,其次 `medium`;`low` 视 level 与讲解篇幅酌情。
- 根据 `type` 决定修改方式:
- `diagram-suggestion` / `table-suggestion`:在稿中预留图/表描述或生成对应 Mermaid/ASCII 图。
- `example-suggestion` / `analogy-suggestion`:插入具体例子或类比。
- `wording-correction`:修正术语或定义。
- `depth-expansion`:补原理、推导、取舍。
- `boundary-risk`:在相关段落末尾显式加「注意/误区」提示。
**迭代规则**:
- 根据建议修改教学稿,最多 2 轮。
- 每轮都重新 review。
- review 完成后,将最终教学稿作为阶段 4 的讲解基础。
**失败回退**:若 subAgent 调用失败/超时,直接按预生成稿进入阶段 4,并提示用户"教学稿 review 暂不可用,将直接开始讲解"。
### 阶段 4:讲解(按 review 后的教学稿对话,study 取向;test 取向跳过本阶段)
**开场先给全景**:
```
📍 我们在 <topic> 的 <子主题> 章节,本章核心问题是:
<核心问题>
本章考察点包括:
- <考察点 1>
- <考察点 2>
下面围绕当前节点 <节点路径> 展开。
```
然后按教学稿的 `###` 段落顺序展开:
- 新学节点:背景 → 本质问题 → 核心机制 → 进阶。
- 复习节点:本质问题 → 核心机制 → 进阶。
- 根据 review 建议的 `type`,主对话决定是否生成图/表/类比;生成时保持术语与 `knowledge-tree.md` / `knowledge-system.md` 一致。
每个要点输出 blog 级讲解(宁深勿浅),包含:
- **本质 / 第一性视角**:先讲它解决什么根本问题、什么约束逼出了这个设计。
- **是什么 + 为什么这样设计**:在本质之上展开原理与来龙去脉,不止给结论。
- **设计取舍 / 对比**:与替代方案相比为什么是它、代价是什么。
- **边界、陷阱、易错点**:主动点出最容易理解错或被忽略的地方。
- **具体例子**:用一个具体例子(命令、代码或真实场景)落地;挂了资料就结合原文并说清出处。
**check-in 与深挖栈**:
- 每讲完一个概念或一段,做 check-in:确认清楚了吗?列出 2-4 个可继续深挖的方向。
- 同步写/更新 `./.swcc-checkin.md`(新方向进「待挖」、挖完移到「已挖完」)。
- 用户选方向 → 就地下钻,blog 级讲透;挖完回到 check-in 列出剩余方向。
- 所有分支都挖够或用户说"够了" → 进下一个概念/段落。
**本阶段不评判对错、不记薄弱点**。讲解期用户答错/答不上来:只纠正、补讲,绝不记薄弱点。
清单过完(或用户说「可以了,考我吧」)→ 进入阶段 5。`test` 取向或用户说「直接考我」→ 跳过本阶段。
### 阶段 5:考核(后测,苏格拉底式,一次一题)
**进入考核前,先输出一行不可省略的硬分界标记**(单独成行):
```
--- 考核开始(以下计入掌握度评分)---
```
这是 stop 区分「讲解 / 考核」的**唯一硬依据**。`test` 取向同样**在第一题前**输出此标记。
考核题目参考:
- `knowledge-tree.md` 中该节点所属 `##` 子主题的**核心问题**与**本章考察点**。
- `knowledge-system.md` 中该节点 `### 核心机制` 的要点。
- 用户实际反应(动态调整)。
**默认业务研发视角**:优先考察"在业务代码里怎么用、怎么踩坑、怎么做取舍",避免纯源码细节和书本背诵。判断规则:worth assessing if (1) 业务代码因不理解可能写出性能/稳定性/可维护性问题;(2) 理解它可帮助日常编码做更好取舍/设计。avoid 纯源码细节、纯事实记忆。
过完知识点后,围绕同一份清单逐个概念考核。**每个概念不是问一题就过**,按回答质量动态调难度:
| 用户回答 | 你的下一步 |
|---|---|
| 答得准且深(讲清原理/取舍/边界) | 认可 → 升一档:追问边界/反例/与替代方案对比,或换下一个概念 |
| 答得对但浅(只背了结论) | 追问「为什么会这样」「换个场景还成立吗」,逼出原理 |
| 卡壳 / 答错 | 先给小提示再追;仍卡 → 简要补讲,**心里标记为本次薄弱点候选** |
| 完全没答 / 说「不知道」 | 先给最小方向提示(只点方向、不给答案)再追;仍不会 → 简要补讲,标记为薄弱点候选,换角度再考一次 |
- 题型按 mode:`concept` 偏原理推导、`scenario` 给真实工程场景、`mixed` 交替。
- **费曼检验**:让用户「用一个简单类比,把它讲给外行听」。能讲准、讲清 → 是真懂了本质;讲不出或只会背术语 → 还停在表面,标记为薄弱点候选。
- 每题:提问 → 等答 → **点评**(对/错/缺漏,必要时补讲取舍)→ 下一题。
- **只有本阶段的表现计入掌握度与薄弱点**。在阶段 4 刚讲过、这里一考就答得清的概念,说明已真正理解;讲过仍卡的,才记为薄弱点。
> 用户回答正确时,继续追问一层「为什么会这样」或「换个条件是否还成立」,以区分『真懂原理』与『只记住结论』。
### 阶段 6:收尾交接
当节点关键概念已考核充分,或用户表示告一段落时,输出**结构化小结**(喂给 `/swcc-stop` 评估子智能体的关键输入):
```
📝 本次复习小结(供 stop 评估用)
- 节点:<topic> / <节点路径> 取向:<study/test> 题型:<mode>
- 已讲解的概念/段落:<逐个列>(仅过了一遍,不据此判薄弱)
## 考核结果(结构化,stop 直接读取;薄弱点只从此表取)
| 概念/机制 | 表现 | 备注 |
|------|------|------|
| <机制A> | 扎实 | <讲清原理与取舍> |
| <机制B> | 答浅 | <只背结论,追问「为什么」答不出> |
| <机制C> | 卡壳 | <换场景后答不出> |
- 未考核的概念(因时间 / 用户跳过,属"没考到"而非"考不过"):<列出,或「无」>
复习完用 /swcc-stop 归档(掌握度由系统独立评估,自动记薄弱点并安排下次复习)。
⚠️ /swcc-go 和 /swcc-stop 需在同一轮对话里使用——stop 要读本次对话来评分。
```
> 「表现」三档:**扎实**(讲清原理/取舍/边界)、**答浅**(只背结论)、**卡壳**(答错/答不出)。薄弱点只取「答浅 / 卡壳」,「未考核」不算薄弱。
---
## 质量基准(达到才算一次好复习)
- 先读 roadmap 给用户全景,让用户知道当前节点在专题中的位置。
- 预生成教学稿并经过 subAgent review(失败则回退直接教学)。
- 按 review 后的教学稿展开讲解,复杂原理从本质/第一性讲起,check-in 给多个深挖方向。
- 过完之后**考核**了同一批概念,薄弱点只来自考核阶段(不会把"还没复习"误记为薄弱)。
- 收尾小结把「已讲解」与「考核结果」分开,stop 能据此客观评分、只对考核结果判薄弱。
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!