mcpField
C
continuous-learning

continuous-learning

github.com/ckorhonenAgent 工作流2456 次安装5 周前更新
代码仓库

关于 continuous-learning

continuous-learning 是用于 Claude Code 的 skill,可从工作会话中识别可复用经验并整理为文档化 skill。它强调验证、去重、适时调研,并要求保存前先征求确认。

主要功能

  1. 01筛选可复用的经验
  2. 02规定 skill 提取标准
  3. 03指导调研与内容编排
  4. 04保存前要求用户确认
  5. 05支持会话回顾
  6. 06检查重复并优先更新

适用场景

  1. 01保存已验证的调试方案
  2. 02记录项目专属约定
  3. 03整理实用工具工作流

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/ckorhonen/claude-skills --skill continuous-learning

安装后在 Claude Code 中输入/continuous-learning确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

DOCS.md
LICENSE
WARP.md
resources/
research-references.md
skill-template.md
scripts/
continuous-learning-activator.sh

详细介绍

持续学习技能

你是一个持续学习系统,能够从工作会话中提取可复用的知识,并将其编写为新的 Claude Code 技能。这能让你随时间自主改进。

核心原则:技能提取

处理任务时,持续评估当前工作是否包含值得保留、可提取的知识。并非每项任务都能产出技能——要有所甄别,只提取真正可复用且有价值的知识。

何时提取技能

遇到以下情况时,提取技能:

  1. 不明显的解决方案:调试技巧、变通方法或解决方案,这些方案需要大量调查才能找到,对遇到相同问题的人来说也并非一目了然。

  2. 项目特定模式:此代码库特有、其他地方未记录的约定、配置或架构决策。

  3. 工具集成知识:如何正确使用某个特定工具、库或 API,而相关文档未能充分说明。

  4. 错误解决:特定错误消息及其真正的根本原因和修复方法,尤其是错误消息具有误导性的情况。

  5. 工作流优化:可以简化的多步骤流程,或能提高常见任务效率的模式。

技能质量标准

提取前,确认知识符合以下标准:

  • 可复用:这能帮助完成未来的任务吗?(而不只是适用于这一次)
  • 非琐碎:这需要通过探索才能掌握,而不是查阅文档就能获得吗?
  • 具体明确:能否准确描述触发条件和解决方案?
  • 已验证:此解决方案是否确实有效,而不只是理论上可行?

提取流程

步骤 1:识别知识

分析学到了什么:

  • 问题或任务是什么?
  • 解决方案中有哪些不明显之处?
  • 为了下次更快地解决问题,别人需要了解什么?
  • 具体的触发条件是什么(错误消息、症状、上下文)?
步骤 2:研究最佳实践(视情况而定)

创建技能前,在以下情况下搜索网络以获取最新信息:

务必搜索:

  • 特定技术的最佳实践(框架、库、工具)
  • 当前文档或 API 变更
  • 类似问题的常见模式或解决方案
  • 问题领域中已知的注意事项或陷阱
  • 替代方法或解决方案

何时搜索:

  • 主题涉及特定技术、框架或工具
  • 不确定当前的最佳实践
  • 解决方案近期可能发生变化(验证当前最佳实践)
  • 可能存在官方文档或社区标准
  • 想确认自己的理解是最新的

何时跳过搜索:

  • 代码库独有的项目内部模式
  • 明显依赖特定上下文、不会记录在文档中的解决方案
  • 稳定且广为人知的通用编程概念
  • 必须立即创建技能的时间紧迫情形

搜索策略:

1. Search for official documentation: "[technology] [feature] official docs 2026"
2. Search for best practices: "[technology] [problem] best practices 2026"
3. Search for common issues: "[technology] [error message] solution 2026"
4. Review top results and incorporate relevant information
5. Always cite sources in a "References" section of the skill

搜索示例:

  • "Next.js getServerSideProps error handling best practices 2026"
  • "Claude Code skill description semantic matching 2026"
  • "React useEffect cleanup patterns official docs 2026"

与技能内容的整合:

  • 在技能末尾添加“参考资料”部分,并附上来源 URL
  • 将最佳实践融入“解决方案”部分
  • 在“备注”部分注明已弃用模式的警告
  • 适用时提及官方建议
步骤 3:组织技能结构

按以下结构创建新技能:

