package main import ( "git.yeij.top/AskaEth/Cyrene_v2/internal/capability/skills" "git.yeij.top/AskaEth/Cyrene_v2/internal/logger" ) // defaultSkillsDir is the on-disk directory of skill YAML definitions. It is // optional: a missing directory skips skill loading with a warning. const defaultSkillsDir = "configs/skills" // wireSkills loads skill definitions from configs/skills and registers each into // the capability registry as a KindSkill capability so the plugin ecosystem can // enumerate them. Load+register is the M5 deliverable; Runner.Run (executing a // skill end to end) lands in a later milestone and currently returns ErrRunPending. func (a *app) wireSkills() { log := logger.WithSource(a.log, "cmd/cyrene") list, err := skills.NewLoader(a.log).LoadDir(defaultSkillsDir) if err != nil { log.Warn("skills load skipped", "dir", defaultSkillsDir, "error", err) return } if len(list) == 0 { log.Debug("no skills defined", "dir", defaultSkillsDir) return } registered := 0 for _, s := range list { if err := skills.Register(a.caps, s); err != nil { log.Warn("skill register skipped", "skill", s.Name(), "error", err) continue } registered++ } log.Info("skills registered", "registered", registered, "loaded", len(list)) }