☰
从零搭建个人技能库:用Markdown+Git实现技能结构化与AI复用
2026/10/8 17:30:52 网站建设 项目流程

"技能"这个词,可能是近两年被误解得最深的一个词。我身边很多人看起来特别爱学习,收藏夹里躺着几十篇教程,知识付费的课也没少买,可真正到用的时候,还是会冒出一句"我好像会,又好像不会"。团队里更是常见,A同学踩了一星期坑总结出来的处理流程,B同学下个月又把同一个坑原封不动踩了一遍。问题不是大家不够努力,而是我们的技能一直处于隐性状态:它活在记忆里、散落在笔记中,从来没有被当成一个可以结构化管理的东西。这也是我后来坚持维护一套"技能库"(skills)的原因——把隐性技能显性化,把显性技能条目化,把条目变成可执行、可验证、甚至能被AI助手直接调用的技能包。

这套方案我在个人学习和带团队时都实际跑过,前后迭代了三版,今天把最终沉淀下来的结构、模板、脚本和踩坑记录一次性分享出来。它适合想系统化提升自己的开发者、产品、运营等知识型工作者,也适合想把团队能力沉淀成资产的小团队负责人。不依赖任何特定工具,一台能写Markdown的电脑就能跑起来。

1. 为什么要建自己的"技能库":先算清楚技能复用的账

1.1 "会一点"和"能交付"之间,缺的不是知识量而是结构化

我见过太多人被"会一点"误导。面试里说"我懂SQL",真让他写一条带窗口函数的查询,又支支吾吾半天。问他为什么,回答通常是"用过,但不熟"。其实这不是不熟,而是他掌握的只是SQL的碎片知识,不是完整的技能。

我自己的定义里,一个合格的技能必须包含四样东西:知识、操作流程、判断标准、可验证的输出。知识是你知道有这么一个东西存在,操作流程是你能一步步把东西做出来,判断标准是你能识别边界条件、异常情况和什么时候不该用,可验证的输出是你能拿出一个结果让别人验收。光有第一样,那叫收藏夹,不叫技能。

这里有个很关键的分界线:技能是可以被"调用"的,知识只能被"想起"。就像你家里堆着一堆食材(知识),但不代表你会做菜;会做菜意味着你有一套流程,知道火候怎么控制,端出来的菜能让人吃。大多数人缺的不是食材,是把食材变成菜的那套流程,更准确地说,是那套流程没有被写下来、没有被验证过。

结构化要做的事情,就是把模糊的"我好像会"翻译成具体的"我能在什么条件下、用什么方法、产出什么结果"。翻译完一次,你的技能就从记忆变成了资产;翻译成文字以后,它还能被搜索、被评审、被复用,甚至被自动化工具调用。

1.2 技能库不是文件夹:四层架构一次说清

很多人一听"技能库",第一反应是建一堆文件夹往里丢资料,那只是资料库。我跑了两年版之后,把技能库沉淀成四层结构,每一层解决不同的问题。

第一层是能力域(domain),对应一个大方向,比如数据处理、前端开发、项目管理、沟通协作。第二层是技能条目(skill),是能力域下面一个具体的、可验证的技能,比如"用Python完成CSV数据清洗"或者"用SQL做分组统计"。第三层是技能卡(skill card),是技能条目的载体,包含元信息、操作步骤、验收清单和参考链接。第四层是索引层(index),把所有技能卡汇总成能力矩阵、依赖关系、学习路径,让人一眼看清自己和团队到底会什么、短板在哪。

这个结构很像图书馆。书架上的大类是能力域,每本书是一个技能条目,书的内容是技能卡,而检索目录就是索引层。没有索引层的技能库就是一堆杂物;没有规范卡片格式的技能库就是随手记;没有能力域划分的技能库长大以后根本没法维护。

我当时踩过的坑是只搭了第二层和第三层,技能卡写了几十张,但从来没有能力矩阵。结果就是盘点的时候只能一张张点开看,特别低效。后来补上索引层才明白,技能库的价值不是"存了多少",而是"检索多快、决策多准"。

1.3 为什么我最终选纯文本加Git,而不是笔记软件

