Repository Analysis

safishamsi/graphify

AI coding assistant skill (Claude Code, Codex, OpenCode, Cursor, Gemini CLI, and more). Turn any folder of code, SQL schemas, R scripts, shell scripts, docs, papers, images, or videos into a queryable knowledge graph. App code + database schema + infrastructure in one graph.

34.1 Strong AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of safishamsi/graphify, a Python project with 85,283 GitHub stars. SynthScan v2.0 examined 172,722 lines of code across 612 source files, recording 4659 pattern matches distributed across 16 syntactic categories. The overall adjusted score of 34.1 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).

34.1
Adjusted Score
34.1
Raw Score
100%
Time Factor
2026-07-13
Last Push
85.3K
Stars
Python
Language
172.7K
Lines of Code
612
Files
4.7K
Pattern Hits
2026-07-14
Scan Date
0.11
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 0HIGH 68MEDIUM 429LOW 4162

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 4659 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.

Hyper-Verbose Identifiers2731 hits · 2470 pts
SeverityFileLineSnippetContext
LOWtools/skillgen/gen.py730def _is_frontmatter_description_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py784def _is_content_scope_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py799def _is_cache_unlink_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py813def _is_zero_node_guard_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py839def _is_manifest_root_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py867def _is_shebang_allowlist_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py880def _is_obsidian_usage_comment_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py891def _is_uv_from_interpreter_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py905def _is_semantic_cache_scope_fix_line(line: str) -> bool:CODE
LOWtools/skillgen/gen.py942def _is_sanctioned_monolith_diff(line: str) -> bool:CODE
LOWworked/mixed-corpus/raw/analyze.py239def _cross_community_surprises(CODE
LOWworked/httpx/raw/utils.py55def obfuscate_sensitive_headers(headers: dict) -> dict:CODE
LOWtests/test_extract_cli.py20def test_extract_exits_nonzero_when_all_semantic_chunks_fail(CODE
LOWtests/test_extract_cli.py81def test_extract_succeeds_when_at_least_one_chunk_completes(CODE
LOWtests/test_extract_cli.py160def test_extract_codeonly_succeeds_without_api_key(monkeypatch, tmp_path):CODE
LOWtests/test_extract_cli.py187def test_extract_out_keeps_project_root_clean(monkeypatch, tmp_path):CODE
LOWtests/test_extract_cli.py224def test_extract_without_key_still_errors_when_docs_present(CODE
LOWtests/test_extract_cli.py252def test_extract_timing_flag_emits_stage_timings(monkeypatch, tmp_path, capsys):CODE
LOWtests/test_semantic_similarity.py13def _make_extraction_with_semantic_edge():CODE
LOWtests/test_semantic_similarity.py68def test_semantic_edge_survives_build_from_json():CODE
LOWtests/test_semantic_similarity.py75def test_semantic_edge_nodes_present():CODE
LOWtests/test_semantic_similarity.py85def test_semantic_edge_confidence_score_preserved():CODE
LOWtests/test_semantic_similarity.py97def test_semantic_edge_scores_higher_than_references():CODE
LOWtests/test_semantic_similarity.py129def _make_report_with_semantic_surprise():CODE
LOWtests/test_semantic_similarity.py151def test_report_renders_semantically_similar_tag():CODE
LOWtests/test_semantic_similarity.py156def test_report_semantic_tag_on_correct_line():CODE
LOWtests/test_semantic_similarity.py166def test_report_no_semantic_tag_for_other_relations():CODE
LOWtests/test_semantic_similarity.py39def _make_graph_with_semantic_edge():CODE
LOWtests/test_semantic_similarity.py113def test_semantic_edge_reason_mentions_similarity():CODE
LOWtests/test_word_count_cache.py12def test_word_count_cached_until_file_changes(tmp_path, monkeypatch):CODE
LOWtests/test_word_count_cache.py37def test_word_count_augments_existing_hash_entry(tmp_path, monkeypatch):CODE
LOWtests/test_openai_custom_endpoint.py12def test_openai_defaults_without_env(monkeypatch):CODE
LOWtests/test_openai_custom_endpoint.py24def test_openai_base_url_and_model_env_override(monkeypatch):CODE
LOWtests/test_openai_custom_endpoint.py36def test_graphify_openai_model_wins_over_openai_model(monkeypatch):CODE
LOWtests/test_multigraph_diagnostics.py106def test_diagnose_extraction_accepts_node_link_links_key() -> None:CODE
LOWtests/test_multigraph_diagnostics.py116def test_diagnose_extraction_does_not_mutate_input() -> None:CODE
LOWtests/test_multigraph_diagnostics.py125def test_diagnose_extraction_handles_malformed_shapes_without_crashing() -> None:CODE
LOWtests/test_multigraph_diagnostics.py269def test_scan_producer_suppression_sites_handles_unknown_tuple_arity(tmp_path: Path) -> None:CODE
LOWtests/test_multigraph_diagnostics.py279def test_diagnose_file_rejects_oversized_graph(monkeypatch, tmp_path: Path) -> None:CODE
LOWtests/test_multigraph_diagnostics.py288def test_diagnose_file_rejects_non_object_json(tmp_path: Path) -> None:CODE
LOWtests/test_multigraph_diagnostics.py296def test_diagnose_file_defaults_to_json_directed_flag(tmp_path: Path) -> None:CODE
LOWtests/test_multigraph_diagnostics.py87def test_diagnose_extraction_categorizes_same_endpoint_collapse() -> None:CODE
LOWtests/test_multigraph_diagnostics.py153def test_diagnose_extraction_handles_non_list_nodes_and_edges() -> None:CODE
LOWtests/test_multigraph_diagnostics.py164def test_diagnose_extraction_bounds_examples() -> None:CODE
LOWtests/test_multigraph_diagnostics.py171def test_diagnose_extraction_stops_examples_at_requested_limit() -> None:CODE
LOWtests/test_multigraph_diagnostics.py189def test_diagnose_extraction_defaults_raw_inputs_to_directed(tmp_path: Path) -> None:CODE
LOWtests/test_multigraph_diagnostics.py199def test_diagnose_file_reads_json_and_formats_report(tmp_path: Path) -> None:CODE
LOWtests/test_multigraph_diagnostics.py215def test_format_diagnostic_report_includes_build_and_suppression_errors(CODE
LOWtests/test_multigraph_diagnostics.py235def test_diagnostic_json_report_is_serializable(tmp_path: Path) -> None:CODE
LOWtests/test_multigraph_diagnostics.py248def test_scan_producer_suppression_sites_finds_seen_sets(tmp_path: Path) -> None:CODE
LOWtests/test_multigraph_diagnostics.py308def test_diagnose_file_explicit_directed_override(tmp_path: Path) -> None:CODE
LOWtests/test_multigraph_diagnostics.py320def test_scan_producer_suppression_sites_reports_missing_file(tmp_path: Path) -> None:CODE
LOWtests/test_multigraph_diagnostics.py328def test_diagnose_multigraph_cli_human_output(monkeypatch, tmp_path: Path, capsys) -> None:CODE
LOWtests/test_multigraph_diagnostics.py347def test_diagnose_multigraph_cli_undirected_override(monkeypatch, tmp_path: Path, capsys) -> None:CODE
LOWtests/test_multigraph_diagnostics.py366def test_diagnose_multigraph_cli_max_examples_zero(monkeypatch, tmp_path: Path, capsys) -> None:CODE
LOWtests/test_multigraph_diagnostics.py389def test_diagnose_multigraph_cli_json_output(monkeypatch, tmp_path: Path, capsys) -> None:CODE
LOWtests/test_multigraph_diagnostics.py418def test_diagnose_multigraph_cli_usage_errors(CODE
LOWtests/test_multigraph_diagnostics.py434def test_diagnose_multigraph_cli_rejects_conflicting_direction_flags(CODE
LOWtests/test_indirect_dispatch_getattr.py41def test_getattr_string_literal_emits_indirect_call(tmp_path):STRING
LOWtests/test_indirect_dispatch_getattr.py59def test_getattr_with_default_emits(tmp_path):STRING
2671 more matches not shown…
Decorative Section Separators414 hits · 1537 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_semantic_similarity.py9# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_semantic_similarity.py11# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_semantic_similarity.py64# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_semantic_similarity.py66# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_semantic_similarity.py81# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_semantic_similarity.py83# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_semantic_similarity.py92# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_semantic_similarity.py95# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_semantic_similarity.py125# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_semantic_similarity.py127# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_codebuddy.py43# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_codebuddy.py45# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_codebuddy.py69# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_codebuddy.py71# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_codebuddy.py180# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_codebuddy.py182# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_codebuddy.py233# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_codebuddy.py235# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_codebuddy.py273# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_codebuddy.py275# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_codebuddy.py10# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_codebuddy.py12# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_pascal.py145# ── Lazarus Form (.lfm) ───────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_pascal.py199# ── Lazarus Package (.lpk) ───────────────────────────────────────────────────COMMENT
MEDIUMtests/test_pascal.py245# ── Delphi Form (.dfm) ───────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_build_merge_hyperedges_and_prune.py36# ── #1574: hyperedge preservation ─────────────────────────────────────────────COMMENT
MEDIUMtests/test_build_merge_hyperedges_and_prune.py97# ── #1571: root-less prune (absolute deleted paths vs relative node keys) ──────COMMENT
MEDIUMtests/test_dedup.py7# ── entropy gate ─────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_dedup.py19# ── shingles ─────────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_dedup.py32# ── full pipeline ─────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_dedup.py123# ── build integration ─────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_dedup.py273# ── #1284: numbered siblings + cross-file file-anchored boilerplate ──────────COMMENT
MEDIUMtests/test_dedup.py341# ── #1243: JaroWinkler prefix-bonus over-merge (cross-file) ──────────────────COMMENT
MEDIUMtests/test_dedup.py369# ── #1504: cross-chunk node ID collision warning ──────────────────────────────COMMENT
MEDIUMtests/test_symbol_resolution.py331# ═══════════════════════════════════════════════════════════════════════════════COMMENT
MEDIUMtests/test_symbol_resolution.py332# ── Bash source edges resolver tests ──────────────────────────────────────────COMMENT
MEDIUMtests/test_symbol_resolution.py333# ═══════════════════════════════════════════════════════════════════════════════COMMENT
MEDIUMtests/test_symbol_resolution.py632# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_symbol_resolution.py634# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_security.py31# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_security.py33# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_security.py58# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_security.py60# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_security.py145# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_security.py147# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_security.py198# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_security.py200# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_security.py229# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_security.py231# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_security.py237# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_security.py239# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_security.py345# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_security.py347# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_security.py118# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_security.py120# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_querylog.py10# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_querylog.py12# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_querylog.py31# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_querylog.py33# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_querylog.py143# ---------------------------------------------------------------------------COMMENT
354 more matches not shown…
Structural Annotation Overuse400 hits · 608 pts
SeverityFileLineSnippetContext
LOWtools/skillgen/gen.py241 "### Step 4 - Build the graph and generate outputs",CODE
LOWtools/skillgen/gen.py242 "### Step 5 - Save manifest, clean up, and report",CODE
LOWtools/skillgen/gen.py252 "### Step 4 - Build graph and cluster",CODE
LOWtools/skillgen/gen.py253 "### Step 5 - Generate report and visualization",CODE
LOWtools/skillgen/fragments/core/devin.md70### Step 1 - Ensure graphify is installedCOMMENT
LOWtools/skillgen/fragments/core/devin.md112### Step 2 - Detect filesCOMMENT
LOWtools/skillgen/fragments/core/devin.md187### Step 3 - Extract entities and relationshipsCOMMENT
LOWtools/skillgen/fragments/core/devin.md453### Step 4 - Build graph, cluster, analyze, generate outputsCOMMENT
LOWtools/skillgen/fragments/core/devin.md513### Step 5 - Label communitiesCOMMENT
LOWtools/skillgen/fragments/core/devin.md553### Step 6 - Generate Obsidian vault (opt-in) + HTMLCOMMENT
LOWtools/skillgen/fragments/core/devin.md667### Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag)COMMENT
LOWtools/skillgen/fragments/core/devin.md767### Step 8 - Token reduction benchmark (only if total_words > 5000)COMMENT
LOWtools/skillgen/fragments/core/devin.md787### Step 9 - Save manifest, update cost tracker, clean up, and reportCOMMENT
LOWtools/skillgen/fragments/core/core.md58### Step 0 - GitHub repos and multi-path merge (only if a URL or several paths)COMMENT
LOWtools/skillgen/fragments/core/core.md62### Step 1 - Ensure graphify is installedCOMMENT
LOWtools/skillgen/fragments/core/core.md66### Step 2 - Detect filesCOMMENT
LOWtools/skillgen/fragments/core/core.md107### Step 3 - Extract entities and relationshipsCOMMENT
LOWtools/skillgen/fragments/core/core.md323### Step 4 - Build graph, cluster, analyze, generate outputsCOMMENT
LOWtools/skillgen/fragments/core/core.md412### Step 5 - Label communitiesCOMMENT
LOWtools/skillgen/fragments/core/core.md453### Step 6 - Generate Obsidian vault (opt-in) + HTMLCOMMENT
LOWtools/skillgen/fragments/core/core.md479### Step 9 - Save manifest, update cost tracker, clean up, and reportCOMMENT
LOWtools/skillgen/fragments/core/aider.md59### Step 1 - Ensure graphify is installedCOMMENT
LOWtools/skillgen/fragments/core/aider.md99### Step 2 - Detect filesCOMMENT
LOWtools/skillgen/fragments/core/aider.md174### Step 3 - Extract entities and relationshipsCOMMENT
LOWtools/skillgen/fragments/core/aider.md388### Step 4 - Build graph, cluster, analyze, generate outputsCOMMENT
LOWtools/skillgen/fragments/core/aider.md448### Step 5 - Label communitiesCOMMENT
LOWtools/skillgen/fragments/core/aider.md488### Step 6 - Generate Obsidian vault (opt-in) + HTMLCOMMENT
LOWtools/skillgen/fragments/core/aider.md548### Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag)COMMENT
LOWtools/skillgen/fragments/core/aider.md649### Step 8 - Token reduction benchmark (only if total_words > 5000)COMMENT
LOWtools/skillgen/fragments/core/aider.md669### Step 9 - Save manifest, update cost tracker, clean up, and reportCOMMENT
LOW…illgen/fragments/references/shared/github-and-merge.md5### Step 0 - Clone GitHub repo(s) (only if a GitHub URL was given)COMMENT
LOWtools/skillgen/fragments/references/shared/exports.md15### Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag)COMMENT
LOWtools/skillgen/fragments/references/shared/exports.md79### Step 8 - Token reduction benchmark (only if total_words > 5000)COMMENT
LOW…pected/graphify__skills__codex__references__exports.md15### Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag)COMMENT
LOW…pected/graphify__skills__codex__references__exports.md79### Step 8 - Token reduction benchmark (only if total_words > 5000)COMMENT
LOW…raphify__skills__kilo__references__github-and-merge.md5### Step 0 - Clone GitHub repo(s) (only if a GitHub URL was given)COMMENT
LOWtools/skillgen/expected/graphify__skill-trae.md61### Step 0 - GitHub repos and multi-path merge (only if a URL or several paths)COMMENT
LOWtools/skillgen/expected/graphify__skill-trae.md65### Step 1 - Ensure graphify is installedCOMMENT
LOWtools/skillgen/expected/graphify__skill-trae.md107### Step 2 - Detect filesCOMMENT
LOWtools/skillgen/expected/graphify__skill-trae.md148### Step 3 - Extract entities and relationshipsCOMMENT
LOWtools/skillgen/expected/graphify__skill-trae.md386### Step 4 - Build graph, cluster, analyze, generate outputsCOMMENT
LOWtools/skillgen/expected/graphify__skill-trae.md475### Step 5 - Label communitiesCOMMENT
LOWtools/skillgen/expected/graphify__skill-trae.md516### Step 6 - Generate Obsidian vault (opt-in) + HTMLCOMMENT
LOWtools/skillgen/expected/graphify__skill-trae.md542### Step 9 - Save manifest, update cost tracker, clean up, and reportCOMMENT
LOW…ify__skills__opencode__references__github-and-merge.md5### Step 0 - Clone GitHub repo(s) (only if a GitHub URL was given)COMMENT
LOW…hify__skills__windows__references__github-and-merge.md5### Step 0 - Clone GitHub repo(s) (only if a GitHub URL was given)COMMENT
LOW…cted/graphify__skills__windows__references__exports.md15### Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag)COMMENT
LOW…cted/graphify__skills__windows__references__exports.md79### Step 8 - Token reduction benchmark (only if total_words > 5000)COMMENT
LOW…cted/graphify__skills__copilot__references__exports.md15### Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag)COMMENT
LOW…cted/graphify__skills__copilot__references__exports.md79### Step 8 - Token reduction benchmark (only if total_words > 5000)COMMENT
LOWtools/skillgen/expected/graphify__skill-windows.md61### Step 0 - GitHub repos and multi-path merge (only if a URL or several paths)COMMENT
LOWtools/skillgen/expected/graphify__skill-windows.md65### Step 1 - Ensure graphify is installedCOMMENT
LOWtools/skillgen/expected/graphify__skill-windows.md129### Step 2 - Detect filesCOMMENT
LOWtools/skillgen/expected/graphify__skill-windows.md170### Step 3 - Extract entities and relationshipsCOMMENT
LOWtools/skillgen/expected/graphify__skill-windows.md410### Step 4 - Build graph, cluster, analyze, generate outputsCOMMENT
LOWtools/skillgen/expected/graphify__skill-windows.md499### Step 5 - Label communitiesCOMMENT
LOWtools/skillgen/expected/graphify__skill-windows.md540### Step 6 - Generate Obsidian vault (opt-in) + HTMLCOMMENT
LOWtools/skillgen/expected/graphify__skill-windows.md566### Step 9 - Save manifest, update cost tracker, clean up, and reportCOMMENT
LOW…hify__skills__copilot__references__github-and-merge.md5### Step 0 - Clone GitHub repo(s) (only if a GitHub URL was given)COMMENT
LOW…ted/graphify__skills__opencode__references__exports.md15### Step 7 - Neo4j export (only if --neo4j or --neo4j-push flag)COMMENT
340 more matches not shown…
Cross-Language Confusion68 hits · 430 pts
SeverityFileLineSnippetContext
HIGHtests/test_java_type_resolution.py91 " public boolean validateCurrency(String c) { return c.length() == 3; }\n"CODE
HIGHtests/test_java_type_resolution.py217 " public Map<String, Object> lookup(Long id) { return null; }\n"CODE
HIGHtests/test_java_type_resolution.py218 " public java.util.Optional<Boolean> flag() { return null; }\n"CODE
HIGHtests/test_java_type_resolution.py246 " public OrderDto first() { return null; }\n"CODE
HIGHtests/test_languages.py425 " return null;\n"CODE
HIGHtests/test_dart.py483 context.router.push(ProfileRoute());CODE
HIGHtests/test_hook_guard.py80 "cd findings && ls", # 'find' without a trailing space is not a matchCODE
HIGHtests/test_hooks.py454 assert 'cd "$(git rev-parse --git-dir 2>/dev/null)" 2>/dev/null && pwd' in scriptCODE
HIGHtests/test_hooks.py454 assert 'cd "$(git rev-parse --git-dir 2>/dev/null)" 2>/dev/null && pwd' in scriptCODE
HIGHtests/test_java_member_calls.py146 " { AuditLog service = null; service.charge(); }\n"CODE
HIGHtests/test_java_member_calls.py149 " new Object() { void nested() { AuditLog service = null; } };\n"CODE
HIGHtests/test_java_member_calls.py213 " void run(int value) { PaymentGateway service = null; service.charge(); }\n"CODE
HIGHtests/test_java_member_calls.py214 " void run(String value) { AuditLog service = null; service.charge(); }\n"CODE
HIGHtests/test_cross_language_call_resolution.py48 " return null;\n"CODE
HIGHtests/test_extract.py862 " render() { return null; }\n"CODE
HIGHgraphify/hooks.py47 if [ -n "$_FROM_FILE" ] && [ -x "$_FROM_FILE" ] && "$_FROM_FILE" -c "$_GFY_PROBE" 2>/dev/null; thenCODE
HIGHgraphify/hooks.py54 GRAPHIFY_BIN=$(command -v graphify 2>/dev/null)CODE
HIGHgraphify/hooks.py61 if [ -x "$_GFY_BINDIR/../python.exe" ] && "$_GFY_BINDIR/../python.exe" -c "$_GFY_PROBE" 2>/dev/null; thenCODE
HIGHgraphify/hooks.py63 elif [ -x "$_GFY_BINDIR/python.exe" ] && "$_GFY_BINDIR/python.exe" -c "$_GFY_PROBE" 2>/dev/null; thenCODE
HIGHgraphify/hooks.py85 if [ -n "$GRAPHIFY_PYTHON" ] && ! "$GRAPHIFY_PYTHON" -c "$_GFY_PROBE" 2>/dev/null; thenCODE
HIGHgraphify/hooks.py92 if command -v python3 >/dev/null 2>&1 && python3 -c "$_GFY_PROBE" 2>/dev/null; thenCODE
HIGHgraphify/hooks.py92 if command -v python3 >/dev/null 2>&1 && python3 -c "$_GFY_PROBE" 2>/dev/null; thenCODE
HIGHgraphify/hooks.py94 elif command -v python >/dev/null 2>&1 && python -c "$_GFY_PROBE" 2>/dev/null; thenCODE
HIGHgraphify/hooks.py94 elif command -v python >/dev/null 2>&1 && python -c "$_GFY_PROBE" 2>/dev/null; thenCODE
HIGHgraphify/hooks.py35if [ -n "$_PINNED" ] && [ -x "$_PINNED" ] && "$_PINNED" -c "$_GFY_PROBE" 2>/dev/null; thenCODE
HIGHgraphify/hooks.py254_GFY_GITDIR=$(cd "$(git rev-parse --git-dir 2>/dev/null)" 2>/dev/null && pwd)STRING
HIGHgraphify/hooks.py254_GFY_GITDIR=$(cd "$(git rev-parse --git-dir 2>/dev/null)" 2>/dev/null && pwd)STRING
HIGHgraphify/hooks.py255_GFY_COMMONDIR=$(cd "$(git rev-parse --git-common-dir 2>/dev/null)" 2>/dev/null && pwd)STRING
HIGHgraphify/hooks.py255_GFY_COMMONDIR=$(cd "$(git rev-parse --git-common-dir 2>/dev/null)" 2>/dev/null && pwd)STRING
HIGHgraphify/hooks.py282GIT_DIR=${GIT_DIR:-$(git rev-parse --git-dir 2>/dev/null)}STRING
HIGHgraphify/hooks.py291CHANGED=$(git diff --name-only HEAD~1 HEAD 2>/dev/null || git diff --name-only HEAD 2>/dev/null)STRING
HIGHgraphify/hooks.py291CHANGED=$(git diff --name-only HEAD~1 HEAD 2>/dev/null || git diff --name-only HEAD 2>/dev/null)STRING
HIGHgraphify/hooks.py351GIT_DIR=${GIT_DIR:-$(git rev-parse --git-dir 2>/dev/null)}STRING
HIGHgraphify/llm.py437{"nodes":[{"id":"stem_entity","label":"Human Readable Name","file_type":"code|document|paper|image|rationale|concept","sCODE
HIGHgraphify/llm.py1668 null, or unparseable content (typical of a local Ollama under load).STRING
HIGHgraphify/callflow_html.py1879 const rawWidth = svg.viewBox && svg.viewBox.baseVal && svg.viewBox.baseVal.widthCODE
HIGHgraphify/tree_html.py357 function collapseBranch(d) {{ if (d.children) {{ d._children = d.children; d._children.forEach(collapseBranch); d.chCODE
HIGHgraphify/tree_html.py358 function expandBranch(d) {{ if (d._children) {{ d.children = d._children; d._children = null; }} if (d.children) {{ CODE
HIGHgraphify/tree_html.py361 window.resetView = () => {{ if (rootNode.children) {{ rootNode.children.forEach(d_child => {{ if (d_child.children |CODE
HIGHgraphify/tree_html.py361 window.resetView = () => {{ if (rootNode.children) {{ rootNode.children.forEach(d_child => {{ if (d_child.children |CODE
HIGHgraphify/tree_html.py383 .attr('class', d => "node" + (d.children || d._children ? " node--internal" : " node--leaf") + (d._children ? " CODE
HIGHgraphify/tree_html.py385 .on('click', (event, d) => {{ if (d.children) {{ d._children = d.children; d.children = null; }} else if (d._chiCODE
HIGHgraphify/tree_html.py386 .style('cursor', d => (d.children || d._children) ? 'pointer' : 'default');CODE
HIGHgraphify/tree_html.py392 .attr('x', d => d.children || d._children ? -14 : 14)CODE
HIGHgraphify/tree_html.py393 .attr('text-anchor', d => d.children || d._children ? 'end' : 'start')CODE
HIGHgraphify/tree_html.py465 textD3.text(null);CODE
HIGHgraphify/tree_html.py471 if (countMatch && originalNodeText.endsWith(countMatch[0])) {{CODE
HIGHgraphify/tree_html.py478 tokens.push({{ text: word, type: 'name' }});CODE
HIGHgraphify/tree_html.py481 tokens.push({{ text: countPartText, type: 'count' }});CODE
HIGHgraphify/tree_html.py484 if (tokens.length === 0 && originalNodeText) {{CODE
HIGHgraphify/tree_html.py485 tokens.push({{ text: originalNodeText, type: 'name' }});CODE
HIGHgraphify/tree_html.py496 lineTokens.push(tokenObj);CODE
HIGHgraphify/tree_html.py499 if (currentTspan.node().getComputedTextLength() > maxWidth && lineTokens.length > 1) {{CODE
HIGHgraphify/tree_html.py502 currentTspan.text(null);CODE
HIGHgraphify/tree_html.py516 currentTspan.text(null);CODE
HIGHgraphify/tree_html.py524 if (textD3.selectAll("tspan > tspan").empty() && textD3.select("tspan").text().length === 0 && originalNodeTCODE
HIGHgraphify/tree_html.py528 if (t.node() && t.node().getComputedTextLength() > maxWidth && displayText.length > 20) {{CODE
HIGHgraphify/tree_html.py270 if (node.total_count !== undefined) {{CODE
HIGHgraphify/tree_html.py284 if (node.children && node.children.length > 0) {{CODE
HIGHgraphify/exporters/html.py80 .filter(p => p !== undefined);CODE
8 more matches not shown…
Unused Imports526 hits · 366 pts
SeverityFileLineSnippetContext
LOWtools/skillgen/gen.py24CODE
LOWtools/skillgen/gen.py35CODE
LOWtools/skillgen/__main__.py2CODE
LOWworked/mixed-corpus/raw/build.py2CODE
LOWworked/mixed-corpus/raw/cluster.py2CODE
LOWworked/mixed-corpus/raw/analyze.py2CODE
LOWworked/example/raw/api.py5CODE
LOWworked/example/raw/api.py7CODE
LOWworked/httpx/raw/client.py7CODE
LOWworked/httpx/raw/client.py7CODE
LOWworked/httpx/raw/client.py9CODE
LOWworked/httpx/raw/client.py9CODE
LOWworked/httpx/raw/client.py10CODE
LOWworked/httpx/raw/utils.py5CODE
LOWtests/test_extract_cli.py2CODE
LOWtests/test_semantic_similarity.py5CODE
LOWtests/test_word_count_cache.py5CODE
LOWtests/test_multigraph_diagnostics.py1CODE
LOWtests/test_codebuddy.py7CODE
LOWtests/test_pascal.py2CODE
LOWtests/test_build_merge_hyperedges_and_prune.py13CODE
LOWtests/test_dedup.py2CODE
LOWtests/test_dedup.py3CODE
LOWtests/test_dedup.py186CODE
LOWtests/test_symbol_resolution.py3CODE
LOWtests/test_swift_import_resolution.py1CODE
LOWtests/test_security.py2CODE
LOWtests/test_security.py4CODE
LOWtests/test_security.py12CODE
LOWtests/test_security.py12CODE
LOWtests/test_vue_extraction.py7CODE
LOWtests/conftest.py1CODE
LOWtests/test_query_cli.py2CODE
LOWtests/test_semantic_id_remap_root.py10CODE
LOWtests/test_path_cli.py2CODE
LOWtests/test_path_cli.py4CODE
LOWtests/test_path_cli.py6CODE
LOWtests/test_querylog.py3CODE
LOWtests/test_zero_node_no_cache.py9CODE
LOWtests/test_zero_node_no_cache.py11CODE
LOWtests/test_hypergraph.py2CODE
LOWtests/test_hypergraph.py8CODE
LOWtests/test_mcp_ingest.py2CODE
LOWtests/test_mcp_ingest.py7CODE
LOWtests/test_google_workspace.py1CODE
LOWtests/test_install_upgrade.py12CODE
LOWtests/test_ts_import_require.py11CODE
LOWtests/test_ruby_resolution.py15CODE
LOWtests/test_ts_receiver_member_calls.py13CODE
LOWtests/test_ts_receiver_member_calls.py15CODE
LOWtests/test_astro_extraction.py10CODE
LOWtests/test_charmap_encoding.py14CODE
LOWtests/test_charmap_encoding.py17CODE
LOWtests/test_charmap_encoding.py18CODE
LOWtests/test_charmap_encoding.py19CODE
LOWtests/test_charmap_encoding.py20CODE
LOWtests/test_charmap_encoding.py22CODE
LOWtests/test_pascal_resolution.py23CODE
LOWtests/test_pascal_call_scoping.py11CODE
LOWtests/test_label_retry.py4CODE
466 more matches not shown…
Excessive Try-Catch Wrapping193 hits · 180 pts
SeverityFileLineSnippetContext
LOWworked/mixed-corpus/raw/cluster.py88 except Exception:CODE
LOWworked/example/raw/parser.py77 except Exception as e:CODE
LOWworked/httpx/raw/auth.py112 except Exception:CODE
LOWworked/httpx/raw/transport.py78 except Exception as exc:CODE
LOWworked/httpx/raw/transport.py131 except Exception as exc:CODE
LOWtests/test_falkordb_integration.py34 except Exception as e: # pragma: no cover - depends on local environmentCODE
LOWtests/test_falkordb_integration.py44 except Exception:CODE
LOWtests/test_falkordb_integration.py49 except Exception:CODE
LOWtests/test_llm_backends.py692 except Exception:CODE
MEDIUMtests/bench_extract.py119 print(f"Error: {target} does not exist", file=sys.stderr)CODE
LOW…erpowers/plans/2026-05-04-incremental-updates-dedup.md780 except Exception as exc:CODE
LOW…erpowers/plans/2026-05-04-incremental-updates-dedup.md790 except Exception as exc:CODE
LOW…erpowers/plans/2026-05-04-incremental-updates-dedup.md841 except Exception as exc:CODE
LOW…erpowers/plans/2026-05-04-incremental-updates-dedup.md1044 except Exception as exc:CODE
LOWgraphify/build.py173 except Exception:CODE
LOWgraphify/ingest.py112 except Exception:CODE
LOWgraphify/ingest.py179 except Exception:CODE
LOWgraphify/hooks.py144 except Exception:CODE
LOWgraphify/hooks.py149except Exception as exc:CODE
LOWgraphify/hooks.py185 except Exception:CODE
LOWgraphify/hooks.py190except Exception as exc:CODE
LOWgraphify/manifest_ingest.py63 except Exception as exc: # noqa: BLE001 — a malformed manifest must not abort extractionCODE
LOWgraphify/global_graph.py19 except Exception as exc:CODE
LOWgraphify/global_graph.py34 except Exception as rename_exc:CODE
LOWgraphify/diagnostics.py233 except Exception as exc:CODE
LOWgraphify/querylog.py79 except Exception:CODE
LOWgraphify/cache.py32except Exception:CODE
LOWgraphify/cache.py137 except Exception:CODE
LOWgraphify/cache.py451 except Exception:CODE
MEDIUMgraphify/serve.py819def _relay() -> None:CODE
LOWgraphify/serve.py42 except Exception:CODE
LOWgraphify/serve.py54 except Exception:CODE
LOWgraphify/serve.py826 except Exception:CODE
LOWgraphify/serve.py1313 except Exception:CODE
LOWgraphify/serve.py1350 except Exception:CODE
LOWgraphify/serve.py1388 except Exception as exc:CODE
LOWgraphify/serve.py1413 except Exception as exc:CODE
LOWgraphify/serve.py1427 except Exception as exc:CODE
LOWgraphify/llm.py2577 except Exception:CODE
LOWgraphify/llm.py2594 except Exception as exc:CODE
LOWgraphify/llm.py52 except Exception: # network failure on first-use download, etc.CODE
LOWgraphify/llm.py200 except Exception:CODE
LOWgraphify/llm.py255 except Exception:CODE
LOWgraphify/llm.py1711 except Exception as exc: # noqa: BLE001 — re-raise unless it's a known context overflowCODE
LOWgraphify/llm.py1894 except Exception as exc: # noqa: BLE001 — caller-facing surface, log + continueCODE
LOWgraphify/llm.py1932 except Exception as _exc: # noqa: BLE001 — checkpoint is best-effortCODE
LOWgraphify/llm.py2230 except Exception:CODE
LOWgraphify/llm.py2514 except Exception as exc: # noqa: BLE001 - reported per-batch; surfaced belowCODE
LOWgraphify/multigraph_compat.py64 except Exception as exc:CODE
LOWgraphify/export.py60 except Exception:CODE
LOWgraphify/export.py89 except Exception:CODE
LOWgraphify/export.py94 except Exception as exc:CODE
LOWgraphify/export.py179 except Exception:CODE
LOWgraphify/export.py190 except Exception:CODE
LOWgraphify/export.py200 except Exception:CODE
LOWgraphify/export.py210 except Exception as exc:CODE
LOWgraphify/callflow_html.py236 except Exception:CODE
MEDIUMgraphify/cli.py288 print("Error: --base-url, --default-model, and --env-key are required.", file=sys.stderr)CODE
MEDIUMgraphify/cli.py292 print(f"Error: refusing to add provider with unsafe base_url {base_url!r}.", file=sys.stderr)CODE
MEDIUMgraphify/cli.py259 print(f"Error: '{name}' is a built-in provider and cannot be overridden.", file=sys.stderr)CODE
133 more matches not shown…
Deep Nesting234 hits · 177 pts
SeverityFileLineSnippetContext
LOWtools/skillgen/gen.py548CODE
LOWworked/example/raw/parser.py29CODE
LOWtests/test_pg_introspect.py16CODE
LOWtests/test_pg_introspect.py40CODE
LOWtests/test_multilang.py167CODE
LOWtests/test_multilang.py215CODE
LOWtests/test_multilang.py224CODE
LOWgraphify/build.py84CODE
LOWgraphify/build.py307CODE
LOWgraphify/build.py383CODE
LOWgraphify/build.py811CODE
LOWgraphify/ingest.py13CODE
LOWgraphify/manifest_ingest.py114CODE
LOWgraphify/manifest_ingest.py144CODE
LOWgraphify/benchmark.py40CODE
LOWgraphify/security.py103CODE
LOWgraphify/cache.py39CODE
LOWgraphify/cache.py560CODE
LOWgraphify/serve.py128CODE
LOWgraphify/serve.py155CODE
LOWgraphify/serve.py286CODE
LOWgraphify/serve.py588CODE
LOWgraphify/serve.py737CODE
LOWgraphify/serve.py805CODE
LOWgraphify/serve.py850CODE
LOWgraphify/serve.py819CODE
LOWgraphify/serve.py1366CODE
LOWgraphify/llm.py223CODE
LOWgraphify/llm.py804CODE
LOWgraphify/llm.py957CODE
LOWgraphify/llm.py1813CODE
LOWgraphify/llm.py1999CODE
LOWgraphify/export.py35CODE
LOWgraphify/export.py116CODE
LOWgraphify/export.py183CODE
LOWgraphify/ruby_resolution.py52CODE
LOWgraphify/validate.py10CODE
LOWgraphify/callflow_html.py572CODE
LOWgraphify/cli.py96CODE
LOWgraphify/cli.py215CODE
LOWgraphify/dedup.py192CODE
LOWgraphify/dedup.py463CODE
LOWgraphify/cluster.py134CODE
LOWgraphify/pascal_resolution.py42CODE
LOWgraphify/install.py1079CODE
LOWgraphify/install.py1427CODE
LOWgraphify/install.py1470CODE
LOWgraphify/install.py1884CODE
LOWgraphify/watch.py243CODE
LOWgraphify/watch.py369CODE
LOWgraphify/watch.py721CODE
LOWgraphify/watch.py1171CODE
LOWgraphify/watch.py279CODE
LOWgraphify/prs.py298CODE
LOWgraphify/prs.py348CODE
LOWgraphify/prs.py584CODE
LOWgraphify/prs.py677CODE
LOWgraphify/detect.py59CODE
LOWgraphify/detect.py240CODE
LOWgraphify/detect.py460CODE
174 more matches not shown…
Over-Commented Block37 hits · 28 pts
SeverityFileLineSnippetContext
LOWtools/skillgen/platforms.toml1# skillgen platform manifestCOMMENT
LOWtools/skillgen/platforms.toml21# dispatch Part-B dispatch fragment basename under fragments/dispatch/.COMMENT
LOWtools/skillgen/gen.py41FRAGMENTS_DIR = SKILLGEN_DIR / "fragments"COMMENT
LOWtools/skillgen/gen.py61 """The git ref for a split host's own pre-split skill body."""COMMENT
LOWtools/skillgen/gen.py141_QUERY_REFERENCE = "references/query/default.md"COMMENT
LOWtools/skillgen/gen.py201#COMMENT
LOWtools/skillgen/gen.py221# lives in the core or a reference under the new heading; the audit confirmsCOMMENT
LOWtests/test_cli_export.py441COMMENT
LOWgraphify/build.py1# assemble node+edge dicts into a NetworkX graph, preserving edge directionCOMMENT
LOWgraphify/build.py601 for ghost_id, canonical_id in _ghost_remap.items():COMMENT
LOWgraphify/build.py621 #COMMENT
LOWgraphify/hooks.py21# Detect the correct Python interpreter (handles uv tool, pipx, venv, system installs).COMMENT
LOWgraphify/hooks.py261COMMENT
LOWgraphify/hooks.py421 except (configparser.Error, OSError) as exc:COMMENT
LOWgraphify/paths.py21from pathlib import Path, PurePosixPathCOMMENT
LOWgraphify/pg_introspect.py61 # 4. Query foreign keys — grouped by constraint to handle composites.COMMENT
LOWgraphify/llm.py1021 # Ollama defaults num_ctx to 2048 and silently truncates prompts largerCOMMENT
LOWgraphify/llm.py1221 # zero nodes/edges, so _response_is_hollow flags it as truncation and theCOMMENT
LOWgraphify/llm.py1901 max_concurrency = 1COMMENT
LOWgraphify/cli.py1081 # Accumulate token usage from the labeling LLM calls so cluster-only modeCOMMENT
LOWgraphify/cli.py1461 # nx.compose requires all graphs to be the same type. When input graphsCOMMENT
LOWgraphify/wiki.py281 # Fold case in the collision check: two labels differing only by caseCOMMENT
LOWgraphify/detect.py641 out_dir.mkdir(parents=True, exist_ok=True)COMMENT
LOWgraphify/detect.py1221 # Dot dirs are allowed — users often want .github/, .claude/, etc.COMMENT
LOWgraphify/extract.py2801 )COMMENT
LOWgraphify/extract.py3761# AST-walked into per-key nodes — that floods the graph with orphan key-nodesCOMMENT
LOWgraphify/extract.py3921 "lua": extract_lua,COMMENT
LOWgraphify/extract.py4421 # marker set in the per-file extractor. Populated just before the pass that uses it.COMMENT
LOWgraphify/extract.py4441 # the extractor saw). For a root-level file that stem picks up the absoluteCOMMENT
LOWgraphify/extract.py4601 normalised = raw.strip("()").lstrip(".")COMMENT
LOWgraphify/extract.py4621 # the callee's symbol id. Module imports (`imports_from`) are weaker but stillCOMMENT
LOWgraphify/extract.py4801 "confidence": "INFERRED",COMMENT
LOWgraphify/__main__.py241COMMENT
LOWgraphify/__main__.py281# generated by tools/skillgen and guarded by `skillgen --check`. Reading them atCOMMENT
LOWgraphify/exporters/html.py41 .search-item:hover { background: #2a2a4e; }COMMENT
LOWgraphify/extractors/pascal.py321 _add_edge(module_nid, cls_nid, "contains", line)COMMENT
LOWgraphify/extractors/engine.py2161 # nids of function / method / class definitions in this file. The indirect-COMMENT
Verbosity Indicators13 hits · 26 pts
SeverityFileLineSnippetContext
LOWtests/test_pipeline.py25 # Step 1: detectCOMMENT
LOWtests/test_pipeline.py31 # Step 2: extract (AST only - no LLM)COMMENT
LOWtests/test_pipeline.py38 # Step 3: buildCOMMENT
LOWtests/test_pipeline.py43 # Step 4: clusterCOMMENT
LOWtests/test_pipeline.py51 # Step 5: analyzeCOMMENT
LOWtests/test_pipeline.py63 # Step 6: reportCOMMENT
LOWtests/test_pipeline.py70 # Step 7: export - JSONCOMMENT
LOWtests/test_pipeline.py78 # Step 8: export - HTMLCOMMENT
LOWtests/test_pipeline.py86 # Step 9: export - Obsidian vaultCOMMENT
LOWgraphify/paths.py206 # Step 2: path proximity over the survivors.COMMENT
LOWgraphify/analyze.py660 # Step 1: Build a directed file-level graph from import/re-export edges.COMMENT
LOWgraphify/analyze.py701 # Step 2: Find simple cycles, bounded by length.COMMENT
LOWgraphify/analyze.py713 # Step 3: Sort by length (shortest = tightest coupling), then deduplicate.COMMENT
Modern AI Meta-Vocabulary7 hits · 22 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_llm_backends.py550# `chat_template_kwargs.enable_thinking=false` or the model emits chain-of-thoughtCOMMENT
MEDIUMtests/test_llm_backends.py252 # produce when a chunk overflows the model's context window.COMMENT
MEDIUMtests/test_llm_backends.py693 pass # mock scaffolding may not be complete; we only care about the callCODE
MEDIUMtests/test_labeling.py246# 16k context window of self-hosted reasoning models (Qwen3, Llama-3.1 8B).COMMENT
MEDIUMgraphify/llm.py1227 # object directly. The <untrusted_source> guardrails in _extraction_systemCOMMENT
MEDIUMgraphify/llm.py2292# When graphify runs inside an orchestrating agent (Claude Code / Gemini CLI),COMMENT
MEDIUMgraphify/cli.py1143 # standalone there is no orchestrating agent to do skill.md Step 5, soCOMMENT
Fake / Example Data13 hits · 13 pts
SeverityFileLineSnippetContext
LOWtests/test_extract_cli.py35 monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-test-fake-key")CODE
LOWtests/test_extract_cli.py88 monkeypatch.setenv("ANTHROPIC_API_KEY", "sk-test-fake-key")CODE
LOWtests/test_llm_backends.py178 big.write_text(("# Section\n\n" + "lorem ipsum dolor sit amet " * 60 + "\n\n") * 30)CODE
LOWtests/test_llm_backends.py178 big.write_text(("# Section\n\n" + "lorem ipsum dolor sit amet " * 60 + "\n\n") * 30)CODE
LOWtests/test_llm_backends.py1074 "https://api.moonshot.ai/v1", "fake-key", "kimi-k2",CODE
LOWtests/test_llm_backends.py1102 monkeypatch.setattr(llm, "_get_backend_api_key", lambda _b: "fake-key")CODE
LOWtests/test_llm_backends.py1130 monkeypatch.setattr(llm, "_get_backend_api_key", lambda _b: "fake-key")CODE
LOWtests/test_labeling.py197 assert source == "placeholder"CODE
LOWtests/test_labeling.py205 assert source == "placeholder"CODE
LOWtests/test_file_slice.py28 text = ("# Heading\n\n" + "lorem ipsum " * 40 + "\n\n") * 20CODE
LOWgraphify/llm.py2586 return _placeholder_community_labels(communities), "placeholder"CODE
LOWgraphify/llm.py2601 return _placeholder_community_labels(communities), "placeholder"CODE
LOWgraphify/llm.py2573 ``"placeholder"``. Never raises."""STRING
AI Slop Vocabulary4 hits · 10 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_languages.py1916 # More robust: no target should contain a brace characterCOMMENT
MEDIUMtests/test_hook_guard.py21# Direct-call harness: hermetic w.r.t. the ambient GRAPHIFY_OUT env.COMMENT
MEDIUMgraphify/extract.py4635 # path.name)``). Resolving file membership by that shared string is robustCOMMENT
LOWgraphify/extract.py1218 # Edge target already a real node - just add the edge, don't add a node.COMMENT
Overly Generic Function Names7 hits · 8 pts
SeverityFileLineSnippetContext
LOWworked/httpx/raw/transport.py13 def handle_request(self, request: Request) -> Response:CODE
LOWworked/httpx/raw/transport.py70 def handle_request(self, request: Request) -> Response:CODE
LOWworked/httpx/raw/transport.py112 def handle_request(self, request: Request) -> Response:CODE
LOWworked/httpx/raw/transport.py126 def handle_request(self, request: Request) -> Response:CODE
LOWtests/test_rationale.py193 def helper() -> int:CODE
LOWtests/test_incremental.py113 (pkg / "b.py").write_text("def helper():\n return 1\n")CODE
LOWtests/test_case_sensitive_resolution.py70 "h.py": "def helper():\n return 1\n",CODE
AI Structural Patterns6 hits · 4 pts
SeverityFileLineSnippetContext
LOWtests/test_prs.py26CODE
LOWgraphify/pg_introspect.py151CODE
LOWgraphify/serve.py1591CODE
LOWgraphify/llm.py1813CODE
LOWgraphify/callflow_html.py1579CODE
LOWgraphify/callflow_html.py1514CODE
Modern Structural Boilerplate4 hits · 4 pts
SeverityFileLineSnippetContext
LOWtests/test_hooks.py353def _set_hookspath(repo: Path, value: str) -> None:CODE
LOWgraphify/manifest_ingest.py25__all__ = ["is_package_manifest_path", "extract_package_manifest", "PACKAGE_MANIFEST_NAMES"]CODE
LOWgraphify/manifest.py4__all__ = ["save_manifest", "load_manifest", "detect_incremental"]CODE
LOWgraphify/ids.py29__all__ = ["normalize_id", "make_id"]CODE
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippetContext
LOWgraphify/detect.py430 # Check if it's a converted paperCOMMENT
LOWgraphify/extractors/dart.py36 # Check if this is a part-of file and redirect to parentCOMMENT