RepoTrust

Leaderboard github.com

hybridgroup/cylon

JavaScript framework for robotics, drones, and the Internet of Things (IoT)

  • View repository ↗
  • JavaScript
  • ★ 4,208
  • commit 0ba0301318fe
  • scored 2026-11-14
  • scoring prov-5+qual-2+sec-2

AI provenance

0%

none-detected

Confidence
65%
Coverage
100%

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

Code quality

78/100

adequate

Confidence
90%
Coverage
100%

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

Security

54/100

weak

Confidence
85%
Coverage
100%

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

AI provenance

0% none-detected

No AI attribution or AI-consistent velocity signals detected.

How the score is built

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

Lines added per month all AI-attributed share

  1. 2013-10840 · 0% AI
  2. 2013-111,433 · 0% AI
  3. 2013-12513 · 0% AI
  4. 2014-01573 · 0% AI
  5. 2014-024,345 · 0% AI
  6. 2014-032,625 · 0% AI
  7. 2014-04885 · 0% AI
  8. 2014-052,003 · 0% AI
  9. 2014-061,660 · 0% AI
  10. 2014-07352 · 0% AI
  11. 2014-08359 · 0% AI
  12. 2014-09681 · 0% AI
  13. 2014-10834 · 0% AI
  14. 2014-111,047 · 0% AI
  15. 2014-121,567 · 0% AI
  16. 2015-01524 · 0% AI
  17. 2015-02950 · 0% AI
  18. 2015-03316 · 0% AI
  19. 2015-04364 · 0% AI
  20. 2015-0531 · 0% AI
  21. 2015-061,330 · 0% AI
  22. 2015-07207 · 0% AI
  23. 2015-09231 · 0% AI
  24. 2015-110 · 0% AI
  25. 2015-120 · 0% AI
  26. 2016-025 · 0% AI
  27. 2016-0330 · 0% AI
  28. 2016-040 · 0% AI
  29. 2016-051 · 0% AI
  30. 2016-0717 · 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
1,124
effective_loc
23,723
tools_detected
0
AI tool configurationok
artifacts
0
tools_configured
0
workflow_agents
0
Commit velocityok
excluded_import_loc
0
flagged_loc
0
flagged_loc_share
0.0%
flagged_units
0
max_loc_per_hour
627.25
measured_loc
23,723
median_loc_per_hour
46.26
pr_timed_units
0
pre_ai_era_burst_loc
0
pre_ai_era_bursts
0
pre_ai_era_measured_loc
23,723
work_units
342
Release velocityok
flagged_releases
0
max_loc_per_day
616.90
releases
42
Coding styleok
count:assistant_voice
0
count:emoji_in_code
0
count:narrated_steps
0
count:placeholder
0
files:assistant_voice
0
files:emoji_in_code
0
files:narrated_steps
0
files:placeholder
0
index
0
lines_scanned
3,502
per_kloc:assistant_voice
0
per_kloc:emoji_in_code
0
per_kloc:narrated_steps
0
per_kloc:placeholder
0

Code quality

78 adequate

Code quality is adequate: test-to-source ratio 0.85, CI runs tests; 4% of function code in complex or long functions; 6% duplicated lines. Weakest area: process.

How the score is built

  • Complexity88
  • Duplication69
  • Lint and smells85
  • Tests and CI90
  • Documentation100
  • Type safetynot measured
  • Review process5

Evidence by analyzer

Complexity (lizard)ok1 item
complex_functions
1
function_nloc
1,931
functions
288
long_functions
0
many_param_functions
0
mean_ccn
1.91
p90_ccn
4
risky_nloc_share
4.2%
Duplication (jscpd)ok6 items
compared_lines
2,082
duplicated_lines
127
duplicated_share
6.1%
files
41
Lintok
category:best-practice
2
category:correctness
1
findings
3
scanned_lines
3,502
weighted_findings
2.25
Tests and CIok2 items
  • CI config: .travis.yml .travis.yml
  • CI runs tests (make ci)