一开始我用的是Notion类的笔记软件,界面漂亮,写起来也顺手。真正让我换掉的原因是三个:不可批量处理、不可精细追踪、不可跨工具迁移。技能卡一旦多起来,就希望做三件事——自动汇总能力矩阵、自动检查格式错误、自动生成AI技能包,笔记软件对这些场景支持得很差。

用纯文本加Git的好处非常明显。Markdown文件本质是文本,可以做diff,可以写脚本批量处理,可以被任何编辑器打开,也可以被AI读取。Git负责版本管理,技能卡就像代码一样可以提交、回滚、分支协作。每张卡都是独立文件,谁改了什么一清二楚,哪张卡过期了也能通过脚本扫出来。

我实际用过的体验对比大概是这样的:

  • 纯文本+Git:可脚本化、可diff、可迁移、适合长期维护,但没有可视化界面
  • 笔记软件:美观、上手快、适合个人随手记,但批量操作和自动化差,数据导出格式乱

我的建议是,如果你才刚开始、卡不超过二十张,用什么工具都行;但如果你打算把技能库当资产长期维护,直接上Markdown+Git。迁移成本其实很低,Markdown本来就是通用格式,笔记软件的内容反而难导出来。

2. 技能拆解五步法:把模糊技能变成可验收的技能卡

2.1 颗粒度判断:什么样的技能才配叫"原子技能"

拆技能最容易犯的毛病是颗粒度不对。有人把"数据分析"当一张技能卡,结果里面什么都有,等于什么都没写;有人把"用回车键换行"当一张卡,写了纯属浪费。

我判断"原子技能"用的是IPO原则,就是看这个技能有没有明确的输入、过程、输出。输入是你拿到什么,过程是你做什么,输出是你交付什么。三者都清晰,才算一个技能条目。比如"用Excel透视表完成维度汇总",输入是明细数据表,过程是拖拽行列和值字段,输出是汇总透视表,这就是合格的技能。

还有一个判断标准:这个技能能不能独立验收。如果做完之后,别人能根据一个明确的检查标准判定你做没做对,它就可以成为一张卡。比如"用Python清洗CSV"可以验收,但"理解数据质量"就没法验收,因为没有一个具体产物。

"数据分析"这种词是能力域,不是技能条目。能力域是若干技能的组合,就像"数据分析"是由数据清洗、统计建模、可视化表达等等技能组合出来的。拆的时候先列能力域,再往下拆成技能,拆到每一条都能用一句话说清楚"用什么、做什么、产出什么",基本就是合适的颗粒度了。

2.2 技能卡模板:YAML头加操作步骤加验收清单

技能卡是一张卡片的格式,前面是元信息,后面是正文。我用的模板是这样:

--- name: 用Python完成CSV数据清洗 domain: 数据处理 tags: [python, csv, 数据质量] level: 3 last_reviewed: 2025-06-01 prerequisites: [Python基础, Pandas基础] depends_on: [] outputs: 清洗后的数据集和质量报告 --- ## 目标 拿到一个包含缺失值、重复行、格式错误的CSV文件后,在30分钟内清洗为可分析的结构化数据。 ## 步骤 1. 读取文件,用 `df.head()` 和 `df.info()` 预览列名与数据类型 2. 检查缺失值分布,记录缺失比例超过30%的列并决定删除或填充 3. 根据业务主键列去重,记录去重行数 4. 检查日期、数值字段的类型,统一格式 5. 输出清洗后的数据集,并写一份质量报告 ## 验收清单 - [ ] 清洗前后行数变化有记录,重复行的处理策略写进报告 - [ ] 缺失值处理策略明确:删除、填充还是标记,都有依据 - [ ] 所有字段类型符合预期,`df.dtypes` 检查通过 - [ ] 质量报告包含:原始行数、清洗后行数、缺失值比例、重复行数 ## 参考 - 相关教程链接 - 之前踩坑的记录链接

模板的重点是验收清单。我个人的习惯是先写验收清单,再写步骤。因为验收清单是在回答"什么样算完成了",想清楚这个,步骤自然就出来了。很多人写技能卡把力气花在步骤描述上,写得很细很全,但没写验收标准,最后用起来还是不知道做到哪一步算完。

YAML头里的level我用五级制:1级是了解,2级是能照做,3级是熟练,4级是能带人,5级是能优化。这个级别别乱标,写高了会误导协作的人,写低了对自己的评估又不准。我的经验是第一版先标3级,使用过程中再按实际反馈上下调整。

