Back to skills
SKILL.md
Go
ASecurityUse 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」。
- 2 stars
- 0 votes
- 0 copies
- 0 views
- Added August 31, 2026
Security analysis
100/100npx -y skills add guoqiaoZhou/study-with-claude-code --skill go --agent claude-codeAre you the author of Go?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/guoqiaozhou-go)---
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 能据此客观评分、只对考核结果判薄弱。
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.