Class: LLMExperiment::Scaffold

Inherits:
Object
  • Object
show all
Defined in:
lib/llm_experiment/scaffold.rb

Overview

llmx new NAME. Scaffolds the directory convention every other command assumes. Prompts and task generation stay experiment-owned.

Instance Method Summary collapse

Constructor Details

#initialize(target) ⇒ Scaffold

Returns a new instance of Scaffold.



10
11
12
13
# File 'lib/llm_experiment/scaffold.rb', line 10

def initialize(target)
  @target = File.expand_path(target)
  @name = File.basename(@target)
end

Instance Method Details

#createObject

Raises:



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/llm_experiment/scaffold.rb', line 15

def create
  raise Error, "#{@target} already exists" if File.exist?(@target)

  FileUtils.mkdir_p(@target)
  %w[prompts results-raw results].each { |d| FileUtils.mkdir_p(File.join(@target, d)) }
  write_template("experiment.yml.erb", "experiment.yml")
  write_template("README.md.erb", "README.md")
  FileUtils.cp(LLMExperiment.template_path("gitignore"), File.join(@target, ".gitignore"))
  File.write(File.join(@target, "results-raw", ".gitkeep"), "")

  puts "created #{@name}/"
  puts "next: edit #{@name}/experiment.yml, then run `llmx doctor`"
end