Class: RailsAiBridge::Serializers::Providers::ClaudeRulesSerializer

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_ai_bridge/serializers/providers/claude_rules_serializer.rb

Overview

Generates .claude/rules/ markdown files for Claude Code auto-discovery. Quick-reference lists keep ClaudeSerializer output smaller.

Constant Summary collapse

SEMANTIC_TIER_LIST_CAP =

Max model names listed per semantic tier in rails-context.md when Configuration#context_mode is :compact.

20

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(context) ⇒ ClaudeRulesSerializer

Returns a new instance of ClaudeRulesSerializer.

Parameters:



16
17
18
# File 'lib/rails_ai_bridge/serializers/providers/claude_rules_serializer.rb', line 16

def initialize(context)
  @context = context
end

Instance Attribute Details

#context ⇒ Hash (readonly)

Returns Introspection context passed to serializers.

Returns:

  • (Hash) —

    Introspection context passed to serializers.



13
14
15
# File 'lib/rails_ai_bridge/serializers/providers/claude_rules_serializer.rb', line 13

def context
  @context
end

Instance Method Details

#call(output_dir) ⇒ Hash{Symbol => Array<String>}

Writes Claude rules Markdown files into the given output directory, creating or updating files under .claude/rules; only files whose generated content changed are written.

Parameters:

  • output_dir (String) —

    Root directory where .claude/rules is created.

Returns:

  • (Hash{Symbol => Array<String>}) —

    Absolute file paths grouped by whether they were written or skipped because content was unchanged.



27
28
29
30
31
32
33
34
35
36
# File 'lib/rails_ai_bridge/serializers/providers/claude_rules_serializer.rb', line 27

def call(output_dir)
  files = {
    'rails-context.md' => render_context_reference,
    'rails-schema.md' => render_schema_reference,
    'rails-models.md' => render_models_reference,
    'rails-mcp-tools.md' => render_mcp_tools_reference
  }

  RuleFileWriter.new(File.join(output_dir, '.claude', 'rules')).call(files)
end