RepoTrust

Leaderboard github.com

dekub100/sc-sp-remote

Remotely control Spotify and SoundCloud via WebSockets without Spotify Premium — includes a web interface, OBS widget, and Stream Deck plugin.

  • View repository ↗
  • Python
  • ★ 0
  • commit 3e2d754190d4
  • scored 2026-11-14
  • scoring prov-5+qual-2+sec-2

AI provenance

0%

possible

Confidence
65%
Coverage
100%

Estimated share of AI-generated code. Explicit attribution is a lower bound.

Code quality

69/100

adequate

Confidence
90%
Coverage
100%

Complexity, duplication, lint density, tests, CI, docs and review process.

Security

48/100

poor

Confidence
85%
Coverage
100%

Secrets, static analysis, vulnerable dependencies, CI and supply-chain posture.

AI provenance

0% possible

Weak signals consistent with AI-assisted development.

How the score is built

  • Explicitly attributed share0%
  • Unattributed share in AI-pace bursts28%
  • Estimated AI-generated share0%
  • AI tool configuration files1
  • Work sessions at AI pace3
  • Releases at AI pace0
  • Coding-style index (1.0+ means possible)0.75

Lines added per month all AI-attributed share

  1. 2025-081,196 · 0% AI
  2. 2025-09119 · 0% AI
  3. 2025-10183 · 0% AI
  4. 2025-111,139 · 0% AI
  5. 2025-12613 · 0% AI
  6. 2026-014 · 0% AI
  7. 2026-031,881 · 0% AI
  8. 2026-057,511 · 0% AI
  9. 2026-063,671 · 0% AI
  10. 2026-081,846 · 0% AI
  11. 2026-10598 · 0% AI
  12. 2026-116,303 · 0% AI

Evidence by analyzer

Explicit AI attributionok
attributed_commit_share
0.0%
attributed_commits
0
attributed_loc
0
attributed_loc_share
0.0%
commits
165
effective_loc
25,064
tools_detected
0
AI tool configurationok1 item
artifacts
1
earliest_adoption
2026-05-17
tools_configured
1
workflow_agents
0
Commit velocityok3 items
excluded_import_loc
0
flagged_loc
6,984
flagged_loc_share
27.9%
flagged_units
3
max_loc_per_hour
1,934.54
measured_loc
25,064
median_loc_per_hour
119.88
pr_timed_units
0
pre_ai_era_burst_loc
0
pre_ai_era_bursts
0
pre_ai_era_measured_loc
0
work_units
52
Release velocityok
flagged_releases
0
max_loc_per_day
20,902.50
releases
16
Coding styleok5 items
count:assistant_voice
0
count:emoji_in_code
0
count:narrated_steps
5
count:placeholder
0
files:assistant_voice
0
files:emoji_in_code
0
files:narrated_steps
1
files:placeholder
0
index
0.75
lines_scanned
6,649
per_kloc:assistant_voice
0
per_kloc:emoji_in_code
0
per_kloc:narrated_steps
0.75
per_kloc:placeholder
0

Code quality

69 adequate

Code quality is adequate: test-to-source ratio 0.42, CI runs tests; 21% of function code in complex or long functions; 3% duplicated lines. Weakest area: type safety.

How the score is built

  • Complexity52
  • Duplication84
  • Lint and smells47
  • Tests and CI96
  • Documentation80
  • Type safety0
  • Review processnot measured

Evidence by analyzer

Complexity (lizard)ok10 items
complex_functions
9
function_nloc
4,647
functions
466
long_functions
2
many_param_functions
0
mean_ccn
3.20
p90_ccn
7
risky_nloc_share
21.5%
Duplication (jscpd)ok6 items
compared_lines
4,882
duplicated_lines
137
duplicated_share
2.8%
files
38
Lintok
category:best-practice
7
category:correctness
6
category:maintainability
5
findings
18
scanned_lines
6,649
weighted_findings
20.25
Tests and CIok3 items
  • CI config: .github/workflows/ci.yml .github/workflows/ci.yml
  • CI runs tests (pytest)
  • CI runs linters (ruff, tsc --noEmit)
