编辑
2026-03-28
记录知识
0
请注意,本文编写于 42 天前,最后修改于 34 天前,其中某些信息可能已经过时。

目录

什么是skills
解析skills
调用skills
skills执行工具
演示
SKILL内容
尝试不同平台的通知方式
分析
参考

claude很强大, 但是我们使用它的时候必须掌握一定的技巧,2025年12月18日,claude将agent skills作为一种跨平台可移植的开放标准发布。

什么是skills

简单来说,skills就是一个markdown文件,里面存放了做一件事情的要求,当claude加载的时候,默认将其加载在系统提示词中,这样就相当于给claude赋予了一种明确的技能

image.png

解析skills

我们在讨论使用claude的时候,会提到需要思考好明确的步骤让claude执行,skills也是,所以skills需要如下特征

  • 解决一个具体且可重复的任务
  • 给claude能遵守的明确指示
  • 最好提供示例
  • 定义何时使用这些信息
  • 专注于一个工作流程,而不是试图做所有事情

换句话说,将上述特征点写成一个markdown给claude当作skills来加载,那么这个markdown就是skill。skill的组成如下

image.png

我们可以把一个skill.md分成如下三大内容

  • name: 一个描述skill的简短名字 (yaml格式)
  • description: 明确说明该技能的作用以及何时使用 (yaml格式)
  • markdown context: 一个skill的详细描述

其中,name和description会一直被加载到claude中,也就是如果skill的description越大,消耗的token就越多

而markdown的内容就是具体让claude执行的步骤书。 一个最简单的skill示例如下

## Metadata name:品牌指南 description:将 Acme Corp 品牌指南应用于所有演示文稿和文档 ## 概述 此 Skill 提供 Acme Corp 官方品牌指南,用于创建一致、专业的企业材料。在制作演示文稿、文档或营销材料时,请严格应用这些标准,确保所有输出均符合 Acme 的视觉识别系统。Claude 在创建面向外部的材料或代表 Acme Corp 的文档时,应始终参考本指南。 ## 品牌色彩 我们的官方品牌色彩为: - **主色**:#FF6B35(珊瑚橙 / Coral) - **辅助色**:#004E89(海军蓝 / Navy Blue) - **强调色**:#F7B801(金色 / Gold) - **中性色**:#2E2E2E(炭灰 / Charcoal) ## 字体规范 - **标题字体**:Montserrat Bold - **正文字体**:Open Sans Regular **字号指南**: - H1:32pt - H2:24pt - 正文:11pt ## Logo 使用规范 - 浅色背景时,必须使用全彩 Logo; - 深色背景时,必须使用白色 Logo; - Logo 周围需保留至少 0.5 英寸(约 1.27 cm)的安全距离。 ## 适用场景 在以下情况时必须应用本品牌指南: - PowerPoint 演示文稿 - 对外分享的 Word 文档 - 营销材料 - 客户报告 ## 资源 请查看 resources 文件夹,获取 Logo 文件和字体下载链接。

这样,当和claude对话的时候,如果出现将 Acme Corp 品牌指南应用于所有演示文稿和文档这段字的注意力和用户提示词的注意力匹配,那么就会主动调用这个名字为品牌指南的skill,这样,整个skill.md描述的所有文本就会被加载。会输出按照要求的ppt/work等相关材料和报告

调用skills

所谓调用skill其实就是claude识别到了关键字,这个关键字就是skill的description所描述的关键字,然后再利用markdown的步骤执行。所以其步骤如下

  • 对话窗口包含对应技能的核心系统提示词
  • 命中提示词后,claude读取对应.claude目录的name/skill.md
  • 直接阅读skill.md的markdown部分,如果有ref,则读取引用部分,如果有res,则读取资源部分,如果有script,则运行脚本
  • 最后根据skill的描述,继续执行用户的任务

image.png

skills执行工具

skill和mcp一样,skill本身就可以运行脚本,只需要我们在skill.md中描述了执行步骤,方式如下

