AI Slop Code RIsk Monitor

JoshuaC215/agent-service-toolkit

Full toolkit for running an AI agent service built with LangGraph, FastAPI and Streamlit

29.1 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for JoshuaC215/agent-service-toolkit, a Python project with 4,517 GitHub stars. SynthScan examined 14,031 lines of code across 115 source files, recording 277 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 29.1 (Elevated 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.

29.1
Adjusted Signal
29.1
Raw Pattern Score
100%
Time Factor
2026-10-04
Last Push
4.5K
Stars
Python
Language
14.0K
Lines of Code
115
Files
277
Pattern Hits
2026-10-12
Scan Date
0.13
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 60.9/100 · HIGH

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

Hallucinated Dependency & Supply Chain Risk 13.0/100 · LOW

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

Agent Over-Engineering Ratio 60.5/100 · HIGH

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

PR Review Velocity Impact 75.8/100 · CRITICAL

Which changes need focused human review? 277 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 15MEDIUM 23LOW 239

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 277 distinct pattern matches across 16 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 Identifiers136 hits · 155 pts
SeverityFileLineSnippetContext
LOWtests/conftest.py17def pytest_collection_modifyitems(config, items):CODE
LOWtests/smoke/test_persistence.py14def test_checkpointer_persists_history():CODE
LOWtests/smoke/test_persistence.py41def test_threads_lists_user_threads():CODE
LOWtests/core/test_llm.py58def test_get_model_groq_guard():CODE
LOWtests/core/test_llm.py66def test_get_model_groq_gpt_oss():CODE
LOWtests/core/test_llm.py88def test_get_model_openrouter():CODE
LOWtests/core/test_llm.py100def test_get_model_openrouter_requires_key():CODE
LOW⚡tests/core/test_settings.py32def test_settings_default_values():CODE
LOW⚡tests/core/test_settings.py40def test_settings_no_api_keys():CODE
LOW⚡tests/core/test_settings.py47def test_settings_with_openai_key():CODE
LOW⚡tests/core/test_settings.py55def test_settings_with_anthropic_key():CODE
LOW⚡tests/core/test_settings.py63def test_settings_with_openrouter_key():CODE
LOW⚡tests/core/test_settings.py73def test_settings_with_vertexai_credentials_file():CODE
LOW⚡tests/core/test_settings.py81def test_settings_with_multiple_api_keys():CODE
LOWtests/core/test_settings.py101def test_settings_use_fake_model():CODE
LOWtests/core/test_settings.py108def test_settings_use_fake_model_wins_over_ambient_real_keys():CODE
LOWtests/core/test_settings.py127def test_settings_explicit_default_model_overrides_fake():CODE
LOWtests/core/test_settings.py151def test_settings_with_azure_openai_key():CODE
LOWtests/core/test_settings.py167def test_settings_with_both_openai_and_azure():CODE
LOWtests/core/test_settings.py189def test_settings_azure_deployment_names():CODE
LOWtests/core/test_settings.py194def test_settings_azure_missing_deployment_names():CODE
LOWtests/core/test_settings.py207def test_settings_azure_deployment_map():CODE
LOWtests/core/test_settings.py224def test_settings_azure_invalid_deployment_map():CODE
LOWtests/core/test_settings.py238def test_settings_azure_openai():CODE
LOW⚡tests/core/test_settings.py264def test_settings_log_level_default():CODE
LOW⚡tests/core/test_settings.py272def test_settings_log_level_from_env():CODE
LOW⚡tests/core/test_settings.py280def test_settings_log_level_invalid():CODE
LOWtests/app/test_streamlit_app.py12def test_app_simple_non_streaming(mock_agent_client):CODE
LOWtests/app/test_streamlit_app.py75def test_app_thread_id_history(mock_agent_client):CODE
LOWtests/app/test_streamlit_app.py100def test_app_resume_with_agent_param(mock_agent_client):CODE
LOWtests/app/test_streamlit_app.py339async def test_app_streaming_single_sub_agent(mock_agent_client, multi_agent_messages):CODE
LOWtests/app/test_streamlit_app.py409async def test_app_streaming_sequential_sub_agents(mock_agent_client, multi_agent_messages):CODE
LOWtests/app/test_streamlit_app.py499async def test_app_streaming_nested_sub_agents(mock_agent_client, multi_agent_messages):CODE
LOWtests/app/test_streamlit_app.py604def test_app_thread_caching_sidebar(mock_agent_client, mock_threads_data):CODE
LOWtests/app/test_streamlit_app.py621def test_app_thread_click_loads_history(mock_agent_client, mock_threads_data):CODE
LOWtests/app/test_streamlit_app.py650def test_app_thread_click_history_error(mock_agent_client, mock_threads_data):CODE
LOWtests/app/test_streamlit_app.py667def test_app_thread_fetch_error_shows_caption(mock_agent_client):CODE
LOWtests/integration/test_docker_e2e.py8def test_service_with_fake_model():CODE
LOW⚡tests/agents/test_lazy_agent.py43 def test_get_graph_before_load(self):CODE
LOW⚡tests/agents/test_lazy_agent.py49 def test_get_graph_after_load(self):CODE
LOW⚡tests/agents/test_lazy_agent.py58 def test_get_graph_no_graph_created(self):CODE
LOWtests/agents/test_agent_loading.py15 async def test_load_agent_static_agent(self):CODE
LOWtests/agents/test_agent_loading.py22 async def test_load_agent_lazy_agent(self):CODE
LOW⚡tests/agents/test_agent_loading.py34 async def test_load_agent_nonexistent(self):CODE
LOW⚡tests/agents/test_agent_loading.py39 def test_get_agent_static_agent(self):CODE
LOW⚡tests/agents/test_agent_loading.py44 def test_get_agent_lazy_agent_not_loaded(self):CODE
LOWtests/agents/test_agent_loading.py55 def test_get_agent_lazy_agent_loaded(self):CODE
LOWtests/agents/test_agent_loading.py68 def test_get_agent_nonexistent(self):CODE
LOWtests/agents/test_github_mcp_agent.py22 async def test_load_without_github_pat(self):CODE
LOWtests/agents/test_github_mcp_agent.py35 async def test_load_with_github_pat(self):CODE
LOWtests/agents/test_github_mcp_agent.py118 def test_get_graph_not_loaded(self):CODE
LOWtests/agents/test_safeguard.py8def test_safeguard_skipped_under_fake_model():CODE
LOWtests/schema/test_models.py14def test_model_enums_are_all_discovered():CODE
LOWtests/schema/test_models.py19def test_model_values_are_unique_across_enums():CODE
LOWtests/schema/test_models.py32def test_vertexai_models_do_not_collide_with_google(model):CODE
LOWtests/schema/test_models.py37def test_model_table_covers_every_model():CODE
LOW⚡tests/voice/test_tts.py11def test_init_with_openai_provider(mock_openai_client):CODE
LOW⚡tests/voice/test_tts.py19def test_init_with_invalid_provider():CODE
LOW⚡tests/voice/test_tts.py26def test_init_with_unimplemented_provider():CODE
LOW⚡tests/voice/test_tts.py33def test_from_env_provider_not_set():CODE
76 more matches not shown…
Self-Referential Comments17 hits · 50 pts
SeverityFileLineSnippetContext
MEDIUMtests/service/test_service.py38 # Create a separate mock for the default agentCOMMENT
MEDIUMtests/client/test_client.py191 # Create an async iterator for the eventsCOMMENT
MEDIUMscripts/create_chroma_db.py71 # Create the Chroma databaseCOMMENT
MEDIUMsrc/streamlit_app.py450 # Create a status container for each tool call and store theCOMMENT
MEDIUMsrc/streamlit_app.py625 # Create a nested status container for the sub-agentCOMMENT
MEDIUMsrc/agents/rag_assistant.py95# Define the graphSTRING
MEDIUMsrc/agents/interrupt_agent.py220# Define the graphCOMMENT
MEDIUMsrc/agents/safeguard.py107 # Create a formatted history string to evaluateSTRING
MEDIUMsrc/agents/tools.py51 # Create the embedding function for our project description databaseCOMMENT
MEDIUMsrc/agents/command_agent.py16# Define the nodesCOMMENT
MEDIUM⚡src/agents/knowledge_base_agent.py18# Define the stateCOMMENT
MEDIUM⚡src/agents/knowledge_base_agent.py27# Create the retrieverCOMMENT
MEDIUM⚡src/agents/knowledge_base_agent.py35 # Create the retriever with the specified Knowledge Base IDCOMMENT
MEDIUMsrc/agents/knowledge_base_agent.py157# Define the graphCOMMENT
MEDIUMsrc/agents/research_assistant.py99# Define the graphSTRING
MEDIUMsrc/agents/github_mcp_agent/github_mcp_agent.py101# Create the agent instanceCOMMENT
MEDIUMsrc/agents/bg_task_agent/bg_task_agent.py53# Define the graphCOMMENT
Excessive Try-Catch Wrapping33 hits · 36 pts
SeverityFileLineSnippetContext
LOWscripts/check_live_models.py88 except Exception as e:CODE
LOWscripts/e2e_ui_tests.py90 except Exception:CODE
LOWscripts/e2e_ui_tests.py437 except Exception as e:CODE
LOWscripts/e2e_ui_tests.py461 except Exception:CODE
MEDIUMscripts/e2e_ui_tests.py87def launch_browser(p) -> Browser:CODE
LOW⚡scripts/smoke_live_app.py52 except Exception as e:CODE
LOW⚡scripts/smoke_live_app.py60 except Exception:CODE
LOW⚡scripts/smoke_live_app.py70 except Exception:CODE
LOW⚡scripts/smoke_live_app.py78 except Exception as e:CODE
LOW⚡scripts/smoke_live_app.py83 except Exception:CODE
LOWscripts/smoke_live_app.py124 except Exception:CODE
LOWsrc/streamlit_app.py167 except Exception as e:CODE
LOWsrc/core/settings.py242 except Exception as e:CODE
LOWsrc/agents/interrupt_agent.py117 except Exception as e:CODE
LOWsrc/agents/interrupt_agent.py163 except Exception as e:CODE
LOWsrc/agents/tools.py34 except Exception as e:CODE
LOWsrc/agents/tools.py54 except Exception as e:CODE
LOWsrc/agents/knowledge_base_agent.py119 except Exception as e:CODE
LOWsrc/agents/github_mcp_agent/github_mcp_agent.py80 except Exception as e:CODE
LOWsrc/voice/tts.py150 except Exception as e:CODE
LOWsrc/voice/stt.py142 except Exception as e:CODE
LOWsrc/voice/providers/openai_tts.py112 except Exception as e:CODE
LOWsrc/voice/providers/openai_stt.py54 except Exception as e:CODE
LOWsrc/service/service.py106 except Exception as e:CODE
LOWsrc/service/service.py116 except Exception as e:CODE
LOWsrc/service/service.py238 except Exception as e:CODE
LOWsrc/service/service.py324 except Exception as e:CODE
LOWsrc/service/service.py349 except Exception as e:CODE
LOWsrc/service/service.py445 except Exception as e:CODE
LOWsrc/service/service.py470 except Exception as e:CODE
LOWsrc/service/service.py487 except Exception as e:CODE
LOWsrc/client/client.py187 except Exception as e:CODE
LOWsrc/client/client.py194 except Exception as e:CODE
Unused Imports29 hits · 29 pts
SeverityFileLineSnippetContext
LOWsrc/core/__init__.py1CODE
LOWsrc/core/__init__.py2CODE
LOWsrc/agents/__init__.py1CODE
LOWsrc/agents/__init__.py1CODE
LOWsrc/agents/__init__.py1CODE
LOWsrc/agents/__init__.py1CODE
LOWsrc/agents/__init__.py1CODE
LOWsrc/agents/__init__.py1CODE
LOWsrc/schema/__init__.py1CODE
LOWsrc/schema/__init__.py2CODE
LOWsrc/schema/__init__.py2CODE
LOWsrc/schema/__init__.py2CODE
LOWsrc/schema/__init__.py2CODE
LOWsrc/schema/__init__.py2CODE
LOWsrc/schema/__init__.py2CODE
LOWsrc/schema/__init__.py2CODE
LOWsrc/schema/__init__.py2CODE
LOWsrc/schema/__init__.py2CODE
LOWsrc/schema/__init__.py2CODE
LOWsrc/schema/__init__.py2CODE
LOWsrc/schema/__init__.py2CODE
LOWsrc/voice/__init__.py33CODE
LOWsrc/voice/__init__.py34CODE
LOWsrc/voice/__init__.py35CODE
LOWsrc/voice/providers/__init__.py3CODE
LOWsrc/voice/providers/__init__.py4CODE
LOWsrc/service/__init__.py1CODE
LOWsrc/client/__init__.py1CODE
LOWsrc/client/__init__.py1CODE
Cross-File Repetition5 hits · 25 pts
SeverityFileLineSnippetContext
HIGHsrc/agents/rag_assistant.py0`total=false` is pep589 specs. documentation: https://typing.readthedocs.io/en/latest/spec/typeddict.html#totalitySTRING
HIGHsrc/agents/interrupt_agent.py0`total=false` is pep589 specs. documentation: https://typing.readthedocs.io/en/latest/spec/typeddict.html#totalitySTRING
HIGHsrc/agents/command_agent.py0`total=false` is pep589 specs. documentation: https://typing.readthedocs.io/en/latest/spec/typeddict.html#totalitySTRING
HIGHsrc/agents/research_assistant.py0`total=false` is pep589 specs. documentation: https://typing.readthedocs.io/en/latest/spec/typeddict.html#totalitySTRING
HIGHsrc/agents/bg_task_agent/bg_task_agent.py0`total=false` is pep589 specs. documentation: https://typing.readthedocs.io/en/latest/spec/typeddict.html#totalitySTRING
Modern Structural Boilerplate22 hits · 22 pts
SeverityFileLineSnippetContext
LOWsrc/core/__init__.py4__all__ = ["settings", "get_model"]CODE
LOWsrc/memory/mongodb.py11logger = logging.getLogger(__name__)CODE
LOWsrc/memory/__init__.py40__all__ = ["initialize_database", "initialize_store"]CODE
LOWsrc/memory/postgres.py11logger = logging.getLogger(__name__)CODE
LOWsrc/agents/interrupt_agent.py18logger = logging.getLogger(__name__)CODE
LOWsrc/agents/__init__.py10__all__ = [CODE
LOW⚡src/agents/knowledge_base_agent.py15logger = logging.getLogger(__name__)CODE
LOWsrc/agents/github_mcp_agent/github_mcp_agent.py15logger = logging.getLogger(__name__)CODE
LOWsrc/schema/__init__.py17__all__ = [CODE
LOWsrc/voice/tts.py11logger = logging.getLogger(__name__)CODE
LOWsrc/voice/__init__.py37__all__ = ["VoiceManager", "SpeechToText", "TextToSpeech"]CODE
LOWsrc/voice/manager.py15logger = logging.getLogger(__name__)CODE
LOWsrc/voice/stt.py11logger = logging.getLogger(__name__)CODE
LOWsrc/voice/providers/openai_tts.py7logger = logging.getLogger(__name__)CODE
LOWsrc/voice/providers/__init__.py10__all__ = ["OpenAISTT", "OpenAITTS"]CODE
LOWsrc/voice/providers/openai_stt.py8logger = logging.getLogger(__name__)CODE
LOWsrc/service/service.py57logger = logging.getLogger(__name__)CODE
LOWsrc/service/agui.py29logger = logging.getLogger(__name__)CODE
LOWsrc/service/__init__.py3__all__ = ["app"]CODE
LOWsrc/service/threads.py17logger = logging.getLogger(__name__)CODE
LOWsrc/client/client.py77 def update_agent(self, agent: str, verify: bool = True) -> None:CODE
LOWsrc/client/__init__.py3__all__ = ["AgentClient", "AgentClientError"]CODE
Empty Error Handlers4 hits · 20 pts
SeverityFileLineSnippetContext
HIGHscripts/e2e_ui_tests.py461except Exception:CODE
HIGHscripts/smoke_live_app.py60except Exception:CODE
HIGHscripts/smoke_live_app.py70except Exception:CODE
HIGHscripts/smoke_live_app.py83except Exception:CODE
Synthetic Comment Markers2 hits · 12 pts
SeverityFileLineSnippetContext
HIGH.claude/skills/maintainer-response/SKILL.md197### Be skeptical of automated / AI-generated PRsCOMMENT
HIGH.claude/skills/maintainer-response/SKILL.md303 layer that *unconditionally* adds a "with Claude" badge and a "Generated by Claude Code"CODE
Modern AI Meta-Vocabulary4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMCLAUDE.md11## Maintainer scaffolding vs. template contentCOMMENT
MEDIUMdocs/RAG_Assistant.md1# Creating a RAG assistantCOMMENT
MEDIUMdocs/RAG_Assistant.md20## Configuring the RAG assistantCOMMENT
MEDIUM.github/workflows/template-cleanup.yml4# downstream repo. It strips maintainer-only scaffolding, commits the result, thenCOMMENT
Redundant / Tautological Comments8 hits · 12 pts
SeverityFileLineSnippetContext
LOWscripts/create_chroma_db.py81 # Display resultsCOMMENT
LOWsrc/streamlit_app.py34 # Check if user_id exists in session stateCOMMENT
LOWsrc/streamlit_app.py623 # Check if this is a nested transfer/delegateCOMMENT
LOW⚡src/agents/interrupt_agent.py93 # Check if we already have the birthdate in the store for this userCOMMENT
LOW⚡src/agents/interrupt_agent.py98 if result: # Check if anything was returnedCODE
LOW⚡src/agents/interrupt_agent.py100 if result: # Check if list is not emptyCODE
LOWsrc/agents/knowledge_base_agent.py66 # Check if documents were retrievedSTRING
LOWsrc/voice/manager.py99 # Check if transcription succeededCOMMENT
Cross-Language Confusion2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHsrc/agents/safeguard.py60Answer: {"violation": 0, "category": null, "rationale": "Legitimate question about capabilities"}CODE
HIGHsrc/agents/safeguard.py64Answer: {"violation": 0, "category": null, "rationale": "Normal programming assistance request"}CODE
Docstring Block Structure2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHsrc/voice/tts.py78Load the appropriate TTS provider implementation. Args: provider: Provider name api_keySTRING
HIGHsrc/voice/stt.py76Load the appropriate STT provider implementation. Args: provider: Provider name api_keySTRING
Deep Nesting9 hits · 9 pts
SeverityFileLineSnippetContext
LOWscripts/e2e_ui_tests.py145CODE
LOWscripts/e2e_ui_tests.py400CODE
LOWscripts/smoke_live_app.py117CODE
LOWsrc/streamlit_app.py67CODE
LOWsrc/streamlit_app.py369CODE
LOWsrc/streamlit_app.py558CODE
LOWsrc/agents/interrupt_agent.py77CODE
LOWsrc/service/service.py243CODE
LOWsrc/client/client.py204CODE
Dead Code1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMtests/service/test_threads.py236CODE
Over-Commented Block2 hits · 2 pts
SeverityFileLineSnippetContext
LOWscripts/smoke_test.sh1#!/usr/bin/env bashCOMMENT
LOWscripts/smoke_test.sh21# Only databases run in Docker; the service itself runs on the host via uv,COMMENT
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWscripts/smoke_test.sh7# Usage:COMMENT