RepoTrust

Leaderboard github.com

danielangelo1/semaninha-lastfm

Site que gera uma colagem com os albuns mais ouvidos em determinado periodo de tempo no LAST FM

  • View repository ↗
  • TypeScript
  • ★ 26
  • commit e54e4aaa8ab0
  • scored 2026-11-14
  • scoring prov-4+qual-2+sec-2

AI provenance

13%

explicit

Confidence
95%
Coverage
100%

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

Code quality

82/100

strong

Confidence
90%
Coverage
100%

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

Security

70/100

weak

Confidence
85%
Coverage
100%

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

Scores

Pillar Score Signal Confidence Coverage
AI provenance (estimated AI-generated share) 13 explicit 95% 100%
Code quality 82 strong 90% 100%
Security 70 weak 85% 100%

AI provenance

Explicit AI attribution on 13% of first-party code added; an estimated 13% including velocity signals.

  • Explicitly attributed share (lower bound): 13.1%
  • Unattributed share in AI-consistent velocity bursts: 0.0%
  • Estimated AI-generated share: 13.1%
AI tool Attributed commits Lines added
Claude Code 29 2,212
GitHub Copilot coding agent 2 1
  • AI tooling configured in repo: github-copilot

Current source lines last changed by AI-attributed commits: 1,512 of 3,437.

Findings per 1,000 lines AI-attributed Other Ratio
Quality 0.0 3.117 0.0x
Security 7.937 0.519 15.29x
  • Stylometry index: 0.29 per 1,000 lines (narrated steps 0, placeholders 0, assistant phrasing 0, emoji 2). Reported as a signal, not scored.
Month Lines added Attributed to AI
2024-04 9 0%
2024-10 1,447 0%
2025-03 60 0%
2025-08 1,187 0%
2025-09 6 0%
2025-11 1,444 0%
2026-01 50 0%
2026-02 89 0%
2026-06 519 0%
2026-09 107 0%
2026-10 527 42%
2026-11 1,991 100%

Evidence

  • Claude Code: trailer 'Co-Authored-By: Claude' (7ebef046cad0)
  • Claude Code: trailer 'Co-Authored-By: Claude' (a5de0f31edd0)
  • Claude Code: trailer 'Co-Authored-By: Claude' (1473c96d37ae)
  • Claude Code: trailer 'Co-Authored-By: Claude' (d80aa6bb3bd1)
  • Claude Code: trailer 'Co-Authored-By: Claude' (54c509d1e668)
  • Claude Code: trailer 'Co-Authored-By: Claude' (f92d499af34d)
  • Claude Code: trailer 'Co-Authored-By: Claude' (e5a79f406518)
  • Claude Code: trailer 'Co-Authored-By: Claude' (7c25ae6004bb)
  • Claude Code: trailer 'Co-Authored-By: Claude' (abdf2c3f476b)
  • Claude Code: trailer 'Co-Authored-By: Claude' (8b4966730176)
  • Claude Code: trailer 'Co-Authored-By: Claude' (fdd94676a47f)
  • Claude Code: trailer 'Co-Authored-By: Claude' (882bf96f2a1f)
  • Claude Code: trailer 'Co-Authored-By: Claude' (337484c573e9)
  • Claude Code: trailer 'Co-Authored-By: Claude' (14dbad00ab12)
  • Claude Code: trailer 'Co-Authored-By: Claude' (f8c2fc19e937)

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 strong: test-to-source ratio 0.36, CI runs tests; 0% of function code in complex or long functions; 3% duplicated lines. Weakest area: docs.

Area Score
Complexity (lizard) 100
Duplication 86
Code smells (Opengrep) 65
Tests and CI 88
Documentation 40
Type safety 100
Process (Scorecard review/maintenance) n/a
  • Functions: 222; mean complexity 1.8, 90th percentile 4; 0 complex and 0 long functions
  • Duplicated lines: 2.6% of 2,369 compared
  • Tests: 1,251 test lines for 3,437 source lines (ratio 0.36); CI test commands: npm run test; 12% of recent source commits also change tests
  • Docs missing or thin: license, contributing, changelog

Security

Security posture is weak: 2 known vulnerabilities in 1 dependencies; 11 high-severity workflow issues. Weakest area: ci actions.

Area Score
Secrets (gitleaks, tree + history) 94
Static analysis (Opengrep) 76
Vulnerable dependencies (OSV) 95
CI workflows (zizmor) 10
Posture (policy, updates, signing, lockfiles) 40
OpenSSF Scorecard n/a
  • Known vulnerabilities: 2 in 1 packages (critical 0, high 0, medium 2, low 0)

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

Top findings

Severity Finding Location
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:22
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:25
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:52
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:55
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:67
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/test.yml:22
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/test.yml:25
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/test.yml:49
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/test.yml:52
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/test.yml:82
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/test.yml:85
medium opengrep/javascript.lang.security.audit.detect-non-literal-regexp: RegExp() called with a attribute function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-contr [confidence low] scripts/prerender.js:65
medium opengrep/javascript.lang.security.audit.detect-non-literal-regexp: RegExp() called with a name function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlled [confidence low] scripts/prerender.js:65
medium opengrep/javascript.lang.security.html-in-template-string: 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). [confidence low] scripts/prerender.js:65
medium opengrep/javascript.lang.security.html-in-template-string: 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). [confidence low] scripts/prerender.js:74
medium opengrep/javascript.lang.security.html-in-template-string: 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). [confidence low] scripts/prerender.js:82
medium opengrep/javascript.browser.security.raw-html-join: User controlled data in a HTML string may result in XSS [confidence low] scripts/prerender.js:86
medium opengrep/javascript.lang.security.html-in-template-string: 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). [confidence low] scripts/prerender.js:87
medium opengrep/javascript.lang.security.html-in-template-string: 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). [confidence low] scripts/prerender.js:88
medium opengrep/javascript.lang.security.html-in-template-string: 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). [confidence low] scripts/prerender.js:90
medium opengrep/javascript.lang.security.html-in-template-string: 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). [confidence low] scripts/prerender.js:100
medium opengrep/javascript.lang.security.html-in-template-string: 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). [confidence low] scripts/prerender.js:104
medium osv/GHSA-337j-9hxr-rhxg: react-router@6.30.6 (npm) is affected by GHSA-337j-9hxr-rhxg package-lock.json
medium osv/GHSA-wrjc-x8rr-h8h6: react-router@6.30.6 (npm) is affected by GHSA-wrjc-x8rr-h8h6 package-lock.json
medium zizmor/dependabot-cooldown: insufficient cooldown in Dependabot updates [confidence high] .github/dependabot.yml:3

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.

Repository profile

  • Source lines: 3,437; test lines: 1,251
Language Lines
TypeScript 4,533
JavaScript 155

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/danielangelo1/semaninha-lastfm/ai.svg)](https://repotrust.synapticcyber.com/r/github.com/danielangelo1/semaninha-lastfm/)
[![RepoTrust quality](https://repotrust.synapticcyber.com/badge/github.com/danielangelo1/semaninha-lastfm/quality.svg)](https://repotrust.synapticcyber.com/r/github.com/danielangelo1/semaninha-lastfm/)
[![RepoTrust security](https://repotrust.synapticcyber.com/badge/github.com/danielangelo1/semaninha-lastfm/security.svg)](https://repotrust.synapticcyber.com/r/github.com/danielangelo1/semaninha-lastfm/)