image.png

演示

为了演示skill,我们可以先安装一个基本的skill,就是创建skill的skill。 方法有很多种,其本质是将skill的那个文件/文件夹放到本地claude能读取的目录。有两种

  1. 全局目录:~/.claude/
  2. 项目目录:~/project/.claude/

也可以通过命令安装

npx skills add https://github.com/anthropics/skills --skill skill-creator

claude install anthropics/skills/skill-creator

安装完成只会可以看到这个安装的skill

❯ /skills ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── Skills 1 skills User skills (skills) skill-creator · ~83 description tokens

下面让其给我做一个简单的skill

> 给我做一个skill,获取今日黄历查询,弹框形式告诉我今日宜忌

skill-ctreator会先尝试理解需求,对你提问

← ☐ 数据来源 ☐ 弹框样式 ✔ Submit → 黄历数据从哪里获取?(API、内置数据、还是网页抓取) ❯ 1. API接口 调用聚合数据/黄历API获取今日宜忌 2. 内置数据 内置一个基础黄历数据(公历2026年对应农历) 3. 网页抓取 从网页爬取当日黄历信息 4. Type something.(自行选用最优方法) ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 5. Chat about this

这里我可以选中4,让他自己选择,然后提交即可

← ☒ 数据来源 ☒ 弹框样式 ✔ Submit → Review your answers ● 黄历数据从哪里获取?(API、内置数据、还是网页抓取) → 自行选用最优方法 ● 弹框展示方式用哪种? → 系统弹框 (Recommended) Ready to submit your answers? ❯ 1. Submit answers 2. Cancel

等待2分钟,这个skill就完成了

● Skill创建完成! 今日黄历查询 Skill 已创建 位置: ~/.claude/skills/daily-huangli/ 结构: daily-huangli/ ├── SKILL.md # Skill说明文件 └── scripts/ └── huangli.py # 黄历查询脚本 功能: - 获取今日黄历宜忌信息 - 以系统弹框形式展示(支持Linux notify-send、macOS对话框、终端回退) - 内置2026年黄历数据 触发方式: - 对我说 "今日黄历" / "今天宜忌" / "查询黄历" 等 测试结果: 2026年03月29日 农历三月廿九 【今日宜】 祭祀 祈福 求嗣 开光 解除 拆卸 【今日忌】 开市 立券 交易 行丧 安葬

使用这个skill

❯ 查询今日黄历 ● 今日黄历查询结果: 2026年03月29日 农历三月廿九 ┌────────────────────────────────────┬──────────────────────────────┐ │ 宜 │ 忌 │ ├────────────────────────────────────┼──────────────────────────────┤ │ 祭祀 祈福 求嗣 开光 解除 拆卸 │ 开市 立券 交易 行丧 安葬 │ └────────────────────────────────────┴──────────────────────────────┘

SKILL内容

现在让我们看一下这个skill的组成

