Class: Diogenes::Targets::ClaudeCode

Inherits:
Base
  • Object
show all
Defined in:
lib/diogenes/targets/claude_code.rb,
sig/generated/diogenes/targets/claude_code.rbs

Constant Summary collapse

OUTPUT_PATH =

: String

Returns:

  • (String)
"CLAUDE.md"

Instance Method Summary collapse

Methods inherited from Base

#generated_banner, #initialize, #skill_file_content, #write, #write_skill_files

Constructor Details

This class inherits a constructor from Diogenes::Targets::Base

Instance Method Details

#build(sources:) ⇒ Array[String]

: (sources: untyped) -> Array

Parameters:

  • sources: (Object)

Returns:

  • (Array[String])


10
11
12
13
# File 'lib/diogenes/targets/claude_code.rb', line 10

def build(sources:)
  skill_files = write_skill_files(sources.skills, skills_dir: ".claude/skills")
  [write(OUTPUT_PATH, render(sources))] + skill_files
end

#headerString

: () -> String

Returns:

  • (String)


27
28
29
30
31
32
33
# File 'lib/diogenes/targets/claude_code.rb', line 27

def header
  <<~HEADER.strip
    # Agent Configuration

    > #{generated_banner("claude-code")}
  HEADER
end

#hooks_section(hooks) ⇒ String

: (Array) -> String

Parameters:

Returns:

  • (String)


62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/diogenes/targets/claude_code.rb', line 62

def hooks_section(hooks)
  lines = ["## Hooks", ""]
  hooks.each do |hook|
    lines << "### #{hook.name}"
    lines << ""
    lines << "**Trigger:** #{hook.trigger}"
    lines << ""
    lines << hook.prompt
    lines << ""
  end
  lines.join("\n").strip
end

#render(sources) ⇒ String

: (untyped) -> String

Parameters:

  • (Object)

Returns:

  • (String)


18
19
20
21
22
23
24
# File 'lib/diogenes/targets/claude_code.rb', line 18

def render(sources)
  parts = [header]
  parts << skills_section(sources.skills) unless sources.skills.empty?
  parts << rules_section(sources.rules) unless sources.rules.empty?
  parts << hooks_section(sources.hooks) unless sources.hooks.empty?
  parts.join("\n\n")
end

#rules_section(rules) ⇒ String

: (Array) -> String

Parameters:

Returns:

  • (String)


48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/diogenes/targets/claude_code.rb', line 48

def rules_section(rules)
  lines = ["## Active Rules", ""]
  rules.each do |rule|
    lines << "### #{rule.name}"
    lines << ""
    lines << rule.content
    lines << ""
    lines << "---"
    lines << ""
  end
  lines.join("\n").strip
end

#skills_section(skills) ⇒ String

: (Array) -> String

Parameters:

Returns:

  • (String)


36
37
38
39
40
41
42
43
44
45
# File 'lib/diogenes/targets/claude_code.rb', line 36

def skills_section(skills)
  lines = ["## Available Skills", ""]
  skills.each do |skill|
    lines << "### #{skill.command}"
    lines << ""
    lines << skill.description
    lines << ""
  end
  lines.join("\n").strip
end