Documentation
¶
Overview ¶
Package skills loads SKILL.md bundles from .agents/skills/<name>/ and exposes them as an ADK Toolset the agent can invoke.
The schema mirrors Anthropic's published SKILL.md frontmatter so users can drop existing skill bundles directly into a project.
Bodies load lazily on invocation — we keep cold-start fast by skipping skill.WithCompletePreloadSource.
Index ¶
Constants ¶
const SkillDirName = "skills"
SkillDirName is the project-local directory holding skill bundles.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Option ¶
type Option func(*loadOptions)
Option configures a Load / LoadAll call. All options are optional; the zero-options call matches the pre-#322 loader behavior exactly.
func WithInterpolator ¶
WithInterpolator supplies a string transform applied to every .md file loaded from a skill directory — SKILL.md and referenced files under references/. Used to substitute ${env:VAR} references declared in .agents/env.yaml (see pkg/agentenv). Passing nil is legal and equals "no interpolation."
type Skills ¶
Skills bundles the discovered skills' toolset (for agent.WithToolsets) alongside the metadata list.
func Load ¶
func Load(ctx context.Context, agentsDir string, gate *permissions.Gate, opts ...Option) (Skills, error)
Load discovers skills under agentsDir/skills/ only. A missing directory (or empty agentsDir) yields a zero Skills with no error.
Deprecated since v2.1: use LoadAll to also pick up user-global skills from userCoreHome/skills/. Load remains as a one-source wrapper around LoadAll for callers that explicitly don't want the global path.
gate (optional) wraps the resulting toolset so skill invocations go through the permission system. Pass nil to skip gating.
func LoadAll ¶
func LoadAll(ctx context.Context, projectAgentsDir, userCoreHome string, gate *permissions.Gate, opts ...Option) (Skills, error)
LoadAll discovers skills from up to two sources and merges them into a single toolset:
- projectAgentsDir/skills/ — project-scoped skills, checked in to the repo (or wherever .agents/ lives). Takes precedence on name collision.
- userCoreHome/skills/ — user-global skills (typically ~/.core-agent/skills/). Falls back when no project-scoped skill by the same name exists.
Either path may be "" to skip that source. Missing directories (vs missing parent) are silently treated as empty — most operators won't have either populated.
The two sources are merged via an overlayFS so the underlying skilltoolset sees a single virtual root; primary entries win on name collision. Both sources share the same sanitizingFS wrapper so extended-frontmatter properties get filtered the same way.
gate (optional) wraps the resulting toolset so skill invocations go through the permission system. Pass nil to skip gating.