markdown
--- name: daily-huangli description: 获取今日黄历查询,以系统弹框形式展示今日宜忌。Use this skill whenever user asks about Chinese calendar, 黄历, 今日宜忌, 宜忌, 吉凶, 运程, or wants to know what activities are auspicious or inauspicious for today. --- # 今日黄历查询 获取当日黄历信息并以系统弹框形式展示宜忌事项。 ## 执行步骤 ### 1. 获取今日日期 ```bash date "+%Y-%m-%d" ``` ### 2. 调用黄历API获取数据 使用 hlapi.cn 的免费API获取今日黄历: ```bash curl -s "https://www.hlapi.cn/api/yinli/?date=$(date +%Y-%m-%d)" ``` 如果上述API不可用,尝试备用方案: ```bash curl -s "https://api.xingzhige.com/API/huangli/?date=$(date +%Y%m%d)" ``` ### 3. 解析返回数据 从API响应中提取: - 农历日期(年、月、日) - 宜(auspicious activities) - 忌(inauspicious activities) - 吉神/凶神 - 冲/煞等神煞信息 ### 4. 格式化输出 整理为宜忌列表格式: ``` 【今日黄历】2026年3月29日 农历三月初一 宜:祭祀 开光 祈福 订盟 订婚... 忌:动土 破土 掘井... 吉神方位:甲方 凶神方位:坤方 冲煞:冲鼠(壬子) 煞北 ``` ### 5. 显示系统弹框 使用系统通知方式展示: **Linux (notify-send):** ```bash notify-send "今日黄历" "$(echo -e '宜:${yi}\n忌:${ji}')" --icon=calendar ``` **macOS (osascript):** ```bash osascript -e 'display dialog "今日黄历\n\n宜:\n${yi}\n\n忌:\n${ji}" with title "今日黄历" buttons {"确定"} default button "确定"' ``` **通用Python方案(支持跨平台):** ```python import subprocess import sys message = f"""今日黄历 宜:{yi} 忌:{ji} {ganzhi} {shengxiao}日 {festival_info}""" # 尝试不同平台的通知方式 try: subprocess.run(['notify-send', '今日黄历', message], check=True) except (FileNotFoundError, subprocess.CalledProcessError): try: subprocess.run(['osascript', '-e', f'display dialog "{message}" with title "今日黄历" buttons {"确定"} default button "确定"'], check=True) except: print(message) # 回退到终端输出 ``` ## 完整执行脚本 如需更稳定的体验,可使用以下Python脚本: ```python #!/usr/bin/env python3 import requests import subprocess import sys from datetime import datetime def get_huangli(): today = datetime.now().strftime('%Y-%m-%d') # 尝试多个API源 apis = [ f"https://www.hlapi.cn/api/yinli/?date={today}", ] for api in apis: try: resp = requests.get(api, timeout=5) if resp.status_code == 200: data = resp.json() return data except: continue return None def show_notification(huangli_data): if not huangli_data: message = "无法获取今日黄历数据" else: try: # 解析数据 - 根据实际API返回格式调整 data = huangli_data # 提取宜忌信息 yi = data.get('data', {}).get('yi', ['无数据']) if isinstance(data.get('data'), dict) else ['无数据'] ji = data.get('data', {}).get('ji', ['无数据']) if isinstance(data.get('data'), dict) else ['无数据'] yi_str = ' '.join(yi) if isinstance(yi, list) else str(yi) ji_str = ' '.join(ji) if isinstance(ji, list) else str(ji) message = f"宜:{yi_str}\n\n忌:{ji_str}" except: message = "数据解析失败" # 尝试系统通知 try: subprocess.run(['notify-send', '-i', 'calendar', '今日黄历', message], check=True, capture_output=True) return True except: pass try: subprocess.run(['osascript', '-e', f'display dialog "{message}" with title "今日黄历" buttons {{"确定"}} default button "确定"'], check=True, capture_output=True) return True except: pass # 回退到打印 print("=" * 40) print("今日黄历") print("=" * 40) print(message) return False if __name__ == '__main__': data = get_huangli() show_notification(data) ``` ## 注意事项 1. 如果系统通知不可用,会回退到终端输出 2. 确保网络畅通以访问API 3. 部分API可能有访问限制 ## 触发场景 当用户询问以下内容时使用此skill: - "今日黄历" - "今天宜忌" - "今日运势" - "黄历查询" - "今天有什么忌" - "今天适合做什么"

分析

首先我们看description,只要命中了 黄历, 今日宜忌, 宜忌, 吉凶, 运程 就会加载这个skill 其次通过markdown的内容, 对我的需求进行了详细的步骤拆解,我们可以review这些拆解是否符合预期。

参考

https://claude.com/blog/equipping-agents-for-the-real-world-with-agent-skills
https://support.claude.com/en/articles/12512176-what-are-skills
https://support.claude.com/en/articles/12512198-how-to-create-custom-skills