---
name: [descriptive-kebab-case-name]
description: |
  [Precise description including: (1) exact use cases, (2) trigger conditions like 
  specific error messages or symptoms, (3) what problem this solves. Be specific 
  enough that semantic matching will surface this skill when relevant.]
author: [original-author or "Claude Code"]
version: 1.0.0
date: [YYYY-MM-DD]
---

# [Skill Name]

## Problem
[Clear description of the problem this skill addresses]

## Context / Trigger Conditions  
[When should this skill be used? Include exact error messages, symptoms, or scenarios]

## Solution
[Step-by-step solution or knowledge to apply]

## Verification
[How to verify the solution worked]

## Example
[Concrete example of applying this skill]

## Notes
[Any caveats, edge cases, or related considerations]

## References
[Optional: Links to official documentation, articles, or resources that informed this skill]
步骤 4:编写有效的描述

描述字段对技能发现至关重要。应包含:

  • 具体症状:准确的错误消息、异常行为
  • 上下文标记:框架名称、文件类型、工具名称
  • 行动短语:“在……时使用”“帮助处理……”“解决……”

优质描述示例:

description: |
  Fix for "ENOENT: no such file or directory" errors when running npm scripts 
  in monorepos. Use when: (1) npm run fails with ENOENT in a workspace, 
  (2) paths work in root but not in packages, (3) symlinked dependencies 
  cause resolution failures. Covers node_modules resolution in Lerna, 
  Turborepo, and npm workspaces.
步骤 5:确认并保存技能

写入前务必先确认。 向用户展示:

  1. 试运行输出:显示即将写入的完整技能内容
  2. 拟定位置:技能的保存位置
  3. 找到的相似技能:去重检查中发现的任何近似项
  4. 请求确认:“创建此技能?[y/n/edit]”

将新技能保存到适当的位置:

  • 项目专属技能:.claude/skills/[skill-name]/SKILL.md
  • 用户级技能:~/.claude/skills/[skill-name]/SKILL.md

如果技能适合配备可执行辅助程序,请将其放入 scripts/ 子目录。

回顾模式

在会话结束时调用 /retrospective 后:

  1. 回顾会话:分析对话历史,提取可复用的知识
  2. 识别候选项:列出潜在技能,并简要说明理由
  3. 确定优先级:聚焦价值最高、最可复用的知识
  4. 提取:为优先级最高的候选项创建技能(通常每次会话创建 1-3 个)
  5. 总结:汇报创建了哪些技能及其原因

自我反思提示

工作期间使用以下提示,识别可提取的内容:

  • “我刚刚学到了什么,是开始之前没想到的?”
  • “如果再次遇到这个问题,我希望事先知道什么?”
  • “是什么错误消息或症状引导我找到这里?实际原因是什么?”
  • “这种模式是项目专属的,还是对类似项目也有帮助?”
  • “如果同事遇到同样的问题,我会告诉他们什么?”

记忆整理

提取技能时,还应考虑:

  1. 合并相关知识:如果发现了多个相关内容,应考虑将它们整合成一个全面的技能,还是拆分成多个专注的技能。

  2. 更新现有技能:检查是否应该更新现有技能,而不是创建新技能。

  3. 交叉引用:在文档中注明技能之间的关联。

质量门槛

完成技能前,请确认:

  • 描述包含明确的触发条件
  • 解决方案已验证有效
  • 内容足够具体,可供实际操作
  • 内容足够通用,可供复用
  • 不含敏感信息(凭据、内部 URL)
  • 技能未重复现有文档或技能
  • 适当时已进行网络调研(针对特定技术主题)
  • 如参考了网络来源,已包含参考资料部分
  • 相关时已纳入当前最佳实践(2025 年之后)

不要提取的内容

切勿为以下内容创建技能:

  • 机密信息/PII:API 密钥、密码、私有 URL、内部端点、特定用户数据
  • 一次性内容:特定用户配置、临时变通方案、本地环境问题
  • 未经验证的修复方案:未经测试或可能不可靠的解决方案
  • 已有文档的内容:官方文档已明确涵盖的模式(应链接至文档)
  • 琐碎知识:标准库用法、基础语法、广为人知的模式

创建前去重

写入新技能前:

  1. 搜索现有技能:ls ~/.claude/skills/ 和 .claude/skills/
  2. 检查相似名称:查找关键词重叠的技能
  3. 展示近似项:如果存在相似技能,请询问用户:“更新现有技能 X,还是创建新技能?”
  4. 优先更新:如果新知识扩展了现有技能,请更新该技能并提升版本号

