RepoTrust

Brostoffed/writemark

https://github.com/Brostoffed/writemark · commit ad67772b9dfb · scored 2026-11-13 · scoring prov-4+qual-2+sec-2

RepoTrust ai badge RepoTrust quality badge RepoTrust security badge

Dispute this score or request a re-score Full report JSON

Scores

Pillar Score Signal Confidence Coverage
AI provenance (estimated AI-generated share) 42 explicit 81% 100%
Code quality 73 adequate 90% 100%
Security 57 weak 85% 100%

AI provenance

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

AI tool Attributed commits Lines added
OpenAI Codex 12 12,160

Current source lines last changed by AI-attributed commits: 8,404 of 9,008.

Findings per 1,000 lines AI-attributed Other Ratio
Quality 6.307 0.0 n/a
Security 8.329 3.311 2.52x
Month Lines added Attributed to AI
2026-06 4,467 0%
2026-07 11,471 0%
2026-08 1,994 89%
2026-09 459 100%
2026-10 10,938 91%

Evidence

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 1.26, CI runs tests; 32% of function code in complex or long functions; 2% duplicated lines. Weakest area: complexity.

Area Score
Complexity (lizard) 39
Duplication 89
Code smells (Opengrep) 60
Tests and CI 90
Documentation 85
Type safety 100
Process (Scorecard review/maintenance) n/a

Most complex functions:

Security

Security posture is weak: 19 high-severity SAST findings; 20 high-severity workflow issues. Weakest area: posture.

Area Score
Secrets (gitleaks, tree + history) 97
Static analysis (Opengrep) 33
Vulnerable dependencies (OSV) 100
CI workflows (zizmor) 2
Posture (policy, updates, signing, lockfiles) 0
OpenSSF Scorecard n/a

Top findings

Severity Finding Location
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] src/browser/clipboard.ts:15
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a template.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] src/browser/clipboard.ts:15
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] src/browser/clipboard.ts:21
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a template.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] src/browser/clipboard.ts:21
high opengrep/javascript.express.security.injection.tainted-sql-string: Detected user input used to manually construct a SQL string. This is usually bad practice because manual construction could accidentally result in a SQL injection. An attacker could use a SQL injection to steal or modify contents of the database. Instead, use a parameterized query which is available [confidence medium] src/browser/completions.ts:83
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] src/component/element.ts:539
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a this._shadow.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] src/component/element.ts:539
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] src/component/element.ts:1856
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a this._completionPopup.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] src/component/element.ts:1856
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] src/render/live.ts:126
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a this._preview.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] src/render/live.ts:126
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] src/render/live.ts:134
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a this._preview.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] src/render/live.ts:134
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] src/render/live.ts:211
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a this._liveEditor.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] src/render/live.ts:211
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] src/render/live.ts:265
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a template.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] src/render/live.ts:265
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] src/render/live.ts:525
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a this._liveEditor.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] src/render/live.ts:525
high zizmor/dangerous-triggers: use of fundamentally insecure workflow trigger [confidence medium] .github/workflows/commit-dist.yml:4
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/commit-dist.yml:23
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/commit-dist.yml:27
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/commit-dist.yml:31
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/fuzz.yml:24
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/fuzz.yml:29

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

Language Lines
JavaScript 12,397
TypeScript 7,934

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