Class: Diogenes::Targets::Cursor

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

Constant Summary collapse

OUTPUT_PATH =

: String

Returns:

  • (String)
".cursor/rules/diogenes.mdc"

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/cursor.rb', line 10

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

#frontmatterString

: () -> String

Returns:

  • (String)


28
29
30
31
32
33
34
35
# File 'lib/diogenes/targets/cursor.rb', line 28

def frontmatter
  <<~YAML.strip
    ---
    description: Diogenes AI feature decision framework
    alwaysApply: true
    ---
  YAML
end

#render(sources) ⇒ String

: (untyped) -> String

Parameters:

  • (Object)

Returns:

  • (String)


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

def render(sources)
  parts = []
  parts << frontmatter
  parts << "<!-- #{generated_banner("cursor")} -->"
  parts << rules_block(sources.rules) unless sources.rules.empty?
  parts << skills_block(sources.skills) unless sources.skills.empty?
  parts.join("\n\n")
end

#rules_block(rules) ⇒ String

: (Array) -> String

Parameters:

Returns:

  • (String)


38
39
40
41
42
43
44
45
46
47
# File 'lib/diogenes/targets/cursor.rb', line 38

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

#skills_block(skills) ⇒ String

: (Array) -> String

Parameters:

Returns:

  • (String)


50
51
52
53
54
55
56
# File 'lib/diogenes/targets/cursor.rb', line 50

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