AI Slop Code RIsk Monitor

ayghri/i-have-adhd

A skill to stop your coding agent from burying the answer. ADHD-friendly output.

7.1 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for ayghri/i-have-adhd, a Python project with 56,418 GitHub stars. SynthScan examined 13,088 lines of code across 64 source files, recording 79 pattern matches distributed across 5 syntactic categories. The legacy adjusted pattern signal is 7.1 (Moderate 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.

7.1
Adjusted Signal
7.1
Raw Pattern Score
100%
Time Factor
2026-10-06
Last Push
56.4K
Stars
Python
Language
13.1K
Lines of Code
64
Files
79
Pattern Hits
2026-10-12
Scan Date
0.02
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 28.4/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 0.4/100 · LOW

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

Agent Over-Engineering Ratio 27.2/100 · MEDIUM

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

PR Review Velocity Impact 28.6/100 · MEDIUM

Which changes need focused human review? 79 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 2LOW 76

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 79 distinct pattern matches across 5 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.

Hyper-Verbose Identifiers71 hits · 78 pts
SeverityFileLineSnippetContext
LOWtests/test_judge.py16 def test_labels_are_a_stable_bijection_over_conditions(self):CODE
LOWtests/test_judge.py26 def test_labels_vary_across_groups_so_position_never_leaks_condition(self):CODE
LOWtests/test_judge.py38 def test_responses_group_by_case_and_trial(self):CODE
LOWtests/test_judge.py50 def test_groups_missing_a_condition_are_partitioned_out_not_dropped(self):CODE
LOWtests/test_judge.py75 def test_labels_are_mapped_back_to_their_conditions(self):CODE
LOW⚡tests/test_judge.py89 def test_out_of_range_score_names_the_case_it_came_from(self):CODE
LOW⚡tests/test_judge.py97 def test_json_wrapped_in_code_fences_is_still_parsed(self):CODE
LOW⚡tests/test_judge.py106 def test_missing_label_names_the_label_the_judge_skipped(self):CODE
LOW⚡tests/test_judge.py116 def test_only_the_marked_grader_section_is_extracted(self):CODE
LOWtests/test_judge.py127 def test_rubric_without_markers_is_used_whole(self):CODE
LOWtests/test_judge.py130 def test_shipped_rubric_grader_section_never_names_a_condition(self):CODE
LOWtests/test_judge.py148 def test_prompt_carries_responses_under_labels_and_never_names_conditions(self):CODE
LOWtests/test_judge.py162 def test_runner_cwd_is_fresh_and_outside_the_repository(self):CODE
LOWtests/test_judge.py190 def test_judging_produces_paired_rows_the_scorer_accepts(self):CODE
LOWtests/test_judge.py259 def test_a_malformed_verdict_skips_its_group_instead_of_killing_the_run(self):CODE
LOWtests/test_judge.py320 def test_missing_entire_condition_fails_before_judging(self):CODE
LOWtests/test_judge.py360 def test_runner_failure_skips_its_group_and_continues(self):CODE
LOW⚡tests/test_run_evals.py146 def test_conditions_judged_on_different_cases_are_rejected(self):CODE
LOW⚡tests/test_run_evals.py156 def test_duplicate_score_rows_are_rejected(self):CODE
LOW⚡tests/test_run_evals.py166 def test_usage_summary_reports_token_and_cost_deltas(self):CODE
LOW⚡tests/test_run_evals.py217 def test_usage_summary_rejects_mixed_runners(self):CODE
LOW⚡tests/test_run_evals.py226 def test_usage_summary_rejects_unpaired_conditions(self):CODE
LOW⚡tests/test_run_evals.py236 def test_usage_summary_marks_unreported_cost(self):CODE
LOWtests/test_run_evals.py18 def test_case_catalog_is_valid_and_balanced(self):CODE
LOWtests/test_run_evals.py27 def test_parse_response_tolerates_output_after_the_json_document(self):CODE
LOWtests/test_run_evals.py40 def test_runner_invocation_closes_child_stdin(self):CODE
LOWtests/test_run_evals.py99 def test_score_summary_applies_weights_and_release_gates(self):CODE
LOWtests/test_run_evals.py123 def test_candidate_blocker_fails_release_gate(self):CODE
LOWtests/test_run_evals.py252 def test_usage_tokens_handles_both_runner_shapes(self):CODE
LOWtests/test_run_evals.py272 def test_usage_rejects_invalid_measurements(self):CODE
LOWtests/test_run_evals.py288 def test_usage_rejects_overflowing_cost_total(self):CODE
LOWtests/test_run_evals.py294 def test_usage_distinguishes_missing_counts_from_zero(self):CODE
LOWtests/test_run_evals.py310 def test_usage_rejects_duplicate_or_invalid_rows(self):CODE
LOWtests/test_run_evals.py324 def test_usage_checks_model_metadata_when_available(self):CODE
LOWtests/test_run_evals.py337 def test_measure_cli_reports_increased_input_and_cost(self):CODE
LOWtests/test_run_evals.py386 def test_duplicate_case_ids_are_rejected(self):CODE
LOWtests/test_run_evals.py397 def test_jsonl_loader_reports_invalid_rows(self):CODE
LOWtests/test_run_evals.py404 def test_condition_prompt_injects_the_skill_body_without_frontmatter(self):CODE
LOWtests/test_run_evals.py430 def test_condition_prompt_keeps_a_skill_body_that_has_no_frontmatter(self):CODE
LOWtests/test_run_evals.py439 def test_unmetered_runner_is_rejected_before_any_call(self):CODE
LOWtests/test_run_evals.py482 def test_generation_runs_outside_the_repository(self):CODE
LOWtests/test_run_evals.py513 def test_completed_keys_support_resuming_partial_runs(self):CODE
LOWtests/test_omp_package.py13 def test_omp_and_pi_extension_manifests_are_declared(self):CODE
LOWtests/test_omp_package.py21 def test_skill_remains_explicitly_invoked(self):CODE
LOWtests/test_always_on_hooks.py88 def test_hook_is_silent_without_opt_in_flag(self):CODE
LOWtests/test_always_on_hooks.py98 def test_runtimes_strip_frontmatter_with_trailing_whitespace(self):CODE
LOWtests/test_always_on_hooks.py116 def test_runtimes_keep_content_when_frontmatter_is_unclosed(self):CODE
LOW⚡tests/test_always_on_hooks.py136 def test_codex_command_runs_the_hook_instead_of_parsing_session_json(self):CODE
LOW⚡tests/test_always_on_hooks.py145 def test_codex_command_is_silent_without_opt_in_flag(self):CODE
LOW⚡tests/test_always_on_hooks.py152 def test_codex_command_swallows_missing_plugin_errors(self):CODE
LOW⚡tests/test_always_on_hooks.py159 def test_hook_uses_a_shared_claude_and_codex_launcher(self):CODE
LOWtests/test_run_scenario_eval.py41 def test_invalid_turns_are_rejected(self):CODE
LOWtests/test_run_scenario_eval.py53 def test_capture_is_compatible_with_existing_blind_judge(self, run):CODE
LOWtests/test_run_scenario_eval.py101 def test_failed_capture_cannot_be_judged_as_complete(self, run):CODE
LOWtests/test_run_scenario_eval.py119 def test_invalid_costs_and_payloads_fail_closed(self, run):CODE
LOWtests/test_run_scenario_eval.py131 def test_invalid_inputs_and_existing_output_do_not_start_provider(self, run):CODE
LOWtests/test_run_scenario_eval.py144 def test_remaining_budget_is_rounded_down_and_stops_further_calls(self, run):CODE
LOWtests/test_run_scenario_eval.py155 def test_actual_child_gets_no_inherited_input_and_times_out(self):CODE
LOWtests/test_install_docs.py12 def test_marketplace_refresh_is_paired_with_plugin_update(self):CODE
LOWtests/test_install_docs.py52 def test_grok_install_commands(self):CODE
11 more matches not shown…
AI Slop Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_judge.py164 # in the repo and it starts inspecting the eval harness instead ofCOMMENT
MEDIUMtests/test_run_evals.py484 # in this checkout and it answers prompts by inspecting the harness,COMMENT
Empty Error Handlers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHscripts/run_evals.py449except (ValueError, json.JSONDecodeError):CODE
Deep Nesting4 hits · 4 pts
SeverityFileLineSnippetContext
LOWtests/test_run_evals.py272CODE
LOWtests/test_install_docs.py12CODE
LOWscripts/run_evals.py379CODE
LOWscripts/run_evals.py514CODE
Unused Imports1 hit · 1 pts
SeverityFileLineSnippetContext
LOWscripts/check_pi_extension.py4CODE