跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

Agent Skills

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

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 存在、名称符合目录与字符规则、不同发现位置没有同名条目,以及权限没有将它隐藏。还要确认启动目录能够发现对应项目路径。