2.3 一个完整案例:把"会写SQL"拆成五张技能卡

"会写SQL"太模糊,必须拆。我把它拆成五张卡,每张都能独立验收,组合起来才等于"能承担报表开发"。

第一张是基础单表查询:用SELECT、WHERE、ORDER BY完成单表查询,验收方式是给定一张订单表,筛出指定日期范围内金额大于某个值的记录并按时间排序。第二张是多表关联:用JOIN完成两张表的关联查询,验收方式是订单表关联用户表,输出每个用户的订单总数和总金额。第三张是分组统计:用聚合函数加GROUP BY完成分组汇总,验收方式是统计每个品类的销量和销售额。第四张是复杂逻辑拆分:用子查询或CTE完成多步逻辑,验收方式是算每个用户首次下单后的复购率。第五张是性能排查:用执行计划定位慢查询,验收方式是给一条慢SQL,定位瓶颈并给出优化建议。

这五张卡之间有天然的前置关系。第二张依赖第一张,第三张也依赖第一张,第四张依赖第二张和第三张。这个依赖关系会写进prerequisites字段,后面自动生成学习路径的时候非常有用。

拆完以后,你再看"会写SQL"这句模糊的话,就变成了五条能验证的陈述。你知道自己卡在哪个环节,也知道团队里谁真正能接手哪种SQL需求,这个时候技能才从形容词变成了可管理的东西。

3. 从零搭一个skills仓库:目录、命名与自动汇总脚本

3.1 目录结构与命名规范:让仓库像代码一样整洁

一个我能稳定维护的skills仓库长这样:

skills/ ├── README.md ├── templates/ │ └── skill-card.md ├── domains/ │ ├──>import os import re import yaml from pathlib import Path DOMAINS_DIR = Path("domains") def parse_card(path): text = path.read_text(encoding="utf-8") m = re.match(r"^---\n(.*?)\n---", text, re.S) if not m: return None meta = yaml.safe_load(m.group(1)) return {"file": path.name, "path": str(path), **meta} cards = [] for md in DOMAINS_DIR.rglob("*.md"): if md.name == "index.md": continue card = parse_card(md) if card: cards.append(card) cards.sort(key=lambda c: (c.get("domain", ""), c.get("name", ""))) print(f"| 能力域 | 技能名称 | 熟练度 | 标签 | 文件 |") print(f"|--------|----------|--------|------|------|") for c in cards: tags = ",".join(c.get("tags", [])) print(f"| {c.get('domain', '')} | {c.get('name', '')} | {c.get('level', '')} | {tags} | {c['file']} |")

跑这个脚本的输出就是一张能力矩阵。我通常配合一个validate_cards.py做格式校验,强制每张卡必须有name、domain、level、prerequisites字段,缺了就报错。这两个脚本加在一起,就是整个技能库的"编译检查",保证仓库里每张卡都是可用的。

能力矩阵的价值在盘点时体现得最明显。团队要做新项目,需要评估有没有人会某种技能,直接把矩阵拉出来看,三分钟就能给出结论,不用再问一圈人。每个人自己的技能短板也一目了然,哪里该补,优先级怎么排,数据会告诉你。

4. 进阶玩法:把技能卡升级成AI能调用的技能包

4.1 AI技能包的本质:把经验封装成可执行的指令

现在很多AI助手都开始支持"技能包"机制,翻译成大白话就是:把某类任务的处理经验压缩成一套结构化指令,让AI按照你定义的流程干活。你平时跟AI对话是"即兴发挥",技能包则是"照着菜谱做菜",稳定性和可复用性完全不一样。

我接触AI技能包之后最大的感受是:我的技能卡就是现成的素材。因为技能卡里已经写好了目标、步骤、验收清单,这些恰恰是AI技能包需要的核心内容。换句话说,我花两年搭技能库,无意中为AI时代积累了一批高质量的结构化经验。

纯聊天提示词和技能包的区别,一个是即用即走,一个是可以沉淀、可以迭代、可以校验。AI技能包执行完你可以让它跑一遍验收清单,检查有没有漏步骤、结果是否符合预期。这种"输出可验证"的能力,是我觉得技能包最值钱的地方。

