Graphs that teach > graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.
201 matches across 10 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | …plugin/packages/dashboard/src/components/GraphView.tsx | 80 | // ── Helper components that must live inside <ReactFlow> ──────────────── |
| MEDIUM | …plugin/packages/dashboard/src/components/GraphView.tsx | 209 | // ── Overview level: layers as cluster nodes ──────────────────────────── |
| MEDIUM | …plugin/packages/dashboard/src/components/GraphView.tsx | 331 | // ── Layer detail level: topology (ELK Stage 1) + visual overlay ───────── |
| MEDIUM | …plugin/packages/dashboard/src/components/GraphView.tsx | 657 | // ── Async ELK Stage 1 layout ──────────────────────────────────────────── |
| MEDIUM | …plugin/packages/dashboard/src/components/GraphView.tsx | 775 | // ── Stage 2: lazy per-container layout on expand ─────────────────────── |
| MEDIUM | …plugin/packages/dashboard/src/components/GraphView.tsx | 1020 | // ── Container visual overlay flags (Task 14) ──────────────────────────── |
| MEDIUM | …plugin/packages/dashboard/src/components/GraphView.tsx | 1297 | // ── Main inner component (must be inside ReactFlowProvider) ──────────── |
| MEDIUM | …plugin/packages/dashboard/src/components/GraphView.tsx | 1389 | // ── Auto-expand triggers (Task 13) ───────────────────────────────────── |
| MEDIUM | …n/skills/understand-knowledge/merge-knowledge-graph.py | 25 | # --------------------------------------------------------------------------- |
| MEDIUM | …n/skills/understand-knowledge/merge-knowledge-graph.py | 27 | # --------------------------------------------------------------------------- |
| MEDIUM | …n/skills/understand-knowledge/merge-knowledge-graph.py | 69 | # --------------------------------------------------------------------------- |
| MEDIUM | …n/skills/understand-knowledge/merge-knowledge-graph.py | 71 | # --------------------------------------------------------------------------- |
| MEDIUM | …n/skills/understand-knowledge/merge-knowledge-graph.py | 88 | # --------------------------------------------------------------------------- |
| MEDIUM | …n/skills/understand-knowledge/merge-knowledge-graph.py | 90 | # --------------------------------------------------------------------------- |
| MEDIUM | …in/skills/understand-knowledge/parse-knowledge-base.py | 22 | # --------------------------------------------------------------------------- |
| MEDIUM | …in/skills/understand-knowledge/parse-knowledge-base.py | 24 | # --------------------------------------------------------------------------- |
| MEDIUM | …in/skills/understand-knowledge/parse-knowledge-base.py | 34 | # --------------------------------------------------------------------------- |
| MEDIUM | …in/skills/understand-knowledge/parse-knowledge-base.py | 36 | # --------------------------------------------------------------------------- |
| MEDIUM | …in/skills/understand-knowledge/parse-knowledge-base.py | 72 | # --------------------------------------------------------------------------- |
| MEDIUM | …in/skills/understand-knowledge/parse-knowledge-base.py | 74 | # --------------------------------------------------------------------------- |
| MEDIUM | …in/skills/understand-knowledge/parse-knowledge-base.py | 166 | # --------------------------------------------------------------------------- |
| MEDIUM | …in/skills/understand-knowledge/parse-knowledge-base.py | 168 | # --------------------------------------------------------------------------- |
| MEDIUM | …in/skills/understand-knowledge/parse-knowledge-base.py | 197 | # --------------------------------------------------------------------------- |
| MEDIUM | …in/skills/understand-knowledge/parse-knowledge-base.py | 199 | # --------------------------------------------------------------------------- |
| MEDIUM | …in/skills/understand-knowledge/parse-knowledge-base.py | 219 | # --------------------------------------------------------------------------- |
| MEDIUM | …in/skills/understand-knowledge/parse-knowledge-base.py | 221 | # --------------------------------------------------------------------------- |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 722 | # ── Main merge + normalize ──────────────────────────────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 727 | # ── Pattern counters for "Fixed" report ────────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 731 | # ── Detail lists for "Could not fix" report ────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 734 | # ── Step 1: Combine all nodes and edges ────────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 744 | # ── Step 2: Normalize node IDs and build ID mapping ────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 796 | # ── Step 5: Deduplicate nodes by ID (keep last) ───────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 805 | # ── Step 5b: Deterministic tested_by linker ────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 811 | # ── Step 6: Deduplicate edges, drop dangling ───────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 30 | # ── Configuration ───────────────────────────────────────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 81 | # ── tested_by linker configuration ──────────────────────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 132 | # ── Batch loading ───────────────────────────────────────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 152 | # ── ID normalization ────────────────────────────────────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 252 | # ── Deterministic tested_by linker ──────────────────────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 355 | # ── JS/TS family ────────────────────────────────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 385 | # ── Go ──────────────────────────────────────────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 390 | # ── Python ──────────────────────────────────────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 414 | # ── Java ────────────────────────────────────────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 432 | # ── Kotlin ──────────────────────────────────────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 448 | # ── C# ──────────────────────────────────────────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 495 | # ── C/C++ ───────────────────────────────────────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 768 | # ── Step 3: Normalize complexity ───────────────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 784 | # ── Step 4: Rewrite edge references ────────────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 838 | # ── Build report ───────────────────────────────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 911 | # ── Imports-edge recovery from importMap ────────────────────────────────── |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 1001 | # ── Main ────────────────────────────────────────────────────────────────── |
| MEDIUM | …ing-plugin/skills/understand/merge-subdomain-graphs.py | 55 | # ── Pattern counters for "Fixed" report ────────────────────────── |
| MEDIUM | …ing-plugin/skills/understand/merge-subdomain-graphs.py | 58 | # ── Detail lists for "Could not fix" report ────────────────────── |
| MEDIUM | …ing-plugin/skills/understand/merge-subdomain-graphs.py | 64 | # ── Nodes: deduplicate by id, later occurrence wins ─────────────── |
| MEDIUM | …ing-plugin/skills/understand/merge-subdomain-graphs.py | 106 | # ── Layers: merge by id, union nodeIds ──────────────────────────── |
| MEDIUM | …ing-plugin/skills/understand/merge-subdomain-graphs.py | 127 | # ── Tour: concatenate, merge steps with same title ───────────────── |
| MEDIUM | …ing-plugin/skills/understand/merge-subdomain-graphs.py | 158 | # ── Project metadata: merge ─────────────────────────────────────── |
| MEDIUM | …ing-plugin/skills/understand/merge-subdomain-graphs.py | 183 | # ── Build report ───────────────────────────────────────────────── |
| MEDIUM | …gin/skills/understand-domain/extract-domain-context.py | 22 | # ── Configuration ────────────────────────────────────────────────────────── |
| MEDIUM | …gin/skills/understand-domain/extract-domain-context.py | 68 | # ── Entry point detection patterns ───────────────────────────────────────── |
| 16 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | understand-anything-plugin/packages/core/src/schema.ts | 447 | function buildInvalidCollectionIssue(name: string): GraphIssue { |
| LOW | …-anything-plugin/packages/core/src/ignore-generator.ts | 61 | export function generateStarterIgnoreFile(projectRoot: string): string { |
| LOW | …packages/core/src/plugins/extractors/java-extractor.ts | 68 | function extractScopedIdentifierPath(node: TreeSitterNode): string { |
| LOW | …/plugins/extractors/__tests__/python-extractor.test.ts | 162 | class DataProcessor: |
| LOW | …g-plugin/packages/core/src/analyzer/language-lesson.ts | 112 | export function buildLanguageLessonPrompt( |
| LOW | …g-plugin/packages/core/src/analyzer/language-lesson.ts | 178 | export function parseLanguageLessonResponse( |
| LOW | …ng-plugin/packages/core/src/analyzer/tour-generator.ts | 7 | export function buildTourGenerationPrompt(graph: KnowledgeGraph): string { |
| LOW | …ng-plugin/packages/core/src/analyzer/tour-generator.ts | 70 | export function parseTourGenerationResponse(response: string): TourStep[] { |
| LOW | …hing-plugin/packages/core/src/analyzer/llm-analyzer.ts | 48 | export function buildProjectSummaryPrompt( |
| LOW | …hing-plugin/packages/core/src/analyzer/llm-analyzer.ts | 102 | export function parseFileAnalysisResponse( |
| LOW | …hing-plugin/packages/core/src/analyzer/llm-analyzer.ts | 148 | export function parseProjectSummaryResponse( |
| LOW | …ng-plugin/packages/core/src/analyzer/layer-detector.ts | 150 | export function buildLayerDetectionPrompt(graph: KnowledgeGraph): string { |
| LOW | …ng-plugin/packages/core/src/analyzer/layer-detector.ts | 177 | export function parseLayerDetectionResponse( |
| LOW | …hing-plugin/packages/dashboard/src/utils/containers.ts | 77 | function shouldFallbackToCommunity( |
| LOW | …nything-plugin/skills/understand/merge-batch-graphs.py | 331 | def _js_ts_sibling_candidates(dir_path: str, base_stem: str) -> list[str]: |
| LOW | …nything-plugin/skills/understand/merge-batch-graphs.py | 913 | def recover_imports_from_scan( |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 209 | def test_js_ts_test_subdir_walkout(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 217 | def test_python_in_package_tests_walkout(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 226 | def test_csharp_tests_subdir_mirror_to_src(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 263 | def test_priority_mirrored_tree_sibling_before_mirror(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 278 | def test_basic_pairing_emits_forward_edge(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 68 | def test_js_ts_sibling_test_extensions(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 85 | def test_underscore_test_dir_with_test_extension(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 89 | def test_tests_directory_with_test_extension(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 123 | def test_production_files_rejected(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 140 | def test_helper_in_tests_dir_without_test_extension_is_not_test(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 167 | def test_underscore_tests_dir(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 242 | def test_csharp_dotnet_sibling_project_mirror(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 252 | def test_priority_underscore_tests_sibling_before_walkup(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 302 | def test_no_production_counterpart_no_edge(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 315 | def test_inverted_llm_edge_is_swapped_not_stripped(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 350 | def test_canonical_llm_edge_kept_unchanged(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 377 | def test_drops_test_to_test_edge(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 402 | def test_drops_orphan_endpoint_edge(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 423 | def test_dup_keeps_higher_weight_canonical(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 443 | def test_dup_lighter_inverted_dropped_no_swap_counted(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 468 | def test_dup_replaces_with_heavier_inverted(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 493 | def test_dup_swapped_then_canonical_heavier_clears_swapped_count(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 515 | def test_dup_two_inverted_keeps_heavier_swapped_once(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 539 | def test_drops_duplicate_canonical_edges(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 573 | def test_supplement_skips_pair_already_covered_by_llm(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 607 | def test_swap_recovers_real_world_one_test_many_production(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 650 | def test_unrelated_edges_pass_through(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 680 | def test_direction_always_forward_production_to_test(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 728 | def test_first_matching_candidate_wins(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 750 | def test_does_not_match_test_to_test(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 764 | def test_does_not_duplicate_existing_tag(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 785 | def test_node_without_filepath_falls_back_to_id(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 805 | def test_malformed_tags_is_replaced_not_crashed(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 833 | def test_linker_runs_during_merge(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 883 | def test_missing_defaults_to_forward(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 887 | def test_valid_values_pass_through(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 900 | def test_unknown_values_fall_back_to_forward(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 914 | def test_missing_direction_is_persisted_as_forward(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 930 | def test_alias_is_canonicalized_before_dedup(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 989 | def test_two_parts_of_one_logical_batch_merge(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 1006 | def test_three_parts_of_one_logical_batch_merge(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 1016 | def test_malformed_part_is_skipped_with_warning(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 1029 | def test_mixed_single_and_multi_part(self) -> None: |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 1046 | def test_missing_part_emits_warning(self) -> None: |
| 24 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | …/plugins/extractors/__tests__/python-extractor.test.ts | 69 | print(name) |
| HIGH | …/plugins/extractors/__tests__/python-extractor.test.ts | 557 | print("hello") |
| HIGH | …/plugins/extractors/__tests__/python-extractor.test.ts | 614 | return None |
| HIGH | …/plugins/extractors/__tests__/python-extractor.test.ts | 621 | print(args, kwargs) |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | …n/skills/understand-knowledge/merge-knowledge-graph.py | 97 | print(f"Error: {manifest_path} not found. Run parse-knowledge-base.py first.", |
| MEDIUM | …n/skills/understand-knowledge/merge-knowledge-graph.py | 390 | print(f"Error: {root} is not a directory", file=sys.stderr) |
| MEDIUM | …in/skills/understand-knowledge/parse-knowledge-base.py | 489 | print(f"Error: {root} is not a directory", file=sys.stderr) |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 1012 | print(f"Error: {intermediate_dir} does not exist", file=sys.stderr) |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 1023 | print("Error: no batch-*.json files found in intermediate/", file=sys.stderr) |
| MEDIUM | …nything-plugin/skills/understand/merge-batch-graphs.py | 1102 | print("Error: no valid batch files loaded", file=sys.stderr) |
| MEDIUM | …ing-plugin/skills/understand/merge-subdomain-graphs.py | 244 | print(f"Error: {ua_dir} does not exist", file=sys.stderr) |
| MEDIUM | …ing-plugin/skills/understand/merge-subdomain-graphs.py | 280 | print("Error: no valid subdomain graphs loaded", file=sys.stderr) |
| MEDIUM | …gin/skills/understand-domain/extract-domain-context.py | 383 | print(f"Error: {project_root} is not a directory", file=sys.stderr) |
| LOW | …gin/skills/understand-domain/extract-domain-context.py | 422 | except Exception as e: |
| MEDIUM | …gin/skills/understand-domain/extract-domain-context.py | 423 | print(f"Error: {e}", file=sys.stderr) |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …n/skills/understand-knowledge/merge-knowledge-graph.py | 92 | |
| LOW | …in/skills/understand-knowledge/parse-knowledge-base.py | 113 | |
| LOW | …in/skills/understand-knowledge/parse-knowledge-base.py | 278 | |
| LOW | …nything-plugin/skills/understand/merge-batch-graphs.py | 224 | |
| LOW | …nything-plugin/skills/understand/merge-batch-graphs.py | 340 | |
| LOW | …nything-plugin/skills/understand/merge-batch-graphs.py | 556 | |
| LOW | …ing-plugin/skills/understand/merge-subdomain-graphs.py | 52 | |
| LOW | …gin/skills/understand-domain/extract-domain-context.py | 151 | |
| LOW | …gin/skills/understand-domain/extract-domain-context.py | 197 | |
| LOW | …gin/skills/understand-domain/extract-domain-context.py | 306 | |
| LOW | …gin/skills/understand-domain/extract-domain-context.py | 159 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | install.sh | 1 | #!/usr/bin/env bash |
| LOW | understand-anything-plugin/hooks/auto-update-prompt.md | 101 | // The script should: |
| LOW | …plugin/packages/dashboard/src/components/GraphView.tsx | 1181 | diffContainers, |
| LOW | …nything-plugin/skills/understand/merge-batch-graphs.py | 261 | # saw an import / using / same-package call). We just flip direction |
| LOW | …nything-plugin/skills/understand/merge-batch-graphs.py | 601 | if is_test_path(path): |
| LOW | …uperpowers/specs/2026-04-10-understandignore-design.md | 161 | # Built-in defaults (always excluded unless negated): |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | …/superpowers/plans/2026-03-14-phase3-implementation.md | 968 | **Context:** Users should be able to click "Explain" on any node to get a detailed plain-English explanation generated b |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …n/skills/understand-knowledge/merge-knowledge-graph.py | 205 | # Step 1: Build entity/claim → article mapping from edges |
| LOW | …n/skills/understand-knowledge/merge-knowledge-graph.py | 216 | # Step 2: For orphan entities/claims, try to match by ID prefix |
| LOW | …n/skills/understand-knowledge/merge-knowledge-graph.py | 270 | # Step 3: Place children into their parent article's layer |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …n/skills/understand-knowledge/merge-knowledge-graph.py | 19 | |
| LOW | …in/skills/understand-knowledge/parse-knowledge-base.py | 17 | |
| LOW | …gin/skills/understand-domain/extract-domain-context.py | 16 | |
| LOW | tests/skill/understand/test_merge_batch_graphs.py | 9 |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | install.sh | 4 | # Usage: |