Kaoyan knowledge-learning
This skill should be used when the user asks to learn about a topic, understand a concept, get explanations about technical subjects, or requests knowledge about any domain.
git clone https://github.com/Treasoni/kaoyan
T=$(mktemp -d) && git clone --depth=1 https://github.com/Treasoni/kaoyan "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/knowledge-learning" ~/.claude/skills/treasoni-kaoyan-knowledge-learning && rm -rf "$T"
.claude/skills/knowledge-learning/SKILL.mdKnowledge Learning Skill
Overview
This skill helps users learn various topics and concepts through interactive, adaptive learning rather than one-way knowledge dumping. It focuses on:
- Intelligent information sourcing (search only when needed)
- Interactive learning with questions and confirmation
- Flexible output format based on context
- Layered understanding (concept → detail → application)
When This Skill Applies
This skill should be invoked when the user:
- Asks to learn about a topic ("帮我学习 Python", "我想了解 Python")
- Requests concept explanations ("什么是微服务架构?", "解释一下 React hooks")
- Wants to understand technical subjects ("学习机器学习")
- Seeks knowledge explanations in any domain
Workflow
1. Understand the Learning Request
- Identify the main topic the user wants to learn
- Extract any specific aspects the user is interested in
Identify user's learning goal:
- 概念理解 (Conceptual understanding) - 用户想建立心智模型
- 考试准备 (Exam preparation) - 需要重点、考点、记忆技巧
- 实际项目 (Practical project use) - 需要代码示例、最佳实践
- 面试准备 (Interview preparation) - 需要常见面试题、深入原理
Determine user's background level:
- Beginner (初学者) - 需要更多类比,少用术语
- Intermediate (中级) - 需要机制解释 + 示例
- Advanced (高级) - 需要权衡、边界情况、设计原理
Determine the depth of explanation needed (overview vs. detailed)
- Ask clarifying questions if the request is ambiguous
2. Determine Knowledge Type (Decide Whether to Search)
NOT all topics require WebSearch. Classify the topic:
| Knowledge Type | Needs WebSearch? | Reason |
|---|---|---|
| 基础理论 (算法、数学、操作系统原理) | ❌ No | Fundamental, stable over time |
| 经典概念 (TCP三次握手、设计模式) | ❌ No | Established, doesn't change yearly |
| 框架/库特定版本 | ✅ Yes | API changes, version-specific |
| 框架最新特性 | ✅ Yes | Need current year (2026) |
| 市场趋势/技术对比 | ✅ Yes | Landscape evolves |
| 语言语法基础 | ❌ No | Core language is stable |
| 语言新特性 | ✅ Yes | Need 2026 for latest features |
Use WebSearch ONLY when:
- User explicitly asks for "latest" or "2026" or "newest"
- Topic is about frameworks, libraries, tools, or market trends
- Topic is volatile and changes frequently
Examples of when NOT to search:
- "解释 TCP 三次握手" → Use internal knowledge
- "什么是快速排序算法" → Use internal knowledge
- "学习设计模式中的单例模式" → Use internal knowledge
3. Adaptive Interactive Learning
Ask ONLY when appropriate, not after every layer. Use judgment:
When to ask:
- User appears confused (expresses confusion, asks follow-up questions)
- User seems engaged but not understanding (gives hesitant responses)
- Complex concept is being explained
- Transitioning to a significantly deeper level
When NOT to ask:
- User seems confident and gives clear follow-up
- User just wants quick overview
- User is actively asking questions already
- Simple concept was just explained
Judgment cues:
- User says "我不懂" → Ask for clarification
- User says "继续" → Don't interrupt with questions
- User is asking deeper questions → They're engaged, keep flowing
- User says "简单点" → Switch to simpler explanation
Learning Phases:
Phase 1: Concept Layer (Overview)
- Provide a simple, high-level overview
- Use analogies to relate to everyday experiences
- Ask only if: Concept is complex or user seems uncertain
Phase 2: Detail Layer (After user confirms or asks deeper)
- Dive into specific aspects user is interested in
- Provide examples and use cases
- Ask only if: User hasn't shown clear understanding
Phase 3: Application Layer (If user wants to apply)
- Show how to use the knowledge in practice
- Provide code examples or step-by-step guides
- Ask: "想尝试一下吗?可以给你一个练习题" (engage, don't interrupt)
Phase 4: Verification (Check understanding)
- Ask the user a question to verify understanding
- Or ask user to explain it back in their own words
- Provide feedback on their explanation
Adaptive Difficulty Guidelines
Adjust explanation based on detected user level:
| User Level | Approach | Content Focus |
|---|---|---|
| 初学者 | 多类比、少术语、慢节奏 | What 和 Why,少谈 How |
| 中级 | 机制解释 + 代码示例 | How 为主,核心原理 |
| 高级 | 权衡、边界、设计原理 | Why 和 Trade-offs,最佳实践 |
Beginner 模式:
- Start with everyday analogies
- Avoid jargon or explain it immediately
- One concept at a time
- Visual descriptions when possible
Intermediate 模式:
- Explain mechanisms and "how it works"
- Provide practical code examples
- Show common patterns and pitfalls
- Connect to related concepts
Advanced 模式:
- Discuss trade-offs and design decisions
- Cover edge cases and performance considerations
- Compare alternatives and when to use what
- Share production experiences and anti-patterns
4. Output Format (Flexible)
NOT forced to use Obsidian Markdown. Choose format based on context:
| Situation | Output Format |
|---|---|
| 用户问简单解释 | 直接对话,简洁回答 |
| 用户想记笔记 | 使用 obsidian-markdown 技能 |
| 用户进行对话学习 | 混合格式:对话为主,结构化为辅 |
| 用户明确要求 Markdown 结构 | 使用 obsidian-markdown 技能 |
| 用户讨论或辩论 | 对话格式,引用、反问 |
Invoke obsidian-markdown skill ONLY when:
- User explicitly asks for "笔记" or "Markdown"
- User says "帮我整理成笔记"
- Learning session is complete and user wants to save
- Context indicates note-taking is appropriate
Interactive Learning Techniques
1. Ask Clarifying Questions
When the request is broad, first ask:
- "你想了解 [主题] 的哪方面?基础概念?实际应用?还是最新发展?"
- "你的背景是什么?是初学者还是有经验?"
- "你是想快速了解还是要深入学习?"
2. Interactive Question Methods
When interactive UI is available, use
AskUserQuestion tool.
Otherwise, ask in natural dialogue.
Using AskUserQuestion (when available):
AskUserQuestion( questions=[ { "question": "你想从哪个角度学习这个主题?", "header": "学习角度", "options": [ {"label": "基础概念", "description": "了解核心原理和机制"}, {"label": "实际应用", "description": "如何在实际项目中使用"}, {"label": "深入原理", "description": "底层实现和设计思想"}, {"label": "最新动态", "description": "该领域的最新发展和趋势"} ], "multiSelect": False } ] )
Using natural dialogue (fallback):
"你想从哪个角度学习这个主题?
- A. 基础概念 - 了解核心原理
- B. 实际应用 - 如何使用
- C. 深入原理 - 底层实现
- D. 最新动态 - 发展趋势"
Tool availability guideline:
- Try to use AskUserQuestion for structured choices
- If tool unavailable, fall back to natural questions
- Don't assume tool availability in skill design
- Always provide alternative approach
3. Confirm Understanding
After explaining a concept, ask:
- "这部分清楚了吗?"
- "需要我举个具体的例子吗?"
- "有什么疑问吗?"
4. Provide Examples and Counter-Examples
- Show positive examples
- Show common mistakes (counter-examples)
- Ask: "你能看出这两个的区别吗?"
5. Layered Explanation
Start simple, then go deeper:
Layer 1: "X 就像 Y" (analogy) Layer 2: Basic technical explanation Layer 3: Detailed mechanics (if user wants more)
6. Socratic Method (Ask instead of tell)
Sometimes guide the user to discover the answer:
- "你觉得为什么需要这么做?"
- "如果是你,你会怎么设计?"
- "猜猜这个输出会是什么?"
Guidelines
Content Principles
-
Make It Accessible
- Start with a simple analogy
- Explain technical jargon in simple terms
- Use concrete examples for abstract concepts
-
Engage the User
- Ask questions to gauge understanding
- Encourage user to think and respond
- Don't just dump information
-
Respect the Learning Pace
- One concept at a time
- Wait for user confirmation before going deeper
- Let user lead the direction
When Using Obsidian Markdown
Only use when appropriate. Structure like:
# [Topic Name] > [!info] 概述 > 简单的类比解释 ## 核心概念 ### 概念1 > [!tip] 关键点 > 重要提示 ### 概念2 解释... ## 实际应用 > [!example] 示例 > 具体例子... ## 常见误区 > [!warning] 注意 > 容易犯的错误... ## 相关概念 [[相关概念1]] | [[相关概念2]] ]]
Examples
Example 1: Learning a Stable Concept (No Search)
User: "解释一下 TCP 三次握手"
Process:
- Determine: This is a classic, stable concept → NO WebSearch needed
- Interactive response:
- "TCP 三次握手就像是打电话确认对方接听了...(类比)"
- "Ask: 这个类比清楚了吗?想了解具体的技术细节吗?"
- Wait for user response
- If user wants more details, provide technical explanation
- Ask: "这部分理解了吗?"
Example 2: Learning Latest Framework Features (Search)
User: "React 2026 有什么新特性?"
Process:
- Determine: User asks for "latest" and "2026" → YES, WebSearch needed
- Search for: "React 2026 new features", "React latest changes"
- Present findings interactively:
- "React 2026 主要有这些新特性...(列出)"
- "Ask: 你对哪个特性最感兴趣?我可以详细解释"
- Wait for user response
- Dive deeper based on user's choice
Example 3: Structured Note-Taking (Use obsidian-markdown)
User: "帮我整理一下微服务架构的笔记"
Process:
- User explicitly asks for "笔记" → Use obsidian-markdown
- Create structured note with callouts, sections
- Present the note to user
Example 4: Adaptive Interactive Learning
User: "我想学习递归"
Process:
- Detect goal: Need clarification - ask user's goal
- Detect level: If unclear, ask about experience
- Start with analogy: "递归就像俄罗斯套娃..."
- Adaptive: If beginner, stay simple; if advanced, show complexity analysis
- Provide code example
- Adaptive question:
- Beginner: "这个函数会输出什么?"
- Advanced: "你能分析一下这个递归的时空复杂度吗?"
- Judgment: If user responds confidently, continue; if hesitant, ask follow-up
- Goal-specific:
- For interview: "这是一个常见的面试题变种..."
- For project: "在项目中,递归要注意..."
- For exam: "考试重点:终止条件、递归关系..."
Important Notes
- NOT all topics need WebSearch - use judgment based on knowledge type
- NOT forced to use obsidian-markdown - adapt to context and user preference
- NOT ask after every layer - ask only when appropriate, don't interrupt flow
- Learning should be adaptive - adjust to user's level and goal
- Use AskUserQuestion when available, fall back to natural dialogue
- Detect user's learning goal (exam/project/interview/curiosity)
- Adjust explanation depth based on user level (beginner/intermediate/advanced)
- Focus on understanding not just memorization
- When unsure what the user wants, ask instead of assume