check:ci_present
yes
check:ci_runs_lint
no
check:ci_runs_tests
yes
check:has_tests
yes
check:test_ratio
yes
check:tests_cochange
yes
ci_files
1
cochange_commits
180
cochange_share
48.9%
source_lines
3,502
test_lines
2,966
test_ratio
0.85
Documentationok4 items
  • README.markdown README.markdown
  • LICENSE LICENSE
  • CONTRIBUTING.md CONTRIBUTING.md
  • RELEASES.md RELEASES.md
check:changelog
yes
check:contributing
yes
check:license
yes
check:readme
yes
readme_lines
260
Type safetyskipped

Security

54 weak

Security posture is weak: 0 possible secret(s) in the tree, 1 only in history. Weakest area: posture.

How the score is built

  • Secrets59
  • Static analysis (SAST)90
  • Vulnerable dependenciesnot measured
  • CI workflowsnot measured
  • Security posture0
  • OpenSSF Scorecard25

Evidence by analyzer

OpenSSF Scorecardok9 items
aggregate
2.10
check:Binary-Artifacts
yes
check:Branch-Protection
no
check:CII-Best-Practices
no
check:Code-Review
yes
check:Fuzzing
no
check:License
yes
check:Maintained
no
check:SAST
no
check:Security-Policy
no
Package registriesok
checked
5
declared
5
lookup_errors
0
missing
0
recent
0
Secrets (gitleaks)ok
secrets_current
0
secrets_history
1
secrets_low_confidence
1
secrets_nonprod
10
Static analysis (opengrep)ok
findings
4
findings_high
0
findings_low
0
findings_medium
4
parse_errors
0
scanned_lines
3,502
weighted_findings
1
Dependencies (osv-scanner)skipped
CI workflows (zizmor)skipped
Security postureok1 item
  • package.json has no lockfile alongside it (unpinned dependencies) package.json
check:dependency_updates
no
check:lockfiles
no
check:security_policy
no
check:signed_commits
no
signed_commit_share
0.0%
unpinned_manifests
1
Release downloadsok
binary_assets
0
signals
0
suspicious
0

Findings

7 medium12 low

