Repository Analysis

dyad-sh/dyad

Local, open-source AI app builder for power users ✨ v0 / Lovable / Replit / Bolt alternative 🌟 Star if you like it!

4.3 Likely human-written View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of dyad-sh/dyad, a TypeScript project with 20,913 GitHub stars. SynthScan v2.0 examined 425,991 lines of code across 1931 source files, recording 1122 pattern matches distributed across 16 syntactic categories. The overall adjusted score of 4.3 places this repository in the Likely human-written 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).

4.3
Adjusted Score
4.3
Raw Score
100%
Time Factor
2026-07-14
Last Push
20.9K
Stars
TypeScript
Language
426.0K
Lines of Code
1.9K
Files
1.1K
Pattern Hits
2026-07-14
Scan Date
0.00
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

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

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 1HIGH 7MEDIUM 293LOW 821

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 1122 distinct pattern matches across 16 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 Separators276 hits · 852 pts
SeverityFileLineSnippetContext
MEDIUM.claude/hooks/tests/python_good_commands.txt5# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/python_good_commands.txt7# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/python_good_commands.txt21# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/python_good_commands.txt23# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/python_good_commands.txt32# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/python_good_commands.txt34# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/python_good_commands.txt43# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/python_good_commands.txt45# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/python_good_commands.txt54# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/python_good_commands.txt56# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/python_good_commands.txt63# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/python_good_commands.txt65# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/python_good_commands.txt72# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/python_good_commands.txt74# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/python_good_commands.txt82# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/python_good_commands.txt84# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/python_good_commands.txt92# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/python_good_commands.txt94# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/python_good_commands.txt100# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/python_good_commands.txt102# =============================================================================COMMENT
MEDIUM…laude/hooks/tests/python_security_blocked_commands.txt5# =============================================================================COMMENT
MEDIUM…laude/hooks/tests/python_security_blocked_commands.txt7# =============================================================================COMMENT
MEDIUM…laude/hooks/tests/python_security_blocked_commands.txt50# =============================================================================COMMENT
MEDIUM…laude/hooks/tests/python_security_blocked_commands.txt52# =============================================================================COMMENT
MEDIUM…laude/hooks/tests/python_security_blocked_commands.txt62# =============================================================================COMMENT
MEDIUM…laude/hooks/tests/python_security_blocked_commands.txt64# =============================================================================COMMENT
MEDIUM…laude/hooks/tests/python_security_blocked_commands.txt73# =============================================================================COMMENT
MEDIUM…laude/hooks/tests/python_security_blocked_commands.txt75# =============================================================================COMMENT
MEDIUM…laude/hooks/tests/python_security_blocked_commands.txt80# =============================================================================COMMENT
MEDIUM…laude/hooks/tests/python_security_blocked_commands.txt82# =============================================================================COMMENT
MEDIUM…laude/hooks/tests/python_security_blocked_commands.txt89# =============================================================================COMMENT
MEDIUM…laude/hooks/tests/python_security_blocked_commands.txt91# =============================================================================COMMENT
MEDIUM…laude/hooks/tests/python_security_blocked_commands.txt98# =============================================================================COMMENT
MEDIUM…laude/hooks/tests/python_security_blocked_commands.txt100# =============================================================================COMMENT
MEDIUM…laude/hooks/tests/python_security_blocked_commands.txt113# =============================================================================COMMENT
MEDIUM…laude/hooks/tests/python_security_blocked_commands.txt115# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt75# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt77# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt87# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt89# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt297# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt299# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt308# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt310# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt694# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt696# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt704# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt706# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt767# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt769# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt777# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt779# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt4# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt6# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt60# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt62# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt146# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt148# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt161# =============================================================================COMMENT
MEDIUM.claude/hooks/tests/good_commands.txt163# =============================================================================COMMENT
216 more matches not shown…
Hyper-Verbose Identifiers681 hits · 694 pts
SeverityFileLineSnippetContext
LOWplans/supabase-finegrained-redeploy.md116export async function getSupabaseFunctionsAffectedBySharedModules({CODE
LOWplans/supabase-finegrained-redeploy.md273export async function deployAllSupabaseFunctions(args) {CODE
LOWplans/catalog-data.ts339export function buildLanguageModelCatalogResponse(CODE
LOWplans/hybrid-harness-improvements.md64 export function setModelClientFetchForTesting(f: typeof fetch | undefined) {CODE
LOW.claude/hooks/gh-permission-hook.py242def neutralize_code_spans_in_double_quotes(match: re.Match) -> str:STRING
LOW.claude/hooks/tests/test_permission_request_hook.py48 def test_invalid_json_passthrough(self):CODE
LOW.claude/hooks/tests/test_permission_request_hook.py59 def test_non_dict_tool_input_passthrough(self):CODE
LOW.claude/hooks/tests/test_permission_request_hook.py73 def test_bash_commands_analyzed(self):CODE
LOW.claude/hooks/tests/test_permission_request_hook.py83 def test_no_claude_cli_passthrough(self, monkeypatch):CODE
LOW.claude/hooks/tests/test_permission_request_hook.py96 def test_response_format_documented(self):CODE
LOW.claude/hooks/tests/test_permission_request_hook.py114 def test_policy_has_green_section(self):CODE
LOW.claude/hooks/tests/test_permission_request_hook.py120 def test_policy_has_yellow_section(self):CODE
LOW.claude/hooks/tests/test_permission_request_hook.py126 def test_policy_has_red_section(self):CODE
LOW.claude/hooks/tests/test_permission_request_hook.py137 def test_policy_covers_git_force_push(self):CODE
LOW.claude/hooks/tests/test_permission_request_hook.py142 def test_policy_covers_shell_patterns(self):CODE
LOW.claude/hooks/tests/test_permission_request_hook.py148 def test_policy_covers_curl_pipe_sh(self):CODE
LOW.claude/hooks/tests/test_permission_request_hook.py153 def test_policy_covers_safe_commands(self):CODE
LOW.claude/hooks/tests/test_python_permission_hook.py105def test_passthrough_commands() -> tuple[int, int, list[str]]:CODE
LOW.claude/hooks/tests/test_python_permission_hook.py124def test_security_blocked_commands() -> tuple[int, int, list[str]]:CODE
LOW.claude/hooks/tests/test_stop_hook.py95 def test_analyze_returns_none_when_no_cli(self, tmp_path, monkeypatch):CODE
LOW.claude/hooks/tests/test_stop_hook.py104 def test_no_claude_cli_allows_stop(self, tmp_path):CODE
LOW.claude/hooks/tests/test_stop_hook.py48 def test_invalid_json_allows_stop(self):CODE
LOW.claude/hooks/tests/test_stop_hook.py59 def test_stop_hook_active_allows_stop(self):CODE
LOW.claude/hooks/tests/test_stop_hook.py70 def test_missing_transcript_allows_stop(self):CODE
LOW.claude/hooks/tests/test_stop_hook.py80 def test_nonexistent_transcript_allows_stop(self):CODE
LOW.claude/hooks/tests/test_stop_hook.py123 def test_parses_valid_json_response(self, tmp_path, monkeypatch):CODE
LOW.claude/hooks/tests/test_stop_hook.py141 def test_parses_json_in_markdown_code_fence(self, tmp_path, monkeypatch):CODE
LOW.claude/hooks/tests/test_stop_hook.py158 def test_returns_none_for_no_json(self, tmp_path, monkeypatch):CODE
LOW.claude/hooks/tests/test_stop_hook.py174 def test_returns_none_for_malformed_json(self, tmp_path, monkeypatch):CODE
LOW.claude/hooks/tests/test_stop_hook.py190 def test_returns_none_on_nonzero_returncode(self, tmp_path, monkeypatch):CODE
LOW.claude/hooks/tests/test_stop_hook.py206 def test_returns_none_on_subprocess_error(self, tmp_path, monkeypatch):CODE
LOW.claude/hooks/tests/test_stop_hook.py219 def test_returns_none_for_empty_transcript(self, tmp_path, monkeypatch):CODE
LOW.claude/hooks/tests/test_stop_hook.py231 def test_response_format_documented(self):CODE
LOW.claude/hooks/tests/test_stop_hook.py238 def test_hook_checks_stop_hook_active(self):CODE
LOW.claude/hooks/tests/test_stop_hook.py258 def test_extracts_incomplete_tasks(self):CODE
LOW.claude/hooks/tests/test_stop_hook.py290 def test_extracts_completed_tasks(self):CODE
LOW.claude/hooks/tests/test_stop_hook.py299 def test_handles_nonexistent_file(self):CODE
LOW.claude/hooks/tests/test_stop_hook.py322 def test_blocks_with_remaining_tasks(self):CODE
LOW.claude/hooks/tests/test_stop_hook.py347 def test_allows_stop_with_all_tasks_completed(self, monkeypatch):CODE
LOW.claude/hooks/tests/test_stop_hook.py369 def test_reads_incomplete_tasks_fixture(self):CODE
LOW.claude/hooks/tests/test_stop_hook.py397 def test_reads_completed_tasks_fixture(self):CODE
LOW.claude/hooks/tests/test_stop_hook.py426 def test_reads_assistant_messages(self, tmp_path):CODE
LOW.claude/hooks/tests/test_stop_hook.py438 def test_truncates_large_transcripts(self, tmp_path):CODE
LOW…ills/fix-issue/scripts/test_sanitize_issue_markdown.py49 def test_excessive_whitespace(self):CODE
LOW…ills/fix-issue/scripts/test_sanitize_issue_markdown.py70 def test_preserves_code_blocks(self):CODE
LOW…ills/fix-issue/scripts/test_sanitize_issue_markdown.py85 def test_preserves_inline_code(self):CODE
LOW…ills/fix-issue/scripts/test_sanitize_issue_markdown.py111 def test_removes_control_characters(self):CODE
LOWshared/ports.ts56export function getProxyFallbackPortStart(): number {CODE
LOWe2e-tests/package_manager.spec.ts27async function configurePackageManagerCache(userDataDir: string) {CODE
LOWe2e-tests/package_manager.spec.ts63async function createUpgradeablePnpmShim(userDataDir: string) {CODE
LOWe2e-tests/package_manager.spec.ts141async function restorePackageManagerCache() {CODE
LOWe2e-tests/package_manager.spec.ts280async function addLocalDependencyWithIgnoredBuild(appPath: string) {CODE
LOWe2e-tests/package_manager.spec.ts320function extendSocketFirewallTestTimeout(testInfo: TestInfo) {CODE
LOWe2e-tests/setup_flow.spec.ts300async function setupGoogleKeyAndExpectResume(CODE
LOWe2e-tests/setup_flow.spec.ts338async function expectProviderApiKeySaved(CODE
LOWe2e-tests/setup_flow.spec.ts379async function triggerDyadProReturnDeepLink(electronApp: ElectronApplication) {CODE
LOWe2e-tests/setup_flow.spec.ts440async function attachHomeChatContextFile(po: PageObject, filePath: string) {CODE
LOWe2e-tests/custom_apps_folder.spec.ts7async function expectCustomAppsFolderSetting(CODE
LOWe2e-tests/managed_node.spec.ts13function createManagedNodeFixtureArchive(userDataDir: string) {CODE
LOWe2e-tests/safe_storage_keychain_identity.spec.ts270function writeGithubTokenCiphertext(CODE
621 more matches not shown…
Structural Annotation Overuse43 hits · 76 pts
SeverityFileLineSnippetContext
LOW.claude/skills/multi-pr-review/SKILL.md26### Step 1: Determine PR Number and RepoCOMMENT
LOW.claude/skills/multi-pr-review/SKILL.md39### Step 2: Fetch PR Diff and ContextCOMMENT
LOW.claude/skills/multi-pr-review/SKILL.md57### Step 3: Spawn Review Agents in ParallelCOMMENT
LOW.claude/skills/multi-pr-review/SKILL.md132### Step 4: Collect and Parse ResultsCOMMENT
LOW.claude/skills/multi-pr-review/SKILL.md136### Step 5: Validate Issues with Reasoned AnalysisCOMMENT
LOW.claude/skills/multi-pr-review/SKILL.md158### Step 6: Determine Merge VerdictCOMMENT
LOW.claude/skills/multi-pr-review/SKILL.md166### Step 7: Deduplicate Against Existing CommentsCOMMENT
LOW.claude/skills/multi-pr-review/SKILL.md174### Step 8: Post GitHub CommentsCOMMENT
LOW.claude/skills/swarm-to-plan/SKILL.md25### Step 1: Set Up ContextCOMMENT
LOW.claude/skills/swarm-to-plan/SKILL.md37### Step 2: Create the Planning TeamCOMMENT
LOW.claude/skills/swarm-to-plan/SKILL.md47### Step 3: Create TasksCOMMENT
LOW.claude/skills/swarm-to-plan/SKILL.md56### Step 4: Spawn TeammatesCOMMENT
LOW.claude/skills/swarm-to-plan/SKILL.md101### Step 5: Collect Initial AnalysesCOMMENT
LOW.claude/skills/swarm-to-plan/SKILL.md105### Step 6: Facilitate Cross-Role DebateCOMMENT
LOW.claude/skills/swarm-to-plan/SKILL.md137### Step 7: Synthesize Questions for the HumanCOMMENT
LOW.claude/skills/swarm-to-plan/SKILL.md150### Step 8: Share Clarifications and Gather Final InputCOMMENT
LOW.claude/skills/swarm-to-plan/SKILL.md154### Step 9: Compile the Final PlanCOMMENT
LOW.claude/skills/swarm-to-plan/SKILL.md158### Step 10: Write the PlanCOMMENT
LOW.claude/skills/swarm-to-plan/SKILL.md273### Step 11: Shutdown TeamCOMMENT
LOW.claude/skills/deep-review/SKILL.md10## Step 1: Determine the diff to reviewCOMMENT
LOW.claude/skills/deep-review/SKILL.md17## Step 2: Gather shared contextCOMMENT
LOW.claude/skills/deep-review/SKILL.md25## Step 3: Launch the review workflowCOMMENT
LOW.claude/skills/deep-review/SKILL.md48## Step 4: ReportCOMMENT
LOW.claude/skills/deep-review/SKILL.md52## Step 5: False positives — exclude these (give this list to every finder and verifier)COMMENT
LOW.claude/skills/swarm-pr-review/SKILL.md29### Step 1: Determine PR Number and RepoCOMMENT
LOW.claude/skills/swarm-pr-review/SKILL.md42### Step 2: Fetch PR Diff and ContextCOMMENT
LOW.claude/skills/swarm-pr-review/SKILL.md60### Step 3: Create the Review TeamCOMMENT
LOW.claude/skills/swarm-pr-review/SKILL.md70### Step 4: Create Review TasksCOMMENT
LOW.claude/skills/swarm-pr-review/SKILL.md79### Step 5: Spawn TeammatesCOMMENT
LOW.claude/skills/swarm-pr-review/SKILL.md154### Step 6: Collect Initial ReviewsCOMMENT
LOW.claude/skills/swarm-pr-review/SKILL.md158### Step 7: Facilitate DiscussionCOMMENT
LOW.claude/skills/swarm-pr-review/SKILL.md194### Step 8: Compile ConsensusCOMMENT
LOW.claude/skills/swarm-pr-review/SKILL.md205### Step 9: Determine Merge VerdictCOMMENT
LOW.claude/skills/swarm-pr-review/SKILL.md213### Step 10: Post GitHub CommentsCOMMENT
LOW.claude/skills/swarm-pr-review/SKILL.md281### Step 11: Shutdown TeamCOMMENT
LOW…in/ipc/handlers/local_agent/prepare_step_utils.test.ts421 // Step 1: Add first pending messageCOMMENT
LOW…in/ipc/handlers/local_agent/prepare_step_utils.test.ts437 // Step 2: AI added a new message, add another pending messageCOMMENT
LOW…in/ipc/handlers/local_agent/prepare_step_utils.test.ts514 // Step 1: User sends initial promptCOMMENT
LOW…in/ipc/handlers/local_agent/prepare_step_utils.test.ts525 // Step 2: AI responds with tool call, tool adds screenshotCOMMENT
LOW…in/ipc/handlers/local_agent/prepare_step_utils.test.ts580 // Step 3: AI continues, tool adds another screenshotCOMMENT
LOW…in/ipc/handlers/local_agent/prepare_step_utils.test.ts1082 // Step 0: web_crawl + list_filesCOMMENT
LOW…in/ipc/handlers/local_agent/prepare_step_utils.test.ts1105 // Step 1: model generates a search_replace tool callCOMMENT
LOWsrc/prompts/neon_prompt.ts100## Step 0: Inspect the App Before ScaffoldingCOMMENT
Over-Commented Block67 hits · 66 pts
SeverityFileLineSnippetContext
LOWtsconfig.node.json21COMMENT
LOWplans/web-fetch-local-agent.md141### Key Implementation DetailsCOMMENT
LOWplans/web-fetch-local-agent.md181 // 1. Validate URL scheme (http/https only)COMMENT
LOWplans/neondb-integration.md421NEON_AUTH_COOKIE_SECRET=your-cookie-secret-here # Secret for session cookiesCOMMENT
LOW.claude/hooks/gh-permission-hook.py141)COMMENT
LOW.claude/hooks/gh-permission-hook.py201 # - Zero or more VAR=value assignments (no spaces in value, or quoted)COMMENT
LOW.claude/hooks/gh-permission-hook.py281COMMENT
LOW.claude/hooks/gh-permission-hook.py521 """COMMENT
LOW.claude/hooks/tests/good_commands.txt761gh api repos/$(gh repo view --json nameWithOwner -q .nameWithOwner)/pulls/2524/comments --paginate 2>/dev/null | jq -r 'COMMENT
LOWe2e-tests/safe_storage_keychain_identity.spec.ts121 // SecItemCopyMatching searches the search list, not the default keychain,COMMENT
LOWe2e-tests/safe_storage_keychain_identity.spec.ts361 // the same ciphertext — unless the session derived its key from a differentCOMMENT
LOWe2e-tests/safe_storage_keychain_identity.spec.ts461 // "survives the pre-ready identity flip" test above.COMMENT
LOW…sts/snapshots/capacitor.spec.ts_upgraded-capacitor.txt221COMMENT
LOW…sts/snapshots/capacitor.spec.ts_upgraded-capacitor.txt1101# you may not use this file except in compliance with the License.COMMENT
LOW…sts/snapshots/capacitor.spec.ts_upgraded-capacitor.txt1121# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh isCOMMENT
LOW…sts/snapshots/capacitor.spec.ts_upgraded-capacitor.txt1141# The "traditional" practice of packing multiple parameters into aCOMMENT
LOW…sts/snapshots/capacitor.spec.ts_upgraded-capacitor.txt1321#COMMENT
LOWe2e-tests/helpers/test-ports.ts1// Base port for fake LLM servers - each worker gets its own portCOMMENT
LOWscripts/ci-cleanup-macos.sh1#!/usr/bin/env bashCOMMENT
LOW.github/workflows/cla.yml41 #custom-pr-sign-comment: 'The signature to be committed in order to sign the CLA'COMMENT
LOW.github/workflows/ci.yml121COMMENT
LOWworker/dyad-sw.js21self.addEventListener("fetch", (event) => {COMMENT
LOWsrc/main.ts341 // Remove GitHub tokens that older versions embedded in git remote URLsCOMMENT
LOWsrc/atoms/chatAtoms.ts541// Sidecar overlay for tool-input XML preview during Pro/Agent v2 streaming.COMMENT
LOW…/pro/main/ipc/handlers/local_agent/tool_definitions.ts521 inputSchema: tool.inputSchema,COMMENT
LOW…c/handlers/local_agent/tools/json_schema_to_ts.spec.ts1041 // contentMediaType, contentSchemaCOMMENT
LOW…c/handlers/local_agent/tools/json_schema_to_ts.spec.ts1061 // 7. Remote `$ref` (http://, file://, relative file paths) renders asCOMMENT
LOW…c/handlers/local_agent/tools/json_schema_to_ts.spec.ts1081 // signature (from `additionalProperties`, `unevaluatedProperties`, orCOMMENT
LOW…c/handlers/local_agent/tools/json_schema_to_ts.spec.ts1101 // `maxItems: 10000` from blowing up the rendered declaration.COMMENT
LOW…c/handlers/local_agent/tools/json_schema_to_ts.spec.ts1121 // have (deviation #3).COMMENT
LOW…in/ipc/handlers/local_agent/tools/json_schema_to_ts.ts581 const required: string[] = Array.isArray(schema.required)COMMENT
LOWsrc/utils/minidump_summary.ts41// MINIDUMP_DIRECTORY entry (one per stream): a u32 stream type, then aCOMMENT
LOWsrc/utils/minidump_summary.ts141// 6 * u64 home params = 48COMMENT
LOWsrc/utils/minidump_summary.test.ts1import { describe, it, expect } from "vitest";COMMENT
LOWsrc/testing/hybrid_chat_harness.tsx1281 // teardown"):COMMENT
LOW…testing/hybrid_chat_harness.smoke.integration.test.tsx1// Smoke test for setupHybridChatHarness — the real React <ChatPanel> (RTL underCOMMENT
LOWsrc/testing/chat_flow_harness.smoke.test.ts1// @vitest-environment nodeCOMMENT
LOWsrc/__tests__/evals/helpers/eval_recorder.ts1import { mkdir, writeFile } from "node:fs/promises";COMMENT
LOWsrc/__tests__/evals/helpers/prompts.ts1// System prompts used by the eval suites.COMMENT
LOWsrc/db/schema.ts61 // If supabaseProjectId is a branch, then the parent project id set.COMMENT
LOWsrc/db/schema.ts321 .default(sql`0`),COMMENT
LOWsrc/ipc/utils/mcp_oauth_integration.test.ts1// @vitest-environment nodeCOMMENT
LOWsrc/ipc/utils/mcp_oauth_provider.ts181 private readonly preregisteredClientSecret: string | undefined;COMMENT
LOWsrc/ipc/utils/mcp_oauth_flow.ts361COMMENT
LOWsrc/ipc/processors/response_processor.ts321COMMENT
LOWsrc/ipc/handlers/mcp_error_classifiers.ts1// String classifiers for untyped SDK error messages. Extracted soCOMMENT
LOWsrc/ipc/handlers/mcp_error_classifiers.ts21 // Resource Metadata."COMMENT
LOWsrc/ipc/handlers/mcp_error_classifiers.ts61}COMMENT
LOWsrc/ipc/handlers/tests_handlers.ts421 // app dir just in case.COMMENT
LOWsrc/ipc/handlers/neon_handlers.ts761 branchType: outgoingBranchType,COMMENT
LOWsrc/ipc/handlers/migration_handlers.ts21COMMENT
LOW…s/__tests__/local_agent_list_files.integration.test.ts1// Migrated from e2e-tests/local_agent_list_files.spec.ts, then converted fromCOMMENT
LOW…dlers/__tests__/context_compaction.integration.test.ts1// Migrated from e2e-tests/context_compaction.spec.ts, then converted from theCOMMENT
LOW…s/__tests__/local_agent_step_limit.integration.test.ts1// Migrated from e2e-tests/local_agent_step_limit.spec.ts, then converted fromCOMMENT
LOW…handlers/__tests__/supabase_branch.integration.test.ts1// Migrated from e2e-tests/supabase_branch.spec.ts ("supabase branch selectionCOMMENT
LOW…tests__/local_agent_search_replace.integration.test.ts1// Migrated from e2e-tests/local_agent_search_replace.spec.ts, then convertedCOMMENT
LOW…/__tests__/local_agent_code_search.integration.test.ts1// Migrated from e2e-tests/local_agent_code_search.spec.ts, then converted fromCOMMENT
LOW…handlers/__tests__/local_agent_ask.integration.test.ts1// Migrated from e2e-tests/local_agent_ask.spec.ts, then converted from theCOMMENT
LOW…ndlers/__tests__/cancelled_message.integration.test.ts1// Migrated from e2e-tests/cancelled_message.spec.ts, then converted from theCOMMENT
LOWsrc/ipc/handlers/__tests__/retry.integration.test.ts1// Migrated from e2e-tests/retry.spec.ts, then converted from the node chat-flowCOMMENT
7 more matches not shown…
Synthetic Comment Markers5 hits · 30 pts
SeverityFileLineSnippetContext
HIGH.claude/skills/pr-fix-comments/SKILL.md225 🤖 Generated by Claude CodeCODE
HIGHe2e-tests/ai_e2e_testing.spec.ts4// End-to-end coverage for the AI-generated E2E testing feature (the TestsCOMMENT
HIGHtesting/fake-llm-server/chatCompletionHandler.ts252 "## Key Decisions Made\n- Completed initial task as requested\n\n## Current Task State\nConversation was compactCODE
HIGHtesting/fake-llm-server/anthropicMessagesHandler.ts330 "## Key Decisions Made\n- Completed initial task as requested\n\n## Current Task State\nConversation was compactCODE
HIGHsrc/ipc/handlers/shell_handler.ts70 // The dyad-apps tree contains AI-generated code, so opening arbitrary filesCOMMENT
Modern AI Meta-Vocabulary7 hits · 18 pts
SeverityFileLineSnippetContext
MEDIUMplans/better-e2e.md136### 7. Scrub scaffold/template versions from app-file snapshotsCOMMENT
MEDIUMplans/better-e2e.md185| Weeks 3–4 | #5 vitest harness + payload cluster (~18 specs), #7 scaffold scrubbing | suite shrinks; payload tests CODE
MEDIUMplans/better-e2e.md186| Ongoing | #6 migrate-on-touch, #8 smoke consolidation, #10 guardrails | e2e converges on the 36 specsCODE
MEDIUMdocs/architecture.md36### Why isn't Dyad more agentic?COMMENT
MEDIUMdocs/architecture.md52One approach that we don't use is a more agentic-style like what Claude Code and Cursor does where it iteratively searchCODE
MEDIUMrules/e2e-testing.md129## CI scaffold dependency installsCOMMENT
MEDIUMsrc/ipc/handlers/__tests__/undo.integration.test.ts122 // scaffold's "Welcome to Your Blank App" page; in the minimal fixture theCOMMENT
AI Slop Vocabulary6 hits · 18 pts
SeverityFileLineSnippetContext
MEDIUM.claude/hooks/python-permission-hook.py338 # Use shlex for robust argument parsingCOMMENT
MEDIUM.github/workflows/claude-pr-review.yml3# https://github.com/anthropics/claude-code-action/blob/main/examples/pr-review-comprehensive.ymlCOMMENT
MEDIUM.github/workflows/ci.yml332 # harness imports the fake-llm-server in-process, so its ownCOMMENT
MEDIUMsrc/ipc/utils/git_utils.ts1020 // -z gives NUL-delimited output for robust parsing of paths with spaces.COMMENT
MEDIUMsrc/ipc/utils/playwright_report.ts305 // Normalize all separators to POSIX. A global replace is more robust thanCOMMENT
MEDIUMsrc/ipc/handlers/app_collection_handlers.ts184 // but we null out explicitly first so the operation is robust regardlessCOMMENT
Redundant / Tautological Comments11 hits · 14 pts
SeverityFileLineSnippetContext
LOWtools/add-macos-cert.sh9# Check if the variable is setCOMMENT
LOW.claude/hooks/python-permission-hook.py221 # Check if the path is inside the project directoryCOMMENT
LOW.claude/hooks/python-permission-hook.py252 # Check if this is a python/python3 commandCOMMENT
LOW.claude/hooks/python-permission-hook.py272 # Check if the script is inside .claude directoryCOMMENT
LOW.claude/hooks/python-permission-hook.py302 # Check if this even looks like a python command before denyingCOMMENT
LOW.claude/hooks/python-permission-hook.py318 # Check if command starts with python or python3COMMENT
LOW.claude/hooks/python-permission-hook.py363 # Check if next argument is an allowed moduleCOMMENT
LOW.claude/hooks/python-permission-hook.py443 # Check if the script is inside the .claude directoryCOMMENT
LOW.claude/hooks/gh-permission-hook.py351 # Check if this is a gh api commandSTRING
LOW.claude/hooks/gh-permission-hook.py455 # Check if command has input data (implies write operation)STRING
LOW.github/workflows/ci.yml88 # Check if all changed files are in config-only directories (.claude, rules)COMMENT
Verbosity Indicators8 hits · 12 pts
SeverityFileLineSnippetContext
LOW…in/ipc/handlers/local_agent/prepare_step_utils.test.ts421 // Step 1: Add first pending messageCOMMENT
LOW…in/ipc/handlers/local_agent/prepare_step_utils.test.ts437 // Step 2: AI added a new message, add another pending messageCOMMENT
LOW…in/ipc/handlers/local_agent/prepare_step_utils.test.ts514 // Step 1: User sends initial promptCOMMENT
LOW…in/ipc/handlers/local_agent/prepare_step_utils.test.ts525 // Step 2: AI responds with tool call, tool adds screenshotCOMMENT
LOW…in/ipc/handlers/local_agent/prepare_step_utils.test.ts580 // Step 3: AI continues, tool adds another screenshotCOMMENT
LOW…in/ipc/handlers/local_agent/prepare_step_utils.test.ts1082 // Step 0: web_crawl + list_filesCOMMENT
LOW…in/ipc/handlers/local_agent/prepare_step_utils.test.ts1105 // Step 1: model generates a search_replace tool callCOMMENT
LOWsrc/prompts/neon_prompt.ts100## Step 0: Inspect the App Before ScaffoldingCOMMENT
Self-Referential Comments3 hits · 10 pts
SeverityFileLineSnippetContext
MEDIUMtools/add-macos-cert.sh24# Create a keychainCOMMENT
MEDIUM.claude/hooks/tests/test_stop_hook.py106 # Create a minimal transcriptCOMMENT
MEDIUM.claude/hooks/tests/test_stop_hook.py442 # Create a large transcript with many messagesCOMMENT
Cross-Language Confusion2 hits · 10 pts
SeverityFileLineSnippetContext
HIGH.claude/hooks/python-permission-hook.py96 # Replace safe redirect patterns (2>&1, >/dev/null) before checkingCOMMENT
HIGH.claude/hooks/gh-permission-hook.py299 # Replace safe redirect patterns (like 2>&1, 2>/dev/null) before checkingSTRING
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICAL…/components/preview_panel/dyadScreenshotClient.test.ts194 client.parent.postMessage.mock.calls.map(([message]) => message),CODE
Fake / Example Data8 hits · 8 pts
SeverityFileLineSnippetContext
LOW…gent_advanced.spec.ts_local-agent---mention-apps-1.txt659 "placeholder": {CODE
LOW…ocal_agent_auto.spec.ts_local-agent---auto-model-1.txt673 "placeholder": {CODE
LOWsrc/supabase_admin/supabase_management_client.ts431 userId: "fake-user-id",CODE
LOW…c/pro/main/ipc/handlers/local_agent/tools/web_crawl.ts57- Replace all \`<img src="...">\` with: \`<img src="/assets/placeholder.svg" alt="placeholder" />\`CODE
LOW…c/pro/main/ipc/handlers/local_agent/tools/web_crawl.ts58- If using Next.js Image component: \`<Image src="/assets/placeholder.svg" alt="placeholder" width={400} height={300} />CODE
LOW…c/pro/main/ipc/handlers/local_agent/tools/web_crawl.ts81- Replace all \`<img src="...">\` with: \`<img src="/assets/placeholder.svg" alt="placeholder" />\`CODE
LOW…c/pro/main/ipc/handlers/local_agent/tools/web_crawl.ts82- If using Next.js Image component: \`<Image src="/assets/placeholder.svg" alt="placeholder" width={400} height={300} />CODE
LOW…c/handlers/local_agent/tools/planning_questionnaire.ts77- "placeholder" (string, optional): Placeholder for text inputsCODE
Deep Nesting2 hits · 2 pts
SeverityFileLineSnippetContext
LOW.claude/hooks/python-permission-hook.py123CODE
LOW.claude/hooks/python-permission-hook.py288CODE
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUM…t_web_fetch.spec.ts_local-agent---web-fetch-1.aria.yml11- paragraph: Here's a summary of the page content. The getting started guide covers three main items. Let me know if youCODE
AI Structural Patterns1 hit · 1 pts
SeverityFileLineSnippetContext
LOW…de/skills/fix-issue/scripts/sanitize_issue_markdown.py65CODE