check:ci_present
yes
check:ci_runs_lint
yes
check:ci_runs_tests
yes
check:has_tests
yes
check:test_ratio
no
check:tests_cochange
yes
ci_files
1
cochange_commits
88
cochange_share
34.1%
source_lines
6,649
test_lines
2,777
test_ratio
0.42
Documentationok3 items
  • README.md README.md
  • LICENSE LICENSE
  • CONTRIBUTING.md CONTRIBUTING.md
check:changelog
no
check:contributing
yes
check:license
yes
check:readme
yes
readme_lines
54
Type safetyok
check:low_escape_density
no
check:strict_config
no
escapes
144
escapes_per_kloc
36.18

Security

48 poor

Security posture is poor: 73 known vulnerabilities in 8 dependencies; 17 high-severity SAST findings; 17 high-severity workflow issues. Weakest area: posture.

How the score is built

  • Secrets100
  • Static analysis (SAST)48
  • Vulnerable dependencies41
  • CI workflows5
  • Security posture0
  • OpenSSF Scorecardnot measured

Evidence by analyzer

OpenSSF Scorecardskipped

no published OpenSSF Scorecard result for this repo

Package registriesok
checked
19
declared
19
lookup_errors
0
missing
0
recent
0
Secrets (gitleaks)ok
secrets_current
0
secrets_history
0
secrets_low_confidence
0
secrets_nonprod
0
Static analysis (opengrep)ok
findings
22
findings_high
17
findings_low
0
findings_medium
5
parse_errors
0
scanned_lines
6,649
weighted_findings
14
Dependencies (osv-scanner)ok
penalty
54
vulnerabilities
73
vulnerable_packages
8
vulns_critical
1
vulns_high
34
vulns_low
9
vulns_medium
29
vulns_unknown
0
CI workflows (zizmor)ok
findings
28
findings_high
17
findings_low
6
findings_medium
5
penalty
175.50
workflows
1
Security postureok
check:dependency_updates
no
check:lockfiles
yes
check:security_policy
no
check:signed_commits
no
signed_commit_share
0.0%
unpinned_manifests
0
Release downloadsok5 items
binary_assets
10
signals
1
suspicious
0

Findings

1 critical71 high49 medium19 low1 info

