Skip to content
FunCoding

Search

Search docs, Skills and MCP

Agent Skills

配置按需加载的 SKILL.md,验证名称与目录,并控制 Agent 访问。

This page has not been translated into English yet. The original Chinese version is shown below.

Skills 把可复用行为写在一个目录的 SKILL.md 中。Agent 先看到名称和描述,在需要时通过原生 skill 工具读取完整内容,默认不是把所有正文预先塞进上下文。

发现位置

范围目录形式
项目 OpenCode.opencode/skills/<name>/SKILL.md
全局 OpenCode~/.config/opencode/skills/<name>/SKILL.md
项目 Claude 兼容.claude/skills/<name>/SKILL.md
全局 Claude 兼容~/.claude/skills/<name>/SKILL.md
项目 Agent 兼容.agents/skills/<name>/SKILL.md
全局 Agent 兼容~/.agents/skills/<name>/SKILL.md

项目发现会从当前工作目录向上走到 Git worktree,查找沿途匹配位置;全局目录也参与。需要避免不同位置的 Skill 重名,官方排障要求名称唯一,没有在本页承诺同名冲突的固定选择规则。

Claude 兼容目录可以通过兼容开关关闭;不要将发现列表理解为无条件读取所有目录。

Frontmatter

必须包含 name 和 description。可选字段是 license、compatibility、metadata,其中 metadata 是字符串到字符串的映射;未知字段被忽略。

name 必须满足:

  • 长度 1–64 个字符。
  • 只使用小写字母、数字和单个连字符分隔。
  • 不能以连字符开头或结束,不能包含连续 --。
  • 与包含 SKILL.md 的目录名一致。

对应模式为 ^[a-z0-9]+(-[a-z0-9]+)*$。description 长度为 1–1024 个字符,应明确说明什么任务适合调用它。

加载与权限

可用 Skills 以名称和描述列入 skill 工具说明,Agent 通过 skill({ name: "..." }) 请求正文。

在 permission.skill 中按名称匹配:

{
  "permission": {
    "skill": {
      "*": "allow",
      "internal-*": "deny",
      "experimental-*": "ask"
    }
  }
}

allow 直接加载,ask 加载前询问,deny 将 Skill 对 Agent 隐藏并拒绝访问。Agent 自己的权限可以覆盖普通全局规则,具体合并见权限。

禁用工具与旧示例

官方 Skills 页仍用 tools.skill: false 演示彻底禁用,禁用后不再提供 available_skills 列表。Permissions 专门页已将 tools 布尔配置标为兼容用法;新配置应优先通过角色的 permission.skill 设置 deny,并验证实际可见性。

“某个 Skill 被拒绝”与“整个 skill 工具不再提供”是不同粒度,排查时分别检查,不将两者混为一谈。

找不到 Skill 时

依次确认文件名为大写 SKILL.md、必填 frontmatter 存在、名称符合目录与字符规则、不同发现位置没有同名条目,以及权限没有将它隐藏。还要确认启动目录能够发现对应项目路径。