Module: RubyCoded::Skills::PromptFormatter
- Defined in:
- lib/ruby_coded/skills/prompt_formatter.rb
Overview
Formats active skills for prompt injection.
Class Method Summary collapse
- .append(base_instructions, skills) ⇒ Object
- .format_skill(skill) ⇒ Object
- .format_skills(skills) ⇒ Object
- .skill_metadata_lines(skill) ⇒ Object
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..join(", ")}" if skill..any?), ("Trigger: #{trigger}" unless trigger.empty?) ].compact end |