SeverityRuleLocationMessageTool
critical osv/GHSA-63hf-3vf5-4wqf requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2102, GHSA-63hf-3vf5-4wqf; also in requirements.txt Dependencies (osv-scanner)
high opengrep/python.lang.correctness.common-mistakes.identical-is-comparison manage.py:433 Found identical comparison using is. Ensure this is what you intended. Lint
high opengrep/python.lang.best-practice.arbitrary-sleep manage.py:459 time.sleep() call; did you mean to leave this in? Lint
high opengrep/python.lang.best-practice.arbitrary-sleep manage.py:590 time.sleep() call; did you mean to leave this in? Lint
high zizmor/unpinned-uses .github/workflows/ci.yml:110 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/cache-poisoning .github/workflows/ci.yml:114 runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:114 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:143 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:151 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:19 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/cache-poisoning .github/workflows/ci.yml:21 runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:21 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:47 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/cache-poisoning .github/workflows/ci.yml:49 runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:49 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:70 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/cache-poisoning .github/workflows/ci.yml:72 runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:72 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:93 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/cache-poisoning .github/workflows/ci.yml:95 runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:95 unpinned action reference [confidence high] CI workflows (zizmor)
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit manage.py:106 Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external... Static analysis (opengrep)
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit manage.py:120 Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external... Static analysis (opengrep)
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit manage.py:149 Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external... Static analysis (opengrep)
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit manage.py:231 Detected subprocess function 'check_call' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an... Static analysis (opengrep)
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit manage.py:403 Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external... Static analysis (opengrep)
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit manage.py:419 Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external... Static analysis (opengrep)
high osv/GHSA-2fqr-mr3j-6wp8 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2112, GHSA-2fqr-mr3j-6wp8; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-2fqr-mr3j-6wp8 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2112, GHSA-2fqr-mr3j-6wp8; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-2g87-pp6c-29x5 requirements-dev.txt [email protected] (PyPI) is affected by GHSA-2g87-pp6c-29x5; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-2g87-pp6c-29x5 requirements-dev.txt [email protected] (PyPI) is affected by GHSA-2g87-pp6c-29x5; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-4fvr-rgm6-gqmc requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2107, GHSA-4fvr-rgm6-gqmc; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-4fvr-rgm6-gqmc requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2107, GHSA-4fvr-rgm6-gqmc; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-4m7w-qmgq-4wj5 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-237, GHSA-4m7w-qmgq-4wj5; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-4m7w-qmgq-4wj5 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-237, GHSA-4m7w-qmgq-4wj5; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-5wr8-gcqf-gqf3 requirements-dev.txt [email protected] (PyPI) is affected by GHSA-5wr8-gcqf-gqf3; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-5wr8-gcqf-gqf3 requirements-dev.txt [email protected] (PyPI) is affected by GHSA-5wr8-gcqf-gqf3; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-63hw-fmq6-xxg2 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2110, GHSA-63hw-fmq6-xxg2; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-63hw-fmq6-xxg2 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2110, GHSA-63hw-fmq6-xxg2; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-6mq8-rvhq-8wgg requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-1101, GHSA-6mq8-rvhq-8wgg; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-9x8q-7h8h-wcw9 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2113, GHSA-9x8q-7h8h-wcw9; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-9x8q-7h8h-wcw9 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2113, GHSA-9x8q-7h8h-wcw9; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-9xw5-w5jj-pvcg requirements-dev.txt [email protected] (PyPI) is affected by GHSA-9xw5-w5jj-pvcg; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-9xw5-w5jj-pvcg requirements-dev.txt [email protected] (PyPI) is affected by GHSA-9xw5-w5jj-pvcg; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-cq5v-8q36-5273 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-3545, GHSA-cq5v-8q36-5273; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-cq5v-8q36-5273 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-3545, GHSA-cq5v-8q36-5273; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-g3cq-j2xw-wf74 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2111, GHSA-g3cq-j2xw-wf74; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-g3cq-j2xw-wf74 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2111, GHSA-g3cq-j2xw-wf74; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-hcc4-c3v8-rx92 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2095, GHSA-hcc4-c3v8-rx92; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-hg6j-4rv6-33pg requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2105, GHSA-hg6j-4rv6-33pg; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-jg22-mg44-37j8 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2104, GHSA-jg22-mg44-37j8; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-m5qp-6w8w-w647 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2098, GHSA-m5qp-6w8w-w647; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-m6qw-4cw2-hm4m requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2106, GHSA-m6qw-4cw2-hm4m; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-p998-jp59-783m requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2097, GHSA-p998-jp59-783m; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-xcgm-r5h9-7989 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2108, GHSA-xcgm-r5h9-7989; also in requirements.txt Dependencies (osv-scanner)
high osv/GHSA-xcgm-r5h9-7989 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2108, GHSA-xcgm-r5h9-7989; also in requirements.txt Dependencies (osv-scanner)
high opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query server/lyrics.py:320 Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used... Static analysis (opengrep)
high opengrep/javascript.lang.security.detect-insecure-websocket spicetify-extension/remoteVolume.js:116 Insecure WebSocket Detected. WebSocket Secure (wss) should be used for all WebSocket connections. [confidence low] Static analysis (opengrep)
high opengrep/javascript.lang.security.detect-insecure-websocket spicetify-extension/remoteVolume.js:144 Insecure WebSocket Detected. WebSocket Secure (wss) should be used for all WebSocket connections. [confidence low] Static analysis (opengrep)
high osv/GHSA-58mr-gqgx-xq4g streamdeck-plugin/package-lock.json [email protected] (npm) is affected by GHSA-58mr-gqgx-xq4g Dependencies (osv-scanner)
high osv/GHSA-6j4f-fj2g-mc7p streamdeck-plugin/package-lock.json [email protected] (npm) is affected by GHSA-6j4f-fj2g-mc7p Dependencies (osv-scanner)
high osv/GHSA-mrhx-c7xc-m3w5 streamdeck-plugin/package-lock.json [email protected] (npm) is affected by GHSA-mrhx-c7xc-m3w5 Dependencies (osv-scanner)
high osv/GHSA-qhr7-859c-m2p7 streamdeck-plugin/package-lock.json [email protected] (npm) is affected by GHSA-qhr7-859c-m2p7 Dependencies (osv-scanner)
high osv/GHSA-qw65-cvwx-89v3 streamdeck-plugin/package-lock.json [email protected] (npm) is affected by GHSA-qw65-cvwx-89v3 Dependencies (osv-scanner)
high opengrep/javascript.browser.security.insecure-document-method web/obs-widget/obs-script.js:119 User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-innerhtml web/obs-widget/obs-script.js:119 User controlled data in a `el.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-document-method web/script.js:173 User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-innerhtml web/script.js:173 User controlled data in a `ui.lyricsContent.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-document-method web/script.js:179 User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-innerhtml web/script.js:179 User controlled data in a `ui.lyricsContent.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-document-method web/script.js:183 User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-innerhtml web/script.js:183 User controlled data in a `ui.lyricsContent.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
medium opengrep/python.lang.best-practice.unspecified-open-encoding manage.py:132 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding manage.py:141 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding manage.py:324 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding server/lyrics.py:68 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses server/routes.py:119 Is "is_loopback" a function or an attribute? If it is a function, you may have meant ipaddress.ip_address(remote).is_loopback() because ipaddress.ip_address(remote).is_loopback is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses server/routes.py:91 Is "is_loopback" a function or an attribute? If it is a function, you may have meant address.is_loopback() because address.is_loopback is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses server/routes.py:91 Is "is_private" a function or an attribute? If it is a function, you may have meant address.is_private() because address.is_private is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses server/routes.py:91 Is "is_link_local" a function or an attribute? If it is a function, you may have meant address.is_link_local() because address.is_link_local is always true. Lint
medium opengrep/python.lang.maintainability.return-not-in-function server/state.py:135 `return` only makes sense inside a function Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding server/state.py:231 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium zizmor/excessive-permissions .github/workflows/ci.yml:1 overly broad permissions [confidence medium] CI workflows (zizmor)
medium zizmor/excessive-permissions .github/workflows/ci.yml:11 overly broad permissions [confidence medium] CI workflows (zizmor)
medium zizmor/excessive-permissions .github/workflows/ci.yml:44 overly broad permissions [confidence medium] CI workflows (zizmor)
medium zizmor/excessive-permissions .github/workflows/ci.yml:67 overly broad permissions [confidence medium] CI workflows (zizmor)
medium zizmor/excessive-permissions .github/workflows/ci.yml:90 overly broad permissions [confidence medium] CI workflows (zizmor)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected manage.py:336 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium osv/GHSA-2vrm-gr82-f7m5 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2096, GHSA-2vrm-gr82-f7m5; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-3wq7-rqq7-wx6j requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2099, GHSA-3wq7-rqq7-wx6j; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-494j-54xm-rwp3 requirements-dev.txt [email protected] (PyPI) is affected by GHSA-494j-54xm-rwp3; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-494j-54xm-rwp3 requirements-dev.txt [email protected] (PyPI) is affected by GHSA-494j-54xm-rwp3; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-6cjc-53gc-5rqm requirements-dev.txt [email protected] (PyPI) is affected by GHSA-6cjc-53gc-5rqm; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-6cjc-53gc-5rqm requirements-dev.txt [email protected] (PyPI) is affected by GHSA-6cjc-53gc-5rqm; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-6jhg-hg63-jvvf requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-1100, GHSA-6jhg-hg63-jvvf; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-6w46-j5rx-g56g requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-1845, GHSA-6w46-j5rx-g56g Dependencies (osv-scanner)
medium osv/GHSA-966j-vmvw-g2g9 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2100, GHSA-966j-vmvw-g2g9; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-c427-h43c-vf67 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2103, GHSA-c427-h43c-vf67; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-f9xw-jh8m-3mwq requirements-dev.txt [email protected] (PyPI) is affected by GHSA-f9xw-jh8m-3mwq; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-f9xw-jh8m-3mwq requirements-dev.txt [email protected] (PyPI) is affected by GHSA-f9xw-jh8m-3mwq; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-g84x-mcqj-x9qq requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-1106, GHSA-g84x-mcqj-x9qq; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-hpj7-wq8m-9hgp requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2109, GHSA-hpj7-wq8m-9hgp; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-hpj7-wq8m-9hgp requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2109, GHSA-hpj7-wq8m-9hgp; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-jj3x-wxrx-4x23 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-1107, GHSA-jj3x-wxrx-4x23; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-mfx4-hv73-q22v requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-3546, GHSA-mfx4-hv73-q22v; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-mfx4-hv73-q22v requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-3546, GHSA-mfx4-hv73-q22v; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-mq44-7p77-q5h7 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-3547, GHSA-mq44-7p77-q5h7; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-mq44-7p77-q5h7 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-3547, GHSA-mq44-7p77-q5h7; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-mwh4-6h8g-pg8w requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2101, GHSA-mwh4-6h8g-pg8w; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-pqxq-w44r-73xw requirements-dev.txt [email protected] (PyPI) is affected by GHSA-pqxq-w44r-73xw; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-pqxq-w44r-73xw requirements-dev.txt [email protected] (PyPI) is affected by GHSA-pqxq-w44r-73xw; also in requirements.txt Dependencies (osv-scanner)
medium osv/GHSA-w2fm-2cpv-w7v5 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-2094, GHSA-w2fm-2cpv-w7v5; also in requirements.txt Dependencies (osv-scanner)
medium opengrep/python.lang.security.audit.formatted-sql-query server/lyrics.py:320 Detected possible formatted SQL query. Use parameterized queries instead. [confidence low] Static analysis (opengrep)
medium osv/GHSA-gcqx-w48m-w2h4 streamdeck-plugin/package-lock.json [email protected] (npm) is affected by GHSA-gcqx-w48m-w2h4 Dependencies (osv-scanner)
medium osv/GHSA-hrr3-gc8f-f4qj streamdeck-plugin/package-lock.json [email protected] (npm) is affected by GHSA-hrr3-gc8f-f4qj Dependencies (osv-scanner)
medium osv/GHSA-q2hr-2g5m-vwhr streamdeck-plugin/package-lock.json [email protected] (npm) is affected by GHSA-q2hr-2g5m-vwhr Dependencies (osv-scanner)
medium osv/GHSA-w74x-v6f9-j3xg streamdeck-plugin/package-lock.json [email protected] (npm) is affected by GHSA-w74x-v6f9-j3xg Dependencies (osv-scanner)
medium osv/GHSA-wjr9-j795-jxcr streamdeck-plugin/package-lock.json [email protected] (npm) is affected by GHSA-wjr9-j795-jxcr Dependencies (osv-scanner)
medium opengrep/javascript.lang.security.html-in-template-string web/obs-widget/obs-script.js:151 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string web/script.js:180 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string web/script.js:183 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
low opengrep/javascript.lang.correctness.missing-template-string-indicator soundcloud-plugin/soundcloud-remote-bridge.js:14 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator soundcloud-plugin/soundcloud-remote-bridge.js:14 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator spicetify-extension/remoteVolume.js:70 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator spicetify-extension/remoteVolume.js:70 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator streamdeck-plugin/rollup.config.mjs:43 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low zizmor/artipacked .github/workflows/ci.yml:110 credential persistence through GitHub Actions artifacts [confidence low] CI workflows (zizmor)
low zizmor/artipacked .github/workflows/ci.yml:19 credential persistence through GitHub Actions artifacts [confidence low] CI workflows (zizmor)
low zizmor/artipacked .github/workflows/ci.yml:47 credential persistence through GitHub Actions artifacts [confidence low] CI workflows (zizmor)
low zizmor/artipacked .github/workflows/ci.yml:70 credential persistence through GitHub Actions artifacts [confidence low] CI workflows (zizmor)
low zizmor/artipacked .github/workflows/ci.yml:93 credential persistence through GitHub Actions artifacts [confidence low] CI workflows (zizmor)
low osv/GHSA-54jq-c3m8-4m76 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-1097, GHSA-54jq-c3m8-4m76; also in requirements.txt Dependencies (osv-scanner)
low osv/GHSA-69f9-5gxw-wvc2 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-1099, GHSA-69f9-5gxw-wvc2; also in requirements.txt Dependencies (osv-scanner)
low osv/GHSA-fh55-r93g-j68g requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-1105, GHSA-fh55-r93g-j68g; also in requirements.txt Dependencies (osv-scanner)
low osv/GHSA-gx76-c99x-2c96 requirements-dev.txt [email protected] (PyPI) is affected by GHSA-gx76-c99x-2c96; also in requirements.txt Dependencies (osv-scanner)
low osv/GHSA-gx76-c99x-2c96 requirements-dev.txt [email protected] (PyPI) is affected by GHSA-gx76-c99x-2c96; also in requirements.txt Dependencies (osv-scanner)
low osv/GHSA-mqqc-3gqh-h2x8 requirements-dev.txt [email protected] (PyPI) is affected by PYSEC-2026-1109, GHSA-mqqc-3gqh-h2x8; also in requirements.txt Dependencies (osv-scanner)
low osv/GHSA-333x-w4r6-6crp streamdeck-plugin/package-lock.json [email protected] (npm) is affected by GHSA-333x-w4r6-6crp Dependencies (osv-scanner)
low osv/GHSA-m5mm-p8h7-m29v streamdeck-plugin/package-lock.json [email protected] (npm) is affected by GHSA-m5mm-p8h7-m29v Dependencies (osv-scanner)
low osv/GHSA-xhq7-xmqj-769h streamdeck-plugin/package-lock.json [email protected] (npm) is affected by GHSA-xhq7-xmqj-769h Dependencies (osv-scanner)
info zizmor/superfluous-actions .github/workflows/ci.yml:151 action functionality is already included by the runner [confidence high] CI workflows (zizmor)