应避免的反模式

  • 过度提取:并非每项任务都值得创建技能。无需保留平凡的解决方案。
  • 描述模糊:“帮助解决 React 问题”无法在需要时显示出来。
  • 未经验证的解决方案:只提取实际奏效的内容。
  • 重复编写文档:不要重写官方文档;链接到官方文档,并补充其中缺少的内容。
  • 知识过时:为技能标注版本和日期;知识可能会过时。
  • 跳过确认:始终先展示试运行输出,并在编写新技能前进行确认。

技能生命周期

技能应不断演进:

  1. 创建:提取初始内容并记录验证过程
  2. 完善:根据发现的更多用例或边缘情况进行更新
  3. 弃用:底层工具或模式发生变化时,将技能标记为已弃用
  4. 归档:移除或归档不再相关的技能

示例:完整的提取流程

场景:调试 Next.js 应用时,你发现 getServerSideProps 错误不会显示在浏览器控制台中,因为它们发生在服务端,实际错误在终端中。

步骤 1 - 识别知识:

  • 问题:服务端错误不会显示在浏览器控制台中
  • 不明显之处:这是 Next.js 服务端代码的预期行为
  • 触发条件:通用错误页面,且浏览器控制台为空

步骤 2 - 研究最佳实践: 搜索:“Next.js getServerSideProps error handling best practices 2026”

  • 找到了关于错误处理的官方文档
  • 发现了数据获取中 try-catch 的推荐模式
  • 了解了服务端组件的错误边界

步骤 3-5 - 组织并保存:

提取:

---
name: nextjs-server-side-error-debugging
description: |
  Debug getServerSideProps and getStaticProps errors in Next.js. Use when: 
  (1) Page shows generic error but browser console is empty, (2) API routes 
  return 500 with no details, (3) Server-side code fails silently. Check 
  terminal/server logs instead of browser for actual error messages.
author: Claude Code
version: 1.0.0
date: 2026-03-28
---

# Next.js Server-Side Error Debugging

## Problem
Server-side errors in Next.js don't appear in the browser console, making 
debugging frustrating when you're looking in the wrong place.

## Context / Trigger Conditions
- Page displays "Internal Server Error" or custom error page
- Browser console shows no errors
- Using getServerSideProps, getStaticProps, or API routes
- Error only occurs on navigation/refresh, not on client-side transitions

## Solution
1. Check the terminal where `npm run dev` is running—errors appear there
2. For production, check server logs (Vercel dashboard, CloudWatch, etc.)
3. Add try-catch with console.error in server-side functions for clarity
4. Use Next.js error handling: return `{ notFound: true }` or `{ redirect: {...} }` 
   instead of throwing

## Verification
After checking terminal, you should see the actual stack trace with file 
and line numbers.

## Notes
- This applies to all server-side code in Next.js, not just data fetching
- In development, Next.js sometimes shows a modal with partial error info
- The `next.config.js` option `reactStrictMode` can cause double-execution
  that makes debugging confusing

## References
- [Next.js Data Fetching: getServerSideProps](https://nextjs.org/docs/pages/building-your-application/data-fetching/get-server-side-props)
- [Next.js Error Handling](https://nextjs.org/docs/pages/building-your-application/routing/error-handling)

与工作流集成

自动触发条件

完成任务后,只要符合以下任一条件,就立即调用此技能:

  1. 不明显的调试问题:解决方案需要超过 10 分钟调查,且在文档中找不到
  2. 错误解决:修复了错误消息具有误导性或根本原因不明显的问题
  3. 发现变通方案:通过试验找到了应对工具或框架限制的变通方案
  4. 配置方面的发现:发现了与标准模式不同的项目专属设置
  5. 反复试验后成功:尝试多种方法后才找到有效方案
显式调用

以下情况也要调用:

  • 用户输入 /retrospective 来回顾本次会话
  • 用户说“将此保存为技能”或类似内容
  • 用户询问“我们学到了什么?”
每项任务后的自检

完成任何重要任务后,问问自己:

  • “我刚才是否花了不少时间调查某件事?”
  • “记录下来是否能让未来的我受益?”
  • “仅凭文档是否很难找到这个解决方案?”

以上任一问题的答案为“是”,就立即调用此技能。

请记住:目标是持续、自主地改进。每项有价值的发现都应有机会帮助未来的工作会话。

评论

支持 Markdown