Documentation
¶
Overview ¶
Package skills découvre et charge les skills au format Agent Skills (SKILL.md).
Index ¶
- Constants
- Variables
- func Discover(dirs []Dir) (*Catalog, []Notice)
- func IsBuiltin(name string) bool
- func NewTool(c *Catalog, outputLimit int) tools.Tool
- type Catalog
- func (c *Catalog) Expand(line string) (exp Expansion, ok bool, err error)
- func (c *Catalog) Files(name string) ([]string, bool, error)
- func (c *Catalog) Get(name string) (Skill, bool)
- func (c *Catalog) List() []Skill
- func (c *Catalog) Load(name string) (body string, sha256hex string, truncated bool, err error)
- func (c *Catalog) PromptSection(lang i18n.Lang, budget int, withBuiltin bool) (section string, dropped int)
- func (c *Catalog) ReadFile(name, rel string, limit int) (content string, abs string, sha256hex string, err error)
- type Dir
- type Expansion
- type Notice
- type Skill
- type Source
Constants ¶
const ( // MaxSkills est le nombre maximal de skills retenus. MaxSkills = 200 // MaxSkillBytes est la taille maximale lue pour un SKILL.md. MaxSkillBytes = 32768 )
const ( // MaxListDepth est la profondeur maximale listée, SKILL.md étant à 1. MaxListDepth = 3 // MaxListEntries est le nombre maximal de fichiers listés. MaxListEntries = 100 )
Variables ¶
var Builtins = []string{"help", "quit", "skills", "agents", "hooks", "rewind"}
Builtins liste les commandes intégrées (sans la barre oblique), source unique pour IsBuiltin et la complétion de la TUI.
var ErrUnknownCommand = errors.New("unknown skill or command")
ErrUnknownCommand indique un /<nom> qui n'est ni intégré ni un skill.
Functions ¶
func Discover ¶
Discover parcourt les répertoires dans l'ordre ; en cas de doublon, le premier gagne. Les dossiers de skills qui sont des liens symboliques, et les SKILL.md non réguliers, sont ignorés.
Types ¶
type Catalog ¶
type Catalog struct {
// contains filtered or unexported fields
}
Catalog contient les skills découverts.
func (*Catalog) Expand ¶
Expand traite une ligne de l'utilisateur. ok=false si ce n'est pas une commande slash. Les commandes intégrées sont traitées par l'appelant.
func (*Catalog) Files ¶
Files liste les fichiers du skill (chemins relatifs, triés, SKILL.md compris), sur MaxListDepth niveaux et MaxListEntries entrées au plus. Les liens symboliques sont ignorés et jamais suivis. truncated signale que la liste a été coupée.
func (*Catalog) Load ¶
Load relit SKILL.md (sans cache) et renvoie le corps, le sha256 des octets lus et un indicateur de troncature.
func (*Catalog) PromptSection ¶
func (c *Catalog) PromptSection(lang i18n.Lang, budget int, withBuiltin bool) (section string, dropped int)
PromptSection renvoie la section du prompt système listant les skills invocables par le modèle, ou "" s'il n'y en a aucun. Au-delà de budget octets, les descriptions sont coupées à 200 caractères, puis les derniers skills sont retirés (dropped). Les skills intégrés n'y figurent que si withBuiltin est vrai (projet comportant un dossier cra/) ; ils restent dans le catalogue dans tous les cas.
func (*Catalog) ReadFile ¶
func (c *Catalog) ReadFile(name, rel string, limit int) (content string, abs string, sha256hex string, err error)
ReadFile lit un fichier du dossier du skill. rel est relatif au dossier ; les chemins absolus, « .. » et tout lien symbolique sont refusés. Le contenu est tronqué à limit caractères (0 = sans troncature) ; le sha256 porte sur les octets lus sur disque.
type Expansion ¶
type Expansion struct {
Text, Skill, SHA256 string
}
Expansion est le résultat du traitement d'une ligne commençant par « / ».
type Notice ¶
type Notice string
Notice est un message d'information (skill ignoré, limite atteinte).