| name | skill-discovery |
| description | 以 agent 对话为主扫描源,git 提交和反馈归档为验证补充,发现可复用的高频模式。 不预设模式类型,让模式自然浮现,所有候选由用户判断价值。 仅当用户明确说出"使用 skill-discovery"或"启动 skill-discovery"时触发。 不适用于任何隐式场景。 |
Skill Discovery — 能力沉淀器
触发约束
此 skill 仅通过显式调用触发。
⛔ 不触发的场景
- 用户提到"发现模式"、"提炼能力"等但未提及 skill-discovery
- 完成任务后的"顺便"扫描
- 用户未显式引用 @skill-discovery
✅ 触发条件
必须同时满足:
- 用户明确说出"使用 skill-discovery"或"启动 skill-discovery",或显式引用 @skill-discovery
- 用户提供了明确需求或上下文
问题
在使用 agent 的过程中,我们积累了大量隐性知识和工作模式:
- 反复纠正同一个行为——每次都教,但从不沉淀
- 同类修复反复出现——同样的 bug 修了又修
- 工作模式被遗忘——某个流程跑通了,下次又从头摸索
- Anti-pattern 反复踩——文档里写了但 agent 不看
如果不主动提炼,这些能力就会流失。 这个 skill 就是让"从经验中提炼能力"这件事本身变得可重复、系统化。
核心原则
主扫描(agent对话) → 模式浮现 → 验证补充(git/归档) → 覆盖度检查 → 用户判断 → 草案生成
每个阶段的设计理念:
- 主扫描:agent 对话是用户与 agent 的真实互动,最能反映用户的工作方式和期望
- 模式浮现:不预设类型(预防型、护栏型等),让模式从数据中自然涌现
- 验证补充:git 和归档用于验证模式是否对应实际问题,而非发现模式
- 用户判断:所有模式列出,由用户决定价值,不预设优先级
- 草案生成:基于用户确认的模式,生成可用的 SKILL.md
执行流程
Phase 1: 信号收集
设计理念:agent 对话是主扫描源,git 和归档是验证补充。
特殊场景:用户指定扫描对象时,跳过主扫描 JSONL。
1a. Agent 对话扫描
判断扫描方式:
- 用户指定扫描对象(如"当前对话所有内容"、"分析这次对话") → 直接扫描指定对话
- 用户未指定 → 执行 JSONL 主扫描(扫描最近30天历史)
用户指定扫描对象时:
扫描目标:用户指定的对话内容(如"当前对话所有内容"、"这次对话")
执行步骤:
Step 1: 提取关键节点
- 用户反馈(纠正、抱怨、追问)
- Agent 响应(重做、调整、修复)
- 任务转折点(切换方向、重新规划)
Step 2: 识别模式
- 用户反复纠正的行为(≥2次)
- Agent 反复踩的坑
- 用户反复强调的原则
Step 3: 识别模式关系
- 多个模式是否是同一流程的不同阶段?
- 是否可以整合为一个范式?
- 整合后是否覆盖所有子模式?
Step 4: 输出模式清单
- 如有整合可能,输出整合范式(不是独立列举)
- 包含:范式名称、核心流程、真实案例
Step 5: 评估模式质量(参考)
- 模式来源:当前对话 → 可能需要抽象化(从具体场景到通用范式)
- 执行方法:只有步骤名称 → 可能需要补充方法
- 输出:质量提示(给用户和 my-create-skill 参考)
示例:
用户反复纠正同一类行为:
- "检查上下游影响"(出现12次)
- "看看调用者"(出现8次)
- "整体考虑"(出现6次)
整合输出:改动影响分析范式(不是3个独立模式)
核心流程:定位改动 → 追踪调用链 → 检查副作用 → 输出影响清单
质量提示:
- 来源:当前对话 → 创建 skill 时需通用化(从具体项目到通用范式)
1b. JSONL 主扫描(用户未指定时执行)
扫描目标:
- Claude Code:
~/.claude/projects/{project-name}/*.jsonl
- Cursor:
~/.cursor/projects/{project-name}/agent-transcripts/*.jsonl
- Codex:
~/.codex/history.jsonl(单文件;按 cwd 过滤当前项目)
- 范围:最近 30 天
执行步骤:
Step 1: 提取用户消息
- 读取 JSONL,提取 type="user" 且 role="user" 的消息
- 过滤掉 tool_result、<command-name>(非用户真实表达)
- 截取前 300 字符
Step 2: 统计模式
- 完全重复消息:≥3 次的相同消息
- 关键词频率:高频关键词(改、检查、上下游等)
- 关键词组合聚类
Step 3: 输出模式清单
- 每个模式:名称、出现次数、典型片段
1c. Git 提交验证(补充)
定位:验证模式是否对应实际问题。
git log --all --oneline --grep="fix" --grep="修复" --grep="bug" -i -50
验证逻辑:
- 有反复修复 → 模式有价值
- 无对应修复 → 可能是用户偏好,需用户判断
1d. 反馈归档验证(补充)
定位:验证模式是否对应反复讨论的问题。
扫描路径:docs/feedback/archive/
验证逻辑:
- 有反复讨论 → 模式有价值
- 无对应讨论 → 需用户判断
Phase 2: 模式整理
整理发现的模式:
输出格式:
--- 发现模式 ---
模式: {名称}
次数: {出现次数}
来源: {当前对话 / JSONL扫描 / git提交}
验证: git有/无对应修复
典型: {片段前100字}
质量提示: {如来源为当前对话,标注"需通用化"}
Phase 3: 用户判断
展示模式清单,用户判断价值:
共发现 X 个模式
请判断:
- 输入"接受 X"确认某个模式
- 输入"接受全部"确认所有模式
- 输入"取消"中止
Phase 4: 覆盖度检查
检查现有 skill 是否已覆盖。
扫描目标:
- 项目级:
.agents/skills/、.claude/skills/、.cursor/rules/
- 全局级:
~/.codex/skills/、~/.claude/skills/
覆盖情况判断:
| 覆盖 | 行动 |
|---|
| 完全覆盖 | 不生成草案 |
| 部分覆盖 | 建议修改现有 skill |
| 无覆盖 | 生成新 skill 草案 |
Phase 5: 草案生成策略
首先检查 my-create-skill 是否可用:
扫描 skill 目录:
.agents/skills/my-create-skill/SKILL.md
.claude/skills/my-create-skill/SKILL.md
.cursor/skills/my-create-skill/SKILL.md
如果可用:
- 输出候选清单(名称、触发条件)
- 建议用户:
使用 my-create-skill 创建 {skill-name}
- 本 skill 不生成完整草案,my-create-skill 会处理格式规范
如果不可用:
- 本 skill 生成简化草案框架(不含完整触发约束段落)
- 提醒用户:草案格式可能不完整,建议后续校验
简化草案格式:
---
name: {skill-name}
description: {1句话描述,说明用途}
---
{1-3 条核心原则}
{步骤化的操作指南}
草案质量要求:
- MUST 包含可执行的步骤
- NEVER 编造未扫描到的模式
- NEVER 生成空模板或占位符
Phase 6: 输出与交付
生成 能力发现报告(文本形式):
=== 能力发现报告 ===
扫描范围:agent transcripts(30天)、git(验证)、归档(验证)
发现模式:X 个
--- 模式清单 ---
1. {模式名称}
次数: X 次
验证: git有/无对应修复,归档有/无对应讨论
典型: {片段前100字}
2. ...
--- 用户确认 ---
{列出用户确认的 skill 候选}
--- 建议行动 ---
my-create-skill 可用,建议执行:
使用 my-create-skill 创建 {skill-name}
{如有质量提示,补充:}
注意:此模式来自{来源},创建 skill 时:
- {如来源为当前对话} 需通用化(从具体场景到通用范式)
- {如执行方法不足} 需补充具体执行方法
输出选项:
- 默认输出文本报告(对话中展示)
- 用户明确要求时可写入文件:
- 报告:用户指定路径
- 草案:宿主项目 Skills 目录中的
{skill-name}/SKILL.md(仅当 my-create-skill 不可用时)
Phase 7: 用户确认与草案生成
用户确认后,生成草案:
确认后的输出格式:
--- 确认的 skill 候选 ---
候选 1: {skill-name}
模式来源: {模式名称}
触发条件: {从模式推断}
--- 草案预览 ---
{简化草案内容}
注意:
- 此阶段只输出文本草案,不写入文件
- 用户需显式说"写到 XXX"才执行写入
硬约束
- MUST 只读扫描 — 扫描阶段不修改任何项目数据
- MUST 输出文本 — 报告和草案以对话文本形式输出,不默认写文件
- MUST 用户指定写入路径 — 只有用户明确说"写到 XXX"时才写入
- MUST 遵循格式 — 草案与用户已有全局 skill 格式一致
- NEVER 自动写入文件 — 不写入 skill 目录、不写入临时文件、不写入任何位置
- NEVER 编造模式 — 不凭空想象可能的 skill
- NEVER 自动注册 — skill 的创建、注册、提交全部由用户手动完成
- NEVER 扫描敏感数据 — 跳过 credentials、tokens、.env 等文件
- NEVER 在扫描失败时静默跳过 — 明确报告哪些数据源不可用