Documentation
¶
Overview ¶
内置技能(对齐上游 skills/bundled):随二进制 go:embed 分发的一组 SKILL.md, 与盘上技能同一套解析/注入路径。盘上同名技能优先(用户可覆盖内置)。 取舍:上游 ant-only / 云端 / 键位类技能不带(batch 依赖可写 worktree 子 agent,暂缓); verify 的 SKILL.md 内容未随上游源码分发,无从移植。
Package skill 是技能(skill)系统:发现 SKILL.md 技能、把技能指令按需注入。 技能 = 一个目录 <base>/skills/<名>/SKILL.md(YAML frontmatter: name/description/... + markdown 正文)。 模型经 Skill 工具按名调用,工具返回该技能的完整指令(tool_result),模型据此执行。 叶子包,只依赖标准库。
保真取舍:上游 getPromptForCommand 还会执行技能正文里的内联 shell(!`...`)、按 allowed-tools 自动授权、 支持插件/远程技能;这些出于安全与 scope 暂略——fundev 只注入指令文本,后续动作仍走各自权限门。
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Content ¶
Content 组装注入给模型的技能指令:base-dir 头 + 正文,替换 $ARGUMENTS / $ARGUMENTS[n] / $n / 命名参数 / ${CLAUDE_SKILL_DIR}(对齐上游 argumentSubstitution)。
func Def ¶
Def 返回 Skill 工具定义(描述里列出可用技能);无技能时返回 false(此时不提供该工具)。 清单按 cwd 各算一次并缓存(进程内冻结),与 prompt 包的 CLAUDE.md/记忆快照同一语义: 清单嵌在工具描述里,而 tools 是请求缓存层级(tools→system→messages)的最前缀,清单中途 变化会使 tools/system/messages 整段缓存全部失效。冻结的代价是进程内新增/修改技能不在 清单里可见(调用 Skill 工具按名执行仍走 Find 实时查盘,不受影响;模型也可直接 Read), 调用方可在缓存已必然全断的时机(compact 后)用 ResetDefCache 打开刷新窗口。
func ResetDefCache ¶ added in v0.18.6
func ResetDefCache(cwd string)
ResetDefCache 丢弃 cwd 的技能清单缓存,下次 Def(cwd) 重扫盘。与 prompt.ResetSnapshots 配对,在压缩完成后的刷新窗口调用(compact 已把消息段缓存全断,此轮 tools/system 变化 不再有额外缓存代价)。
Types ¶
type Skill ¶
type Skill struct {
Name string
Description string
Body string // frontmatter 之后的正文
Dir string // 技能目录(供 ${CLAUDE_SKILL_DIR} 与相对引用;内置技能为空)
Frontmatter string // frontmatter 原文块(`---` 之间;供上层解析 hooks: 等结构化字段)
// Arguments 是 frontmatter `arguments:` 声明的命名参数(空格分隔,如 "foo bar")。
// 声明后 Body 里的 $foo/$bar 按位置映射到 Skill 工具调用传入的 args(对齐上游 argumentSubstitution)。
Arguments string
Builtin bool // 随二进制内嵌的内置技能(bundled.go)
}
Skill 是一个已发现的技能。