RepoTrust

Leaderboard github.com

RAIT-09/obsidian-agent-client

Bring AI agents into Obsidian via Agent Client Protocol (ACP), such as Claude Code, Codex and Gemini CLI.

  • View repository ↗
  • TypeScript
  • ★ 2,470
  • commit 3d069c916365
  • scored 2026-11-14
  • scoring prov-4+qual-2+sec-2

AI provenance

2%

explicit

Confidence
95%
Coverage
100%

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

Code quality

72/100

adequate

Confidence
90%
Coverage
100%

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

Security

53/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) 2 explicit 95% 100%
Code quality 72 adequate 90% 100%
Security 53 weak 85% 100%

AI provenance

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

  • Explicitly attributed share (lower bound): 1.5%
  • Unattributed share in AI-consistent velocity bursts: 19.2%
  • Estimated AI-generated share: 1.5%
AI tool Attributed commits Lines added
GitHub Copilot coding agent 16 282
Claude Code 11 580
OpenAI Codex 1 190
  • AI tooling configured in repo: claude-code, gemini, generic-agent, github-copilot

Current source lines last changed by AI-attributed commits: 132 of 27,032.

Too few lines in one group to compare finding densities.

  • Stylometry index: 0.13 per 1,000 lines (narrated steps 0, placeholders 0, assistant phrasing 0, emoji 7). Reported as a signal, not scored.
Month Lines added Attributed to AI
2025-10 8,362 0%
2025-11 5,729 0%
2025-12 2,363 13%
2026-01 11,234 3%
2026-02 4,176 1%
2026-03 14,575 0%
2026-04 2,571 14%
2026-05 4,499 0%
2026-06 3,179 0%
2026-07 4,347 0%
2026-08 2,457 0%
2026-09 244 0%

Evidence

  • Claude Code: trailer 'Co-Authored-By: Claude' (26bf9442dbf5)
  • Claude Code: trailer 'Co-Authored-By: Claude' (f2eea3827e42)
  • OpenAI Codex: on merged branch (1ba744f235) (cb92f4b6ce91)
  • Claude Code: trailer 'Co-Authored-By: Claude' (a1c3c7d9b4b1)
  • Claude Code: trailer 'Co-Authored-By: Claude' (ca5c0f188ace)
  • Claude Code: trailer 'Co-Authored-By: Claude' (0e2fa4e7bdec)
  • Claude Code: trailer 'Co-Authored-By: Claude' (2170e6f761aa)
  • Claude Code: trailer 'Co-Authored-By: Claude' (45bfee291f11)
  • Claude Code: trailer 'Co-Authored-By: Claude' (8a420a479419)
  • Claude Code: trailer 'Co-Authored-By: Claude' (3fd00c7482a8)
  • Claude Code: trailer 'Co-Authored-By: Claude' (07e087728012)
  • GitHub Copilot coding agent: author copilot-swe-agent[bot] (8d9f0e298575)
  • GitHub Copilot coding agent: author copilot-swe-agent[bot] (991afa4062a5)
  • GitHub Copilot coding agent: author copilot-swe-agent[bot] (0535c11e6dd6)
  • GitHub Copilot coding agent: author copilot-swe-agent[bot] (d7108743bb65)

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

Area Score
Complexity (lizard) 63
Duplication 76
Code smells (Opengrep) 94
Tests and CI 68
Documentation 80
Type safety 40
Process (Scorecard review/maintenance) n/a
  • Functions: 1,425; mean complexity 2.5, 90th percentile 5; 15 complex and 10 long functions
  • Duplicated lines: 4.5% of 18,944 compared
  • Tests: 3,155 test lines for 27,032 source lines (ratio 0.12); CI test commands: npm test; 17% of recent source commits also change tests
  • Docs missing or thin: changelog

Most complex functions:

Security

Security posture is weak: 61 known vulnerabilities in 20 dependencies; 3 high-severity SAST findings; 12 high-severity workflow issues. Weakest area: posture.

Area Score
Secrets (gitleaks, tree + history) 100
Static analysis (Opengrep) 93
Vulnerable dependencies (OSV) 14
CI workflows (zizmor) 11
Posture (policy, updates, signing, lockfiles) 0
OpenSSF Scorecard n/a
  • Known vulnerabilities: 61 in 20 packages (critical 0, high 33, medium 24, low 4)

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

Top findings

