Why this verdict
- suspicious: finding skill:.claude/skills/gitnexus/gitnexus-guide:.claude/skills/gitnexus/gitnexus-guide/SKILL.md:18:EXEC
Security findings 1
Code execution
highContextual riskmedium confidenceThe skill's reference workflow instructs the agent to execute `node .gitnexus/run.cjs analyze` in the terminal — a script that lives outside this skill's root, so the agent runs whatever resides at that path at runtime; the behavior is plausibly GitNexus's own stale-index refresh and is described in the guide, but the executed content is not shipped or shown here.
If step 1 warns the index is stale, run `node .gitnexus/run.cjs analyze` in the terminal first
trigger:conditionalvector:instruction
Counter-argument considered
The strongest case against the finding is that the exec is openly declared in the same line (D3) and plausibly GitNexus's own index refresh, but declaration only fails the undeclared gate and open description is not a listed carve-out; the instruction verbatim directs terminal execution of a script not shipped among the shown units, and the rule that a missing file never makes a run instruction harmless or chain-free keeps reach, harm, and chain intact, so the accurately hedged contextual_risk finding stands.
Open questions 2
What the analysis could not settle from the code alone.
[file request .gitnexus/run.cjs] What does the analyze command in this script actually do — is it local indexing only, or does it perform network calls, write outside the repository, or download and execute code?
Code execution
[file request .gitnexus/run.cjs] The gitnexus-guide skill instructs the agent to run `node .gitnexus/run.cjs analyze` when the index is stale. What does this script do when invoked with `analyze` — is it a purely local re-index, or does it download code, read credentials or environment tokens, or send data off-host?
Code execution
Coverage gaps 9
Parts of the artifact the static analysis could not fully examine.
context:unanalyzable_binary binary content is only byte-scanned
demo/tabularis-notebooks.mp4
context:unanalyzable_binary binary content is only byte-scanned
packages/web-ui/src/utils/notebookUndo.ts
context:unanalyzable_binary binary content is only byte-scanned
src-tauri/icons/icon.icns
context:unanalyzable_binary binary content is only byte-scanned
src-tauri/icons/icon.ico
context:manifest_unparseable yaml: while parsing a flow node
charts/tabularis/templates/deployment.yaml
context:manifest_unparseable yaml: while parsing a flow node
charts/tabularis/templates/ingress.yaml
context:manifest_unparseable yaml: while parsing a flow node
charts/tabularis/templates/pvc.yaml
context:manifest_unparseable yaml: while parsing a flow node
charts/tabularis/templates/secret.yaml
context:manifest_unparseable yaml: while parsing a flow node
charts/tabularis/templates/service.yaml