目录
二、Tool 与 Skill 的关联(四层关系)
1. Function Calling 层:模型指挥,工具执行
2. 标准化封装层:Skill 是 Tool 的“说明书 + 编排”
3. 安全沙箱层:Skill 在围栏内,Tool 受权限约束
4. 架构分层:业务 Skill 编排通用 Tool
三、Skill 总结
定义
核心特征
与 Tool 的关系(总图)
一句话总结
四、skill模板
1、Skill 目录结构模板
2、SKILL.md 结构模板
3、编写 Skill 的检查清单
五、Skill案列—基金当前状态分析
场景
目录结构
SKILL.md(完整案例)
输出模板
一、Tool 与 Skill 的本质区别
| 维度 | Tool(工具) | Skill(技能) |
|---|---|---|
定义 | 工具和接口,是可调用的功能 | 技能和能力,是能完成某件事的整套流程 |
粒度 | 原子能力(单个函数/API) | 编排后的能力(多步流程) |
类比 | 插头、模块、API | 流程图、SOP、作业手册 |
职责 | 执行具体动作 | 判断意图、选工具、组织步骤、产出结果 |
一句话:Tool 回答“能做什么”,Skill 回答“遇到这类问题该怎么做”。
二、Tool 与 Skill 的关联(四层关系)
1. Function Calling 层:模型指挥,工具执行
用户提问 → 模型判断 → 生成调用指令 → 外部工具执行 → 结果回传 → 模型继续推理
- 模型:指挥家,负责意图识别、选工具、组参数、整合答案
- Tool:专家,负责查数据、算结果、跑脚本等“重活”
- Skill:模型把上述闭环固化成可复用的流程能力
以“查深圳天气”为例:
| 步骤 | 角色 | 内容 |
|---|---|---|
1 | 用户 | “今天深圳天气怎么样?” |
2 | Skill/模型 | 决定调用 |
3 | Tool | 返回 |
4 | Skill/模型 | 生成自然语言回答 |
Skill = 会选工具 + 会填参数 + 会解释结果;Tool = 真正拿到数据的函数。
2. 标准化封装层:Skill 是 Tool 的“说明书 + 编排”
Anthropic Agent Skills 的思路是:把 Tool 封装进标准化的SKILL.md。
一个 Skill 通常包含:
| 组成部分 | 作用 |
|---|---|
触发条件 | 何时启用(关键词、场景、问题类型) |
执行步骤 | 先做什么、再做什么(解析 → 调用 → 处理 → 输出) |
代码/脚本 | 底层 Tool 的具体实现 |
Tool(代码) ──封装──▶ Skill(SKILL.md)
↑ ↑
实现能力 调用逻辑 + 触发条件 + 执行步骤
价值:模块化、跨场景复用、降低 Agent 系统维护成本。
3. 安全沙箱层:Skill 在围栏内,Tool 受权限约束
┌─────────────────────────────────────┐
│ 主机系统 │
│ ┌─ Agent 执行区(Skill 运行) ─┐ │
│ │ 代码执行、流程编排 │ │
│ └──────────┬──────────────────┘ │
│ │ 白名单放行 │
│ 文件系统 / 数据库 / 外部网络(Tool) │
└─────────────────────────────────────┘
- Skill:在隔离区内按流程执行
- Tool:对外部资源的访问入口
- 沙箱:用最小权限、资源上限、可观测与急停,保证 Skill 调用 Tool 时安全、稳定、可溯
4. 架构分层:业务 Skill 编排通用 Tool
以“缺陷分析 Skill 架构”为例:
Channel 层(业务 Skill)
desktop / recents / animation / performance / stability
↓
Router Agent 层(路由代理)
defect-analysis-router:定义必要流程、解耦业务与底层
↓
Common 层(通用 Tool/能力)
log-timestamp-location / 知识库检索 / 日志预处理 ...
| 层级 | 角色 | 示例 |
|---|---|---|
Channel Skill | 面向业务的分析能力 | 流畅性分析、稳定性分析 |
Router | 流程编排与路由 | 决定调用哪些通用能力、顺序如何 |
Common Tool | 可复用的底层能力 | 日志定位、预处理、检索 |
业务 Skill 不直接绑死底层 Tool 名称,通过 Router 解耦,便于扩展和维护。
三、Skill 总结
定义
Skill 是一种标准化的、可复用的 Agent 能力单元,把“何时用、怎么用、按什么顺序做、如何输出”写清楚,并在安全边界内编排一个或多个 Tool 完成特定任务。
核心特征
- 流程性:不是单次函数调用,而是一套完整步骤
- 触发性:有明确的启用时机(关键词、场景、问题类型)
- 编排性:会选择、组合、串联多个 Tool
- 标准化:常用
SKILL.md等形式,便于模块化与复用 - 安全可控:在沙箱内运行,遵循最小权限与可观测
- 分层解耦:业务 Skill 在上,通用 Tool 在下,Router 在中间
与 Tool 的关系(总图)
一句话总结
Tool 是 Agent 的“手和眼”(可调用的原子能力);Skill 是 Agent 的“脑和手顺”(知道什么问题该启动、按什么步骤调用哪些 Tool、如何安全地完成并交付结果)。
没有 Tool,Skill 无法触达真实世界;没有 Skill,Tool 只是零散接口,无法稳定、可复用地解决复杂任务。
四、skill模板
1、Skill 目录结构模板
skill-name/
├── SKILL.md # 必需 — 主流程与触发条件
├── reference.md # 可选 — 详细规范、关键词表
├── examples.md # 可选 — 输入/输出样例
└── scripts/ # 可选 — 底层 Tool 脚本
├── analyze.py
└── validate.sh
存放位置:参考cursor
| 类型 | 路径 | 作用域 |
|---|---|---|
个人 Skill |
| 所有项目可用 |
项目 Skill |
| 当前仓库共享 |
不要写入
~/.cursor/skills-cursor/,该目录为 Cursor 内置 Skill 专用。
2、SKILL.md 结构模板
---
name: your-skill-name
description: >
[WHAT] 本 Skill 做什么(能力描述)。
[WHEN] 何时启用(关键词、场景、问题类型)。
建议第三人称,包含触发词,便于 Agent 自动发现。
disable-model-invocation: true
---# Skill 名称
## 核心定位
- **输入**:……
- **输出**:……
- **约束**:安全边界、目录规范、禁止事项
- **Tool 依赖**:本 Skill 会调用的工具/脚本/MCP## 激活条件(Trigger)
当用户指令包含以下任一情况时启用:
- "关键词 A"
- "关键词 B"
- 问题类型 = xxx## 工作流程(Workflow)
按顺序执行,不可跳步:
### 步骤 1:信息收集
- 读取 xxx
- 若缺失 → 走分支 A;否则 → 步骤 2### 步骤 2:Tool 调用
- 调用 `scripts/analyze.py` 或 MCP Tool
- 记录原始结果### 步骤 3:结果整合
- 按输出模板生成结论
- 写入 `output/result.md`## 条件分支(Conditional)
| 条件 | 动作 |
|------|------|
| 日志缺失 | 输出「审核不通过」,列缺失项 |
| 非本域问题 | 转派至 xxx Skill |
| 重复单 | 引用历史结论 |## 输出模板(Output Template)
```markdown
# [标题]## 结论
- 推荐操作:
- 核心原因:## 详细分析
……
3、编写 Skill 的检查清单
name:小写 + 连字符,≤ 64 字符description:含 WHAT + WHEN + 触发词,第三人称- 工作流程:步骤清晰,有分支与终止条件
- Tool 依赖:脚本路径、参数、何时执行写清楚
- 输出模板:固定格式,便于下游 Skill 消费
- 示例:至少 1 组完整输入 → Tool 结果 → 最终输出
- SKILL.md 正文 < 500 行,细节放
reference.md- 路径用
/,不用\
五、Skill案列—基金当前状态分析
场景
用户问:「帮我看看易方达蓝筹精选这只基金现在怎么样?」
Agent 不应只凭训练数据猜,而应通过 Skill 规定:先取数 → 再算指标 → 再按模板出结论。
目录结构
fund-status-analysis/
├── SKILL.md
├── reference.md # 指标口径、风险等级定义
├── examples.md # 更多输入输出样例
└── scripts/
├── fetch_fund_data.py # Tool:拉取基金数据
└── calc_indicators.py # Tool:计算涨跌幅、波动等
SKILL.md(完整案例)
---
name: fund-status-analysis
description: >
分析单只或多只基金的当前状态,包括净值、涨跌幅、阶段收益、
最大回撤、风险等级与简要投资建议。
当用户询问基金怎么样、基金现状、净值分析、持仓诊断、
或提到具体基金名称/代码时使用。
---
# 基金当前状态分析 (Fund Status Analysis)
## 核心定位
- **输入**:基金名称或代码(如 `005827`)、可选对比基准(如沪深300)
- **输出**:`output/fund_status_report.md`
- **Tool 依赖**:
- `scripts/fetch_fund_data.py` — 获取净值、规模、经理等基础数据
- `scripts/calc_indicators.py` — 计算阶段收益、回撤、波动率
- Shell — 格式化与校验
- **约束**:
- 数据以 Tool 返回为准,不得编造净值
- 结论须标注数据日期
- 仅作信息分析,不构成投资建议(免责声明必写)
## 激活条件
- 「这只基金现在怎么样?」
- 「帮我分析一下 xxx 基金」
- 「005827 当前状态」
- 「对比这几只基金的表现」
## 工作流程
### 步骤 1:解析用户意图
提取:
- 基金代码/名称(必填)
- 分析维度(默认:近1周/1月/3月/1年 + 最大回撤)
- 对比对象(可选,默认无)
若未提供基金代码:
1. 先按名称模糊匹配
2. 若匹配到多只 → 列出候选,请用户确认
3. 若 0 匹配 → 终止,reason = `未找到对应基金`
### 步骤 2:调用 Tool 获取数据
```bash
python scripts/fetch_fund_data.py \
--code 005827 \
--fields nav,scale,manager,industry \
> output/fund_raw.json
检查:
- 若 API/数据源失败 → 重试 1 次
- 仍失败 → 输出「数据暂不可用」,不生成分析结论
步骤 3:调用 Tool 计算指标
python scripts/calc_indicators.py \
--input output/fund_raw.json \
--periods 7d,30d,90d,365d \
> output/fund_metrics.json
计算项:
- 各阶段涨跌幅
- 近1年最大回撤
- 近90日波动率(可选)
- 同类排名(若数据源支持)
步骤 4:生成状态判断
按规则映射「当前状态标签」:
条件 状态标签 近1月 > 0 且回撤 < 10%
偏强
近1月 < -5% 或回撤 > 15%
偏弱
其余
震荡
风险等级:
- 回撤 ≤ 10% → 中低
- 10% < 回撤 ≤ 20% → 中
- 回撤 > 20% → 偏高
步骤 5:输出报告
写入
output/fund_status_report.md,严格使用输出模板。
输出模板
# {基金名称}({基金代码})当前状态分析
> 数据日期:{data_date}
> 免责声明:以下内容基于公开数据整理,仅供参考,不构成投资建议。
## 一、核心结论
- **当前状态**:{偏强/震荡/偏弱}
- **最新净值**:{nav}({nav_date})
- **近1月涨跌**:{pct_30d}
- **近1年最大回撤**:{max_drawdown}
- **风险等级**:{risk_level}
## 二、关键指标
| 指标 | 数值 |
|------|------|
| 近1周 | {pct_7d} |
| 近1月 | {pct_30d} |
| 近3月 | {pct_90d} |
| 近1年 | {pct_365d} |
| 基金规模 | {scale} |
| 基金经理 | {manager} |
## 三、简要解读
{2~4 句自然语言解读:表现、波动、适合人群}
## 四、关注点
- {关注点1}
- {关注点2}
## 五、下一步建议(非投资建议)
- 若需深度分析:可补充「持仓行业分布」「与基准对比」
- 若需对比:可提供其他基金代码进行横向比较