ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

大模型工具调用能力之三——Skills:用SKILL.md把Claude专家技能模块化复用

大模型工具调用能力之三——Skills:用SKILL.md把Claude专家技能模块化复用 1. 从“每次都要重新讲一遍”说起Claude Skills 到底解决什么问题如果你用 Claude 处理过稍微专业一点的任务大概率经历过这种循环先花五分钟写一段长长的提示词把角色、规则、输出格式、注意事项全交代一遍Claude 给出一个还不错的结果第二天换个对话窗口同样的任务又得把那段提示词重新粘贴一遍。更麻烦的是团队里每个人写的提示词还不一样输出格式五花八门最后还得人工统一。Claude Skills 就是冲着这个痛点来的。它本质上是一套“模块化、可复用、可落地”的能力扩展机制用 YAML 配置加 Markdown 流程再配合可选脚本把一套复杂的操作规范封装成一个“技能包”。导入 Claude 之后你只需要用自然语言说一句触发词Claude 就会自动加载对应的技能按照你预先定义好的流程执行。一次封装所有对话都能复用。这套机制特别适合三类人一是需要高频处理标准化任务的开发者比如每次提交代码都要写规范的 commit message二是运营和产品同学会议纪要、周报、需求拆解这类活儿重复度极高三是需要把 Claude 和存量业务系统打通的团队比如让 Claude 直接查 CRM 客户信息。你不需要懂复杂的开发复制模板改一改就能上手。这篇文章会从 SKILL.md 的文件结构切入给你一套可以直接复制的骨架示例讲清楚目录怎么组织、技能怎么触发、请求怎么验证最后把常见的报错挨个排查一遍。目标很明确让你把那些反复粘贴的提示词沉淀成可维护、可版本管理的技能资产。2. 前置准备TaoToken 接入与 Skills 运行环境在动手写 SKILL.md 之前先把调用链路搭好。Claude Skills 的触发和执行最终还是要落到模型 API 上。我这边习惯用 TaoToken 来做统一接入它的接口格式和主流用法兼容配置起来比较省事也不用在多个平台之间来回切换。你需要先拿到一个可用的 API Key。打开 TaoToken 的控制台在 API Keys 页面创建一个新的密钥复制保存好。这个 Key 后面会用在环境变量或者请求头里。控制台地址是 https://taotoken.net/console API 的基础地址是 https://taotoken.net/api 注意这个地址后面不加任何多余参数。拿到 Key 之后建议先做一次最小化的连通性验证确认网络和鉴权都没问题。可以用 curl 直接发一个最简单的对话请求curl https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -d { model: claude-sonnet-4-20250514, messages: [ {role: user, content: 回复两个字收到} ], max_tokens: 16 }如果返回的 JSON 里 choices 字段有内容说明链路通了。这一步看起来简单但能帮你排除掉后面很多“到底是 Skill 写错了还是 Key 没配好”的扯皮。把 Key 写进环境变量别硬编码在脚本里后面所有示例都假设你已经设置了TAOTOKEN_API_KEY。关于模型选择Skills 的触发对模型的指令遵循能力有一定要求建议用 Claude 系列里能力较强的版本。如果你还在纠结用哪个模型可以到模型对话页面实际跑几个触发词试试手感地址是 https://taotoken.net/models 。长期做编码类 Skill 的话Coding Plan 会更划算入口在 https://taotoken.net/coding-plan 。3. SKILL.md 骨架与目录组织把专家能力封装成包Claude Skills 的核心就是一个叫 SKILL.md 的文件。它的结构分两段开头是 YAML front matter用三个短横线包起来负责声明技能的元信息下面是 Markdown 正文负责写清楚执行流程、规则和示例。YAML 部分决定了技能叫什么、什么时候触发、能用哪些工具Markdown 部分决定了技能怎么干活。一个标准的技能目录长这样my-skill/ ├── SKILL.md # 必需YAML 配置 Markdown 流程 ├── scripts/ # 可选辅助脚本复杂逻辑放这里 │ └── helper.py └── references/ # 可选参考文档、模板、数据字典 └── field-map.md目录名必须和 YAML 里的name字段完全一致用小写字母加横杠比如git-commit-generator。这一点很多人第一次会踩坑目录叫MySkill但 name 写my-skill上传直接失败。下面是一个可以直接复制的 SKILL.md 骨架我拿“代码审查清单”这个场景来举例你可以照着改成自己的领域--- name: code-review-checklist description: 对代码片段做结构化审查输出问题清单和改进建议。触发词代码审查、review、检查代码、代码质量 version: 1.0.0 allowed-tools: [Read] --- # 代码审查清单技能 ## 核心规则 1. 按严重程度分级阻断Blocker、严重Major、建议Minor 2. 每条问题必须给出位置、问题描述、修改建议 3. 不评价代码风格偏好只关注正确性、安全性、可维护性 4. 输出用表格禁止大段散文 ## 执行步骤 1. 读取用户提供的代码片段 2. 逐行扫描识别潜在问题 3. 按分级归类生成问题清单 4. 给出整体评价和优先修复顺序 ## 输出格式 | 级别 | 位置 | 问题 | 建议 | | :--- | :--- | :--- | :--- | | | | | | ## 示例 输入一段包含 SQL 字符串拼接的 Python 代码 输出识别出 SQL 注入风险级别为阻断建议改用参数化查询YAML 里的description字段很关键它同时承担了“技能说明”和“触发词声明”两个职责。Claude 会根据这段描述判断当前对话是否该加载这个技能。所以触发词要写得具体别只写“代码相关”那样容易误触发或者不触发。allowed-tools控制技能能调用哪些能力。Read表示读取用户输入Write表示输出文件Bash表示执行脚本。权限按需给只读输入的场景就只写[Read]给多了反而增加不确定性。Markdown 正文部分我建议固定成“核心规则 执行步骤 输出格式 示例”四段式。规则写死边界步骤写清顺序格式锁定输出示例给模型一个参照。这四样齐了技能的稳定性会明显提升。4. 可复制配置带脚本的技能包完整示例光有骨架还不够真正体现 Skills 价值的是“流程 脚本”的组合。下面这个例子把会议纪要转行动项做成了一个带 Python 脚本的技能包你可以直接复制到本地跑通。目录结构meeting-action-extractor/ ├── SKILL.md └── scripts/ └── extract.pySKILL.md 内容--- name: meeting-action-extractor description: 从会议文本中提取行动项、责任人和截止时间。触发词会议纪要、行动项、待办提取、会议总结 version: 1.0.0 allowed-tools: [Read, Bash] --- # 会议纪要行动项提取技能 ## 核心规则 1. 行动项必须包含事项、责任人、截止时间三要素 2. 缺失的字段标注“待补充”不臆造 3. 核心结论最多保留 3 条 4. 输出固定为“结论 表格”两段 ## 执行步骤 1. 读取用户提供的会议文本 2. 调用 scripts/extract.py 做结构化解析 3. 按固定格式整理输出 4. 若解析结果为空提示用户检查文本格式 ## 输出格式 ### 会议核心结论 - 结论内容 ### 待执行行动项 | 行动项 | 责任人 | 截止时间 | | :--- | :--- | :--- | | | | |scripts/extract.py 内容import re import json import sys def extract(text): items [] patterns [ r([A-Za-z0-9\u4e00-\u9fa5])负责([^。])([^。]), r([A-Za-z0-9\u4e00-\u9fa5])牵头([^。])([^。]), ] for p in patterns: for m in re.findall(p, text): items.append({ 行动项: m[1].strip(), 责任人: m[0].strip(), 截止时间: m[2].strip() }) conclusions re.findall(r结论([^。]), text)[:3] return {action_items: items, conclusions: conclusions} if __name__ __main__: raw sys.stdin.read() print(json.dumps(extract(raw), ensure_asciiFalse))这个脚本从标准输入读文本输出 JSON。SKILL.md 里声明了Bash权限Claude 就能在需要时调用它。脚本的好处是把容易出错的解析逻辑固化下来模型只负责调度和格式化稳定性比纯提示词高不少。打包的时候把整个meeting-action-extractor文件夹压成 zip注意压缩包里第一层就是文件夹本身别多套一层。上传入口在 Claude 的设置里找到 Skills 相关选项选择上传即可。5. 验证请求与成功结果触发词怎么测才靠谱技能上传之后别急着上生产先做几轮触发验证。验证的核心是确认三件事触发词能不能命中、流程有没有按 SKILL.md 走、输出格式对不对。第一轮用最直白的触发词测试。新建一个对话输入“帮我提取这份会议纪要的行动项”然后把一段测试文本贴进去。测试文本可以这样写今天讨论用户留存方案A负责优化注册流程3天内完成B负责整理用户反馈周五前提交结论优先推进注册流程优化。如果技能正常加载你应该看到输出分成“会议核心结论”和“待执行行动项”两块表格里 A 和 B 的责任项、截止时间都填好了。这说明触发词命中、脚本调用、格式输出整条链路是通的。第二轮测试边界情况。输入一段没有明确责任人的文本看它是不是老老实实标注“待补充”而不是自己编一个名字出来。这一步能验证 SKILL.md 里的规则有没有被真正遵守。第三轮测试误触发。输入一句和会议无关的话比如“今天天气怎么样”确认技能不会被莫名其妙加载。如果误触发了说明description里的触发词写得太宽泛回去收窄。如果你在验证过程中想换个模型对比触发效果可以直接在模型对话页面切换地址是 https://taotoken.net/models 。不同模型对 YAML 描述的敏感度不一样多试两个心里有数。验证通过之后这个技能就可以在后续所有对话里复用了。你不需要每次都把那段会议纪要的规则重新讲一遍Claude 会自动按技能包里的流程执行。6. 本篇常见错排查上传失败、不触发、脚本报错技能用不起来九成问题出在下面这几个地方。我按排查顺序列一下遇到问题挨个对。上传直接失败。先看目录名和 YAML 里的name是不是完全一致大小写、横杠都不能差。再看 SKILL.md 是不是在压缩包的第一层目录里别出现meeting-action-extractor/meeting-action-extractor/SKILL.md这种嵌套。YAML 的缩进也要检查front matter 必须用三个短横线开头和结尾少一个都解析不了。技能上传成功但对话里不触发。大概率是description里的触发词和你的实际输入对不上。Claude 是根据描述做语义匹配的你写“会议纪要”用户说“整理一下刚才开会的要点”可能就匹配不上。解决办法是把常见说法都塞进描述里用顿号隔开。另外触发词别写得太泛像“帮我处理一下”这种容易误触发也容易不触发。脚本执行报错。先确认allowed-tools里有没有加Bash没加权限脚本根本跑不起来。再看脚本路径SKILL.md 里写的scripts/extract.py是相对技能根目录的别写成绝对路径。脚本本身建议先在本地用python scripts/extract.py test.txt跑一遍确认没有语法错误和依赖缺失。如果脚本依赖第三方库记得在技能说明里写清楚或者干脆用标准库实现。输出格式和预期不一致。检查 SKILL.md 里的“输出格式”段落是不是足够具体。只写“用表格输出”不够要把表头、列顺序、空值怎么处理都写死。模型在格式上的自由度越小输出越稳定。权限给多了导致行为异常。有些技能只需要读输入却给了Write和Bash模型可能会尝试做一些你没预期的操作。权限最小化是个好习惯只给必需的。排查的时候建议开一个新对话单独测别在已经跑了很多轮的对话里测上下文会干扰判断。如果实在找不到原因把 SKILL.md 内容贴到模型对话里让模型帮你看看 YAML 有没有语法问题往往能发现肉眼漏掉的缩进错误。7. 把技能资产管起来下一步怎么走技能包跑通之后真正的价值在于持续积累和复用。我的做法是给每个技能建一个独立的 Git 仓库SKILL.md 和脚本一起版本管理改了什么、为什么改都有记录。团队里谁需要就直接拉下来打包上传不用再靠聊天记录传提示词。技能之间也可以组合。比如一个“周报生成”技能内部可以调用“会议纪要提取”和“Git commit 规范生成”两个技能的输出形成一条流水线。Claude 在加载技能时会根据描述判断需要哪些你只要把触发词和依赖关系在 SKILL.md 里写清楚就行。如果你打算把技能和存量业务系统打通比如查 CRM、拉工单、读数据库建议先在一个隔离的测试环境里验证别直接连生产库。脚本里的密钥用环境变量注入别写死在代码里。接入文档在 https://taotoken.net/doc 有更细的接口说明配置 API Key 的入口在 https://taotoken.net/api-keys 。从重复粘贴提示词到把专家能力封装成可维护的技能包这一步跨过去之后你和团队的工作方式会明显不一样。技能库越厚后面做新任务时能复用的东西就越多这才是 Skills 这套机制真正值钱的地方。
返回列表