AI Slop Code RIsk Monitor

jekyll/jekyll

:globe_with_meridians: Jekyll is a blog-aware static site generator in Ruby

4.8 Low pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for jekyll/jekyll, a Ruby project with 51,706 GitHub stars. SynthScan examined 49,201 lines of code across 480 source files, recording 147 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 4.8 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

4.8
Adjusted Signal
4.8
Raw Pattern Score
100%
Time Factor
2026-09-17
Last Push
51.7K
Stars
Ruby
Language
49.2K
Lines of Code
480
Files
147
Pattern Hits
2026-10-12
Scan Date
0.00
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 14.6/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 113 finding(s).

Hallucinated Dependency & Supply Chain Risk 1.8/100 · LOW

Are imports declared and package/API names verified? 15 finding(s).

Agent Over-Engineering Ratio 8.6/100 · LOW

Are wrappers, guards, and repeated structures necessary? 46 finding(s).

PR Review Velocity Impact 19.9/100 · LOW

Which changes need focused human review? 147 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 1MEDIUM 33LOW 113

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 147 distinct pattern matches across 9 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Decorative Section Separators19 hits · 62 pts
SeverityFileLineSnippetContext
MEDIUM.rubocop.yml1# -----------------------------------------------------------------------------COMMENT
MEDIUM.rubocop.yml7# -----------------------------------------------------------------------------COMMENT
MEDIUM⚡.rubocop.yml38# =======================COMMENT
MEDIUM⚡.rubocop.yml41# ----------------------------------------COMMENT
MEDIUM⚡.rubocop.yml50# ----------------------------------------COMMENT
MEDIUM.rubocop.yml97# ----------------------------------------COMMENT
MEDIUM.rubocop.yml210# ----------------------------------------COMMENT
MEDIUM.rubocop.yml248# ----------------------------------------COMMENT
MEDIUM.rubocop.yml321# ----------------------------------------COMMENT
MEDIUM.rubocop.yml335# ----------------------------------------COMMENT
MEDIUM.rubocop.yml380# ----------------------------------------COMMENT
MEDIUM.rubocop.yml395# ----------------------------------------COMMENT
MEDIUMbenchmark/conditional_liquid.rb76# ------------------------------------------------------------------------COMMENT
MEDIUMbenchmark/conditional_liquid.rb92# ------------------------------------------------------------------------COMMENT
MEDIUMrake/task_utils/rubocop_config_formatter.rb33 # -----------------------------------------------------------------------------COMMENT
MEDIUMrake/task_utils/rubocop_config_formatter.rb39 # -----------------------------------------------------------------------------COMMENT
MEDIUMrake/task_utils/rubocop_config_formatter.rb60 # =======================COMMENT
MEDIUMdocs/_data/jekyll_filters.yml2# ---------------------------------------------------------------------------------------COMMENT
MEDIUMdocs/_data/jekyll_filters.yml17# ---------------------------------------------------------------------------------------COMMENT
Over-Commented Block60 hits · 60 pts
SeverityFileLineSnippetContext
LOW.rubocop_todo.yml1# This configuration was generated byCOMMENT
LOWbenchmark/schwartzian_transform.rb1#!/usr/bin/env rubyCOMMENT
LOWtest/helper.rb101 # file `test/source/symlink-test/symlinked-file-outside-source` but errors out since the linkedCOMMENT
LOWdocs/_data/jekyll_filters.yml1#COMMENT
LOWrubocop/jekyll/assert_equal_literal_actual.rb1# frozen_string_literal: trueCOMMENT
LOW.github/workflows/codeql.yml41 # Prefix the list here with "+" to use these queries and those in the config file.COMMENT
LOW.github/workflows/spelling.yml1name: Spell CheckCOMMENT
LOW.github/workflows/spelling.yml21#COMMENT
LOWlib/jekyll.rb141COMMENT
LOWlib/site_template/_config.yml1# Welcome to Jekyll!COMMENT
LOWlib/site_template/_config.yml41#COMMENT
LOWlib/jekyll/convertible.rb1# frozen_string_literal: trueCOMMENT
LOWlib/jekyll/static_file.rb141 # and additionally removes any multiple periods in the string.COMMENT
LOWlib/jekyll/filters.rb41 ).convert(input)COMMENT
LOWlib/jekyll/filters.rb61 # See Utils.slugify for more detail.COMMENT
LOWlib/jekyll/filters.rb81 # CGI escape a string for use in a URL. Replaces any special charactersCOMMENT
LOWlib/jekyll/filters.rb101 #COMMENT
LOWlib/jekyll/filters.rb141 # word "and" for the last one.COMMENT
LOWlib/jekyll/filters.rb161 "#{array[0...-1].join(", ")}, #{connector} #{array[-1]}"COMMENT
LOWlib/jekyll/filters.rb221 endCOMMENT
LOWlib/jekyll/filters.rb281COMMENT
LOWlib/jekyll/log_adapter.rb61 # topic - the topic of the message, e.g. "Configuration file", "Deprecation", etc.COMMENT
LOWlib/jekyll/log_adapter.rb81 # topic - the topic of the message, e.g. "Configuration file", "Deprecation", etc.COMMENT
LOWlib/jekyll/log_adapter.rb121 #COMMENT
LOWlib/jekyll/excerpt.rb101 # the first two new lines:COMMENT
LOWlib/jekyll/excerpt.rb121 #COMMENT
LOWlib/jekyll/document.rb21COMMENT
LOWlib/jekyll/document.rb81COMMENT
LOWlib/jekyll/document.rb141 # The "cleaned" relative path is the relative path without the extnameCOMMENT
LOWlib/jekyll/document.rb321COMMENT
LOWlib/jekyll/path_manager.rb1# frozen_string_literal: trueCOMMENT
LOWlib/jekyll/frontmatter_defaults.rb141 collections_dir = @site.config["collections_dir"]COMMENT
LOWlib/jekyll/frontmatter_defaults.rb161 endCOMMENT
LOWlib/jekyll/plugin.rb41 # set the priority.COMMENT
LOWlib/jekyll/collection.rb121 endCOMMENT
LOWlib/jekyll/collection.rb161COMMENT
LOWlib/jekyll/reader.rb81COMMENT
LOWlib/jekyll/reader.rb121 # Retrieve all the static files from the current directory,COMMENT
LOWlib/jekyll/url.rb1# frozen_string_literal: trueCOMMENT
LOWlib/jekyll/url.rb121 endCOMMENT
LOWlib/jekyll/url.rb141 # segment = *pcharCOMMENT
LOWlib/jekyll/utils.rb21 def titleize_slug(slug)COMMENT
LOWlib/jekyll/utils.rb121 endCOMMENT
LOWlib/jekyll/utils.rb161 # cased - whether to replace all uppercase letters with theirCOMMENT
LOWlib/jekyll/utils.rb181 #COMMENT
LOWlib/jekyll/utils.rb221 slug.downcase! unless casedCOMMENT
LOWlib/jekyll/utils.rb241 # # => "/:basename/"COMMENT
LOWlib/jekyll/utils.rb261 elseCOMMENT
LOWlib/jekyll/utils.rb281 # # => ["path/.", "path/..", "path/file1"]COMMENT
LOWlib/jekyll/site.rb241COMMENT
LOWlib/jekyll/site.rb281 @site_data ||= (config["data"] || data)COMMENT
LOWlib/jekyll/filters/date_filters.rb1# frozen_string_literal: trueCOMMENT
LOWlib/jekyll/filters/date_filters.rb21 # Format a date in long format e.g. "27 January 2011".COMMENT
LOWlib/jekyll/filters/date_filters.rb41 #COMMENT
LOWlib/jekyll/drops/drop.rb101 list.reject! { |item| item.end_with?("=") }COMMENT
LOWlib/jekyll/drops/drop.rb221 # Returns a Hash ready for JSON generation.COMMENT
LOWlib/jekyll/converters/markdown.rb61 #COMMENT
LOWlib/jekyll/utils/internet.rb1# frozen_string_literal: trueCOMMENT
LOWlib/jekyll/commands/new.rb61 # Internal: Gets the filename of the sample post to be createdCOMMENT
LOWlib/jekyll/readers/post_reader.rb21 # Read all the files in <source>/<dir>/_posts and create a new DocumentCOMMENT
Self-Referential Comments13 hits · 39 pts
SeverityFileLineSnippetContext
MEDIUMlib/jekyll/plugin_manager.rb7 # Create an instance of this class.COMMENT
MEDIUMlib/jekyll/document.rb34 # Create a new Document.COMMENT
MEDIUMlib/jekyll/document.rb143 # This method is useful when building the URL of the document.COMMENT
MEDIUMlib/jekyll/document.rb315 # Create a Liquid-understandable version of this Document.COMMENT
MEDIUMlib/jekyll/frontmatter_defaults.rb4 # This class handles custom defaults for YAML frontmatter settings.COMMENT
MEDIUMlib/jekyll/collection.rb8 # Create a new Collection.COMMENT
MEDIUMlib/jekyll/reader.rb174 # Create a single PostReader instance to retrieve drafts and posts from all validCOMMENT
MEDIUMlib/jekyll/command.rb36 # Create a full Jekyll configuration with the options passed in as overridesCOMMENT
MEDIUMlib/jekyll/drops/drop.rb106 # Create a new DropCOMMENT
MEDIUMlib/jekyll/commands/build.rb7 # Create the Mercenary command for the Jekyll CLI for this CommandCOMMENT
MEDIUMlib/jekyll/commands/serve/servlet.rb8 # This class is used to determine if the Servlet should modify a served fileCOMMENT
MEDIUMlib/jekyll/readers/page_reader.rb13 # Create a new `Jekyll::Page` object for each entry in a given array.COMMENT
MEDIUMlib/jekyll/readers/static_file_reader.rb13 # Create a new StaticFile object for every entry in a given list of basenames.COMMENT
Hyper-Verbose Identifiers27 hits · 27 pts
SeverityFileLineSnippetContext
LOWbenchmark/schwartzian_transform.rb33def sort_by_property_directly(docs, meta_key)CODE
LOWtest/test_document.rb18 def setup_document_with_dates(filename)CODE
LOWtest/test_tag_highlight.rb6 def render_content_with_text_to_highlight(code)CODE
LOWtest/test_tag_highlight.rb29 def highlight_block_with_markup(markup)CODE
LOWtest/test_static_file.rb24 def setup_static_file_with_collection(base, dir, name, metadata)CODE
LOWtest/test_static_file.rb31 def setup_static_file_with_defaults(base, dir, name, defaults)CODE
LOWtest/test_tag_link.rb6 def render_content_with_collection(content, collection_label)CODE
LOWtest/test_theme_assets_reader.rb14 def assert_file_with_relative_path(haystack, relative_path)CODE
LOWtest/test_theme_assets_reader.rb20 def refute_file_with_relative_path(haystack, relative_path)CODE
LOWrubocop/jekyll/assert_equal_literal_actual.rb111 def replace_based_on_line_length(first_expression, second_expression)CODE
LOWrubocop/jekyll/assert_equal_literal_actual.rb124 def replace_hash_with_variable(first_expression, second_expression)CODE
LOWrubocop/jekyll/assert_equal_literal_actual.rb136 def replace_array_with_variable(first_expression, second_expression)CODE
LOWlib/jekyll/filters.rb400 def compare_property_vs_target(property, target)CODE
LOWlib/jekyll/external.rb54 def require_with_graceful_fail(names)CODE
LOWlib/jekyll/excerpt.rb167 def extract_markdown_link_reference_definitions(head, tail)CODE
LOWlib/jekyll/reader.rb200 def conditionally_generate_entry(entry_path, container, reader)CODE
LOWlib/jekyll/utils.rb70 def pluralized_array_from_hash(hash, singular_key, plural_key)CODE
LOWlib/jekyll/utils.rb349 def replace_character_sequence_with_hyphen(string, mode: "default")CODE
LOWlib/jekyll/renderer.rb200 def add_regenerator_dependencies(layout)CODE
LOWlib/jekyll/command.rb41 def configuration_from_options(options)CODE
LOWlib/jekyll/command.rb90 def process_with_graceful_fail(cmd, options, *klass)CODE
LOWlib/jekyll/configuration.rb100 def get_config_value_with_override(config_key, override)CODE
LOWlib/jekyll/tags/highlight.rb93 def line_highlighter_formatter(formatter)CODE
LOWlib/jekyll/tags/include.rb131 def add_include_to_dependency(site, path, context)CODE
LOWlib/jekyll/tags/include.rb236 def add_include_to_dependency(inclusion, context)CODE
LOWlib/jekyll/commands/doctor.rb60 def deprecated_relative_permalinks(site)CODE
LOWlib/jekyll/commands/serve/servlet.rb187 def conditionally_inject_charset(res)CODE
Fake / Example Data15 hits · 18 pts
SeverityFileLineSnippetContext
LOWbenchmark/conditional_liquid.rb15Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce auctor libero atCODE
LOWbenchmark/conditional_liquid.rb15Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce auctor libero atCODE
LOW⚡benchmark/conditional_liquid.rb27Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce auctor libero atCODE
LOW⚡benchmark/conditional_liquid.rb27Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce auctor libero atCODE
LOW⚡benchmark/conditional_liquid.rb32ligula, {% if author == "Jane Doe" %} at finibus eros laoreet id. {% else %}CODE
LOW⚡benchmark/conditional_liquid.rb40Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce auctor libero atCODE
LOW⚡benchmark/conditional_liquid.rb40Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce auctor libero atCODE
LOWbenchmark/conditional_liquid.rb62 "author" => "John Doe",CODE
LOWtest/test_page_without_a_file.rb37 %w(lorem ipsum) => "lorem/ipsum",CODE
LOWtest/test_page_without_a_file.rb117 "author" => "John Doe",CODE
LOWtest/test_page_without_a_file.rb127 assert_equal "John Doe", @page.data["author"]CODE
LOWtest/test_page_without_a_file.rb157 @page.content = "Lorem ipsum dolor sit amet"CODE
LOWtest/test_page_without_a_file.rb157 @page.content = "Lorem ipsum dolor sit amet"CODE
LOWlib/theme_template/example/index.html5Lorem ipsum dolor sit amet, quo id prima corrumpit pertinacia, id ius dolor dolores, an veri pertinax explicari mea. AgaCODE
LOWlib/theme_template/example/index.html5Lorem ipsum dolor sit amet, quo id prima corrumpit pertinacia, id ius dolor dolores, an veri pertinax explicari mea. AgaCODE
Redundant / Tautological Comments9 hits · 16 pts
SeverityFileLineSnippetContext
LOWlib/jekyll/regenerator.rb133 # Check if metadata has been disabledCOMMENT
LOWlib/jekyll/entry_filter.rb37 # Check if the current entry is explicitly included and cache the resultCOMMENT
LOW⚡lib/jekyll/entry_filter.rb80 # Check if a file is a symlink.COMMENT
LOW⚡lib/jekyll/entry_filter.rb89 # Check if given path is outside of current site's configured source directory.COMMENT
LOW⚡lib/jekyll/entry_filter.rb95 # Check if an entry matches a specific pattern.COMMENT
LOWlib/jekyll/excerpt.rb54 # Check if excerpt includes a stringCOMMENT
LOWlib/jekyll/cache.rb120 # Check if `key` already exists in this cacheCOMMENT
LOWlib/jekyll/drops/drop.rb174 # Check if key exists in DropCOMMENT
LOWlib/jekyll/commands/serve.rb302 # Add SSL to the stack if the user triggers --enable-ssl and theyCOMMENT
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHlib/jekyll/commands/serve.rb269 # Keep in our area with a thread or detach the server as requestedCOMMENT
Structural Annotation Overuse2 hits · 3 pts
SeverityFileLineSnippetContext
LOWdocs/_docs/installation/macos.md36### Step 1: Install HomebrewCOMMENT
LOWdocs/_docs/installation/macos.md44### Step 2: Install chruby and the latest Ruby with ruby-installCOMMENT
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMlib/jekyll/filters.rb380 # We also utilize the Schwartzian transform to make this more efficient.COMMENT