Class: Riffer::Skills::Adapter

Inherits:
Object
  • Object
show all
Defined in:
lib/riffer/skills/adapter.rb,
sig/generated/riffer/skills/adapter.rbs

Overview

Interface for skill adapters — provider-specific rendering of the available-skills section in the system prompt. Subclass and override render_catalog; the activation tool is exposed via #skill_activate_tool for the rendered output.

Direct Known Subclasses

MarkdownAdapter, XmlAdapter

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(skill_activate_tool:) ⇒ Adapter

-- : (skill_activate_tool: singleton(Riffer::Tool)) -> void

Parameters:



14
15
16
# File 'lib/riffer/skills/adapter.rb', line 14

def initialize(skill_activate_tool:)
  @skill_activate_tool = skill_activate_tool
end

Instance Attribute Details

#skill_activate_toolsingleton(Riffer::Tool) (readonly)

The activation tool class for this adapter.

Returns:



10
11
12
# File 'lib/riffer/skills/adapter.rb', line 10

def skill_activate_tool
  @skill_activate_tool
end

Instance Method Details

#catalog_instructionsString

The behavioral instructions rendered alongside the catalog.

: () -> String

Returns:

  • (String)


35
36
37
38
# File 'lib/riffer/skills/adapter.rb', line 35

def catalog_instructions
  "When a user's request matches a skill description below, call the `#{skill_activate_tool.name}` tool with the skill name. After activation, follow the skill's instructions. " \
    "If a skill's instructions already appear in your context (inside <skill_content> tags), follow them instead of activating the skill again."
end

#render_activation(skill, body) ⇒ String

Renders an activated skill body wrapped in identifying tags.

: (Riffer::Skills::Frontmatter, String) -> String

Parameters:

Returns:

  • (String)


28
29
30
# File 'lib/riffer/skills/adapter.rb', line 28

def render_activation(skill, body)
  %(<skill_content name="#{skill.name}">\n#{body}\n</skill_content>)
end

#render_catalog(skills) ⇒ String

Renders a skill catalog section for the system prompt.

: (Array) -> String

Parameters:

Returns:

  • (String)


21
22
23
# File 'lib/riffer/skills/adapter.rb', line 21

def render_catalog(skills)
  raise NotImplementedError, "#{self.class} must implement #render_catalog"
end