Tools and coverage

Every analyzer that ran on this commit. A failed or skipped tool is a coverage gap: its share of the score is left out and the coverage figure drops.

AnalyzerPillarStatusVersionFindingsNote
AI tool configurationAI provenanceoksignatures-v10
Explicit AI attributionAI provenanceoksignatures-v10
Release velocityAI provenanceokprov-40
Coding styleAI provenanceok—0
Commit velocityAI provenanceokprov-40
Complexity (lizard)Code qualityoklizard 1.25.10
DocumentationCode qualityok—0
Duplication (jscpd)Code qualityokrepotrust-dup-w60
LintCode qualityokopengrep 1.33.1; rules f1d2b562b41418
Tests and CICode qualityok—0
Type safetyCode qualityok—0
CI workflows (zizmor)Securityokzizmor 1.32.028
Dependencies (osv-scanner)Securityokosv-scanner version: 2.7.173
Release downloadsSecurityok—0
Security postureSecurityok—0
Package registriesSecurityok—0
Static analysis (opengrep)Securityokopengrep 1.33.1; rules f1d2b562b41422
OpenSSF ScorecardSecurityskipped—0no published OpenSSF Scorecard result for this repo
Secrets (gitleaks)Securityokgitleaks 8.30.10

Score history

Scores from different scoring versions aren't directly comparable.

