SKILL.md 字段参考

每个 Skill 的核心是一个 SKILL.md 文件。YAML frontmatter 控制 Skill 的行为和触发方式,frontmatter 之后的正文是给 Agent 的指令内容。

完整结构

---
name: my-skill
description: 一句话描述触发场景
# ... 其他字段
---

# 指令正文

告诉 Agent 怎么执行这个 Skill 的具体内容。

字段说明

name

name: my-skill

Skill 的唯一标识符。用于目录命名和内部引用。通常用连字符分隔的小写形式(kebab-case)。


description

description: 当用户想要分析竞品或做市场调研时触发。也可通过 /competitor-analysis 直接调用。

最关键的字段。 Agent 读取这段描述来判断当前用户请求是否应该触发这个 Skill。

写好 description 的原则:
- 描述触发场景,而不是功能本身
- 列举典型的触发短语(中英文都要写)
- 如果支持斜杠命令,注明格式(如 /my-skill
- 越具体越好——模糊的描述容易导致误触发或漏触发


fork_agent

fork_agent: true

设为 true 时,Skill 在独立的子 Agent 中执行,与主会话的工具调用隔离。

适用场景:
- Skill 有自己的 forbidden_tools 需要隔离
- 需要在不污染主对话历史的情况下执行复杂操作
- 使用 web_fetch 抓取数据后再返回结果


forbidden_tools

forbidden_tools:
  - write
  - edit
  - safe_shell

列出这个 Skill 不允许使用的工具。通常配合 fork_agent: true 使用,给只读型 Skill 加安全约束。


auto_summarize

auto_summarize: true

设为 true 时,Skill 执行完毕后自动生成摘要,压缩上下文。对执行步骤较多的长 Skill 有用。


user-invocable

user-invocable: false

设为 false 时,该 Skill 不会出现在用户可用的 Skill 列表中,也不能被用户直接调用。
通常用于平台内部的工具性 Skill,设计上只由其他 Skill 或系统触发。

默认:true(用户可见可调用)。


disable-model-invocation

disable-model-invocation: true

设为 true 时,调用这个 Skill 时跳过模型推理,直接执行 Skill 的脚本逻辑(如果有)。用于纯脚本型 Skill,没有需要 LLM 参与的对话步骤。


argument-hint

argument-hint: "<github-repo-url>"

显示在 Skill 调用界面的参数提示,告诉用户应该传入什么参数。


allowed-tools

allowed-tools:
  - web_fetch
  - file_reader

白名单:只允许这个 Skill 使用列出的工具,其余工具全部禁用。与 forbidden_tools(黑名单)互斥,二选一使用。


model

model: lite

指定执行这个 Skill 时使用的模型。可选值:
- lite — 使用配置中的 lite 模型(更快、更省钱)
- default — 使用默认模型

如果不设置,使用当前 Agent 的默认模型。


agent

agent: general

指定执行这个 Skill 时使用的 Agent 配置文件(profile)。如果 Skill 需要与编码 Agent 不同的人设或行为规则,可以在这里切换。


context

context:
  - ~/.clacky/agents/SOUL.md
  - .clackyrules

执行 Skill 时额外注入到 prompt 的文件列表。可以是绝对路径、相对路径,或 glob 模式。


hooks

hooks:
  after_task:
    - command: ruby scripts/update_index.rb
      timeout: 30

Skill 执行完成后自动运行的 shell 命令。after_task 是目前唯一支持的 hook 点。

字段:
- command — 要运行的 shell 命令
- timeout — 超时秒数(可选)