github Python re-analysis due

rbmuller/scherlok

github

A detective for your data. Zero-config data quality monitoring — works with dbt, Postgres, BigQuery, Snowflake. No YAML.

maintainer
rbmuller
licence
MIT
first seen
2026-06-05
last seen
2026-09-18
releases · 30d
2
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 0 tools
transport stdio · http verified reported listed in the official MCP registry counts 0 tools · 0 res · 0 prompts permission surface via code analysis

No tools enumerated yet for this server.

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 1fe0b97 · analyzer v33 · 6d ago

danger signals2

code evidence vv1.0.0 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 82

filesystem 20

  • fs rbmuller-scherlok-1fe0b97/src/scherlok/cli.py :6 import shutil
  • fs rbmuller-scherlok-1fe0b97/src/scherlok/config.py :10 from pathlib import Path
  • fs rbmuller-scherlok-1fe0b97/src/scherlok/dashboard/render.py :6 from pathlib import Path
  • fs rbmuller-scherlok-1fe0b97/src/scherlok/dbt/manifest.py :7 from pathlib import Path
  • fs rbmuller-scherlok-1fe0b97/src/scherlok/dbt/profiles.py :13 from pathlib import Path
  • fs rbmuller-scherlok-1fe0b97/src/scherlok/dbt/run_results.py :6 from pathlib import Path
  • fs rbmuller-scherlok-1fe0b97/src/scherlok/store/remote.py :14 import shutil
  • fs rbmuller-scherlok-1fe0b97/src/scherlok/store/sqlite.py :6 from pathlib import Path
  • fs (weak) rbmuller-scherlok-1fe0b97/tests/test_config.py :5 from pathlib import Path
  • fs (weak) rbmuller-scherlok-1fe0b97/tests/test_dashboard_assembler.py :4 from pathlib import Path
  • fs (weak) rbmuller-scherlok-1fe0b97/tests/test_dashboard_cli.py :3 from pathlib import Path
  • fs (weak) rbmuller-scherlok-1fe0b97/tests/test_dashboard_render.py :4 from pathlib import Path
show 8 more
  • fs (weak) rbmuller-scherlok-1fe0b97/tests/test_dbt_cli.py :4 from pathlib import Path
  • fs (weak) rbmuller-scherlok-1fe0b97/tests/test_dbt_column_metrics.py :4 from pathlib import Path
  • fs (weak) rbmuller-scherlok-1fe0b97/tests/test_dbt_lineage.py :6 from pathlib import Path
  • fs (weak) rbmuller-scherlok-1fe0b97/tests/test_dbt_manifest.py :3 from pathlib import Path
  • fs (weak) rbmuller-scherlok-1fe0b97/tests/test_dbt_profiles.py :4 from pathlib import Path
  • fs (weak) rbmuller-scherlok-1fe0b97/tests/test_dbt_run_and_watch.py :5 from pathlib import Path
  • fs (weak) rbmuller-scherlok-1fe0b97/tests/test_dbt_run_results.py :4 from pathlib import Path
  • fs (weak) rbmuller-scherlok-1fe0b97/tests/test_store.py :4 from pathlib import Path

shell / exec 2

  • shell rbmuller-scherlok-1fe0b97/src/scherlok/cli.py :7 import subprocess
  • shell rbmuller-scherlok-1fe0b97/src/scherlok/store/remote.py :15 import subprocess

network 8

  • net rbmuller-scherlok-1fe0b97/src/scherlok/alerter/slack.py :3 import requests
  • net rbmuller-scherlok-1fe0b97/src/scherlok/alerter/webhook.py :11 import requests
  • net rbmuller-scherlok-1fe0b97/src/scherlok/connectors/duckdb.py :5 from urllib.parse import unquote, urlparse
  • net rbmuller-scherlok-1fe0b97/src/scherlok/connectors/mysql.py :5 from urllib.parse import urlparse
  • net rbmuller-scherlok-1fe0b97/src/scherlok/service.py :13 from urllib.parse import urlsplit, urlunsplit
  • net (weak) rbmuller-scherlok-1fe0b97/tests/test_alerter.py :44 @patch("scherlok.alerter.slack.requests.post")
  • net (weak) rbmuller-scherlok-1fe0b97/tests/test_explainer.py :213 with patch("scherlok.alerter.webhook.requests.post") as mock_post:
  • net (weak) rbmuller-scherlok-1fe0b97/tests/test_webhook.py :76 @patch("scherlok.alerter.webhook.requests.post")

secrets 2

  • secrets rbmuller-scherlok-1fe0b97/src/scherlok/alerter/email.py :154 password = os.environ.get("SCHERLOK_SMTP_PASSWORD")
  • secrets rbmuller-scherlok-1fe0b97/src/scherlok/connectors/snowflake.py :59 password = os.environ.get("SNOWFLAKE_PASSWORD")

database 4

  • db rbmuller-scherlok-1fe0b97/src/scherlok/connectors/postgres.py :6 import psycopg2
  • db rbmuller-scherlok-1fe0b97/src/scherlok/store/sqlite.py :4 import sqlite3
  • db (weak) rbmuller-scherlok-1fe0b97/tests/test_connector_errors.py :11 import psycopg2
  • db (weak) rbmuller-scherlok-1fe0b97/tests/test_postgres.py :52 import psycopg2

declared dependencies 15

  • mcp@>=1.2
  • typer@>=0.9.0
  • rich@>=13.0.0
  • psycopg2-binary@>=2.9.0
  • requests@>=2.28.0
  • jinja2@>=3.0
  • google-cloud-bigquery@>=3.0.0
  • snowflake-connector-python@>=3.0.0
  • pymysql@>=1.1
  • duckdb@>=0.9
  • pyyaml@>=6.0
  • anthropic@>=0.40
show 3 more
  • pytest@>=7.0.0
  • pytest-cov@>=4.0.0
  • ruff@>=0.1.0