skill

package
v0.27.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 28, 2026 License: Apache-2.0 Imports: 8 Imported by: 0

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

func Content(s Skill, args string) string

Content 组装注入给模型的技能指令:base-dir 头 + 正文,替换 $ARGUMENTS / $ARGUMENTS[n] / $n / 命名参数 / ${CLAUDE_SKILL_DIR}(对齐上游 argumentSubstitution)。

func Def

func Def(cwd string) (map[string]any, bool)

Def 返回 Skill 工具定义(描述里列出可用技能);无技能时返回 false(此时不提供该工具)。 清单按 cwd 各算一次并缓存(进程内冻结),与 prompt 包的 CLAUDE.md/记忆快照同一语义: 清单嵌在工具描述里,而 tools 是请求缓存层级(tools→system→messages)的最前缀,清单中途 变化会使 tools/system/messages 整段缓存全部失效。冻结的代价是进程内新增/修改技能不在 清单里可见(调用 Skill 工具按名执行仍走 Find 实时查盘,不受影响;模型也可直接 Read), 调用方可在缓存已必然全断的时机(compact 后)用 ResetDefCache 打开刷新窗口。

func Execute

func Execute(name, args, cwd string) string

Execute 按名查技能、返回其注入内容;未找到返回错误文本。

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 是一个已发现的技能。

func Find added in v0.3.1

func Find(name, cwd string) (Skill, bool)

Find 按名查一个技能(与 List 同源、同去重顺序);未找到返回 (Skill{}, false)。 供调用方在注入技能内容前拿到其 frontmatter(如注册 hooks),避免 Execute 只回文本、丢失结构化字段。

func List

func List(cwd string) []Skill

List 发现所有技能:项目 .claude/skills、用户 ~/.claude/skills、~/.fundev/skills、内置 (按此优先级去重——盘上同名可覆盖内置)。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL