Module: Chiridion

Defined in:
lib/chiridion.rb,
lib/chiridion/config.rb,
lib/chiridion/engine.rb,
lib/chiridion/version.rb,
lib/chiridion/engine/writer.rb,
lib/chiridion/engine/renderer.rb,
lib/chiridion/semantic_engine.rb,
lib/chiridion/engine/extractor.rb,
lib/chiridion/engine/rbs_loader.rb,
lib/chiridion/engine/file_writer.rb,
lib/chiridion/engine/type_merger.rb,
lib/chiridion/engine/class_linker.rb,
lib/chiridion/engine/drift_checker.rb,
lib/chiridion/engine/file_renderer.rb,
lib/chiridion/engine/github_linker.rb,
lib/chiridion/engine/document_model.rb,
lib/chiridion/engine/post_processor.rb,
lib/chiridion/engine/inline_rbs_loader.rb,
lib/chiridion/engine/semantic_renderer.rb,
lib/chiridion/engine/template_renderer.rb,
lib/chiridion/engine/semantic_extractor.rb,
lib/chiridion/engine/frontmatter_builder.rb,
lib/chiridion/engine/spec_example_loader.rb,
lib/chiridion/engine/generated_rbs_loader.rb,
lib/chiridion/engine/rbs_type_alias_loader.rb

Overview

Chiridion: Agent-oriented documentation generator for Ruby projects.

Chiridion (“handbook” in Greek, from the same root as Enchiridion) generates documentation optimized for AI agents and LLMs working with Ruby codebases. It extracts documentation from YARD comments, merges RBS type signatures, and produces structured markdown suitable for context injection.

## Key Features

  • **YARD Integration**: Extracts docstrings, @param, @return, @example tags

  • **RBS Authority**: RBS type signatures are authoritative over YARD types

  • **Spec Examples**: Extracts usage examples from RSpec files

  • Wikilinks: Obsidian-compatible [[Class::Name]] cross-references

  • **Drift Detection**: CI mode to ensure docs stay in sync with code

## Design Philosophy

Traditional documentation is written for human developers reading in browsers. Agent-oriented documentation is optimized for LLMs processing in context windows:

  • Structured frontmatter with navigation metadata

  • Explicit type information (not just prose descriptions)

  • Cross-reference links that can be followed programmatically

  • Compact but complete method signatures

Examples:

Basic usage

engine = Chiridion::Engine.new(
  paths: ['lib/myproject'],
  output: 'docs/sys',
  namespace_filter: 'MyProject::'
)
engine.refresh

Configuration block

Chiridion.configure do |config|
  config.output = 'docs/sys'
  config.namespace_filter = 'MyProject::'
  config.github_repo = 'user/repo'
  config.include_specs = true
end
Chiridion.refresh(['lib/myproject'])

Defined Under Namespace

Classes: Config, DefaultLogger, Engine, Error, SemanticEngine

Constant Summary collapse

VERSION =
"0.3.4"

Class Method Summary collapse

Class Method Details

.check(paths = nil) ⇒ void

This method returns an undefined value.

Convenience method to check for documentation drift.

Parameters:

  • paths (Array<String>) (defaults to: nil)

    Source paths to check

Raises:

  • (SystemExit)

    Exits with code 1 if drift detected



92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/chiridion.rb', line 92

def check(paths = nil)
  engine = Engine.new(
    paths:                   paths || [config.source_path],
    output:                  config.output,
    namespace_filter:        config.namespace_filter,
    include_specs:           config.include_specs,
    verbose:                 config.verbose,
    logger:                  config.logger,
    inline_source_threshold: config.inline_source_threshold,
    output_mode:             config.output_mode
  )
  engine.check
end

.configConfig

Returns Global configuration instance.

Returns:

  • (Config)

    Global configuration instance



54
# File 'lib/chiridion.rb', line 54

def config = @config ||= Config.new

.configure {|Config| ... } ⇒ Config

Configure Chiridion with a block.

Yields:

  • (Config)

    Configuration object

Returns:

  • (Config)

    Configured instance



60
61
62
63
# File 'lib/chiridion.rb', line 60

def configure
  yield config
  config
end

.refresh(paths = nil, output: nil) ⇒ void

This method returns an undefined value.

Convenience method to run documentation refresh.

Parameters:

  • paths (Array<String>) (defaults to: nil)

    Source paths to document

  • output (String, nil) (defaults to: nil)

    Override output directory



73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/chiridion.rb', line 73

def refresh(paths = nil, output: nil)
  engine = Engine.new(
    paths:                   paths || [config.source_path],
    output:                  output || config.output,
    namespace_filter:        config.namespace_filter,
    include_specs:           config.include_specs,
    verbose:                 config.verbose,
    logger:                  config.logger,
    inline_source_threshold: config.inline_source_threshold,
    output_mode:             config.output_mode
  )
  engine.refresh
end

.reset_config!Object

Reset configuration to defaults (useful for testing).



66
# File 'lib/chiridion.rb', line 66

def reset_config! = @config = Config.new