Skip to content

Add SkillProvider SPI for pluggable skill backends #37

Description

@danielvolovik96

Problem Statement

Currently, the SkillsTool is tightly coupled to file-system–based skill loading. All skill resolution logic lives inside SkillsFunction, making it impossible to plug in alternative skill sources (e.g., remote registries, databases, classpath-based providers) without modifying the core class.

This limits extensibility for users who want to integrate skills from non-filesystem backends.


Proposed Solution

Introduce a SkillProvider SPI (Service Provider Interface) that decouples skill discovery and loading from the SkillsTool core:

  • SkillProvider interface — defines listSkills() and loadSkill(name) methods for pluggable skill backends
  • SkillDescriptor interface — describes a skill's metadata (name, description) without loading its full content
  • FileSystemSkillProvider — default implementation preserving existing file-system behavior
  • SkillsTool.Builder.addSkillProvider() — allows registering custom providers
  • Full backward compatibility with addSkillsDirectory() / addSkillsResource() API

This enables community contributors to implement custom SkillProvider implementations for their own backends while keeping the default behavior unchanged.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions