How To

管理 Skill

学习如何安装、配置和在 Profile 中使用 Agent Skill

一个 Skill 是为 Agent 编写的能力说明和使用指南。本指南讲述如何安装、管理和在任务中使用 Skill。

什么是 Skill?

Skill 不是工具本身,而是关于工具的文档和最佳实践。它包含:

  • 能力描述:这个 Skill 能做什么
  • 使用指南:Agent 何时应该用到它、如何最有效地使用
  • 参考资料:API 文档、示例代码、常见错误及解决方案

例如,“Docker 操作” Skill 告诉 Agent 如何:

  • 构建镜像、运行容器、查看日志
  • 处理常见的 Docker 错误
  • 遵循 Dockerfile 最佳实践

创建任务时,你选择一个 Profile,Agent 会自动获得该 Profile 关联的所有 Skill。

Skill 目录结构

每个 Skill 是一个目录,具有标准化的结构:

skills/
  docker-ops/              # Skill ID(目录名)
    SKILL.md               # Skill 元数据 + 内容
    references/            # 可选的参考资料目录
      api.md               # 参考文档
      examples.md

SKILL.md 文件格式

SKILL.md 包含 YAML frontmatter 和 Markdown 正文:

---
name: docker-ops
description: Guide to Docker image, container, and network management
license: MIT
metadata:
  disabled: false
  contentOverrideMode: replace
---

## Overview

This Skill guides agents how to use Docker for common tasks...

## Core concepts

- **Image**: Read-only template containing application and dependencies
- **Container**: Running instance of an image

## Usage guide

### Build images

...

Frontmatter 字段

字段必填说明
name显示名称
description简短描述
license许可证
metadata.disabled禁用此 Skill;值为 false(默认)或 true
metadata.inclusion包含策略:auto(默认)— 自动包含,可被更高优先级层覆盖;mandatory — 强制包含,不可移除;explicit — 仅在 Profile 中显式引用时生效
metadata.overridable高优先级配置层是否可覆盖此资源(默认未设置——允许覆盖)。显式设为 false 时,高优先级层的同名条目会被忽略
metadata.contentOverrideMode多层同 ID Skill 的合并策略,见下文

contentOverrideMode 说明

  • replace(默认):使用最高优先级层的内容,忽略低优先级层
  • merge:按优先级链式回退(高优先级层中不存在时回退到低优先级层)

安装 Skill

Skill 可以来自三个来源:

1. 内置 Skill

Sink 内置了一些常用 Skill。这些 Skill 无需额外安装即可自动使用。

2. 从官方仓库同步

~/.agents/skills/ 目录同步预先下载的 Skill:

sink skill sync

此命令会:

  • 扫描 ~/.agents/skills/ 下的所有 Skill 目录
  • 在你的 Sink 配置目录下的 skills/ 子目录中创建指向 ~/.agents/skills/ 的符号链接

前置条件:你需要事先将 Skill 文件夹下载到 ~/.agents/skills/

3. 手动添加 Skill

直接在你的配置目录中创建 Skill 文件夹:

用户层安装

将 Skill 放在用户级配置目录:

mkdir -p ~/.sink/skills/my-custom-skill
cat > ~/.sink/skills/my-custom-skill/SKILL.md << 'SKILL'
---
name: my-custom-skill
description: Custom tutorial
metadata:
  disabled: false
---

## Overview
This is a custom Skill I wrote for agents...
SKILL

该 Skill 将对所有工作区可用。

工作区层安装

将 Skill 放在工作区配置目录,仅对该工作区生效:

mkdir -p /path/to/my-project/sink/skills/project-specific-skill
cat > /path/to/my-project/sink/skills/project-specific-skill/SKILL.md << 'SKILL'
---
name: project-specific-skill
description: Available only in this project
metadata:
  disabled: false
---

## Project background
Describe project-specific practices and conventions in this Skill...
SKILL

4. 添加参考资料

在 Skill 目录中创建 references/ 子目录来存放附加文档:

mkdir -p ~/.sink/skills/docker-ops/references
cat > ~/.sink/skills/docker-ops/references/api.md << 'REF'
# Docker API Reference

## Common commands

- `docker build` - Build image
- `docker run` - Run container
...
REF

查看已安装的 Skill

列出当前可用的所有 Skill:

sink skill list

输出将显示:

  • Skill ID(目录名)
  • 显示名称(来自 frontmatter)
  • 描述
  • 来源(builtin / user / workspace)
  • 启用状态

在 Profile 中关联 Skill

Skill 通过 Profile 关联到 Agent。一旦创建任务,Agent 会自动获得该 Profile 关联的所有 Skill。

编辑 Profile

打开 Profile 文件(Markdown 格式)并在 frontmatter 中指定 Skill:

---
name: code-reviewer
description: Code quality analysis and review
runtime: claude-code
skills:
  - web-search
  - code-analysis
  - test-runner
mcpServers:
  - filesystem
---

You are an experienced code reviewer specializing in software quality...

Skills 字段

skills 字段支持两种写法:

简单列表(白名单):

skills:
  - web-search
  - docker-ops

只有列表中的 Skill 可用。

选择器写法(include/exclude):

skills:
  include:
    - web-search
    - docker-ops
  exclude:
    - experimental-skill

或仅排除:

skills:
  exclude:
    - experimental-skill

禁用 Skill

临时禁用

修改 Skill 的 frontmatter,将 metadata.disabled 设为 true

---
name: web-search
metadata:
  disabled: true
---

禁用后,该 Skill 将从所有 Profile 的可用 Skill 列表中移除。

从特定 Profile 中排除

如果不想全局禁用,而只想从某些 Profile 中排除:

在 Profile 的 skills 字段中使用 exclude

skills:
  exclude:
    - web-search

最佳实践

编写清晰的 Skill

  1. 标题明确:Skill 名称应直观反映其用途
    name: error-fixing-and-debugging
    
  2. 包含具体示例:好的 Skill 包含代码示例和常见错误
    ## Common errors
    
    ### Error: Connection refused
    
    **Cause**: Service not started
    **Solution**: Run `docker run -d my-service`
    
  3. 组织参考资料:复杂的 Skill 应在 references/ 目录中分类存放文档

共享与版本管理

  1. 将 Skill 存储在版本控制中(Git)
  2. 使用语义化版本(如 v1.0.0)标记发行版
  3. 在 Profile 中显式记录依赖的 Skill 版本(如需要)

Skill 与 MCP Server 的区别

  • Skill = 指南和最佳实践文档
  • MCP Server = 实际的工具和能力实现

Agent 依赖 MCP Server 执行操作,依赖 Skill 理解”何时使用”和”如何用好”。两者互补。

故障排除

Skill 未显示在 Profile 中

检查清单

  1. Skill 是否被禁用?
    # 检查 SKILL.md 中的 metadata.disabled
    
  2. Skill ID 是否正确?
    sink skill list  # 查看实际 Skill ID
    
  3. Profile 中的 Skill 引用是否拼写正确?
    skills:
      - correct-skill-id # 必须与 skill list 输出一致
    

多层 Skill 冲突

如果你在用户层和工作区层都定义了同 ID 的 Skill,并且看到了意外的内容,检查:

# 查看有效配置(已合并)
cat <workspace>/.sink/.settings.snapshot.json

# 查看原始文件
cat ~/.sink/skills/my-skill/SKILL.md
cat <workspace>/.sink/skills/my-skill/SKILL.md

优先级是工作区 > 用户 > 内置

下一步