SeverityRuleLocationMessageTool
medium opengrep/javascript.lang.best-practice.lazy-load-module lib/registry.js:35 Lazy loading can complicate code bundling if care is not taken, also `require`s are run synchronously by Node.js. If they are called from within a function, it may block other requests from being handled at a more critical time. The... Lint
medium opengrep/javascript.lang.best-practice.lazy-load-module lib/registry.js:37 Lazy loading can complicate code bundling if care is not taken, also `require`s are run synchronously by Node.js. If they are called from within a function, it may block other requests from being handled at a more critical time. The... Lint
medium opengrep/javascript.lang.security.audit.detect-non-literal-require lib/api.js:32 Detected the use of require(variable). Calling require with a non-literal argument might allow an attacker to load and run arbitrary code, or access arbitrary files. [confidence low] Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.unsafe-dynamic-method lib/initializer.js:31 Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low] Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.unsafe-dynamic-method lib/initializer.js:44 Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low] Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.detect-non-literal-require lib/registry.js:37 Detected the use of require(variable). Calling require with a non-literal argument might allow an attacker to load and run arbitrary code, or access arbitrary files. [confidence low] Static analysis (opengrep)
medium gitleaks/private-key lib/ssl/server.key:1 Possible private-key secret in history (commit ea022d3880); removed from the current tree but still retrievable Secrets (gitleaks)
low opengrep/javascript.lang.correctness.useless-assignment lib/validator.js:31 `checks.singleObjectSyntax` is assigned twice; the first assignment is useless Lint
low gitleaks/generic-api-key .travis.yml:15 Possible generic-api-key secret in the current tree Secrets (gitleaks)
low gitleaks/generic-api-key examples/arduinos_and_skynet/multiple_arduinos_multiple_skynet_connections.js:9 Possible generic-api-key secret in the current tree (test/docs/example file) Secrets (gitleaks)
low gitleaks/generic-api-key examples/arduinos_and_skynet/multiple_arduinos_one_skynet_connection.js:32 Possible generic-api-key secret in the current tree (test/docs/example file) Secrets (gitleaks)
low gitleaks/generic-api-key examples/leap_skynet/leap_skynet.coffee:6 Possible generic-api-key secret in history (commit 10c5e12f8d); removed from the current tree but still retrievable Secrets (gitleaks)
low gitleaks/generic-api-key examples/multi_platform/one_skynet_connection_controlling_multiple_arduinos.js:21 Possible generic-api-key secret in history (commit 4a3fdf7fec); removed from the current tree but still retrievable Secrets (gitleaks)
low gitleaks/generic-api-key examples/multiple_arduinos.js:21 Possible generic-api-key secret in history (commit 4a3fdf7fec); removed from the current tree but still retrievable Secrets (gitleaks)
low gitleaks/generic-api-key examples/pure-skynet.js:5 Possible generic-api-key secret in history (commit 4a3fdf7fec); removed from the current tree but still retrievable Secrets (gitleaks)
low gitleaks/generic-api-key examples/skynet/skynet-blink.coffee:6 Possible generic-api-key secret in history (commit 10c5e12f8d); removed from the current tree but still retrievable Secrets (gitleaks)
low gitleaks/generic-api-key examples/skynet/skynet-blink.js:12 Possible generic-api-key secret in the current tree (test/docs/example file) Secrets (gitleaks)
low gitleaks/generic-api-key examples/skynet/skynet-blink.litcoffee:15 Possible generic-api-key secret in history (commit 29101a2890); removed from the current tree but still retrievable Secrets (gitleaks)
low gitleaks/generic-api-key examples/skynet/skynet-blink.markdown:19 Possible generic-api-key secret in the current tree (test/docs/example file) Secrets (gitleaks)

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 f1d2b562b4143
Tests and CICode qualityok—0
Type safetyCode qualityskipped—0
CI workflows (zizmor)Securityskipped—0
Dependencies (osv-scanner)Securityskipped—0
Release downloadsSecurityok—0
Security postureSecurityok—0
Package registriesSecurityok—0
Static analysis (opengrep)Securityokopengrep 1.33.1; rules f1d2b562b4144
OpenSSF ScorecardSecurityokscorecard v5.6.00
Secrets (gitleaks)Securityokgitleaks 8.30.112

Score history

Scores from different scoring versions aren't directly comparable.