ScoredCommitScoringAI provenanceQualitySecurity
2026-11-143e2d754190d4prov-5+qual-2+sec-20%6948
2026-11-143e2d754190d4prov-4+qual-2+sec-20%6948

Embed a badge

Maintainers can show these in a README. Badges update when the repository is re-scored.

[![RepoTrust ai](https://repotrust.synapticcyber.com/badge/github.com/dekub100/sc-sp-remote/ai.svg)](https://repotrust.synapticcyber.com/r/github.com/dekub100/sc-sp-remote/)
[![RepoTrust quality](https://repotrust.synapticcyber.com/badge/github.com/dekub100/sc-sp-remote/quality.svg)](https://repotrust.synapticcyber.com/r/github.com/dekub100/sc-sp-remote/)
[![RepoTrust security](https://repotrust.synapticcyber.com/badge/github.com/dekub100/sc-sp-remote/security.svg)](https://repotrust.synapticcyber.com/r/github.com/dekub100/sc-sp-remote/)
Full text report
  • Repository: https://github.com/dekub100/sc-sp-remote
  • Commit: 3e2d754190d45d2abe51a23162c981c94d3e5702
  • Generated: 2026-11-14T14:52:03+00:00
  • Scorer 0.1.0, scoring prov-5+qual-2+sec-2, report schema v2

Scores

Pillar Score Signal Confidence Coverage
AI provenance (estimated AI-generated share) 0 possible 65% 100%
Code quality 69 adequate 90% 100%
Security 48 poor 85% 100%

AI provenance

Weak signals consistent with AI-assisted development.

  • Explicitly attributed share (lower bound): 0.0%

  • Unattributed share in AI-consistent velocity bursts: 27.9%

  • Estimated AI-generated share: 0.0%

  • AI tooling configured in repo: generic-agent

  • Stylometry index: 0.75 per 1,000 lines (narrated steps 5, placeholders 0, assistant phrasing 0, emoji 0). Reported as a signal, not scored.

Month Lines added Attributed to AI
2025-08 1,196 0%
2025-09 119 0%
2025-10 183 0%
2025-11 1,139 0%
2025-12 613 0%
2026-01 4 0%
2026-03 1,881 0%
2026-05 7,511 0%
2026-06 3,671 0%
2026-08 1,846 0%
2026-10 598 0%
2026-11 6,303 0%

Evidence

  • 3,415 lines of first-party code in ~1.8h (1,935 lines/hour, 9 commit session) (3e2d754190d4)
  • AGENTS.md (generic-agent configuration) (AGENTS.md)
  • 2,093 lines of first-party code in ~1.9h (1,091 lines/hour, 3 commit session) (4078e2194933)
  • 1,476 lines of first-party code in ~1.7h (871 lines/hour, 2 commit session) (65006cf81940)
  • step-by-step narration comment: // Step 1: Dispatch mouseover + mousemove to trigger SoundCloud's (soundcloud-p)
  • step-by-step narration comment: // Step 2: Poll until .volume.expanded.hover exists. (soundcloud-p)
  • step-by-step narration comment: // Step 3: Calculate Y position. (soundcloud-p)
  • step-by-step narration comment: // Step 4: Simulate the click on the slider track. (soundcloud-p)
  • step-by-step narration comment: // Step 5: Mouse out to dismiss the slider. (soundcloud-p)

AI provenance describes how code was produced; it is not a quality judgment. Unless attribution is explicit, these are signals consistent with AI generation, not proof. Squash/rebase workflows, imported code, and rewritten history reduce accuracy.

Code quality

Code quality is adequate: test-to-source ratio 0.42, CI runs tests; 21% of function code in complex or long functions; 3% duplicated lines. Weakest area: type safety.

Area Score
Complexity (lizard) 52
Duplication 84
Code smells (Opengrep) 47
Tests and CI 96
Documentation 80
Type safety 0
Process (Scorecard review/maintenance) n/a
  • Functions: 466; mean complexity 3.2, 90th percentile 7; 9 complex and 2 long functions
  • Duplicated lines: 2.8% of 4,882 compared
  • Tests: 2,777 test lines for 6,649 source lines (ratio 0.42); CI test commands: pytest; 34% of recent source commits also change tests
  • Docs missing or thin: changelog

Most complex functions:

Security

Security posture is poor: 73 known vulnerabilities in 8 dependencies; 17 high-severity SAST findings; 17 high-severity workflow issues. Weakest area: posture.

Area Score
Secrets (gitleaks, tree + history) 100
Static analysis (Opengrep) 48
Vulnerable dependencies (OSV) 41
CI workflows (zizmor) 5
Posture (policy, updates, signing, lockfiles) 0
OpenSSF Scorecard n/a
  • Known vulnerabilities: 73 in 8 packages (critical 1, high 34, medium 29, low 9)

  • Posture checks passed: lockfiles; missing: security policy, dependency updates, signed commits

Top findings

Severity Finding Location
critical osv/GHSA-63hf-3vf5-4wqf: [email protected] (PyPI) is affected by PYSEC-2026-2102, GHSA-63hf-3vf5-4wqf; also in requirements.txt requirements-dev.txt
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] manage.py:106
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] manage.py:120
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] manage.py:149
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'check_call' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] manage.py:231
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] manage.py:403
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'Popen' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] manage.py:419
high opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] server/lyrics.py:320
high opengrep/javascript.lang.security.detect-insecure-websocket: Insecure WebSocket Detected. WebSocket Secure (wss) should be used for all WebSocket connections. [confidence low] spicetify-extension/remoteVolume.js:116
high opengrep/javascript.lang.security.detect-insecure-websocket: Insecure WebSocket Detected. WebSocket Secure (wss) should be used for all WebSocket connections. [confidence low] spicetify-extension/remoteVolume.js:144
high opengrep/javascript.browser.security.insecure-document-method: User controlled data in methods like innerHTML, outerHTML or document.write is an anti-pattern that can lead to XSS vulnerabilities [confidence low] web/obs-widget/obs-script.js:119
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a el.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] web/obs-widget/obs-script.js:119
high opengrep/javascript.browser.security.insecure-document-method: User controlled data in methods like innerHTML, outerHTML or document.write is an anti-pattern that can lead to XSS vulnerabilities [confidence low] web/script.js:173
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a ui.lyricsContent.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] web/script.js:173
high opengrep/javascript.browser.security.insecure-document-method: User controlled data in methods like innerHTML, outerHTML or document.write is an anti-pattern that can lead to XSS vulnerabilities [confidence low] web/script.js:179
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a ui.lyricsContent.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] web/script.js:179
high opengrep/javascript.browser.security.insecure-document-method: User controlled data in methods like innerHTML, outerHTML or document.write is an anti-pattern that can lead to XSS vulnerabilities [confidence low] web/script.js:183
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a ui.lyricsContent.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] web/script.js:183
high osv/GHSA-6mq8-rvhq-8wgg: [email protected] (PyPI) is affected by PYSEC-2026-1101, GHSA-6mq8-rvhq-8wgg; also in requirements.txt requirements-dev.txt
high osv/GHSA-hcc4-c3v8-rx92: [email protected] (PyPI) is affected by PYSEC-2026-2095, GHSA-hcc4-c3v8-rx92; also in requirements.txt requirements-dev.txt
high osv/GHSA-p998-jp59-783m: [email protected] (PyPI) is affected by PYSEC-2026-2097, GHSA-p998-jp59-783m; also in requirements.txt requirements-dev.txt
high osv/GHSA-m5qp-6w8w-w647: [email protected] (PyPI) is affected by PYSEC-2026-2098, GHSA-m5qp-6w8w-w647; also in requirements.txt requirements-dev.txt
high osv/GHSA-jg22-mg44-37j8: [email protected] (PyPI) is affected by PYSEC-2026-2104, GHSA-jg22-mg44-37j8; also in requirements.txt requirements-dev.txt
high osv/GHSA-hg6j-4rv6-33pg: [email protected] (PyPI) is affected by PYSEC-2026-2105, GHSA-hg6j-4rv6-33pg; also in requirements.txt requirements-dev.txt
high osv/GHSA-m6qw-4cw2-hm4m: [email protected] (PyPI) is affected by PYSEC-2026-2106, GHSA-m6qw-4cw2-hm4m; also in requirements.txt requirements-dev.txt

Static signals only: the scorer never runs the project's code. Secret findings are pattern matches that were not verified, and secret values are never stored.

Distribution signals

Signals consistent with a repository that exists to distribute a download. They are heuristics, not a verdict; release files were not downloaded or inspected.

Repository profile

  • Source lines: 6,649; test lines: 2,777
Language Lines
Python 5,859
JavaScript 2,759
TypeScript 808