Our next-generation, interactive app is currently in beta! Come try it out at terminalthemes.com! Over 850 terminal color schemes/themes for iTerm, with ports to Terminal, Konsole, PuTTY, Xresources, XRDB, Remmina, Termite, XFCE, Tilda, FreeBSD VT, Terminator, Kitty, Windows, Visual Studio,, Ghostty, and dozens more
This report summarizes scanner evidence for mbadolato/iTerm2-Color-Schemes, a Shell project with 27,306 GitHub stars. SynthScan examined 357,482 lines of code across 12944 source files, recording 57 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 0.2 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 39 finding(s).
Are imports declared and package/API names verified? 12 finding(s).
Are wrappers, guards, and repeated structures necessary? 31 finding(s).
Which changes need focused human review? 57 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 57 distinct pattern matches across 10 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. 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 configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/generate_screenshots_readme.py | 41 | def generate_screenshots_readme(): | CODE |
| LOW | tools/test_set_license.py | 51 | def test_repository_file_round_trips_unchanged(self) -> None: | STRING |
| LOW | tools/test_set_license.py | 55 | def test_set_adds_in_alphabetical_order(self) -> None: | STRING |
| LOW⚡ | tools/test_set_license.py | 67 | def test_set_replaces_an_existing_entry(self) -> None: | STRING |
| LOW⚡ | tools/test_set_license.py | 73 | def test_rename_keeps_the_entry(self) -> None: | STRING |
| LOW⚡ | tools/test_set_license.py | 79 | def test_remove_deletes_the_entry(self) -> None: | STRING |
| LOW⚡ | tools/test_set_license.py | 84 | def test_invalid_input_leaves_the_file_untouched(self) -> None: | STRING |
| LOW | tools/wcag_check.py | 362 | def print_single_scheme_results( | STRING |
| LOW | tools/wcag_check.py | 379 | def print_bulk_console_results( | STRING |
| LOW⚡ | tools/test_preview_theme.py | 22 | def test_scheme_renders_hex_values(self) -> None: | CODE |
| LOW⚡ | tools/test_preview_theme.py | 31 | def test_clear_flag_clears_screen(self) -> None: | CODE |
| LOW⚡ | tools/test_preview_theme.py | 36 | def test_no_osc_palette_sequences(self) -> None: | CODE |
| LOW | tools/test_preview_theme.py | 48 | def test_missing_scheme_exits_nonzero(self) -> None: | CODE |
| LOW | tools/test_preview_theme.py | 53 | def test_static_mode_uses_truecolor(self) -> None: | CODE |
| LOW | tools/test_check_licenses.py | 60 | def test_repository_licenses_file_is_valid(self) -> None: | STRING |
| LOW⚡ | tools/test_check_licenses.py | 76 | def test_entry_without_scheme_fails(self) -> None: | STRING |
| LOW⚡ | tools/test_check_licenses.py | 81 | def test_invalid_license_fails(self) -> None: | STRING |
| LOW⚡ | tools/test_check_licenses.py | 86 | def test_invalid_source_and_extra_key_fail(self) -> None: | STRING |
| LOW⚡ | tools/test_check_licenses.py | 94 | def test_expressions_of_listed_identifiers_are_allowed(self) -> None: | STRING |
| LOW⚡ | tools/test_check_licenses.py | 99 | def test_expressions_with_an_unlisted_part_are_refused(self) -> None: | STRING |
| LOW | tools/test_check_licenses.py | 113 | def test_gen_redistributable_skips_unknown_and_nonfree(self) -> None: | STRING |
| LOW⚡ | tools/test_wcag_check.py | 27 | def test_single_existing_scheme(self) -> None: | CODE |
| LOW⚡ | tools/test_wcag_check.py | 33 | def test_missing_scheme_exits_nonzero(self) -> None: | CODE |
| LOW⚡ | tools/test_wcag_check.py | 38 | def test_yaml_stem_without_itermcolors_hints_gen_py(self) -> None: | CODE |
| LOW⚡ | tools/test_wcag_check.py | 48 | def test_bulk_mode_still_runs(self) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/gen.py | 45 | CODE | |
| LOW | tools/check_licenses.py | 12 | CODE | |
| LOW | tools/set_license.py | 16 | CODE | |
| LOW | tools/preview_theme/terminal.py | 3 | CODE | |
| LOW | tools/preview_theme/render.py | 3 | CODE | |
| LOW | tools/preview_theme/__init__.py | 3 | CODE | |
| LOW | tools/preview_theme/cli.py | 4 | CODE | |
| LOW | tools/preview_theme/loader.py | 3 | CODE | |
| LOW | tools/preview_theme/colors.py | 3 | CODE | |
| LOW | tools/screenshot_gen/renderer.py | 1 | CODE | |
| LOW | tools/screenshot_gen/__main__.py | 3 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/wcag_check.py | 188 | CODE | |
| LOW | tools/wcag_check.py | 226 | CODE | |
| LOW | tools/wcag_check.py | 267 | CODE | |
| LOW | tools/gen.py | 440 | CODE | |
| LOW | tools/preview_theme/cli.py | 27 | CODE | |
| LOW | tools/preview_theme/cli.py | 47 | CODE | |
| LOW | tools/screenshot_gen/renderer.py | 67 | CODE | |
| LOW | tools/screenshot_gen/__main__.py | 33 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/wcag_check.py | 311 | except Exception as e: | STRING |
| MEDIUM | tools/wcag_check.py | 312 | print(f"Error parsing {file_path.name}: {e}", file=sys.stderr) | STRING |
| MEDIUM | tools/check_licenses.py | 159 | print(f"Error: {e}", file=sys.stderr) | CODE |
| MEDIUM | tools/set_license.py | 114 | print(f"Error: {e}", file=sys.stderr) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/iterm2terminal.py | 5 | # Usage: | COMMENT |
| LOW | tools/terminal2iterm.py | 5 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/create-release.yml | 104 | # Create a complete archive | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/wcag_check.py | 284 | f'YAML source exists; run `cd tools && python gen.py -s "{name}"` first.', | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | licenses.yml | 1 | # Licence of every colour scheme in this repository, one entry per scheme. | COMMENT |
| LOW | yaml/Outrun Electric.yml | 1 | # Outrun Electric | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/set_license.py | 60 | def set_entry(entries: dict[str, str], name: str, license_id: str, source: str, note: str | None) -> None: | CODE |
| LOW | tools/preview_theme/__init__.py | 5 | __all__ = ["render_preview"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/gen.py | 158 | # TODO: this should probably be removed, and just use the quantized sRGB values directly, | COMMENT |