
Skill Knowledge Extractor
- 1 installs
- 6 repo stars
- Updated April 12, 2026
- yizhiyanhua-ai/agent-skills
Extracts and codifies tacit knowledge, workflows, and best practices from conversations or descriptions into a reusable, structured Skill.
About
Turns a user's experience, process, or domain expertise into a structured, reusable SKILL.md (SOP, checklist, or methodology). A developer uses it to systematize institutional know-how into an agent skill.
- Codifies workflows into reusable skill templates
- Triggers on knowledge-extraction and SOP-documentation requests
Skill Knowledge Extractor by the numbers
- 1 all-time installs (skills.sh)
- Ranked #644 of 782 Skill Development skills by installs in the Skillselion catalog
- Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/yizhiyanhua-ai/agent-skills --skill skill-knowledge-extractorAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1 |
|---|---|
| repo stars | ★ 6 |
| Last updated | April 12, 2026 |
| Repository | yizhiyanhua-ai/agent-skills ↗ |
What it does
Extracts and codifies tacit knowledge, workflows, and best practices from conversations or descriptions into a reusable, structured Skill.
Files
知识提取器 (Knowledge Extractor)
将隐性知识转化为可复用的 Skill,让个人经验变成团队资产。
核心价值:无论用户是口头描述、粘贴对话记录、还是上传文档,本 Skill 都能帮助识别可复用的模式并生成结构化的 Skill 草稿——不依赖任何脚本,Claude 直接分析完成。
适用场景
| 场景 | 输入示例 | 输出 |
|---|---|---|
| 销售话术沉淀 | 销售对话记录 / 口述成交方法 | 开场白/异议处理/促成 Skill |
| 专家经验提取 | 专家的工作文档、笔记、口述 | 检查清单/决策树 Skill |
| 客服模板生成 | 客服聊天记录 / 投诉处理案例 | 标准回复模板 Skill |
| 流程规范化 | 操作步骤描述 / 工作方法口述 | SOP Skill |
| 调试/排障流程 | 工程师的故障处理经验 | 排查步骤 Skill |
| 需求评审方法 | 产品经理的评审经验 | 问题清单/决策框架 Skill |
工作流程
极简模式(推荐起点)
当用户直接描述经验或粘贴记录时,无需任何脚本,Claude 直接执行以下步骤:
1. 理解输入:识别材料类型(口述 / 对话记录 / 文档) 2. 提取模式:识别重复出现的步骤、判断逻辑、话术结构、检查点 3. 生成草稿:直接输出知识提取报告 + Skill 草稿 4. 确认迭代:向用户确认准确性,按反馈调整
脚本(scripts/extract_patterns.py)是可选的加速方案,适合批量处理大量文件。对于单次对话或口述场景,Claude 直接分析即可。详细流程
第一步:收集原始材料
若用户未提供材料,引导提供以下任一:
- 口述经验(直接描述工作方法,最简单)
- 对话记录(聊天截图、文字记录)
- 工作文档(笔记、报告、邮件)
对于口述场景,使用引导性提问帮助用户清晰表达:
- "您通常第一步做什么?"
- "遇到[常见情况]时,您怎么处理?"
- "有没有特别重要、别人容易忽略的点?"
第二步:识别可复用模式
从材料中识别以下类型的模式:
话术模式(适用于销售、客服)
- 开场白模式、问题诊断模式、异议处理模式、促成/收尾模式
检查清单模式(适用于审核、质检、评审)
- 必查项目、常见问题点、风险预警项
决策树模式(适用于问题诊断、分类、排障)
- 判断条件、分支路径、最终结论
模板模式(适用于文档、回复、报告)
- 固定结构、可变参数、示例填充
SOP 模式(适用于流程规范化)
- 步骤序列、关键节点、验收标准
第三步:生成 Skill 草稿
根据提取的模式,直接生成符合规范的 Skill 草稿:
---
name: [skill-name]
description: [何时触发、适用场景的简洁描述]
---
# [Skill 名称]
[一句话说明核心价值]
## 使用场景
[描述何时使用这个 Skill]
## 核心模式
### 模式 1:[模式名称]
**触发条件**:[何时使用]
**执行步骤**:
1. [步骤1]
2. [步骤2]
**示例**:[具体示例]
### 模式 2:[模式名称]
...第四步:用户确认与优化
展示草稿后,询问: 1. 是否准确反映了他们的经验? 2. 有没有遗漏的重要模式? 3. 示例是否需要调整?
根据反馈迭代优化。
可选:脚本批量处理
对于需要分析大量文件(如 100+ 条对话记录)的场景,可使用脚本加速:
python scripts/extract_patterns.py --input <材料文件> --type <材料类型>材料类型:conversation(对话记录)/ document(工作文档)/ description(口述描述)
输出格式
知识提取报告
知识提取报告
━━━━━━━━━━━━━━━━━━━━━━
来源:[材料来源描述]
分析数量:[分析的记录/文档数量]
发现的可复用模式:
1. **[模式名称]**(出现 X 次,占比 Y%)
- 触发场景:[何时出现]
- 核心要点:[关键内容]
- 示例:[具体示例]
2. **[模式名称]**(出现 X 次,占比 Y%)
...
建议生成的 Skill:
- [skill-name-1]([功能描述])
- [skill-name-2]([功能描述])
知识覆盖度:
- 已提取:X 个模式
- 覆盖场景:Y%
- 建议补充:[需要更多材料的领域]Skill 草稿
生成符合规范的 SKILL.md 文件,包含:
- 正确的 frontmatter(name, description)
- 清晰的使用场景
- 结构化的模式描述
- 具体的示例
特殊处理
非技术用户
对于非技术用户,使用更简单的语言:
- 避免技术术语
- 多用具体示例
- 提供逐步引导
敏感信息
提取过程中注意:
- 脱敏客户信息
- 隐藏具体金额
- 匿名化人名
多人经验合并
当需要合并多人经验时: 1. 分别提取每人的模式 2. 识别共同模式(最佳实践) 3. 标注差异模式(个人风格) 4. 生成综合版 Skill
示例
示例 1:销售话术提取
输入:销售冠军张三的 50 条成交对话记录
输出:
知识提取报告
━━━━━━━━━━━━━━━━━━━━━━
来源:销售部 张三 的 50 条成交对话记录
发现的可复用模式:
1. **痛点挖掘开场**(出现 45 次,占比 90%)
- 触发场景:首次接触客户
- 核心要点:先问痛点,再介绍产品
- 示例:"您目前在 XX 方面遇到什么挑战?"
2. **价格异议处理**(出现 32 次,占比 64%)
- 触发场景:客户说"太贵了"
- 核心要点:先认同,再算账,最后对比
- 示例:"您说得对,我们确实不是最便宜的。但您算过吗..."
3. **限时促成**(出现 28 次,占比 56%)
- 触发场景:客户犹豫不决
- 核心要点:限时优惠 + 案例背书
- 示例:"这个月签约的话,可以享受..."
建议生成的 Skill:
- sales-opening-skill(开场白助手)
- objection-handler-skill(异议处理助手)
- closing-skill(促成助手)示例 2:合同审查经验提取
输入:法务专家李四的合同审查笔记
输出:
知识提取报告
━━━━━━━━━━━━━━━━━━━━━━
来源:法务部 李四 的合同审查笔记(30 份)
发现的可复用模式:
1. **付款条款检查**(必查项)
- 检查点:付款比例、付款条件、付款时间
- 常见问题:预付比例过高、验收条件模糊
- 建议条款:[标准条款模板]
2. **违约责任检查**(必查项)
- 检查点:违约定义、赔偿上限、免责条款
- 常见问题:赔偿无上限、免责范围过宽
- 建议条款:[标准条款模板]
3. **知识产权检查**(技术合同必查)
- 检查点:权属归属、使用范围、保密期限
- 常见问题:权属不清、保密期过短
- 建议条款:[标准条款模板]
建议生成的 Skill:
- contract-checklist-skill(合同检查清单)
- clause-library-skill(条款库)注意事项
1. 优先极简模式:口述描述是最低门槛的输入,直接帮用户从对话中提炼,无需准备任何材料 2. 材料质量:输入材料越丰富,提取的模式越准确;但单条口述同样有价值 3. 隐私保护:提取过程中自动脱敏客户信息和敏感数据 4. 持续迭代:Skill 草稿需要与用户确认后再正式使用 5. 多人合并:合并多人经验时,注意区分共同模式和个人风格
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
dist/
*.egg-info/
*.egg
# Virtual environments
venv/
.venv/
ENV/
# IDE
.idea/
.vscode/
*.swp
*.swo
*~
# OS
.DS_Store
Thumbs.db
# Project specific
*.log
{
"skill_name": "skill-knowledge-extractor",
"evals": [
{
"id": 1,
"prompt": "我是一个有10年经验的产品经理,我来说说我做需求评审的方法,帮我把这个经验提炼成一个可复用的 Skill:我通常先用5分钟了解背景,然后问'用户是谁'、'痛点是什么'、'为什么现在做',接着评估技术可行性和优先级,最后确认验收标准。",
"expected_output": "提取出需求评审 Skill 草稿,包含触发场景、步骤模板、关键问题清单",
"files": []
},
{
"id": 2,
"prompt": "这是我们客服团队处理退款投诉的对话记录(模拟):客户:我要退款!客服:非常抱歉,能告诉我订单号吗?客户:12345,质量太差了。客服:了解了,我们这边立即为您处理,同时送您一张优惠券。帮我从中提取标准化的投诉处理流程 Skill。",
"expected_output": "生成投诉处理 Skill 草稿,包含开场安抚、信息收集、解决方案、补偿策略等模式",
"files": []
},
{
"id": 3,
"prompt": "Extract knowledge from my debugging process: I always start by reproducing the bug locally, then check logs for error messages, then isolate the component, then write a minimal test case, then fix and verify. Turn this into a reusable debugging skill.",
"expected_output": "Debugging skill draft with clear steps, decision points, and examples",
"files": []
}
]
}
MIT License
Copyright (c) 2025
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Skill 知识提取器
🇬🇧 English
从对话记录、文档或工作经验中提取可复用的知识模式,帮助创建 Skill。
功能特点
- 分析对话记录(销售通话、客服聊天)
- 从工作文档和笔记中提取模式
- 自动生成 Skill 草稿
- 支持中英文双语
使用方法
# 分析对话文件
python scripts/extract_patterns.py --input chat.txt --type conversation
# 分析文档
python scripts/extract_patterns.py --input notes.md --type document
# 输出 JSON 格式
python scripts/extract_patterns.py --input data.txt --json支持的模式类型
- 开场白模式 - 标准问候和介绍
- 问题诊断模式 - 发现问题的提问方式
- 异议处理模式 - 应对客户顾虑的话术
- 促成模式 - 成交技巧
- 检查清单模式 - 核查项目
- 模板模式 - 可复用的文档结构
- 决策树模式 - 条件判断逻辑
- 流程步骤模式 - 分步骤工作流
许可证
MIT
Skill Knowledge Extractor
🇨🇳 中文
Extract reusable knowledge patterns from conversations, documents, or work experiences to create Skills.
Features
- Analyze conversation records (sales calls, customer service chats)
- Extract patterns from work documents and notes
- Generate Skill drafts automatically
- Support both Chinese and English
Usage
# Analyze a conversation file
python scripts/extract_patterns.py --input chat.txt --type conversation
# Analyze a document
python scripts/extract_patterns.py --input notes.md --type document
# Output as JSON
python scripts/extract_patterns.py --input data.txt --jsonPattern Types
- Opening patterns - Standard greetings and introductions
- Diagnosis patterns - Problem discovery questions
- Objection handling - Responses to customer concerns
- Closing patterns - Deal closing techniques
- Checklist patterns - Verification items
- Template patterns - Reusable document structures
- Decision tree patterns - Conditional logic flows
- Procedure patterns - Step-by-step workflows
License
MIT
#!/usr/bin/env python3
"""
知识模式提取脚本
从对话记录、文档或描述中提取可复用的知识模式
"""
import argparse
import json
import sys
from pathlib import Path
from collections import Counter
# 国际化支持
LANG = 'zh'
MESSAGES = {
'zh': {
'title': '📋 知识提取报告',
'source': '来源',
'count': '分析数量',
'patterns_found': '🔍 发现的可复用模式',
'pattern': '模式',
'frequency': '出现',
'times': '次',
'percent': '占比',
'trigger': '触发场景',
'key_points': '核心要点',
'example': '示例',
'suggested_skills': '💡 建议生成的 Skill',
'coverage': '📊 知识覆盖度',
'extracted': '已提取',
'patterns': '个模式',
'coverage_rate': '覆盖场景',
'suggest_more': '建议补充',
'no_patterns': '未发现明显的可复用模式',
'analyzing': '正在分析...',
'done': '分析完成',
},
'en': {
'title': '📋 Knowledge Extraction Report',
'source': 'Source',
'count': 'Analyzed',
'patterns_found': '🔍 Reusable Patterns Found',
'pattern': 'Pattern',
'frequency': 'Frequency',
'times': 'times',
'percent': 'ratio',
'trigger': 'Trigger',
'key_points': 'Key Points',
'example': 'Example',
'suggested_skills': '💡 Suggested Skills',
'coverage': '📊 Knowledge Coverage',
'extracted': 'Extracted',
'patterns': 'patterns',
'coverage_rate': 'Coverage',
'suggest_more': 'Need more data on',
'no_patterns': 'No obvious reusable patterns found',
'analyzing': 'Analyzing...',
'done': 'Done',
}
}
def t(key):
"""获取翻译文本"""
return MESSAGES.get(LANG, MESSAGES['en']).get(key, key)
# 模式识别规则
PATTERN_RULES = {
'conversation': {
'opening': {
'name_zh': '开场白模式',
'name_en': 'Opening Pattern',
'keywords': ['你好', '您好', '请问', '了解', '需求', '挑战', '问题', 'hello', 'hi', 'how can'],
'description': '对话开始时的标准话术'
},
'diagnosis': {
'name_zh': '问题诊断模式',
'name_en': 'Diagnosis Pattern',
'keywords': ['什么情况', '具体', '详细', '能说说', '遇到', '发生', 'what happened', 'tell me more'],
'description': '深入了解问题的提问方式'
},
'objection': {
'name_zh': '异议处理模式',
'name_en': 'Objection Handling',
'keywords': ['理解', '确实', '但是', '不过', '其实', '算一下', 'understand', 'however', 'actually'],
'description': '处理客户异议的话术'
},
'closing': {
'name_zh': '促成/收尾模式',
'name_en': 'Closing Pattern',
'keywords': ['这样吧', '建议', '如果', '现在', '优惠', '限时', 'suggest', 'recommend', 'special offer'],
'description': '促成交易或结束对话的话术'
},
'empathy': {
'name_zh': '共情模式',
'name_en': 'Empathy Pattern',
'keywords': ['理解您', '明白', '感受', '确实不容易', '换位思考', 'understand', 'feel', 'appreciate'],
'description': '表达理解和共情的话术'
}
},
'document': {
'checklist': {
'name_zh': '检查清单模式',
'name_en': 'Checklist Pattern',
'keywords': ['检查', '确认', '核实', '是否', '必须', 'check', 'verify', 'must', 'required'],
'description': '需要逐项检查的清单'
},
'template': {
'name_zh': '模板模式',
'name_en': 'Template Pattern',
'keywords': ['模板', '格式', '标准', '范例', '示例', 'template', 'format', 'standard', 'example'],
'description': '可复用的文档模板'
},
'decision': {
'name_zh': '决策树模式',
'name_en': 'Decision Tree Pattern',
'keywords': ['如果', '那么', '否则', '情况', '分类', 'if', 'then', 'else', 'case', 'category'],
'description': '基于条件的决策逻辑'
},
'procedure': {
'name_zh': '流程步骤模式',
'name_en': 'Procedure Pattern',
'keywords': ['第一步', '然后', '接下来', '最后', '步骤', 'step', 'first', 'then', 'next', 'finally'],
'description': '标准操作流程'
}
}
}
def analyze_text(text, material_type='conversation'):
"""分析文本,提取模式"""
rules = PATTERN_RULES.get(material_type, PATTERN_RULES['conversation'])
# 按段落分割
paragraphs = [p.strip() for p in text.split('\n') if p.strip()]
total_paragraphs = len(paragraphs)
# 统计每种模式的出现次数
pattern_counts = Counter()
pattern_examples = {}
for para in paragraphs:
para_lower = para.lower()
for pattern_id, pattern_info in rules.items():
for keyword in pattern_info['keywords']:
if keyword.lower() in para_lower:
pattern_counts[pattern_id] += 1
if pattern_id not in pattern_examples:
pattern_examples[pattern_id] = para[:100] + ('...' if len(para) > 100 else '')
break
return pattern_counts, pattern_examples, total_paragraphs, rules
def generate_report(source_name, pattern_counts, pattern_examples, total_count, rules):
"""生成知识提取报告"""
lines = []
lines.append(t('title'))
lines.append('━' * 40)
lines.append(f"{t('source')}:{source_name}")
lines.append(f"{t('count')}:{total_count} 条记录")
lines.append('')
if not pattern_counts:
lines.append(t('no_patterns'))
return '\n'.join(lines)
lines.append(f"{t('patterns_found')}:")
lines.append('')
# 按出现次数排序
sorted_patterns = pattern_counts.most_common()
for i, (pattern_id, count) in enumerate(sorted_patterns, 1):
pattern_info = rules.get(pattern_id, {})
name = pattern_info.get(f'name_{LANG}', pattern_info.get('name_en', pattern_id))
percent = round(count / total_count * 100) if total_count > 0 else 0
lines.append(f"{i}. **{name}**({t('frequency')} {count} {t('times')},{t('percent')} {percent}%)")
lines.append(f" - {t('trigger')}:{pattern_info.get('description', '')}")
if pattern_id in pattern_examples:
lines.append(f" - {t('example')}:「{pattern_examples[pattern_id]}」")
lines.append('')
# 建议生成的 Skill
lines.append(f"{t('suggested_skills')}:")
for pattern_id, count in sorted_patterns[:3]:
pattern_info = rules.get(pattern_id, {})
name = pattern_info.get(f'name_{LANG}', pattern_info.get('name_en', pattern_id))
lines.append(f"- {pattern_id}-skill({name}助手)")
lines.append('')
lines.append(f"{t('coverage')}:")
lines.append(f"- {t('extracted')}:{len(pattern_counts)} {t('patterns')}")
coverage = round(sum(pattern_counts.values()) / total_count * 100) if total_count > 0 else 0
lines.append(f"- {t('coverage_rate')}:{coverage}%")
return '\n'.join(lines)
def generate_skill_draft(pattern_counts, pattern_examples, rules, skill_name='extracted-knowledge'):
"""生成 Skill 草稿"""
sorted_patterns = pattern_counts.most_common()
lines = []
lines.append('---')
lines.append(f'name: {skill_name}')
lines.append(f'description: 从经验中提取的知识模式,包含 {len(sorted_patterns)} 种可复用模式。')
lines.append('---')
lines.append('')
lines.append(f'# {skill_name}')
lines.append('')
lines.append('## 使用场景')
lines.append('')
lines.append('当遇到以下场景时使用此 Skill:')
for pattern_id, _ in sorted_patterns[:3]:
pattern_info = rules.get(pattern_id, {})
lines.append(f'- {pattern_info.get("description", pattern_id)}')
lines.append('')
lines.append('## 核心模式')
lines.append('')
for i, (pattern_id, _count) in enumerate(sorted_patterns, 1):
pattern_info = rules.get(pattern_id, {})
name = pattern_info.get(f'name_{LANG}', pattern_info.get('name_en', pattern_id))
lines.append(f'### 模式 {i}:{name}')
lines.append('')
lines.append(f'**触发条件**:{pattern_info.get("description", "")}')
lines.append('')
lines.append('**执行步骤**:')
lines.append('1. [根据实际情况填写]')
lines.append('2. [根据实际情况填写]')
lines.append('')
if pattern_id in pattern_examples:
lines.append('**示例**:')
lines.append(f'> {pattern_examples[pattern_id]}')
lines.append('')
return '\n'.join(lines)
def main():
parser = argparse.ArgumentParser(description='知识模式提取工具')
parser.add_argument('--input', '-i', help='输入文件路径')
parser.add_argument('--text', '-t', help='直接输入文本')
parser.add_argument('--type', choices=['conversation', 'document', 'description'],
default='conversation', help='材料类型')
parser.add_argument('--source', '-s', default='用户提供的材料', help='来源描述')
parser.add_argument('--output', '-o', help='输出文件路径')
parser.add_argument('--skill-name', default='extracted-knowledge', help='生成的 Skill 名称')
parser.add_argument('--lang', choices=['zh', 'en'], default='zh', help='输出语言')
parser.add_argument('--json', action='store_true', help='输出 JSON 格式')
args = parser.parse_args()
global LANG
LANG = args.lang
# 获取输入文本
if args.input:
with open(args.input, 'r', encoding='utf-8') as f:
text = f.read()
source = args.source or Path(args.input).name
elif args.text:
text = args.text
source = args.source
else:
# 从 stdin 读取
text = sys.stdin.read()
source = args.source
if not text.strip():
print("错误:没有输入内容" if LANG == 'zh' else "Error: No input content")
sys.exit(1)
# 分析文本
print(t('analyzing'), file=sys.stderr)
pattern_counts, pattern_examples, total_count, rules = analyze_text(text, args.type)
if args.json:
# JSON 输出
result = {
'source': source,
'total_count': total_count,
'patterns': [
{
'id': pid,
'name': rules.get(pid, {}).get(f'name_{LANG}', pid),
'count': count,
'percent': round(count / total_count * 100) if total_count > 0 else 0,
'example': pattern_examples.get(pid, '')
}
for pid, count in pattern_counts.most_common()
]
}
print(json.dumps(result, ensure_ascii=False, indent=2))
else:
# 生成报告
report = generate_report(source, pattern_counts, pattern_examples, total_count, rules)
print(report)
print()
# 生成 Skill 草稿
if pattern_counts:
print('=' * 40)
print('📝 Skill 草稿:')
print('=' * 40)
print()
skill_draft = generate_skill_draft(pattern_counts, pattern_examples, rules, args.skill_name)
print(skill_draft)
# 保存输出
if args.output and not args.json:
report = generate_report(source, pattern_counts, pattern_examples, total_count, rules)
with open(args.output, 'w', encoding='utf-8') as f:
f.write(report)
print(f"\n{t('done')}:{args.output}", file=sys.stderr)
if __name__ == '__main__':
main()