4.2 从技能卡到SKILL.md:字段映射与改写要点

把技能卡升级成AI技能包,核心工作是字段映射。映射关系大概是这样:

  • 技能卡的name,对应AI技能包的name,AI主要通过这个字段识别技能,要短且无歧义
  • 技能卡的description,对应AI技能包的description,要写清楚"何时用、何时不用"
  • 技能卡的步骤,对应AI技能包的instructions,改写成祈使句指令
  • 技能卡的验收清单,对应AI技能包的verification,改写成可检查的规则
  • 技能卡的prerequisites,对应AI技能包的required_skills,提示AI调用相关能力

改写的时候最关键的一点是:从给人看到给机器读,语气和格式都要调整。人读"用df.head()预览数据",机器读的时候要写明"在读取CSV后,必须调用df.head()查看前五行,确认列名是否存在,如果列名不符预期,停止执行并报告错误"。AI技能包里的每一条指令都需要包含输入、动作、异常处理,否则AI很容易在某个边界条件上卡住或者跑偏。

4.3 一个可直接套用的AI技能包目录结构

我给团队沉淀的AI技能包结构是这样的:

data-cleaning/ ├── SKILL.md ├── scripts/ │ ├── clean_csv.py │ └── quality_report.py └── references/ └── common_issues.md

SKILL.md是入口,里面写清楚技能的目标、输入输出、执行步骤和验证方式。scripts目录放可执行的脚本,AI可以调用这些脚本完成实际处理。references放参考文档,包括踩坑记录和边界情况,AI在拿不准的时候可以查阅。

SKILL.md的简化示例这样写:

--- name: csv-cleaning description: 对包含缺失值、重复记录和格式错误的CSV文件做清洗,输出结构一致的数据集。适用于数据分析前的数据准备阶段,不适用于超大文件的分布式清洗。 required_skills: - python-basics - pandas-basics --- ## Instructions 1. 读取CSV文件,用 `df.head()` 和 `df.info()` 预览列名和数据类型 2. 统计缺失值比例,缺失率超过30%的列需在报告中说明后删除或填充 3. 根据业务主键列执行去重,记录去重行数 4. 统一日期、数字字段格式 5. 输出清洗后文件和质量报告 ## Verification - 输出文件不包含全空行 - 重复行已去重,数量变化在报告中有记录 - 报告包含原始行数、清洗后行数、缺失比例、去重行数 ## References - references/common_issues.md

AI技能包比普通提示词稳定,关键在verification这一块。AI执行完会主动检查自己的输出,符合规则才算完成。这相当于给AI装了一个质检环节,把"碰运气"变成了"有保底"。我在做数据分析类的技能包时,还会让AI实际跑一遍scripts里的质检脚本,用输出结果验证,比让AI自评可靠得多。

4.4 团队共用技能库:按PR流程维护一份团队资产

技能库如果只有个人用,维护成本低很多;一旦团队共用,就必须建立规则,否则会乱成一锅粥。我的实践是把技能库当成开源仓库来维护,用PR流程管理变更,效果很好。

流程是这样的:任何人要新增或修改技能卡,先在本地改好,跑一遍校验脚本,然后提交合并请求。合并请求的评审只看三个标准:验收清单是否可执行、步骤是否可复现、level标注是否合理。三条都过,才能合入。这样的好处是每张进库的卡都经过质检,不会出现"写了等于没写"的无效内容。

迭代方面,我每季度把所有last_reviewed超过90天的卡打回重审。技术变化快,技能卡放半年不更新就会失真。重审的时候不需要大改,只更新过时的步骤、调整不合理的level、补充新踩的坑。

团队里一定得有一个人当技能库的maintainer,负责合并请求、组织重审、维护质量。否则这个库会慢慢腐烂。有了明确的维护者,技能库才是一个有生命力的资产,而不是一个写完就死的文件夹。

5. 常见问题与避坑实录:维护技能库时踩过的那些坑

5.1 卡写得太详细,结果没两周就不想维护了

这是我最开始犯的错。第一版技能卡每张都写两千多字,详细到把每条Python函数的作用都解释一遍。结果坚持了两周就断更了,因为维护成本高到离谱。后来我意识到,技能卡是"操作索引",不是教程。

