AI Slop Code RIsk Monitor

PrefectHQ/marvin

an ambient intelligence library

34.9 High pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for PrefectHQ/marvin, a Python project with 6,203 GitHub stars. SynthScan examined 29,282 lines of code across 233 source files, recording 735 pattern matches distributed across 21 syntactic categories. The legacy adjusted pattern signal is 34.9 (High 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.

34.9
Adjusted Signal
34.9
Raw Pattern Score
100%
Time Factor
2026-09-23
Last Push
6.2K
Stars
Python
Language
29.3K
Lines of Code
233
Files
735
Pattern Hits
2026-10-12
Scan Date
0.17
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 68.6/100 · HIGH

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

Hallucinated Dependency & Supply Chain Risk 16.3/100 · LOW

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

Agent Over-Engineering Ratio 67.0/100 · HIGH

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

PR Review Velocity Impact 83.3/100 · CRITICAL

Which changes need focused human review? 735 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 39MEDIUM 60LOW 636

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 735 distinct pattern matches across 21 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 Identifiers392 hits · 408 pts
SeverityFileLineSnippetContext
LOW⚡tests/test_concurrent_execution.py23 def test_dependent_tasks_depends_on(self):CODE
LOW⚡tests/test_concurrent_execution.py30 def test_dependent_tasks_parent_child(self):CODE
LOW⚡tests/test_concurrent_execution.py39 def test_single_task_is_independent(self):CODE
LOWtests/test_concurrent_execution.py53 async def test_independent_tasks_run_without_errors(self):CODE
LOWtests/test_concurrent_execution.py70 async def test_dependent_tasks_run_in_order(self):CODE
LOWtests/test_concurrent_execution.py85 def test_sync_run_tasks_independent(self):CODE
LOWtests/test_concurrent_execution.py96 def test_sync_run_tasks_dependent(self):CODE
LOWtests/test_concurrent_execution.py115 async def test_asyncio_gather_no_context_errors(self):CODE
LOWtests/test_concurrent_execution.py130 async def test_mixed_execution_patterns(self):CODE
LOWtests/test_concurrent_execution.py153 async def test_actor_context_across_asyncio_gather(self):CODE
LOWtests/test_concurrent_execution.py175 def test_actor_context_sequential(self):CODE
LOWtests/beta/observability/test_openai.py19 def test_returns_empty_dict_outside_flow(self):CODE
LOWtests/beta/observability/test_openai.py24 def test_returns_flow_context_when_flow_run_id_present(self):CODE
LOWtests/beta/observability/test_openai.py49 def test_returns_task_context_when_task_run_id_present(self):CODE
LOWtests/beta/observability/test_openai.py73 def test_all_values_are_strings(self):CODE
LOWtests/beta/observability/test_openai.py99 def test_handles_import_error_gracefully(self):CODE
LOWtests/beta/observability/test_openai.py116 def test_returns_new_agent_instance(self):CODE
LOWtests/beta/observability/test_openai.py125 def test_original_agent_unchanged(self):CODE
LOWtests/beta/observability/test_openai.py136 def test_merges_with_existing_settings(self):CODE
LOWtests/beta/observability/test_openai.py148 def test_includes_custom_metadata(self):CODE
LOWtests/beta/observability/test_openai.py156 def test_captures_prefect_context_when_in_flow(self):CODE
LOWtests/beta/observability/test_openai.py181 def test_deep_merges_extra_body(self):CODE
LOW⚡tests/beta/observability/test_openai.py202 def test_returns_store_outside_flow(self):CODE
LOW⚡tests/beta/observability/test_openai.py207 def test_includes_custom_metadata(self):CODE
LOW⚡tests/beta/observability/test_openai.py213 def test_includes_prefect_context_when_in_flow(self):CODE
LOWtests/settings/test_settings_object.py8def test_database_url_default(monkeypatch: pytest.MonkeyPatch):CODE
LOWtests/settings/test_settings_object.py31def test_database_url_set_from_env_var(CODE
LOWtests/settings/test_settings_object.py41def test_database_url_ignores_unprefixed_env_var_uses_default(CODE
LOWtests/basic/test_anthropic.py4def test_anthropic_provider_accepts_pydantic_ai_http_client(monkeypatch):CODE
LOWtests/basic/test_run.py15def test_simple_run_with_result_type(test_model: TestModel):CODE
LOWtests/basic/test_run.py23def test_simple_run_with_wrong_result_type(test_model: TestModel):CODE
LOWtests/basic/test_instructions.py4def test_instructions_context():CODE
LOWtests/basic/test_instructions.py11def test_instructions_context_nested():CODE
LOW⚡tests/basic/tasks/test_tasks.py237async def test_task_with_multiple_agents():CODE
LOW⚡tests/basic/tasks/test_tasks.py247async def test_task_get_default_agent():CODE
LOW⚡tests/basic/tasks/test_tasks.py253async def test_task_mark_successful():CODE
LOW⚡tests/basic/tasks/test_tasks.py261async def test_task_optional_result_type():CODE
LOW⚡tests/basic/tasks/test_tasks.py564 async def test_mark_non_verbose_task_successful(self, thread: Thread):CODE
LOW⚡tests/basic/tasks/test_tasks.py571 async def test_mark_verbose_task_failed(self, thread: Thread):CODE
LOW⚡tests/basic/tasks/test_tasks.py581 async def test_mark_verbose_task_failed_context_thread(self, thread: Thread):CODE
LOW⚡tests/basic/tasks/test_tasks.py592 async def test_mark_non_verbose_task_failed(self, thread: Thread):CODE
LOW⚡tests/basic/tasks/test_tasks.py599 async def test_mark_verbose_task_skipped(self, thread: Thread):CODE
LOW⚡tests/basic/tasks/test_tasks.py609 async def test_mark_verbose_task_skipped_context_thread(self, thread: Thread):CODE
LOWtests/basic/tasks/test_tasks.py29 async def test_auto_enum_conversion(self):CODE
LOWtests/basic/tasks/test_tasks.py70 async def test_multi_label_classifier(self):CODE
LOWtests/basic/tasks/test_tasks.py112 async def test_classifier_validation_errors(self):CODE
LOWtests/basic/tasks/test_tasks.py134 async def test_classifier_prompt_instruction(self):CODE
LOWtests/basic/tasks/test_tasks.py154 async def test_classifier_edge_cases(self):CODE
LOWtests/basic/tasks/test_tasks.py196 async def test_validation_edge_cases(self):CODE
LOWtests/basic/tasks/test_tasks.py277async def test_task_with_custom_validator():CODE
LOWtests/basic/tasks/test_tasks.py300async def test_task_parent_child_relationship():CODE
LOWtests/basic/tasks/test_tasks.py309async def test_task_parent_child_bidirectional():CODE
LOWtests/basic/tasks/test_tasks.py350async def test_task_complex_relationships():CODE
LOWtests/basic/tasks/test_tasks.py416async def test_task_context_override():CODE
LOWtests/basic/tasks/test_tasks.py433async def test_task_context_reenter():CODE
LOWtests/basic/tasks/test_tasks.py460 async def test_task_prompt_generation(self):CODE
LOWtests/basic/tasks/test_tasks.py492 async def test_task_prompt_template(self):CODE
LOWtests/basic/tasks/test_tasks.py503 async def test_task_prompt_jinja_template(self):CODE
LOWtests/basic/tasks/test_tasks.py543 async def test_mark_verbose_task_successful(self, thread: Thread):CODE
LOWtests/basic/tasks/test_tasks.py553 async def test_mark_verbose_task_successful_context_thread(self, thread: Thread):CODE
332 more matches not shown…
Excessive Try-Catch Wrapping81 hits · 98 pts
SeverityFileLineSnippetContext
LOWexamples/deepseek_chat.py117 except Exception as e:STRING
LOWexamples/slackbot/src/slackbot/core.py114 except Exception as exc:CODE
LOWexamples/slackbot/src/slackbot/core.py141 except Exception as exc:CODE
LOWexamples/slackbot/src/slackbot/core.py312 except Exception as e:CODE
LOWexamples/slackbot/src/slackbot/core.py355 except Exception as e:CODE
LOWexamples/slackbot/src/slackbot/api.py126 except Exception:CODE
LOWexamples/slackbot/src/slackbot/api.py209 except Exception:CODE
LOWexamples/slackbot/src/slackbot/api.py411 except Exception as e:CODE
LOWexamples/slackbot/src/slackbot/api.py423 except Exception:CODE
LOWexamples/slackbot/src/slackbot/api.py475 except Exception as e:CODE
LOWexamples/slackbot/src/slackbot/research_agent.py132 except Exception as e:CODE
LOWexamples/slackbot/src/slackbot/settings.py137 except Exception:CODE
LOWexamples/slackbot/src/slackbot/search.py91 except Exception as e:CODE
LOWexamples/slackbot/src/slackbot/search.py275 except Exception as e:CODE
LOW…mples/slackbot/src/slackbot/_internal/observability.py24 except Exception as exc:CODE
LOW…es/slackbot/src/slackbot/_internal/tolerant_toolset.py50 except Exception as e: # includes ordinary ExceptionGroups, not cancellationCODE
LOW…es/slackbot/src/slackbot/_internal/tolerant_toolset.py61 except Exception as e:CODE
LOW…es/slackbot/src/slackbot/_internal/tolerant_toolset.py73 except Exception as e:CODE
MEDIUM…es/slackbot/src/slackbot/_internal/tolerant_toolset.py46def __aenter__(self) -> "TolerantToolset[AgentDepsT]":CODE
LOW…ples/slackbot/src/slackbot/_internal/person_summary.py64 except Exception:CODE
LOW…ples/slackbot/src/slackbot/_internal/person_summary.py147 except Exception:CODE
LOW…les/slackbot/src/slackbot/_internal/personalization.py78 except Exception:CODE
LOW…les/slackbot/src/slackbot/_internal/personalization.py95 except Exception:CODE
LOW…mples/slackbot/src/slackbot/_internal/tool_tracking.py74 except Exception:CODE
LOWexamples/slackbot/src/slackbot/github/discussions.py313 except Exception as e:STRING
LOWexamples/slack_search/src/slack_search/server.py78 except Exception:STRING
LOWexamples/slack_search/src/slack_search/server.py85 except Exception as e:STRING
LOWscripts/analyze_threads.py91 except Exception:CODE
LOWscripts/analyze_threads.py149 except Exception:CODE
LOWscripts/analyze_threads.py496 except Exception as e:STRING
LOWscripts/backfill_asset_embeddings.py182 except Exception as e:CODE
LOWscripts/create_mintlify_api_ref.py136 except Exception as e:CODE
MEDIUMscripts/create_mintlify_api_ref.py137 print(f"Error finding modules: {e}")CODE
LOWscripts/create_mintlify_api_ref.py237 except Exception:CODE
LOWscripts/create_mintlify_api_ref.py256 except Exception:CODE
LOWscripts/create_mintlify_api_ref.py268 except Exception:CODE
LOWscripts/create_mintlify_api_ref.py464 except Exception as e:CODE
MEDIUMscripts/create_mintlify_api_ref.py465 print(f"Error updating {docs_json_path}: {e}")CODE
LOW⚡scripts/create_mintlify_api_ref.py517 except Exception:CODE
LOW⚡scripts/create_mintlify_api_ref.py526 except Exception:CODE
MEDIUM⚡scripts/create_mintlify_api_ref.py533 print(f"Error loading '{package_name}': {e}")CODE
LOW⚡scripts/create_mintlify_api_ref.py535 except Exception as e:CODE
MEDIUM⚡scripts/create_mintlify_api_ref.py536 print(f"Error: {e}")CODE
LOWscripts/index_assets.py630 except Exception as e:CODE
LOWsrc/marvin/thread.py130 except Exception as e:CODE
LOWsrc/marvin/thread.py149 except Exception as e:CODE
LOW⚡src/marvin/database.py369 except Exception as e:CODE
LOWsrc/marvin/database.py380 except Exception:CODE
LOWsrc/marvin/database.py414 except Exception as e:CODE
LOWsrc/marvin/database.py551 except Exception as e:CODE
LOWsrc/marvin/database.py563 except Exception as e:CODE
LOWsrc/marvin/beta/observability/openai.py145 except Exception:CODE
LOWsrc/marvin/_internal/integrations/fastmcp.py189 except Exception as e:CODE
LOWsrc/marvin/_internal/integrations/mcp.py127 except Exception as e:CODE
LOWsrc/marvin/_internal/integrations/mcp.py216 except Exception as e:CODE
LOWsrc/marvin/_internal/integrations/mcp.py229 except Exception as e_inner:CODE
LOWsrc/marvin/tasks/task.py432 except Exception:CODE
LOWsrc/marvin/tasks/task.py441 except Exception as e:CODE
LOWsrc/marvin/fns/fn.py216 except Exception:CODE
MEDIUMsrc/marvin/cli/config.py24 print(f"Error: Setting '{key}' not found.")CODE
21 more matches not shown…
Self-Referential Comments29 hits · 89 pts
SeverityFileLineSnippetContext
MEDIUMtests/basic/tasks/test_tasks.py352 # Create a network of tasksCOMMENT
MEDIUMtests/basic/utilities/test_jsonschema.py1158 # Create an instance to verify the recursive reference worksCOMMENT
MEDIUM⚡tests/basic/actors/test_agent.py192 # Create a mock AgentRunResultCOMMENT
MEDIUM⚡tests/basic/actors/test_agent.py204 # Create a mock AgentRunResultCOMMENT
MEDIUM⚡tests/basic/actors/test_agent.py217 # Create a mock AgentRunResultCOMMENT
MEDIUMtests/basic/actors/test_team.py69 # Create a structure of teams and agents:COMMENT
MEDIUMtests/basic/actors/test_team.py102 # Create a team composed of other teamsCOMMENT
MEDIUMtests/basic/actors/test_team.py275 # Create a team with explicit delegationCOMMENT
MEDIUMtests/basic/engine/test_streaming.py23 # Create an incomplete tool call (ToolCallPartDelta with no tool name)COMMENT
MEDIUMtests/basic/engine/test_streaming.py37 # Create a PartDeltaEvent that references index 0COMMENT
MEDIUMtests/basic/engine/test_orchestrator.py213 # Create a complex user message with text and ImageUrlCOMMENT
MEDIUMtests/agents/test_mcp_integration.py222 # Create an agent with the mock serverCOMMENT
MEDIUMtests/agents/test_mcp_integration.py364 # Create a thread and enter/exit its contextCOMMENT
MEDIUMexamples/task_retries.py28# Create a task that will likely fail on first attemptCOMMENT
MEDIUMexamples/hello_team.py21 # Create a Swarm teamCOMMENT
MEDIUMexamples/hello_team.py24 # Create a task with the teamCOMMENT
MEDIUMexamples/slackbot/src/slackbot/wrap.py163 # Create the wrapper with our trackerCOMMENT
MEDIUMexamples/slackbot/src/slackbot/github/discussions.py209 # Create the discussionSTRING
MEDIUMsrc/marvin/database.py208 # Create a composite index on thread_id and timestamp in descending orderCOMMENT
MEDIUM⚡src/marvin/database.py361 # Create a sessionCOMMENT
MEDIUMsrc/marvin/database.py497 # Define a lock for thread safetyCOMMENT
MEDIUMsrc/marvin/prompts.py204 # Create the dynamic prompt classCOMMENT
MEDIUMsrc/marvin/memory/providers/postgres.py142 # Create the pgvector extension if not existsSTRING
MEDIUMsrc/marvin/cli/migrations.py22# Create a Typer app for user-facing migration commandsCOMMENT
MEDIUMsrc/marvin/cli/migrations.py27# Create a Typer app for developer migration commandsCOMMENT
MEDIUMsrc/marvin/cli/migrations.py223 # Create a netloc with masked credentialsCOMMENT
MEDIUMsrc/marvin/utilities/jsonschema.py291 # Create a copy of the schema for each type, but keep all constraintsCOMMENT
MEDIUMsrc/marvin/engine/streaming.py75 # Create a parts manager to accumulate delta events for this runCOMMENT
MEDIUMsrc/marvin/handlers/print_handler.py230 # Create a stable ID from actor ID and message indexCOMMENT
Unused Imports92 hits · 84 pts
SeverityFileLineSnippetContext
LOWexamples/provider_specific/aimlapi/structured_output.py6CODE
LOWexamples/provider_specific/aimlapi/run_agent.py6CODE
LOWexamples/provider_specific/aimlapi/tools_agent.py6CODE
LOWexamples/slackbot/tests/conftest.py17CODE
LOWexamples/slackbot/src/slackbot/wrap.py22CODE
LOWexamples/slackbot/src/slackbot/wrap.py23CODE
LOWexamples/slackbot/src/slackbot/wrap.py24CODE
LOW…es/slackbot/src/slackbot/_internal/tolerant_toolset.py10CODE
LOW…mples/slackbot/src/slackbot/_internal/thread_status.py9CODE
LOW…mples/slackbot/src/slackbot/_internal/message_store.py26CODE
LOWexamples/slackbot/src/slackbot/github/__init__.py3CODE
LOWexamples/slackbot/src/slackbot/github/__init__.py4CODE
LOWexamples/slackbot/src/slackbot/github/__init__.py4CODE
LOWexamples/slackbot/src/slackbot/github/__init__.py4CODE
LOWexamples/slackbot/src/slackbot/github/__init__.py4CODE
LOWexamples/slackbot/src/slackbot/github/__init__.py4CODE
LOWexamples/slackbot/src/slackbot/github/__init__.py4CODE
LOWexamples/slackbot/src/slackbot/github/__init__.py12CODE
LOWexamples/slackbot/src/slackbot/github/__init__.py12CODE
LOWexamples/slackbot/src/slackbot/github/__init__.py13CODE
LOWexamples/slackbot/src/slackbot/github/__init__.py13CODE
LOWexamples/slackbot/src/slackbot/github/__init__.py13CODE
LOWexamples/slackbot/src/slackbot/github/__init__.py13CODE
LOWexamples/slackbot/src/slackbot/github/__init__.py13CODE
LOWexamples/slackbot/src/slackbot/github/__init__.py20CODE
LOWexamples/slackbot/src/slackbot/github/__init__.py20CODE
LOWexamples/slackbot/src/slackbot/github/__init__.py20CODE
LOWexamples/slackbot/src/slackbot/github/__init__.py20CODE
LOWexamples/slack_search/src/slack_search/server.py3CODE
LOWexamples/slack_search/src/slack_search/__init__.py3CODE
LOWsrc/marvin/__init__.py4CODE
LOWsrc/marvin/__init__.py5CODE
LOWsrc/marvin/__init__.py8CODE
LOWsrc/marvin/__init__.py9CODE
LOWsrc/marvin/__init__.py10CODE
LOWsrc/marvin/__init__.py11CODE
LOWsrc/marvin/__init__.py14CODE
LOWsrc/marvin/__init__.py15CODE
LOWsrc/marvin/__init__.py16CODE
LOWsrc/marvin/__init__.py16CODE
LOWsrc/marvin/__init__.py17CODE
LOWsrc/marvin/__init__.py20CODE
LOWsrc/marvin/__init__.py20CODE
LOWsrc/marvin/__init__.py20CODE
LOWsrc/marvin/__init__.py20CODE
LOWsrc/marvin/__init__.py20CODE
LOWsrc/marvin/__init__.py20CODE
LOWsrc/marvin/__init__.py28CODE
LOWsrc/marvin/__init__.py28CODE
LOWsrc/marvin/__init__.py29CODE
LOWsrc/marvin/__init__.py29CODE
LOWsrc/marvin/__init__.py30CODE
LOWsrc/marvin/__init__.py30CODE
LOWsrc/marvin/__init__.py31CODE
LOWsrc/marvin/__init__.py31CODE
LOWsrc/marvin/__init__.py31CODE
LOWsrc/marvin/__init__.py31CODE
LOWsrc/marvin/__init__.py37CODE
LOWsrc/marvin/__init__.py38CODE
LOWsrc/marvin/__init__.py38CODE
32 more matches not shown…
Docstring Block Structure16 hits · 80 pts
SeverityFileLineSnippetContext
HIGHexamples/slackbot/src/slackbot/search.py29 Explore and return the public API tree of a specific module and its submodules as a string. This is the primarSTRING
HIGHexamples/slackbot/src/slackbot/search.py149 Display the signature of any callable (function, class constructor, method) with clear visual organization. WoSTRING
HIGHexamples/slackbot/src/slackbot/search.py202 Inspect Prefect CLI help, or check another program's CLI behavior. This tool is specifically designed to help STRING
HIGHsrc/marvin/fns/plan.py156 Generate a series of new tasks in order to achieve a goal. Args: instructions: The objective to achievSTRING
HIGHsrc/marvin/fns/plan.py211 Generate a series of Marvin Tasks that will allow you or other AI agents to achieve a goal. Args: instSTRING
HIGHsrc/marvin/fns/cast.py46Asynchronously transforms input data into a specific type using a language model. This function uses a language modSTRING
HIGHsrc/marvin/fns/cast.py112Transforms input data into a specific type using a language model. This function uses a language model to analyze tSTRING
HIGHsrc/marvin/fns/classify.py81Asynchronously classifies input data into one or more predefined labels using a language model. This function uses STRING
HIGHsrc/marvin/fns/classify.py215Classifies input data into one or more predefined labels using a language model. This function uses a language modeSTRING
HIGHsrc/marvin/fns/summarize.py35Asynchronously creates a summary of the input data using a language model. This function uses a language model to aSTRING
HIGHsrc/marvin/fns/summarize.py95Creates a summary of the input data using a language model. This function uses a language model to analyze the inpuSTRING
HIGHsrc/marvin/fns/fn.py105A decorator that predicts the output of a Python function without executing it. Can be used with or without parametSTRING
HIGHsrc/marvin/fns/extract.py37Extracts entities of a specific type from the provided data. This function uses a language model to identify and exSTRING
HIGHsrc/marvin/fns/extract.py97Extracts entities of a specific type from the provided data. This function uses a language model to identify and exSTRING
HIGHsrc/marvin/utilities/types.py147Convert a type to a Labels instance. This should only be called on types that have been verified as classifiers via STRING
HIGHsrc/marvin/utilities/jsonschema.py80Convert JSON schema to appropriate Python type with validation. Args: schema: A JSON Schema dictionary defiSTRING
Empty Error Handlers10 hits · 50 pts
SeverityFileLineSnippetContext
HIGHexamples/slackbot/src/slackbot/settings.py137except Exception:CODE
HIGH…mples/slackbot/src/slackbot/_internal/tool_tracking.py74except Exception:CODE
HIGHexamples/slackbot/src/slackbot/github/client.py64except AttributeError:CODE
HIGHexamples/slack_search/src/slack_search/_types.py133except (ValueError, OSError):CODE
HIGHexamples/slack_search/src/slack_search/server.py78except Exception:CODE
HIGHscripts/analyze_threads.py91except Exception:CODE
HIGHscripts/analyze_threads.py149except Exception:CODE
HIGHscripts/create_mintlify_api_ref.py268except Exception:CODE
HIGHsrc/marvin/handlers/print_handler.py206except rich.errors.LiveError:CODE
HIGHsrc/marvin/handlers/print_handler.py214except rich.errors.LiveError:CODE
Decorative Section Separators17 hits · 48 pts
SeverityFileLineSnippetContext
MEDIUMexamples/slack_search/src/slack_search/server.py19# -----------------------------------------------------------------------------COMMENT
MEDIUMexamples/slack_search/src/slack_search/server.py21# -----------------------------------------------------------------------------COMMENT
MEDIUM⚡examples/slack_search/src/slack_search/server.py104# -----------------------------------------------------------------------------STRING
MEDIUM⚡examples/slack_search/src/slack_search/server.py106# -----------------------------------------------------------------------------STRING
MEDIUM⚡examples/slack_search/src/slack_search/server.py111# -----------------------------------------------------------------------------STRING
MEDIUM⚡examples/slack_search/src/slack_search/server.py113# -----------------------------------------------------------------------------STRING
MEDIUMexamples/slack_search/src/slack_search/server.py151# -----------------------------------------------------------------------------STRING
MEDIUMexamples/slack_search/src/slack_search/server.py153# -----------------------------------------------------------------------------STRING
MEDIUMexamples/slack_search/src/slack_search/server.py447# -----------------------------------------------------------------------------COMMENT
MEDIUMexamples/slack_search/src/slack_search/server.py449# -----------------------------------------------------------------------------COMMENT
MEDIUMexamples/slack_search/src/slack_search/server.py471# -----------------------------------------------------------------------------COMMENT
MEDIUMexamples/slack_search/src/slack_search/server.py473# -----------------------------------------------------------------------------COMMENT
MEDIUM⚡.github/workflows/image-build-and-push-internal.yaml13 # ┌───────────── minute (0 - 59)COMMENT
MEDIUM⚡.github/workflows/image-build-and-push-internal.yaml14 # │ ┌───────────── hour (0 - 23)COMMENT
MEDIUM⚡.github/workflows/image-build-and-push-internal.yaml15 # │ │ ┌───────────── day of the month (1 - 31)COMMENT
MEDIUM⚡.github/workflows/image-build-and-push-internal.yaml16 # │ │ │ ┌───────────── month (1 - 12 or JAN-DEC)COMMENT
MEDIUM⚡.github/workflows/image-build-and-push-internal.yaml17 # │ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT)COMMENT
Deep Nesting35 hits · 35 pts
SeverityFileLineSnippetContext
LOWexamples/deepseek_chat.py89CODE
LOWexamples/slackbot/src/slackbot/assets.py249CODE
LOWexamples/slackbot/src/slackbot/assets.py280CODE
LOWexamples/slackbot/src/slackbot/search.py26CODE
LOWexamples/slackbot/src/slackbot/strings.py9CODE
LOWexamples/slackbot/src/slackbot/_internal/doc_links.py26CODE
LOWexamples/slackbot/src/slackbot/_internal/doc_links.py39CODE
LOW…mples/slackbot/src/slackbot/_internal/message_store.py71CODE
LOW…les/slackbot/src/slackbot/_internal/personalization.py29CODE
LOWexamples/slackbot/src/slackbot/github/client.py73CODE
LOWexamples/slack_search/src/slack_search/server.py24CODE
LOWscripts/analyze_threads.py77CODE
LOWscripts/backfill_asset_embeddings.py107CODE
LOWscripts/create_mintlify_api_ref.py166CODE
LOWscripts/create_mintlify_api_ref.py413CODE
LOWscripts/create_mintlify_api_ref.py469CODE
LOWscripts/index_assets.py170CODE
LOWscripts/index_assets.py560CODE
LOWsrc/marvin/database.py68CODE
LOWsrc/marvin/database.py336CODE
LOWsrc/marvin/database.py451CODE
LOWsrc/marvin/database.py483CODE
LOWsrc/marvin/prompts.py95CODE
LOWsrc/marvin/_internal/integrations/mcp.py147CODE
LOWsrc/marvin/_internal/integrations/mcp.py57CODE
LOWsrc/marvin/memory/memory.py143CODE
LOWsrc/marvin/fns/run.py18CODE
LOWsrc/marvin/agents/agent.py139CODE
LOWsrc/marvin/cli/migrations.py205CODE
LOWsrc/marvin/cli/main.py59CODE
LOWsrc/marvin/utilities/types.py73CODE
LOWsrc/marvin/utilities/jsonschema.py441CODE
LOWsrc/marvin/engine/orchestrator.py240CODE
LOWsrc/marvin/engine/streaming.py44CODE
LOWsrc/marvin/engine/streaming.py186CODE
Cross-File Repetition6 hits · 30 pts
SeverityFileLineSnippetContext
HIGHsrc/marvin/thread.py0get the currently active orchestrator from context. returns: the current orchestrator instance or none if no orchestratoSTRING
HIGHsrc/marvin/agents/actor.py0get the currently active orchestrator from context. returns: the current orchestrator instance or none if no orchestratoSTRING
HIGHsrc/marvin/engine/orchestrator.py0get the currently active orchestrator from context. returns: the current orchestrator instance or none if no orchestratoSTRING
HIGHsrc/marvin/memory/providers/lance.py0optional; the name of the collection to use. this should be a string optionally formatted with the variable `key`, whichSTRING
HIGHsrc/marvin/memory/providers/qdrant.py0optional; the name of the collection to use. this should be a string optionally formatted with the variable `key`, whichSTRING
HIGHsrc/marvin/memory/providers/chroma.py0optional; the name of the collection to use. this should be a string optionally formatted with the variable `key`, whichSTRING
Redundant / Tautological Comments16 hits · 24 pts
SeverityFileLineSnippetContext
LOWexamples/slackbot/src/slackbot/api.py314 # Check if this is the designated channelCOMMENT
LOWexamples/slackbot/src/slackbot/search.py76 # Check if it failed due to missing moduleCOMMENT
LOWexamples/slackbot/src/slackbot/search.py224 # Check if a command exists and see its optionsSTRING
LOWexamples/slackbot/src/slackbot/wrap.py51 # Check if we're already in a wrapped call to avoid double-wrappingCOMMENT
LOW…amples/slackbot/src/slackbot/_internal/monkey_patch.py73 # Check if original method is asyncCOMMENT
LOW…amples/slackbot/src/slackbot/_internal/monkey_patch.py82 # Check if we should skip decorationCOMMENT
LOW…amples/slackbot/src/slackbot/_internal/monkey_patch.py98 # Check if we should skip decorationCOMMENT
LOW⚡src/marvin/database.py364 # Check if tables exist by attempting a simple queryCOMMENT
LOWsrc/marvin/database.py500 # Check if we're already in an event loopCOMMENT
LOWsrc/marvin/database.py531 # Check if the threads table existsCOMMENT
LOWsrc/marvin/_internal/integrations/mcp.py95 # Check if this server instance is already startedCOMMENT
LOWsrc/marvin/tasks/task.py456 # Check if None is allowed in the type (e.g., Optional[str] = str | None)COMMENT
LOWsrc/marvin/fns/run.py23 # Check if task1 depends on task2 or vice versaCOMMENT
LOWsrc/marvin/fns/run.py26 # Check if they share subtasks or parent relationshipsCOMMENT
LOWsrc/marvin/engine/orchestrator.py154 # Check if any tasks depend on each otherCOMMENT
LOWsrc/marvin/engine/streaming.py158 # Check if we've reached the final End nodeCOMMENT
Magic Placeholder Names5 hits · 15 pts
SeverityFileLineSnippetContext
HIGHREADME.md25export OPENAI_API_KEY=your-api-keyCODE
HIGHexamples/provider_specific/azure/run_agent.py4AZURE_OPENAI_API_KEY=<your-api-key> \STRING
HIGHexamples/provider_specific/aimlapi/structured_output.py2» AIML_API_KEY=your-api-key \STRING
HIGHexamples/provider_specific/aimlapi/run_agent.py2» AIML_API_KEY=your-api-key \STRING
HIGHexamples/provider_specific/aimlapi/tools_agent.py2» AIML_API_KEY=your-api-key \STRING
Modern Structural Boilerplate12 hits · 12 pts
SeverityFileLineSnippetContext
LOWexamples/slackbot/src/slackbot/wrap.py184__all__ = ["WatchToolCalls", "_progress_message", "_tool_usage_counts", "_current_tool"]CODE
LOW…ples/slackbot/src/slackbot/_internal/person_summary.py18logger = logging.getLogger(__name__)CODE
LOW…les/slackbot/src/slackbot/_internal/personalization.py17logger = logging.getLogger(__name__)CODE
LOWexamples/slackbot/src/slackbot/github/__init__.py27__all__ = [CODE
LOWexamples/slack_search/src/slack_search/__init__.py5__all__ = ["mcp"]CODE
LOWsrc/marvin/database.py122def set_async_engine(engine: AsyncEngine) -> None:CODE
LOWsrc/marvin/__init__.py49__all__ = [CODE
LOWsrc/marvin/beta/__init__.py1__all__ = []CODE
LOWsrc/marvin/beta/observability/openai.py211__all__ = [CODE
LOWsrc/marvin/_internal/integrations/mcp.py311def set_thread_mcp_manager(manager: "MCPManager | None") -> None:CODE
LOWsrc/marvin/agents/__init__.py5__all__ = ["get_current_actor", "Agent", "Team"]CODE
LOWsrc/marvin/utilities/jsonschema.py63__all__ = ["jsonschema_to_type", "JSONSchema"]CODE
Verbosity Indicators4 hits · 9 pts
SeverityFileLineSnippetContext
LOW⚡src/marvin/utilities/jsonschema.py313 # Step 1: replace everything except [0-9a-zA-Z_] with underscoresCOMMENT
LOW⚡src/marvin/utilities/jsonschema.py315 # Step 2: deduplicate underscoresCOMMENT
LOW⚡src/marvin/utilities/jsonschema.py317 # Step 3: if the first char of original name isn't a letter, prepend field_COMMENT
LOW⚡src/marvin/utilities/jsonschema.py320 # Step 4: deduplicate again and strip trailing underscoresCOMMENT
Structural Annotation Overuse4 hits · 9 pts
SeverityFileLineSnippetContext
LOW⚡src/marvin/utilities/jsonschema.py313 # Step 1: replace everything except [0-9a-zA-Z_] with underscoresCOMMENT
LOW⚡src/marvin/utilities/jsonschema.py315 # Step 2: deduplicate underscoresCOMMENT
LOW⚡src/marvin/utilities/jsonschema.py317 # Step 3: if the first char of original name isn't a letter, prepend field_COMMENT
LOW⚡src/marvin/utilities/jsonschema.py320 # Step 4: deduplicate again and strip trailing underscoresCOMMENT
AI Slop Vocabulary4 hits · 7 pts
SeverityFileLineSnippetContext
LOWexamples/slackbot/src/slackbot/wrap.py53 # Already wrapped, just call the originalCOMMENT
LOWscripts/create_mintlify_api_ref.py238 # If that fails, just add the nameCOMMENT
LOW⚡src/marvin/database.py351 # If session is provided, just use itCOMMENT
LOWsrc/marvin/utilities/jsonschema.py471 # Otherwise just use the dataCOMMENT
Modern AI Meta-Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMREADME.md317# Or orchestrate tasks manuallyCOMMENT
MEDIUMsrc/marvin/memory/providers/postgres.py55 # vector = Column(Vector(dim=1536)) # Adjust dimension to match your embedding modelCOMMENT
Slop Phrases2 hits · 5 pts
SeverityFileLineSnippetContext
MEDIUMexamples/hello_generate.py7# you can use Annotated to add extra detail to your typesCOMMENT
LOW⚡src/marvin/database.py357 # make sure to create them before proceedingCOMMENT
Cross-Language Confusion2 hits · 5 pts
SeverityFileLineSnippetContext
HIGHsrc/marvin/cli/dev.py12 """Run the Marvin documentation locally. Equivalent to 'cd docs && mintlify dev' from the Marvin root."""STRING
HIGHsrc/marvin/utilities/jsonschema.py6- Basic types (string, number, integer, boolean, null)STRING
AI Structural Patterns3 hits · 3 pts
SeverityFileLineSnippetContext
LOWsrc/marvin/tasks/task.py218CODE
LOWsrc/marvin/fns/generate.py36CODE
LOWsrc/marvin/fns/generate.py95CODE
Overly Generic Function Names2 hits · 2 pts
SeverityFileLineSnippetContext
LOWsrc/marvin/fns/fn.py109 def my_function(): ...CODE
LOWsrc/marvin/fns/fn.py112 def my_function(): ...CODE
Over-Commented Block1 hit · 1 pts
SeverityFileLineSnippetContext
LOWexamples/slackbot/README.md21# Install dependencies (from the repo root)COMMENT