The-Nils/LineMaker
A collection of web-based tools for CNC pen plotting, built for my personal hobby project and 100% generated by AI.
- Repository: https://github.com/The-Nils/LineMaker
- Commit:
ff5aacd5a592c54a65821d14e6a512bd1f743c93 - Generated: 2026-11-13T23:45:47+00:00
- Scorer 0.1.0, scoring prov-4+qual-2+sec-2, report schema v2
Scores
| Pillar | Score | Signal | Confidence | Coverage |
|---|---|---|---|---|
| AI provenance (estimated AI-generated share) | 20 | explicit | 81% | 100% |
| Code quality | 46 | poor | 90% | 100% |
| Security | 63 | weak | 85% | 100% |
AI provenance
Explicit AI attribution on 20% of first-party code added; an estimated 20% including velocity signals.
- Explicitly attributed share (lower bound): 20.3%
- Unattributed share in AI-consistent velocity bursts: 26.6%
- Estimated AI-generated share: 20.3%
| AI tool | Attributed commits | Lines added |
|---|---|---|
| Claude Code | 12 | 3,905 |
- AI tooling configured in repo: gemini
Current source lines last changed by AI-attributed commits: 2,972 of 12,027.
| Findings per 1,000 lines | AI-attributed | Other | Ratio |
|---|---|---|---|
| Quality | 3.365 | 1.988 | 1.69x |
| Security | 11.104 | 1.988 | 5.59x |
- Stylometry index: 0.25 per 1,000 lines (narrated steps 0, placeholders 0, assistant phrasing 0, emoji 6). Reported as a signal, not scored.
| Month | Lines added | Attributed to AI |
|---|---|---|
| 2025-09 | 18,043 | 22% |
| 2025-12 | 1,162 | 0% |
Evidence
- Claude Code: trailer 'Co-Authored-By: Claude' (f56abc70d491)
- Claude Code: trailer 'Co-Authored-By: Claude' (7c3d87ba637d)
- Claude Code: trailer 'Co-Authored-By: Claude' (45c56bbe23f2)
- Claude Code: trailer 'Co-Authored-By: Claude' (ea5748d63f46)
- Claude Code: trailer 'Co-Authored-By: Claude' (2be7e2629b73)
- Claude Code: trailer 'Co-Authored-By: Claude' (18d0146a9e7e)
- Claude Code: trailer 'Co-Authored-By: Claude' (05a9cd17ff42)
- Claude Code: trailer 'Co-Authored-By: Claude' (3adf519a0019)
- Claude Code: trailer 'Co-Authored-By: Claude' (ecd98a34efc1)
- Claude Code: trailer 'Co-Authored-By: Claude' (e95d9376a261)
- Claude Code: trailer 'Co-Authored-By: Claude' (3c4b0c69c62f)
- Claude Code: trailer 'Co-Authored-By: Claude' (6a4bc5ae60cb)
- GEMINI.md (gemini configuration) (GEMINI.md)
- 2,454 lines of first-party code in ~4.0h (614 lines/hour, 1 commit session) (6a6ed45c9ba7)
- 2,308 lines of first-party code in ~4.4h (526 lines/hour, 2 commit session) (f56abc70d491)
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 poor: test-to-source ratio 0.00, no CI test run detected; 8% of function code in complex or long functions; 10% duplicated lines. Weakest area: testing.
| Area | Score |
|---|---|
| Complexity (lizard) | 79 |
| Duplication | 56 |
| Code smells (Opengrep) | 58 |
| Tests and CI | 0 |
| Documentation | 65 |
| Type safety | n/a |
| Process (Scorecard review/maintenance) | n/a |
- Functions: 864; mean complexity 2.6, 90th percentile 6; 7 complex and 3 long functions
- Duplicated lines: 9.6% of 8,409 compared
- Tests: 0 test lines for 12,027 source lines (ratio 0.00); CI test commands: none detected; 0% of recent source commits also change tests
- Docs missing or thin: contributing, changelog
Most complex functions:
- applyConfiguration in hatchmaker/script.js: complexity 34, 65 lines
- generateToolpath in svg2gcode/script.js: complexity 27, 160 lines
- renderPreview in svg2gcode/script.js: complexity 27, 85 lines
- extractGeometry in svg2gcode/script.js: complexity 20, 96 lines
- drawPolyline in gcodeGenerator.js: complexity 19, 40 lines
Security
Security posture is weak: 26 high-severity SAST findings. Weakest area: posture.
| Area | Score |
|---|---|
| Secrets (gitleaks, tree + history) | 100 |
| Static analysis (Opengrep) | 48 |
| Vulnerable dependencies (OSV) | n/a |
| CI workflows (zizmor) | n/a |
| Posture (policy, updates, signing, lockfiles) | 0 |
| OpenSSF Scorecard | n/a |
- Posture checks passed: none; missing: security policy, dependency updates, signed commits, lockfiles
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] |
fieldlines/script.js:458 |
| high | opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a layerItem.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] |
fieldlines/script.js:458 |
| 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] |
hatchmaker/script.js:475 |
| high | opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a row.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] |
hatchmaker/script.js:475 |
| 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] |
kaleidoscope/script.js:317 |
| high | opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a layerItem.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] |
kaleidoscope/script.js:317 |
| 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] |
moiremaker/script.js:260 |
| high | opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a title.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] |
moiremaker/script.js:260 |
| 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] |
moiremaker/script.js:278 |
| high | opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a offsetXRow.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] |
moiremaker/script.js:278 |
| 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] |
moiremaker/script.js:289 |
| high | opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a offsetYRow.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] |
moiremaker/script.js:289 |
| 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] |
moiremaker/script.js:300 |
| high | opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a angleRow.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] |
moiremaker/script.js:300 |
| 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] |
moiremaker/script.js:315 |
| high | opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a skewRow.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] |
moiremaker/script.js:315 |
| 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] |
moiremaker/script.js:326 |
| high | opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a lineSpacingRow.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] |
moiremaker/script.js:326 |
| 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] |
moiremaker/script.js:338 |
| high | opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a whitePointRow.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] |
moiremaker/script.js:338 |
| 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] |
moiremaker/script.js:348 |
| high | opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a colorRow.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] |
moiremaker/script.js:348 |
| 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] |
moiremaker/script.js:912 |
| high | opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a layer.group.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] |
moiremaker/script.js:912 |
| 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] |
pipemaze/script.js:1526 |
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: 12,027; test lines: 0
| Language | Lines |
|---|---|
| JavaScript | 12,027 |