Severity Finding Location
high opengrep/javascript.lang.security.audit.spawn-shell-true: Found '$SPAWN' with '{shell: needsShell}'. This is dangerous because this call will spawn the command using a shell process. Doing so propagates current shell settings and variables, which makes it much easier for a malicious actor to execute commands. Use '{shell: false}' instead. [confidence low] src/acp/acp-client.ts:256
high opengrep/javascript.lang.security.detect-child-process: Detected calls to child_process from a function argument config. This could lead to a command injection if the input is user controllable. Try to avoid calls to child_process, and if it is needed ensure user input is correctly sanitized or sandboxed. [confidence low] src/acp/acp-client.ts:256
high opengrep/javascript.lang.security.detect-child-process: Detected calls to child_process from a function argument params. This could lead to a command injection if the input is user controllable. Try to avoid calls to child_process, and if it is needed ensure user input is correctly sanitized or sandboxed. [confidence low] src/acp/terminal-handler.ts:124
high osv/GHSA-g2v6-rqmx-r4w6: @vue/server-renderer@3.5.35 (npm) is affected by GHSA-g2v6-rqmx-r4w6 package-lock.json
high osv/GHSA-3jxr-9vmj-r5cp: brace-expansion@1.1.15 (npm) is affected by GHSA-3jxr-9vmj-r5cp package-lock.json
high osv/GHSA-6j4f-fj2g-mc7p: brace-expansion@1.1.15 (npm) is affected by GHSA-6j4f-fj2g-mc7p package-lock.json
high osv/GHSA-mh99-v99m-4gvg: brace-expansion@1.1.15 (npm) is affected by GHSA-mh99-v99m-4gvg package-lock.json
high osv/GHSA-qhr7-859c-m2p7: brace-expansion@1.1.15 (npm) is affected by GHSA-qhr7-859c-m2p7 package-lock.json
high osv/GHSA-rgw5-rvv9-x895: brace-expansion@1.1.15 (npm) is affected by GHSA-rgw5-rvv9-x895 package-lock.json
high osv/GHSA-3jxr-9vmj-r5cp: brace-expansion@2.1.1 (npm) is affected by GHSA-3jxr-9vmj-r5cp package-lock.json
high osv/GHSA-6j4f-fj2g-mc7p: brace-expansion@2.1.1 (npm) is affected by GHSA-6j4f-fj2g-mc7p package-lock.json
high osv/GHSA-mh99-v99m-4gvg: brace-expansion@2.1.1 (npm) is affected by GHSA-mh99-v99m-4gvg package-lock.json
high osv/GHSA-qhr7-859c-m2p7: brace-expansion@2.1.1 (npm) is affected by GHSA-qhr7-859c-m2p7 package-lock.json
high osv/GHSA-rgw5-rvv9-x895: brace-expansion@2.1.1 (npm) is affected by GHSA-rgw5-rvv9-x895 package-lock.json
high osv/GHSA-3jxr-9vmj-r5cp: brace-expansion@5.0.6 (npm) is affected by GHSA-3jxr-9vmj-r5cp package-lock.json
high osv/GHSA-6j4f-fj2g-mc7p: brace-expansion@5.0.6 (npm) is affected by GHSA-6j4f-fj2g-mc7p package-lock.json
high osv/GHSA-mh99-v99m-4gvg: brace-expansion@5.0.6 (npm) is affected by GHSA-mh99-v99m-4gvg package-lock.json
high osv/GHSA-qhr7-859c-m2p7: brace-expansion@5.0.6 (npm) is affected by GHSA-qhr7-859c-m2p7 package-lock.json
high osv/GHSA-rgw5-rvv9-x895: brace-expansion@5.0.6 (npm) is affected by GHSA-rgw5-rvv9-x895 package-lock.json
high osv/GHSA-4c8g-83qw-93j6: fast-uri@3.1.2 (npm) is affected by GHSA-4c8g-83qw-93j6 package-lock.json
high osv/GHSA-7p8r-x3mc-p8w7: fast-uri@3.1.2 (npm) is affected by GHSA-7p8r-x3mc-p8w7 package-lock.json
high osv/GHSA-f65p-4m7j-42xc: fast-uri@3.1.2 (npm) is affected by GHSA-f65p-4m7j-42xc package-lock.json
high osv/GHSA-fph4-wmhf-6fwf: fast-uri@3.1.2 (npm) is affected by GHSA-fph4-wmhf-6fwf package-lock.json
high osv/GHSA-jqff-g426-hqxp: fast-uri@3.1.2 (npm) is affected by GHSA-jqff-g426-hqxp package-lock.json
high osv/GHSA-qw65-cvwx-89v3: fast-uri@3.1.2 (npm) is affected by GHSA-qw65-cvwx-89v3 package-lock.json

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: 27,032; test lines: 3,155
Language Lines
TypeScript 30,043
JavaScript 95
Shell 49

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