Class: Brute::Middleware::Skills

Inherits:
Object
  • Object
show all
Defined in:
lib/brute/middleware/025_skills.rb

Overview

Loads skill objects into the agent context.

Skills are handed in as objects — discovery is the caller's job:

skills = Brute::Skill.all(cwd: Dir.pwd)
agent
.use(Brute::Middleware::Skills, skills: skills)
.use(Brute::Middleware::SystemPrompt)

Per turn:

1. env[:skills] = the objects, for downstream middleware, tools, and
 the terminal app (prime-agent's resourceLoader.getSkills() analogue)
2. env[:metadata][:skills] = the same objects, so
 Middleware::SystemPrompt merges them into the prompt ctx and
 Brute::Prompts::Skills renders the <available_skills> section

Place it before Middleware::SystemPrompt in the stack. It never touches env itself.

Instance Method Summary collapse

Constructor Details

#initialize(app, skills: []) ⇒ Skills

Returns a new instance of Skills.



27
28
29
30
# File 'lib/brute/middleware/025_skills.rb', line 27

def initialize(app, skills: [])
  @app = app
  @skills = skills
end

Instance Method Details

#call(env) ⇒ Object



32
33
34
35
36
37
38
# File 'lib/brute/middleware/025_skills.rb', line 32

def call(env)
  env[:skills] = @skills
  env[:metadata] ||= {}
  env[:metadata][:skills] ||= @skills

  @app.call(env)
end