Repository Analysis

PrefectHQ/marvin

an ambient intelligence library

33.0 Strong AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of PrefectHQ/marvin, a Python project with 6,192 GitHub stars. SynthScan v2.0 examined 27,058 lines of code across 214 source files, recording 660 pattern matches distributed across 20 syntactic categories. The overall adjusted score of 33.0 places this repository in the Strong AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

33.0
Adjusted Score
33.0
Raw Score
100%
Time Factor
2026-08-21
Last Push
6.2K
Stars
Python
Language
27.1K
Lines of Code
214
Files
660
Pattern Hits
2026-08-29
Scan Date
0.14
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 29MEDIUM 59LOW 572

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 660 distinct pattern matches across 20 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Hyper-Verbose Identifiers340 hits · 349 pts
SeverityFileLineSnippetContext
LOWtests/test_concurrent_execution.py23 def test_dependent_tasks_depends_on(self):CODE
LOWtests/test_concurrent_execution.py30 def test_dependent_tasks_parent_child(self):CODE
LOWtests/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
LOWtests/beta/observability/test_openai.py202 def test_returns_store_outside_flow(self):CODE
LOWtests/beta/observability/test_openai.py207 def test_includes_custom_metadata(self):CODE
LOWtests/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
LOWtests/basic/tasks/test_tasks.py237async def test_task_with_multiple_agents():CODE
LOWtests/basic/tasks/test_tasks.py247async def test_task_get_default_agent():CODE
LOWtests/basic/tasks/test_tasks.py253async def test_task_mark_successful():CODE
LOWtests/basic/tasks/test_tasks.py261async def test_task_optional_result_type():CODE
LOWtests/basic/tasks/test_tasks.py564 async def test_mark_non_verbose_task_successful(self, thread: Thread):CODE
LOWtests/basic/tasks/test_tasks.py571 async def test_mark_verbose_task_failed(self, thread: Thread):CODE
LOWtests/basic/tasks/test_tasks.py581 async def test_mark_verbose_task_failed_context_thread(self, thread: Thread):CODE
LOWtests/basic/tasks/test_tasks.py592 async def test_mark_non_verbose_task_failed(self, thread: Thread):CODE
LOWtests/basic/tasks/test_tasks.py599 async def test_mark_verbose_task_skipped(self, thread: Thread):CODE
LOWtests/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
280 more matches not shown…
Excessive Try-Catch Wrapping74 hits · 90 pts
SeverityFileLineSnippetContext
LOWexamples/deepseek_chat.py117 except Exception as e:STRING
LOWexamples/slackbot/src/slackbot/core.py112 except Exception as exc:CODE
LOWexamples/slackbot/src/slackbot/core.py139 except Exception as exc:CODE
LOWexamples/slackbot/src/slackbot/core.py282 except Exception as e:CODE
LOWexamples/slackbot/src/slackbot/core.py325 except Exception as e:CODE
LOWexamples/slackbot/src/slackbot/api.py104 except Exception:CODE
LOWexamples/slackbot/src/slackbot/api.py168 except Exception as e:CODE
LOWexamples/slackbot/src/slackbot/api.py359 except Exception as e:CODE
LOWexamples/slackbot/src/slackbot/api.py371 except Exception:CODE
LOWexamples/slackbot/src/slackbot/api.py415 except Exception as e:CODE
LOWexamples/slackbot/src/slackbot/research_agent.py128 except Exception as e:CODE
LOWexamples/slackbot/src/slackbot/settings.py142 except Exception:CODE
LOWexamples/slackbot/src/slackbot/search.py86 except Exception as e:CODE
LOWexamples/slackbot/src/slackbot/search.py240 except Exception as e:CODE
LOW…mples/slackbot/src/slackbot/_internal/observability.py24 except Exception as exc:CODE
LOW…les/slackbot/src/slackbot/_internal/personalization.py135 except Exception as exc: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.py82 except Exception:STRING
LOWexamples/slack_search/src/slack_search/server.py89 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
LOWscripts/create_mintlify_api_ref.py517 except Exception:CODE
LOWscripts/create_mintlify_api_ref.py526 except Exception:CODE
MEDIUMscripts/create_mintlify_api_ref.py533 print(f"Error loading '{package_name}': {e}")CODE
LOWscripts/create_mintlify_api_ref.py535 except Exception as e:CODE
MEDIUMscripts/create_mintlify_api_ref.py536 print(f"Error: {e}")CODE
LOWscripts/index_assets.py548 except Exception as e:CODE
LOWsrc/marvin/thread.py130 except Exception as e:CODE
LOWsrc/marvin/thread.py149 except Exception as e:CODE
LOWsrc/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
LOWsrc/marvin/cli/migrations.py75 except Exception as e:CODE
LOWsrc/marvin/cli/migrations.py97 except Exception as e:CODE
LOWsrc/marvin/cli/migrations.py126 except Exception as e:CODE
LOWsrc/marvin/cli/migrations.py162 except Exception as e:CODE
LOWsrc/marvin/cli/migrations.py175 except Exception as e:CODE
LOWsrc/marvin/cli/migrations.py188 except Exception as e:CODE
LOWsrc/marvin/cli/migrations.py326 except Exception as e:CODE
14 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
MEDIUMtests/basic/actors/test_agent.py192 # Create a mock AgentRunResultCOMMENT
MEDIUMtests/basic/actors/test_agent.py204 # Create a mock AgentRunResultCOMMENT
MEDIUMtests/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
MEDIUMsrc/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/src/slackbot/api.py45CODE
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.py24 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.py144 Display the signature of any callable (function, class constructor, method) with clear visual organization. WoSTRING
HIGHexamples/slackbot/src/slackbot/search.py174 Run a CLI command to verify its behavior or check help documentation. This tool is specifically designed to heSTRING
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
Decorative Section Separators17 hits · 44 pts
SeverityFileLineSnippetContext
MEDIUMexamples/slack_search/src/slack_search/server.py15# -----------------------------------------------------------------------------COMMENT
MEDIUMexamples/slack_search/src/slack_search/server.py17# -----------------------------------------------------------------------------COMMENT
MEDIUMexamples/slack_search/src/slack_search/server.py108# -----------------------------------------------------------------------------STRING
MEDIUMexamples/slack_search/src/slack_search/server.py110# -----------------------------------------------------------------------------STRING
MEDIUMexamples/slack_search/src/slack_search/server.py115# -----------------------------------------------------------------------------STRING
MEDIUMexamples/slack_search/src/slack_search/server.py117# -----------------------------------------------------------------------------STRING
MEDIUMexamples/slack_search/src/slack_search/server.py155# -----------------------------------------------------------------------------STRING
MEDIUMexamples/slack_search/src/slack_search/server.py157# -----------------------------------------------------------------------------STRING
MEDIUMexamples/slack_search/src/slack_search/server.py357# -----------------------------------------------------------------------------STRING
MEDIUMexamples/slack_search/src/slack_search/server.py359# -----------------------------------------------------------------------------STRING
MEDIUMexamples/slack_search/src/slack_search/server.py381# -----------------------------------------------------------------------------COMMENT
MEDIUMexamples/slack_search/src/slack_search/server.py383# -----------------------------------------------------------------------------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 Nesting30 hits · 30 pts
SeverityFileLineSnippetContext
LOWexamples/deepseek_chat.py89CODE
LOWexamples/slackbot/src/slackbot/search.py21CODE
LOWexamples/slackbot/src/slackbot/strings.py9CODE
LOW…mples/slackbot/src/slackbot/_internal/message_store.py70CODE
LOWexamples/slackbot/src/slackbot/github/client.py73CODE
LOWexamples/slack_search/src/slack_search/server.py20CODE
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.py156CODE
LOWscripts/index_assets.py496CODE
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.py273 # Check if this is the designated channelCOMMENT
LOWexamples/slackbot/src/slackbot/search.py71 # Check if it failed due to missing moduleCOMMENT
LOWexamples/slackbot/src/slackbot/search.py196 # 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
LOWsrc/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 Boilerplate11 hits · 11 pts
SeverityFileLineSnippetContext
LOWexamples/slackbot/src/slackbot/wrap.py184__all__ = ["WatchToolCalls", "_progress_message", "_tool_usage_counts", "_current_tool"]CODE
LOW…les/slackbot/src/slackbot/_internal/personalization.py15logger = 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
LOWsrc/marvin/utilities/jsonschema.py313 # Step 1: replace everything except [0-9a-zA-Z_] with underscoresCOMMENT
LOWsrc/marvin/utilities/jsonschema.py315 # Step 2: deduplicate underscoresCOMMENT
LOWsrc/marvin/utilities/jsonschema.py317 # Step 3: if the first char of original name isn't a letter, prepend field_COMMENT
LOWsrc/marvin/utilities/jsonschema.py320 # Step 4: deduplicate again and strip trailing underscoresCOMMENT
Structural Annotation Overuse4 hits · 9 pts
SeverityFileLineSnippetContext
LOWsrc/marvin/utilities/jsonschema.py313 # Step 1: replace everything except [0-9a-zA-Z_] with underscoresCOMMENT
LOWsrc/marvin/utilities/jsonschema.py315 # Step 2: deduplicate underscoresCOMMENT
LOWsrc/marvin/utilities/jsonschema.py317 # Step 3: if the first char of original name isn't a letter, prepend field_COMMENT
LOWsrc/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
LOWsrc/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
LOWsrc/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