Repository Analysis

nowork-studio/NotFair

Goal-driven, loop-powered marketing agents that crush your business goals 24/7

9.2 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of nowork-studio/NotFair, a TypeScript project with 3,336 GitHub stars. SynthScan v2.0 examined 97,398 lines of code across 562 source files, recording 521 pattern matches distributed across 13 syntactic categories. The overall adjusted score of 9.2 places this repository in the Low 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).

9.2
Adjusted Score
9.2
Raw Score
100%
Time Factor
2026-08-09
Last Push
3.3K
Stars
TypeScript
Language
97.4K
Lines of Code
562
Files
521
Pattern Hits
2026-08-09
Scan Date
0.01
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 6MEDIUM 163LOW 352

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 521 distinct pattern matches across 13 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.

Decorative Section Separators151 hits · 472 pts
SeverityFileLineSnippetContext
MEDIUMnotfair/src/server/goals/tick.more.test.ts286// ── pure brief composition ───────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/goals/handlers.ts83// ── get_goal ─────────────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/goals/handlers.ts152// ── define_goal (chat intake, step 1) ────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/goals/handlers.ts188// ── propose_goal_metric (chat intake, step 2) ────────────────────────────COMMENT
MEDIUMnotfair/src/server/goals/handlers.ts266// ── backfill_metric_history ──────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/goals/handlers.ts321// ── add_supporting_metric ────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/goals/handlers.ts417// ── propose_target (chat intake, step 3) ─────────────────────────────────COMMENT
MEDIUMnotfair/src/server/goals/handlers.ts493// ── amend_goal (live adjustments) ────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/goals/handlers.ts552// ── log_goal_action ──────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/goals/handlers.ts599// ── review_goal_action ───────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/goals/handlers.ts636// ── log_learning / search_learnings (per-agent memory) ───────────────────COMMENT
MEDIUMnotfair/src/server/goals/handlers.ts671// ── update_goal_status ───────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/goals/handlers.ts712// ── shared workspace context ─────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/goals/handlers.ts755// ── register_pull_request ───────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/browser-tools.ts27// ── Shared helpers ─────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/browser-tools.ts81// ── browser_status ─────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/browser-tools.ts108// ── browser_tabs ───────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/browser-tools.ts123// ── browser_open ───────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/browser-tools.ts151// ── browser_close ──────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/browser-tools.ts170// ── browser_navigate ───────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/browser-tools.ts192// ── browser_snapshot ───────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/browser-tools.ts227// ── browser_click ──────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/browser-tools.ts257// ── browser_type ───────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/browser-tools.ts287// ── browser_press ──────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/browser-tools.ts315// ── browser_scroll ─────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/browser-tools.ts336// ── browser_back ───────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/browser-tools.ts362// ── Helpers ────────────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/browser-tools.ts374// ── Registry export ────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/browser-tools.ts376// ─── Tool descriptions ───────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/tools.ts36// ── Shared scaffolding ─────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/tools.ts75// ── get_goal ───────────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/tools.ts88// ── define_goal ────────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/tools.ts124// ── propose_goal_metric ────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/tools.ts164// ── backfill_metric_history ────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/tools.ts197// ── add_supporting_metric ──────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/tools.ts244// ── propose_target / amend_goal ────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/tools.ts315// ── log_goal_action ────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/tools.ts378// ── review_goal_action ─────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/tools.ts408// ── log_learning / search_learnings ────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/tools.ts450// ── update_goal_status ─────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/tools.ts474// ── get_project / set_shared_context ───────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/tools.ts508// ── register_pull_request ──────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/mcp-server/tools.ts541// ── Registry ───────────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/browser/session.ts241// ── Idle auto-shutdown ──────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/sessions/view.ts87// ── Thread origins ──────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/actions/mcp.test.ts70// ── fetch fixture: a routable fake OAuth ecosystem ───────────────────COMMENT
MEDIUMnotfair/src/server/actions/mcp.test.ts138// ── startMcpConnect ──────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/actions/mcp.test.ts250// ── probeMcpDiscovery ────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/actions/mcp.test.ts337// ── disconnectMcpAction ──────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/actions/mcp.test.ts368// ── listMcpToolsAction ───────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/actions/mcp.test.ts442// ── addUserMcpServerAction ───────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/actions/mcp.test.ts526// ── removeUserMcpServerAction ────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/actions/mcp.ts395// ─── helpers ────────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/actions/context.ts108 // ── Instruction files ─────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/actions/context.ts134 // ── MCP tool definitions ──────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/actions/context.ts148 // ── Conversation (this thread) ────────────────────────────────COMMENT
MEDIUMnotfair/src/server/db/goals.ts149// ── goals ────────────────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/db/goals.ts534// ── pins ─────────────────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/db/goals.ts657// ── metric snapshots ─────────────────────────────────────────────────────COMMENT
MEDIUMnotfair/src/server/db/goals.ts709// ── actions ──────────────────────────────────────────────────────────────COMMENT
91 more matches not shown…
Hyper-Verbose Identifiers244 hits · 243 pts
SeverityFileLineSnippetContext
LOWnotfair/src/app/api/upgrade/route.ts340export async function syncInstalledNativeBindings(packageRoot: string) {CODE
LOWnotfair/src/server/goals/handlers.ts773export async function handleRegisterPullRequest(CODE
LOWnotfair/src/server/goals/recovery.ts91export function recoverInterruptedGoalTicks(CODE
LOWnotfair/src/server/goals/intake.ts15export function buildIntakeKickoffMessage(input: {CODE
LOWnotfair/src/server/mcp-server/secret.ts22export function getOrCreateMcpServerSecret(): string {CODE
LOWnotfair/src/server/mcp-server/secret.ts22export function getOrCreateMcpServerSecret(): string {CODE
LOWnotfair/src/server/mcp-server/tools.ts153async function handleProposeGoalMetricTool(input: unknown): Promise<ToolResult> {CODE
LOWnotfair/src/server/mcp-server/tools.ts186async function handleBackfillHistoryTool(input: unknown): Promise<ToolResult> {CODE
LOWnotfair/src/server/mcp-server/tools.ts233async function handleAddSupportMetricTool(input: unknown): Promise<ToolResult> {CODE
LOWnotfair/src/server/mcp-server/tools.ts397async function handleReviewGoalActionTool(input: unknown): Promise<ToolResult> {CODE
LOWnotfair/src/server/mcp-server/tools.ts441async function handleSearchLearningsTool(input: unknown): Promise<ToolResult> {CODE
LOWnotfair/src/server/mcp-server/tools.ts465async function handleUpdateGoalStatusTool(input: unknown): Promise<ToolResult> {CODE
LOWnotfair/src/server/mcp-server/tools.ts497async function handleSetSharedContextTool(input: unknown): Promise<ToolResult> {CODE
LOWnotfair/src/server/mcp-server/tools.ts528async function handleRegisterPullRequestTool(CODE
LOWnotfair/src/server/mcp-server/registration.ts62export async function registerBrowserMcpForAgent(CODE
LOWnotfair/src/server/mcp-server/registration.ts74async function registerInternalMcpForAgent(args: {CODE
LOWnotfair/src/server/mcp-server/registration.ts117export async function registerCatalogMcpForAgent(CODE
LOWnotfair/src/server/mcp-server/registration.ts178export async function registerCatalogMcpForProject(CODE
LOWnotfair/src/server/agents/cascade-delete.ts41export async function getProjectDeletionSummary(CODE
LOWnotfair/src/server/agents/cascade-delete.ts89export async function cascadeDeleteAgentArtifacts(CODE
LOWnotfair/src/server/agents/cascade-delete.ts135export async function cascadeDeleteProjectArtifacts(project_slug: string): Promise<void> {CODE
LOWnotfair/src/server/mcp/account-selection.ts43export async function resolvePostConnectSelection(CODE
LOWnotfair/src/server/adapters/codex-local/test.ts5export async function testCodexLocalEnvironment(): Promise<HarnessEnvironmentHealth> {CODE
LOWnotfair/src/server/adapters/claude-code-local/test.ts14export async function testClaudeCodeLocalEnvironment(): Promise<HarnessEnvironmentHealth> {CODE
LOWnotfair/src/server/browser/chrome.ts70export function clearChromeSingletonArtifacts(userDataDir: string): void {CODE
LOWnotfair/src/server/browser/session.ts82export async function getOrLaunchBrowser(CODE
LOWnotfair/src/server/sessions/view.ts142function readFirstUserMessagePreview(CODE
LOWnotfair/src/server/sessions/index.ts54export function getOrCreateSession(input: {CODE
LOWnotfair/src/server/actions/projects.ts51export async function createProjectForOnboardingAction(CODE
LOWnotfair/src/server/actions/projects.ts259export async function getProjectDeletionSummaryAction(CODE
LOWnotfair/src/server/actions/projects.ts359export async function setProjectCodebasePathAction(input: {CODE
LOWnotfair/src/server/actions/mcp.ts346export async function removeUserMcpServerAction(input: {CODE
LOWnotfair/src/server/actions/mcp.ts610async function originFromIncomingRequest(): Promise<string> {CODE
LOWnotfair/src/server/actions/goals.ts150export async function archiveCompletedGoalAction(CODE
LOWnotfair/src/server/actions/goals.ts166export async function continueCompletedGoalAction(CODE
LOWnotfair/src/server/actions/goals.ts278export async function markUserActionHandledAction(CODE
LOWnotfair/src/server/db/projects.ts101export function setProjectGoogleAdsAccount(CODE
LOWnotfair/src/server/db/user-mcp-servers.ts87export function findUserMcpServerByResourceUrl(CODE
LOWnotfair/src/server/db/goal-groups.ts29function assertGoalsBelongToProject(projectSlug: string, goalIds: string[]): void {CODE
LOWnotfair/src/server/db/goal-support-metrics.ts110export function recordSupportMetricSnapshot(CODE
LOWnotfair/src/server/db/goal-support-metrics.ts132export function replaceSupportBackfillSnapshots(CODE
LOWnotfair/src/server/db/goal-support-metrics.ts150export function listSupportMetricSnapshots(CODE
LOWnotfair/src/server/db/goals.ts575export function listGatedActionsForOtherAgents(CODE
LOWnotfair/src/server/db/db.ts35function ensureGoalTickOwnerColumn(db: Database.Database): void {CODE
LOWnotfair/src/server/suggestions/xads.ts172export function xadsSuggestionsFromSnapshot(CODE
LOWnotfair/src/server/suggestions/engine.ts74export async function generateSuggestionsForSource(CODE
LOWnotfair/src/server/onboarding/accounts.ts136export async function setOnboardingAccountAction(CODE
LOWnotfair/src/server/onboarding/accounts.ts264export async function setOnboardingMetaAdsAccountAction(CODE
LOWnotfair/src/server/onboarding/accounts.ts369function parseGscPropertiesPayload(CODE
LOWnotfair/src/server/onboarding/accounts.ts431export async function setOnboardingGscPropertyAction(CODE
LOWnotfair/src/server/onboarding/accounts.ts491export async function getOnboardingConnectCardsAction(CODE
LOWnotfair/src/components/mcp-icon.tsx26export function platformLogoForResourceUrl(resourceUrl: string): string | null {CODE
LOWnotfair/src/lib/goal-platforms.ts94export function goalPlatformsForConnected(CODE
LOWtest/test_skill_routing_e2e.py150def test_routing_seo_triggers():CODE
LOWtest/test_skill_routing_e2e.py164def test_routing_seo_non_triggers():CODE
LOWtest/test_skill_llm_eval.py59def test_seo_quick_wins_clarity():CODE
LOWtest/test_skill_llm_eval.py67def test_seo_report_format_clarity():CODE
LOWtest/test_ads_skill_llm_eval.py55def test_ads_heuristics_clarity():CODE
LOWtest/test_ads_skill_llm_eval.py63def test_ads_workflows_clarity():CODE
LOWtest/test_ads_skill_llm_eval.py71def test_ads_audit_scoring_clarity():CODE
184 more matches not shown…
Structural Annotation Overuse33 hits · 50 pts
SeverityFileLineSnippetContext
LOWgoogle-ads/shared/preamble.md5## Step 0: Check for NotFair updatesCOMMENT
LOWgoogle-ads/shared/preamble.md19## Step 1: Resolve configCOMMENT
LOWgoogle-ads/shared/preamble.md44## Step 2: MCP Server DetectionCOMMENT
LOWgoogle-ads/shared/preamble.md80## Step 3: Onboarding (only if accountId is missing)COMMENT
LOWgoogle-ads/shared/preamble.md99## Step 4: Calling toolsCOMMENT
LOWgoogle-ads/audit/references/business-context.md7### Step 1: Resolve the website URLCOMMENT
LOWgoogle-ads/audit/references/business-context.md13### Step 2: Crawl the websiteCOMMENT
LOWgoogle-ads/audit/references/business-context.md32### Step 3: Extract business context from crawled pagesCOMMENT
LOWnotfair-upgrade-skill/SKILL.md34### Step 1: Auto-upgradeCOMMENT
LOWnotfair-upgrade-skill/SKILL.md40### Step 2: Detect current installCOMMENT
LOWnotfair-upgrade-skill/SKILL.md58### Step 3: Save old versionCOMMENT
LOWnotfair-upgrade-skill/SKILL.md64### Step 4: Update marketplace repo and installCOMMENT
LOWnotfair-upgrade-skill/SKILL.md86### Step 5: Update installed_plugins.jsonCOMMENT
LOWnotfair-upgrade-skill/SKILL.md114### Step 6: Clean up old cache versionsCOMMENT
LOWnotfair-upgrade-skill/SKILL.md128### Step 7: Write marker + clear update stateCOMMENT
LOWnotfair-upgrade-skill/SKILL.md137### Step 8: Show What's NewCOMMENT
LOWnotfair-upgrade-skill/SKILL.md153### Step 9: ContinueCOMMENT
LOWseo/seo-analysis/SKILL.md728### Step 1: Find Queries Without Dedicated PagesCOMMENT
LOWseo/seo-analysis/SKILL.md749### Step 2: Build Topic Clusters from GSC DataCOMMENT
LOWseo/seo-analysis/SKILL.md759### Step 3: Business Context Gap CheckCOMMENT
LOWseo/seo-analysis/SKILL.md770### Step 4: Offer Deeper Keyword ResearchCOMMENT
LOW…keyword-research/references/topic-cluster-templates.md13### Step 1: Define the Pillar TopicCOMMENT
LOW…keyword-research/references/topic-cluster-templates.md36### Step 2: Map Cluster SubtopicsCOMMENT
LOW…keyword-research/references/topic-cluster-templates.md49### Step 3: Define Internal Linking MapCOMMENT
LOWseo/shared/preamble.md5## Step 1: Check for cached GSC sessionCOMMENT
LOWseo/shared/preamble.md13## Step 2: Locate skill scriptsCOMMENT
LOWseo/shared/preamble.md24## Step 3: Preflight — gcloud and GSC APICOMMENT
LOWseo/shared/preamble.md42## Step 4: ProceedCOMMENT
LOWmeta-ads/shared/preamble.md5## Step 0: Check for NotFair updatesCOMMENT
LOWmeta-ads/shared/preamble.md19## Step 1: Resolve configCOMMENT
LOWmeta-ads/shared/preamble.md55## Step 2: MCP Server DetectionCOMMENT
LOWmeta-ads/shared/preamble.md80## Step 3: Onboarding (only if metaAccountId is missing)COMMENT
LOWmeta-ads/shared/preamble.md99## Step 4: Calling toolsCOMMENT
Excessive Try-Catch Wrapping37 hits · 46 pts
SeverityFileLineSnippetContext
LOWtest/test_skill_e2e.py141 except Exception:CODE
LOWtest/helpers/eval_store.py57 except Exception:CODE
LOWtest/helpers/eval_store.py65 except Exception:CODE
MEDIUMtest/helpers/eval_store.py46def _git_info() -> tuple[str, str]:CODE
LOWtest/helpers/llm_judge.py62 except Exception as e:CODE
LOWseo/seo-analysis/scripts/push_strapi_seo.py75 except Exception:CODE
LOWseo/seo-analysis/scripts/push_strapi_seo.py225 except Exception as e:CODE
LOWseo/seo-analysis/scripts/push_strapi_seo.py330 except Exception:CODE
MEDIUMseo/seo-analysis/scripts/push_strapi_seo.py63def _is_private_ip(ip_str):CODE
LOWseo/seo-analysis/scripts/url_inspection.py324 except Exception as exc:CODE
LOWseo/seo-analysis/scripts/_uid.py50 except Exception:CODE
LOWseo/seo-analysis/scripts/_uid.py82 except Exception:CODE
LOWseo/seo-analysis/scripts/preflight_wordpress.py94 except Exception:CODE
LOWseo/seo-analysis/scripts/preflight_wordpress.py245 except Exception:CODE
MEDIUMseo/seo-analysis/scripts/preflight_wordpress.py82def _is_private_ip(ip_str):CODE
LOWseo/seo-analysis/scripts/analyze_gsc.py544 except Exception:CODE
LOWseo/seo-analysis/scripts/analyze_gsc.py623 except Exception as exc:CODE
MEDIUMseo/seo-analysis/scripts/analyze_gsc.py58def get_access_token():CODE
LOWseo/seo-analysis/scripts/pagespeed.py74 except Exception as e:CODE
LOWseo/seo-analysis/scripts/pagespeed.py305 except Exception as exc:CODE
LOWseo/seo-analysis/scripts/fetch_ghost_content.py105 except Exception:CODE
MEDIUMseo/seo-analysis/scripts/fetch_ghost_content.py94def _is_private_ip(ip_str):CODE
LOWseo/seo-analysis/scripts/preflight_ghost.py92 except Exception:CODE
MEDIUMseo/seo-analysis/scripts/preflight_ghost.py81def _is_private_ip(ip_str):CODE
LOWseo/seo-analysis/scripts/fetch_strapi_content.py56 except Exception:CODE
MEDIUMseo/seo-analysis/scripts/fetch_strapi_content.py44def _is_private_ip(ip_str):CODE
LOWseo/seo-analysis/scripts/preflight_strapi.py103 except Exception:CODE
LOWseo/seo-analysis/scripts/preflight_strapi.py251 except Exception:CODE
LOWseo/seo-analysis/scripts/fetch_wordpress_content.py54 except Exception:CODE
MEDIUMseo/seo-analysis/scripts/fetch_wordpress_content.py43def _is_private_ip(ip_str):CODE
LOWseo/seo-analysis/scripts/preflight.py189 except Exception:CODE
LOWseo/broken-link-checker/scripts/checker.py59 except Exception as e2:CODE
LOWseo/broken-link-checker/scripts/checker.py64 except Exception as e:CODE
LOWseo/broken-link-checker/scripts/checker.py77 except Exception as e:CODE
LOWseo/broken-link-checker/scripts/checker.py127 except Exception as e:CODE
LOWseo/broken-link-checker/scripts/checker.py142 except Exception as e:CODE
MEDIUMseo/broken-link-checker/scripts/checker.py143 print(f"Error crawling {current_url}: {e}", file=sys.stderr)CODE
Cross-File Repetition6 hits · 30 pts
SeverityFileLineSnippetContext
HIGHseo/seo-analysis/scripts/url_inspection.py0return the quota_project_id from the adc json file, or none.STRING
HIGHseo/seo-analysis/scripts/analyze_gsc.py0return the quota_project_id from the adc json file, or none.STRING
HIGHseo/seo-analysis/scripts/list_gsc_sites.py0return the quota_project_id from the adc json file, or none.STRING
HIGHseo/seo-analysis/scripts/fetch_ghost_content.py0paginate through all entries. returns list of normalised entries.STRING
HIGHseo/seo-analysis/scripts/fetch_wordpress_content.py0paginate through all entries. returns list of normalised entries.STRING
HIGHseo/seo-analysis/scripts/fetch_contentful_content.py0paginate through all entries. returns list of normalised entries.STRING
Deep Nesting25 hits · 25 pts
SeverityFileLineSnippetContext
LOWtest/unit/test_broken_link_checker.py23CODE
LOWtest/unit/test_broken_link_checker.py34CODE
LOWtest/helpers/session_runner.py49CODE
LOWseo/seo-analysis/scripts/push_strapi_seo.py103CODE
LOWseo/seo-analysis/scripts/push_strapi_seo.py417CODE
LOWseo/seo-analysis/scripts/url_inspection.py217CODE
LOWseo/seo-analysis/scripts/url_inspection.py256CODE
LOWseo/seo-analysis/scripts/preflight_wordpress.py34CODE
LOWseo/seo-analysis/scripts/preflight_wordpress.py198CODE
LOWseo/seo-analysis/scripts/analyze_gsc.py156CODE
LOWseo/seo-analysis/scripts/show_pagespeed.py78CODE
LOWseo/seo-analysis/scripts/preflight_contentful.py31CODE
LOWseo/seo-analysis/scripts/pagespeed.py29CODE
LOWseo/seo-analysis/scripts/fetch_ghost_content.py48CODE
LOWseo/seo-analysis/scripts/preflight_ghost.py34CODE
LOWseo/seo-analysis/scripts/fetch_strapi_content.py84CODE
LOWseo/seo-analysis/scripts/preflight_strapi.py29CODE
LOWseo/seo-analysis/scripts/fetch_wordpress_content.py81CODE
LOWseo/seo-analysis/scripts/cms_detect.py18CODE
LOWseo/seo-analysis/scripts/fetch_contentful_content.py41CODE
LOWseo/seo-analysis/scripts/preflight.py31CODE
LOWseo/seo-analysis/scripts/preflight.py362CODE
LOWseo/broken-link-checker/scripts/checker.py40CODE
LOWseo/broken-link-checker/scripts/checker.py68CODE
LOWseo/broken-link-checker/scripts/checker.py29CODE
Fake / Example Data9 hits · 10 pts
SeverityFileLineSnippetContext
LOWnotfair/src/server/db/projects.test.ts43 expect(result.project.display_name).toBe("Acme Corp");CODE
LOWnotfair/src/server/db/projects.test.ts50 display_name: "Acme Corp",CODE
LOWnotfair/src/components/onboarding-flow.tsx264 placeholder="Acme Inc"CODE
LOWtest/unit/test_analyze_gsc.py363 result = gsc.gsc_query('fake-token', 'sc-domain:test.com', {'dimensions': ['query']})CODE
LOWtest/unit/test_analyze_gsc.py369 result = gsc.gsc_query('fake-token', 'sc-domain:test.com', {'dimensions': ['query']})CODE
LOWtest/unit/test_analyze_gsc.py391 result = gsc.gsc_query('fake-token', 'sc-domain:test.com', {'dimensions': ['query']})CODE
LOWtest/unit/test_analyze_gsc.py77 token = 'fake-token'CODE
LOWtest/unit/test_analyze_gsc.py247 return gsc.pull_period_comparison('fake-token', 'sc-domain:test.com', 28)CODE
LOWseo/shared/business-context.md259 "business_name": "Acme Corp",CODE
Over-Commented Block6 hits · 6 pts
SeverityFileLineSnippetContext
LOWnotfair/next-env.d.ts1/// <reference types="next" />COMMENT
LOWnotfair/src/server/mcp/state.ts61COMMENT
LOWnotfair/src/server/adapters/codex-local/execute.ts61COMMENT
LOWnotfair/src/server/actions/mcp.ts561 // require a confidential client; for those we register asCOMMENT
LOWnotfair/src/server/onboarding/accounts.ts461//COMMENT
LOWnotfair/src/components/chat/use-chat-stream.ts161 timer = setTimeout(tick, pollIntervalMs);COMMENT
Modern AI Meta-Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMnotfair/PLAN.md510### CMO ↔ specialist orchestration (no custom protocol; uses MCP)COMMENT
MEDIUMnotfair/PLAN.md544# Stored as JSON in SQLite guardrails tableCOMMENT
Unused Imports5 hits · 4 pts
SeverityFileLineSnippetContext
LOWtest/unit/test_strapi_scripts.py12CODE
LOWtest/unit/test_broken_link_checker.py5CODE
LOWtest/helpers/touchfiles.py11CODE
LOWseo/seo-analysis/scripts/_uid.py28CODE
LOWseo/broken-link-checker/scripts/checker.py12CODE
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMtest/test_skill_routing_e2e.py103 # Hard harness failure (timeout/crash) must not silently pass "should not trigger" testsCOMMENT
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWtest/install.test.sh4# Usage:COMMENT
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippetContext
LOWtest/unit/test_broken_link_checker.py112 # We need to check if /private is skipped.COMMENT