{"data":{"skill":{"slug":"get-convex-convex-expert","name":"convex-expert","icon":"📦","repo":"https://github.com/get-convex/agent-skills/tree/c41ece22681a50d326e54f30d24148a6d46d0c3c/skills/convex-expert","status":"approved","author":"get-convex","authorVersion":null,"skillstoreRevision":1},"audit":{"id":"7b46ec96-2173-4913-baa3-b7818d9ffc2d","skill_id":"243076aa-b77a-4605-ad58-c7dbbcdf88cd","version":1,"content_hash":"v3:d9e5ab86dafd32a1ddde9b8b4fde177589b55b95:dd1023f493d7f914f2875058f003159c59ed7593d3bc37d02eae2c9367a2825e:cadacd7da02a8935fc88f9443cbde3670ce30039b0939913e542d28234fdbeb3:736b696c6c732f6765742d636f6e7665782f636f6e7665782d657870657274:f0a2f207c427846cc9cd87d17aba991c","risk_level":"high","is_blocked":false,"safe_to_publish":false,"analysis_status":"ok","agent_auto_install_policy":"confirmation_required","manual_install_policy":"allowed","summary":"Most detections are Markdown backticks around API names, not shell execution. The verification rule does execute project tools and can deploy code or rewrite local Convex configuration without explicit approval.","remediation":[{"issue":"The workflow can push code to a Convex deployment and create an anonymous deployment without explicit user approval.","severity":"high","suggestion":"Require confirmation before any deployment, anonymous project creation, or change to .env.local."},{"issue":"The npx verification commands may download or execute packages selected from the project environment.","severity":"medium","suggestion":"Use installed, version-pinned project binaries and request confirmation before installing missing packages."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":3,"line_start":3},{"file":"SKILL.md","line_end":24,"line_start":24},{"file":"SKILL.md","line_end":25,"line_start":25},{"file":"SKILL.md","line_end":26,"line_start":26},{"file":"SKILL.md","line_end":27,"line_start":27},{"file":"SKILL.md","line_end":28,"line_start":28},{"file":"SKILL.md","line_end":37,"line_start":37},{"file":"SKILL.md","line_end":38,"line_start":38}]}],"critical_findings":[],"high_findings":[{"title":"Environment file access","locations":[{"file":"SKILL.md","line_end":38,"line_start":38}],"confidence":0.95,"description":"- SELF-VERIFY RULE — before declaring backend work done, verify it compiles and pushes: run `npx tsc","review_kind":"security","source_category":"sensitive","source_severity":"high","confidence_reasoning":"The text acknowledges that the anonymous Convex command can rebind .env.local. This is a concrete local environment configuration change."},{"title":"Environment variant files","locations":[{"file":"SKILL.md","line_end":38,"line_start":38}],"confidence":0.95,"description":"- SELF-VERIFY RULE — before declaring backend work done, verify it compiles and pushes: run `npx tsc","review_kind":"security","source_category":"sensitive","source_severity":"high","confidence_reasoning":"The workflow conditionally enables anonymous mode and states that this operation can rewrite .env.local. That creates a direct environment-file integrity risk."},{"title":"Deployment Without Explicit Approval","locations":[{"file":"SKILL.md","line_end":38,"line_start":38}],"confidence":0.97,"description":"The skill requires pushing changes and permits anonymous deployment creation. This can upload project code and alter cloud state without explicit user confirmation.","review_kind":"security","source_category":"semantic","source_severity":"high","confidence_reasoning":"Line 38 directly requires a successful push and provides commands for authenticated or anonymous deployment. No confirmation step is specified."}],"medium_findings":[{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":38,"line_start":38}],"confidence":0.98,"description":"- SELF-VERIFY RULE — before declaring backend work done, verify it compiles and pushes: run `npx tsc","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The line explicitly directs the agent to run npx commands and push backend changes to a deployment. These commands can execute project tooling and change local or remote state."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":39,"audit_model":"codex","audited_at":"2026-09-07T13:53:26.282+00:00","created_at":"2026-09-08T15:34:44.188015+00:00","static_findings":[{"id":"external_commands:SKILL.md:3:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"description: \"Convex backend specialist. Use this agent for any code inside a `convex/` directory — ","category":"external_commands","line_end":3,"severity":"medium","line_start":3},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Never an unbounded `.collect()` on a table that can grow — use `.withIndex(...)` and `.paginate(pa","category":"external_commands","line_end":24,"severity":"medium","line_start":24},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Index, don't filter — add `.index(...)` in schema.ts for every read path and query it with `.withI","category":"external_commands","line_end":25,"severity":"medium","line_start":25},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- The exact import table — get this wrong and the app fails to deploy: `query`/`mutation`/`action`/`","category":"external_commands","line_end":26,"severity":"medium","line_start":26},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `v.literal(\"exact value\")` for a fixed string/enum member (e.g. `v.union(v.literal(\"open\"), v.lite","category":"external_commands","line_end":27,"severity":"medium","line_start":27},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `\"use node\";` goes only at the top of action-only modules — a file with `\"use node\"` can never als","category":"external_commands","line_end":28,"severity":"medium","line_start":28},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Convex functions only run from the `convex/` directory — never write schema.ts/queries/mutations/a","category":"external_commands","line_end":37,"severity":"medium","line_start":37},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- SELF-VERIFY RULE — before declaring backend work done, verify it compiles and pushes: run `npx tsc","category":"external_commands","line_end":38,"severity":"medium","line_start":38},{"id":"sensitive:SKILL.md:38:environment-file-access","file":"SKILL.md","pattern":"Environment file access","snippet":"- SELF-VERIFY RULE — before declaring backend work done, verify it compiles and pushes: run `npx tsc","category":"sensitive","line_end":38,"severity":"high","line_start":38},{"id":"sensitive:SKILL.md:38:environment-variant-files","file":"SKILL.md","pattern":"Environment variant files","snippet":"- SELF-VERIFY RULE — before declaring backend work done, verify it compiles and pushes: run `npx tsc","category":"sensitive","line_end":38,"severity":"high","line_start":38},{"id":"blocker:SKILL.md:38:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- SELF-VERIFY RULE — before declaring backend work done, verify it compiles and pushes: run `npx tsc","category":"blocker","line_end":38,"severity":"low","line_start":38}],"finding_verdicts":[{"id":"external_commands:SKILL.md:3:ruby-shell-backtick-execution","reason":"The backticks only format the convex/ directory name in Markdown. They do not execute a shell command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:24:ruby-shell-backtick-execution","reason":"The backticks format Convex query method examples such as .collect() and .withIndex(...). The line contains no shell execution instruction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","reason":"The backticks identify TypeScript API methods used for indexing and filtering. They are Markdown code spans, not Ruby or shell syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","reason":"The backticks format JavaScript import names and module paths. No command is executed by this documentation line.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","reason":"The backticks delimit Convex validator examples. The content is TypeScript guidance without a shell command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","reason":"The backticks format the use node directive and function names. They have no command-execution behavior.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","reason":"The backticks only format the convex/ directory path. This line does not ask the agent to invoke a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","reason":"The line explicitly directs the agent to run npx commands and push backend changes to a deployment. These commands can execute project tooling and change local or remote state.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"sensitive:SKILL.md:38:environment-file-access","reason":"The text acknowledges that the anonymous Convex command can rebind .env.local. This is a concrete local environment configuration change.","verdict":"confirmed","severity":"high","confidence":0.95},{"id":"sensitive:SKILL.md:38:environment-variant-files","reason":"The workflow conditionally enables anonymous mode and states that this operation can rewrite .env.local. That creates a direct environment-file integrity risk.","verdict":"confirmed","severity":"high","confidence":0.95},{"id":"blocker:SKILL.md:38:system-reconnaissance","reason":"The whoami command checks only Convex authentication status to choose a documented deployment mode. It does not perform broad host or network reconnaissance.","verdict":"false_positive","confidence":0.96}],"semantic_findings":[{"title":"Deployment Without Explicit Approval","severity":"high","locations":[{"file":"SKILL.md","line_end":38,"line_start":38}],"confidence":0.97,"description":"The skill requires pushing changes and permits anonymous deployment creation. This can upload project code and alter cloud state without explicit user confirmation.","confidence_reasoning":"Line 38 directly requires a successful push and provides commands for authenticated or anonymous deployment. No confirmation step is specified."}],"subject_marketplace_commit_sha":"d9e5ab86dafd32a1ddde9b8b4fde177589b55b95","subject_content_hash":"dd1023f493d7f914f2875058f003159c59ed7593d3bc37d02eae2c9367a2825e","subject_tree_hash":"cadacd7da02a8935fc88f9443cbde3670ce30039b0939913e542d28234fdbeb3","subject_plugin_path":"skills/get-convex/convex-expert","audit_payload_hash":"f0a2f207c427846cc9cd87d17aba991c","confirmed_risk_level":"high","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"d9e5ab86dafd32a1ddde9b8b4fde177589b55b95","contentHash":"dd1023f493d7f914f2875058f003159c59ed7593d3bc37d02eae2c9367a2825e","treeHash":"cadacd7da02a8935fc88f9443cbde3670ce30039b0939913e542d28234fdbeb3","pluginPath":"skills/get-convex/convex-expert","auditPayloadHash":"f0a2f207c427846cc9cd87d17aba991c"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"issued","url":"/api/skills/get-convex-convex-expert/audits/1/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"high","confirmedFindingCount":3,"capabilityReviewCount":1,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"confirmation_required","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}