ScoredCommitScoringAI provenanceQualitySecurity
2026-11-140ba0301318feprov-5+qual-2+sec-20%7854
2026-11-140ba0301318feprov-4+qual-2+sec-20%7854

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/hybridgroup/cylon/ai.svg)](https://repotrust.synapticcyber.com/r/github.com/hybridgroup/cylon/)
[![RepoTrust quality](https://repotrust.synapticcyber.com/badge/github.com/hybridgroup/cylon/quality.svg)](https://repotrust.synapticcyber.com/r/github.com/hybridgroup/cylon/)
[![RepoTrust security](https://repotrust.synapticcyber.com/badge/github.com/hybridgroup/cylon/security.svg)](https://repotrust.synapticcyber.com/r/github.com/hybridgroup/cylon/)
Full text report
  • Repository: https://github.com/hybridgroup/cylon
  • Commit: 0ba0301318fefd337900a121dffef500ca453a09
  • Generated: 2026-11-14T14:52:05+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 none-detected 65% 100%
Code quality 78 adequate 90% 100%
Security 54 weak 85% 100%

AI provenance

No AI attribution or AI-consistent velocity signals detected.

  • Explicitly attributed share (lower bound): 0.0%
  • Unattributed share in AI-consistent velocity bursts: 0.0%
  • Estimated AI-generated share: 0.0%
Month Lines added Attributed to AI
2015-01 524 0%
2015-02 950 0%
2015-03 316 0%
2015-04 364 0%
2015-05 31 0%
2015-06 1,330 0%
2015-07 207 0%
2015-09 231 0%
2016-02 5 0%
2016-03 30 0%
2016-05 1 0%
2016-07 17 0%

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.85, CI runs tests; 4% of function code in complex or long functions; 6% duplicated lines. Weakest area: process.

Area Score
Complexity (lizard) 88
Duplication 69
Code smells (Opengrep) 85
Tests and CI 90
Documentation 100
Type safety n/a
Process (Scorecard review/maintenance) 5
  • Functions: 288; mean complexity 1.9, 90th percentile 4; 1 complex and 0 long functions
  • Duplicated lines: 6.1% of 2,082 compared
  • Tests: 2,966 test lines for 3,502 source lines (ratio 0.85); CI test commands: make ci; 49% of recent source commits also change tests
  • Docs missing or thin: none

Most complex functions:

Security

Security posture is weak: 0 possible secret(s) in the tree, 1 only in history. Weakest area: posture.

Area Score
Secrets (gitleaks, tree + history) 59
Static analysis (Opengrep) 90
Vulnerable dependencies (OSV) n/a
CI workflows (zizmor) n/a
Posture (policy, updates, signing, lockfiles) 0
OpenSSF Scorecard 25
  • Posture checks passed: none; missing: security policy, dependency updates, signed commits, lockfiles
  • OpenSSF Scorecard aggregate: 2.1/10 (published 2026-11-09)

Top findings

Severity Finding Location
medium gitleaks/private-key: Possible private-key secret in history (commit ea022d3880); removed from the current tree but still retrievable lib/ssl/server.key:1
medium opengrep/javascript.lang.security.audit.detect-non-literal-require: Detected the use of require(variable). Calling require with a non-literal argument might allow an attacker to load and run arbitrary code, or access arbitrary files. [confidence low] lib/api.js:32
medium opengrep/javascript.lang.security.audit.unsafe-dynamic-method: Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low] lib/initializer.js:31
medium opengrep/javascript.lang.security.audit.unsafe-dynamic-method: Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low] lib/initializer.js:44
medium opengrep/javascript.lang.security.audit.detect-non-literal-require: Detected the use of require(variable). Calling require with a non-literal argument might allow an attacker to load and run arbitrary code, or access arbitrary files. [confidence low] lib/registry.js:37
low gitleaks/generic-api-key: Possible generic-api-key secret in the current tree (test/docs/example file) examples/skynet/skynet-blink.js:12
low gitleaks/generic-api-key: Possible generic-api-key secret in the current tree (test/docs/example file) examples/arduinos_and_skynet/multiple_arduinos_one_skynet_connection.js:32
low gitleaks/generic-api-key: Possible generic-api-key secret in the current tree (test/docs/example file) examples/skynet/skynet-blink.markdown:19
low gitleaks/generic-api-key: Possible generic-api-key secret in the current tree .travis.yml:15
low gitleaks/generic-api-key: Possible generic-api-key secret in the current tree (test/docs/example file) examples/arduinos_and_skynet/multiple_arduinos_multiple_skynet_connections.js:9
low gitleaks/generic-api-key: Possible generic-api-key secret in history (commit 4a3fdf7fec); removed from the current tree but still retrievable examples/multi_platform/one_skynet_connection_controlling_multiple_arduinos.js:21
low gitleaks/generic-api-key: Possible generic-api-key secret in history (commit 4a3fdf7fec); removed from the current tree but still retrievable examples/multiple_arduinos.js:21
low gitleaks/generic-api-key: Possible generic-api-key secret in history (commit 4a3fdf7fec); removed from the current tree but still retrievable examples/pure-skynet.js:5
low gitleaks/generic-api-key: Possible generic-api-key secret in history (commit 10c5e12f8d); removed from the current tree but still retrievable examples/skynet/skynet-blink.coffee:6
low gitleaks/generic-api-key: Possible generic-api-key secret in history (commit 10c5e12f8d); removed from the current tree but still retrievable examples/leap_skynet/leap_skynet.coffee:6
low gitleaks/generic-api-key: Possible generic-api-key secret in history (commit 29101a2890); removed from the current tree but still retrievable examples/skynet/skynet-blink.litcoffee:15

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,502; test lines: 2,966
Language Lines
JavaScript 6,468