SkillKit.Kit (SkillKit v0.1.0)

Copy Markdown View Source

A packaging envelope for skills and agent definitions.

A Kit bundles related skills and agents loaded from a single source (directory, database, API). Backends return Kits; the system unpacks them to register skills and discover agent definitions.

use SkillKit.Kit

When a module does use SkillKit.Kit, it becomes both a SkillKit.Kit.Provider (can load skills from skills/*/SKILL.md) and a SkillKit.Tool (can execute them). All skill and agent files are read and parsed at compile time — no runtime filesystem access is needed.

The kit name is inferred from the module's last segment, downcased and underscored. Override with name: "custom_name".

Options:

  • :path — the kit root directory. Skills are loaded from <path>/skills/ and AGENT.md from <path>/AGENT.md. Defaults to the directory containing the module's source file.
  • :name — override the inferred kit name.

The macro generates default implementations for definition/0, resume/3, load_kits/1, list_kits/1, get_kit/2, and agent_definition/0. All are overridable. The using module must define execute/1.

agent_definition/0 returns the parsed %SkillKit.Agent{} from the kit's AGENT.md, or nil if no agent file exists.

Summary

Types

t()

@type t() :: %SkillKit.Kit{
  agent: SkillKit.Agent.t() | nil,
  metadata: map(),
  name: String.t(),
  skills: [SkillKit.Skill.t()],
  subagents: [SkillKit.Agent.t()]
}