Files
picoclaw/pkg/skills/provider_factory.go
T
lxowalle 0425cd4d77 refactor skills registries and add GitHub-backed skill discovery (#2442)
* refactor skills registries and add GitHub-backed skill discovery

* fix ci

* fix command error

* fix default skills install registry behavior

* fix github registry URL parsing and versioned skill links

* fix skills registry config compatibility and URL installs

* * fix lint

* fix deprecated github base url compatibility

* fix skills registry yaml and github default branch handling

* fix github skills registry fallback and install metadata

* fix cli skills install origin metadata

* fix clawhub registry env compatibility

* fix skills registry config merge compatibility

* fix skill install metadata consistency and onboard template copy

* fix yaml overrides for default skills registries

* fix install_skill registry metadata normalization

* fix github skill URL parsing for slash branch names

* fix skills registry install/search validation and github URLs

* fix github skill URL host validation

* fix install_skill validation for invalid registry archives

* fix redundant skills registry names in saved config

* fix github blob skill URL installs and metadata links

* fix github registry URL scheme validation

* fix v0 skills migration preserving github registry defaults

* fix github blob skill install directory resolution

* fix install_skill rollback on origin metadata write failure

* fix github skill URL validation and registry JSON merging

* fix github registry target resolution and metadata links

* fix install_skill force reinstall rollback

* fix skills config compatibility and legacy security overlays

* fix ci
2026-04-14 15:14:16 +08:00

34 lines
827 B
Go

package skills
import (
"sync"
"github.com/sipeed/picoclaw/pkg/config"
)
type RegistryProviderBuilder func(name string, cfg config.SkillRegistryConfig) RegistryProvider
var (
registryProviderBuildersMu sync.RWMutex
registryProviderBuilders = map[string]RegistryProviderBuilder{}
)
func RegisterRegistryProviderBuilder(name string, builder RegistryProviderBuilder) {
if name == "" || builder == nil {
return
}
registryProviderBuildersMu.Lock()
defer registryProviderBuildersMu.Unlock()
registryProviderBuilders[name] = builder
}
func buildRegistryProvider(name string, cfg config.SkillRegistryConfig) RegistryProvider {
registryProviderBuildersMu.RLock()
defer registryProviderBuildersMu.RUnlock()
builder := registryProviderBuilders[name]
if builder == nil {
return nil
}
return builder(name, cfg)
}