教程的作用是教你学会,技能卡的作用是提醒你关键步骤和验收方式。你真正干活的时候,不需要一篇两千字的文章,需要的是"先看缺失值,再去重,最后检查类型"这种精简的指引。细节和原理应该放到references里,用链接带上,而不是写进卡里。

我的自查标准就一句话:如果删掉一段话完全不影响执行这条技能,那就删掉。现在我的技能卡正文控制在500字以内,步骤短句化,维护轻松了很多,使用率反而上来了。

5.2 技能库和技术文档的边界到底在哪

很多人把技能库写成了项目wiki,这是另一个极端。技能库是"可迁移的能力",项目文档是"跟特定系统绑定的信息"。判断标准是:换一家公司、换一个项目,这条内容还用得上吗?用得上,放技能库;用不上,放项目文档。

举个例子,"如何配置当前Spark集群的连接参数"这是项目文档,因为换项目就没用了;"如何排查Spark任务OOM问题"这才是技能卡,因为思路和方法是可迁移的。把项目特有信息混进技能库的后果是,技能库会迅速变成一堆没人看得懂的旧系统说明,彻底失去复用价值。

我在团队里用一条硬规则来防止这个问题:写卡之前先回答"这个步骤依赖当前项目吗",只要答案是"是",就打回重写或者改放项目wiki。规则的强制性很重要,因为人的第一反应都是把自己手头的case写进去,很少想可迁移性。

5.3 团队没人愿意更新技能库,怎么破

团队技能库最大的问题是"写了没人看,更没人更新"。原因很简单,写卡的人没有即时收益。我试过很多方法,最后发现光喊口号没用,得把写卡嵌入到工作流里。

我的做法是把技能卡写进复盘流程:谁踩了坑,谁就要在复盘记录里附上一张技能卡或者技能卡更新。这不是惩罚,而是把沉淀变成惯例。再一个办法是新人入职第一个月必须提交一张技能卡,任务里带上编号,导师review以后合入。新人的视角最容易发现团队里"口口相传但没人记录"的隐性流程,这时候产出技能卡价值最大。

还有一个思路是轮值维护者。每个月安排一位同学当技能库维护者,负责合并请求、检查过期卡、组织复盘会里的技能评审。轮值的好处是每个人都当过maintainer,使用技能库的积极性会明显提高。实测下来,这些方法比单纯强调"大家要分享"有效得多。

5.4 提升技能复用率的几个实测技巧

最后分享几个我亲测有效、能让技能库真正用起来的技巧。

第一个是每半年做一次技能盘点。跑一遍能力矩阵脚本,对比上次的输出,看哪些技能新增了、哪些过期了、哪些处于明显短缺状态。盘点不只是记录,要产出决策:接下来半年学什么、不学什么、团队要补哪个方向的人。

第二个是先写验收清单再写步骤。这个方法看起来反直觉,但效果极好。因为验收清单逼你先想清楚"什么算做完",有了这个锚点,步骤自然就有逻辑了。如果先写步骤,很容易写成流水账,最后验收标准只能凑合编。

第三个是把最常用的十张卡置顶。在README里开一个"高频技能"区域,放这段时间被调用最多的卡。不用多,十张以内,减少检索成本。这个做法的本质是让技能库的入口足够短,使用体验足够顺畅。

第四个是跟AI技能包打通。这一步做完,日常使用AI助手时,它会按照你的技能卡来处理任务,用的都是你沉淀下来的流程和验收标准。你的技能库从"给人看"变成"人机共用",复用价值的提升非常明显。

我个人这两年的体会是:技能库最大的价值不是文档变多了,而是做事的方式变了。以前遇到问题我习惯在网上搜答案,现在我会先翻自己的技能库;以前带人全靠讲故事和口口相传,现在直接把技能卡丢过去,对方按步骤做、按验收清单自查,效率高得多。技能最值钱的地方不在"知道",而在"随时能拿出来用",而能不能被拿出来用,取决于你为它付出了多少结构化的努力。如果你也想搭一套自己的技能库,别贪多,先挑一个你最近常做、踩过坑的任务,写出一张技能卡来。一张卡不解决问题,但从一张卡开始,后面的东西会一次比一次容易。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询