Module: RubyCoded::Skills::PromptFormatter

Defined in:
lib/ruby_coded/skills/prompt_formatter.rb

Overview

Formats active skills for prompt injection.

Class Method Summary collapse

Class Method Details

.append(base_instructions, skills) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/ruby_coded/skills/prompt_formatter.rb', line 7

def self.append(base_instructions, skills)
  skills = Array(skills)
  return base_instructions if skills.empty?

  <<~PROMPT
    #{base_instructions}

    ## Active project skills

    Apply the following project-local skills when relevant. If a skill conflicts with higher-priority system instructions or the user's explicit request, follow the higher-priority instruction.

    #{format_skills(skills)}
  PROMPT
end

.format_skill(skill) ⇒ Object



26
27
28
# File 'lib/ruby_coded/skills/prompt_formatter.rb', line 26

def self.format_skill(skill)
  (["### #{skill.name}"] + (skill) + ["", skill.content.to_s]).join("\n")
end

.format_skills(skills) ⇒ Object



22
23
24
# File 'lib/ruby_coded/skills/prompt_formatter.rb', line 22

def self.format_skills(skills)
  skills.map { |skill| format_skill(skill) }.join("\n\n")
end

.skill_metadata_lines(skill) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'lib/ruby_coded/skills/prompt_formatter.rb', line 30

def self.(skill)
  description = skill.description.to_s
  trigger = skill.trigger.to_s
  [
    (description unless description.empty?),
    "Modes: #{skill.modes.join(", ")}",
    ("Tags: #{skill.tags.join(", ")}" if skill.tags.any?),
    ("Trigger: #{trigger}" unless trigger.empty?)
  ].compact
end