{"data":{"skill":{"slug":"sickn33-google-drive-automation","name":"google-drive-automation","icon":"📦","repo":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/google-drive-automation","status":"approved","author":"sickn33","authorVersion":"1.0","skillstoreRevision":2},"audit":{"id":"220283a4-3d26-43be-bc58-d0c296630ebf","skill_id":"a5f2ade1-8876-46f9-bdf5-64b88424bf17","version":5,"content_hash":"v3:88a8e9a07f4c54ab105c1c41b6267c287146b07b:6ff0be802a2c42c3561947d92c4bc655ac650df81361551925bd15229258202b:fbfe74ac264ba981930ed3288abc92af40cdb1a3d8bf68fb49261daf4ceeaa11:736b696c6c732f7369636b6e33332f676f6f676c652d64726976652d6175746f6d6174696f6e:721d226862f8a3c383bac6df48a11382","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 22 static findings are false positives caused by Markdown fences, inline code, and official Google Drive example URLs. The skill still has material risks because referenced scripts are absent and destructive Drive commands lack explicit confirmation controls.","remediation":[{"issue":"The documented authentication and Drive scripts are not included in the package.","severity":"medium","suggestion":"Bundle reviewed scripts, resolve them from the skill directory, and document pinned dependencies before instructing agents to execute them."},{"issue":"Move, rename, and trash operations can modify remote data without an explicit confirmation step.","severity":"medium","suggestion":"Require a preview and user confirmation before every destructive or organizational write operation."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":28,"line_start":26},{"file":"SKILL.md","line_end":31,"line_start":28},{"file":"SKILL.md","line_end":33,"line_start":31},{"file":"SKILL.md","line_end":36,"line_start":33},{"file":"SKILL.md","line_end":38,"line_start":36},{"file":"SKILL.md","line_end":42,"line_start":38},{"file":"SKILL.md","line_end":44,"line_start":42},{"file":"SKILL.md","line_end":71,"line_start":44},{"file":"SKILL.md","line_end":75,"line_start":71},{"file":"SKILL.md","line_end":103,"line_start":75},{"file":"SKILL.md","line_end":111,"line_start":103},{"file":"SKILL.md","line_end":112,"line_start":111},{"file":"SKILL.md","line_end":113,"line_start":112},{"file":"SKILL.md","line_end":114,"line_start":113},{"file":"SKILL.md","line_end":115,"line_start":114},{"file":"SKILL.md","line_end":119,"line_start":115},{"file":"SKILL.md","line_end":120,"line_start":119},{"file":"SKILL.md","line_end":121,"line_start":120},{"file":"SKILL.md","line_end":122,"line_start":121},{"file":"SKILL.md","line_end":138,"line_start":122}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":52,"line_start":52},{"file":"SKILL.md","line_end":113,"line_start":113}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Referenced Executables Are Missing","locations":[{"file":"SKILL.md","line_end":27,"line_start":26},{"file":"SKILL.md","line_end":46,"line_start":42}],"confidence":0.96,"description":"The skill directs agents to run relative scripts/auth.py and scripts/drive.py files, but the package contains only SKILL.md. This can run unrelated workspace files or fail without a trusted implementation.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The package inventory confirms that neither referenced script is bundled. The relative paths have no documented trusted resolution or installation source."},{"title":"Destructive Drive Operations Lack Confirmation","locations":[{"file":"SKILL.md","line_end":102,"line_start":91}],"confidence":0.94,"description":"Move, rename, and trash commands are presented without a mandatory preview or confirmation. An agent could modify remote Drive data from an ambiguous request.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The documented write workflow includes a trash command and other remote mutations. No nearby instruction requires user approval before execution."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":146,"audit_model":"codex","audited_at":"2026-07-24T00:42:26.737+00:00","created_at":"2026-07-26T13:25:25.614171+00:00","static_findings":[{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":28,"severity":"medium","line_start":26},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":31,"severity":"medium","line_start":28},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":33,"severity":"medium","line_start":31},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":36,"severity":"medium","line_start":33},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":38,"severity":"medium","line_start":36},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":42,"severity":"medium","line_start":38},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"All operations via `scripts/drive.py`. Auto-authenticates on first use if not logged in.","category":"external_commands","line_end":44,"severity":"medium","line_start":42},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":71,"severity":"medium","line_start":44},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":75,"severity":"medium","line_start":71},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":103,"severity":"medium","line_start":75},{"id":"external_commands:SKILL.md:103:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":111,"severity":"medium","line_start":103},{"id":"external_commands:SKILL.md:111:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Full-text | `\"quarterly report\"` | Searches file contents and names |","category":"external_commands","line_end":112,"severity":"medium","line_start":111},{"id":"external_commands:SKILL.md:112:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Title | `\"title:budget\"` | Searches file names only |","category":"external_commands","line_end":113,"severity":"medium","line_start":112},{"id":"external_commands:SKILL.md:113:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| URL | `https://drive.google.com/...` | Extracts and uses file/folder ID |","category":"external_commands","line_end":114,"severity":"medium","line_start":113},{"id":"external_commands:SKILL.md:114:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Folder ID | `1ABC123...` | Lists folder contents (25+ char IDs) |","category":"external_commands","line_end":115,"severity":"medium","line_start":114},{"id":"external_commands:SKILL.md:115:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Native query | `mimeType='application/pdf'` | Pass-through Drive query syntax |","category":"external_commands","line_end":119,"severity":"medium","line_start":115},{"id":"external_commands:SKILL.md:119:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Google Drive uses long IDs like `1ABC123xyz_-abc123`. Get IDs from:","category":"external_commands","line_end":120,"severity":"medium","line_start":119},{"id":"external_commands:SKILL.md:120:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `search` results","category":"external_commands","line_end":121,"severity":"medium","line_start":120},{"id":"external_commands:SKILL.md:121:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `find-folder` results","category":"external_commands","line_end":122,"severity":"medium","line_start":121},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `list` results","category":"external_commands","line_end":138,"severity":"medium","line_start":122},{"id":"network:SKILL.md:52:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"python scripts/drive.py search \"https://drive.google.com/drive/folders/1ABC123...\"","category":"network","line_end":52,"severity":"low","line_start":52},{"id":"network:SKILL.md:113:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"| URL | `https://drive.google.com/...` | Extracts and uses file/folder ID |","category":"network","line_end":113,"severity":"low","line_start":113}],"finding_verdicts":[{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","reason":"The detected text is the opening fence of a Markdown bash example. It is documentation syntax, not Ruby or shell backtick execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","reason":"The detected text is a closing Markdown code fence. It does not execute a command or interpolate input.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","reason":"The detected text opens a documented bash example. Markdown fencing is not executable shell backtick syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"The detected text closes a Markdown code block. No command execution occurs at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","reason":"The detected text is a Markdown bash fence used to format a logout example. It is not an execution primitive.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","reason":"The detected text is the closing fence of a documentation example. It cannot invoke a shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","reason":"The backticks format the relative script name as inline Markdown. They are not shell command substitution.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:44:ruby-shell-backtick-execution","reason":"The matched text is an opening Markdown fence for command documentation. The fence itself has no execution behavior.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:71:ruby-shell-backtick-execution","reason":"The detected text closes the documented read-command block. It is Markdown syntax rather than executable backticks.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","reason":"The detected text opens a Markdown block containing write-command examples. The fence itself is not code execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:103:ruby-shell-backtick-execution","reason":"The detected text is a closing Markdown code fence. It contains no executable command substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:111:ruby-shell-backtick-execution","reason":"The backticks format a search phrase inside a Markdown table. They do not invoke an external process.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:112:ruby-shell-backtick-execution","reason":"The backticks mark a title-search example as inline code. This is inert documentation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:113:ruby-shell-backtick-execution","reason":"The backticks format an example Google Drive URL in a table. No shell execution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:114:ruby-shell-backtick-execution","reason":"The backticks format a placeholder Drive folder identifier. They are Markdown delimiters, not command substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:115:ruby-shell-backtick-execution","reason":"The backticks format a Google Drive query example. The text is not evaluated or passed to a shell at this location.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:119:ruby-shell-backtick-execution","reason":"The backticks format a sample Drive identifier in prose. They have no execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:120:ruby-shell-backtick-execution","reason":"The backticks identify the search subcommand in a Markdown list. This is inert inline formatting.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:121:ruby-shell-backtick-execution","reason":"The backticks identify the find-folder subcommand in prose. They do not execute that command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","reason":"The backticks identify the list subcommand in documentation. No shell interpreter processes this Markdown.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:52:hardcoded-url","reason":"This is a placeholder URL on the official drive.google.com domain, used to demonstrate folder ID extraction. It is not an exfiltration endpoint.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:113:hardcoded-url","reason":"This abbreviated official Google Drive URL appears only as a documented input format. It does not initiate a network request.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[{"title":"Referenced Executables Are Missing","severity":"medium","locations":[{"file":"SKILL.md","line_end":27,"line_start":26},{"file":"SKILL.md","line_end":46,"line_start":42}],"confidence":0.96,"description":"The skill directs agents to run relative scripts/auth.py and scripts/drive.py files, but the package contains only SKILL.md. This can run unrelated workspace files or fail without a trusted implementation.","confidence_reasoning":"The package inventory confirms that neither referenced script is bundled. The relative paths have no documented trusted resolution or installation source."},{"title":"Destructive Drive Operations Lack Confirmation","severity":"medium","locations":[{"file":"SKILL.md","line_end":102,"line_start":91}],"confidence":0.94,"description":"Move, rename, and trash commands are presented without a mandatory preview or confirmation. An agent could modify remote Drive data from an ambiguous request.","confidence_reasoning":"The documented write workflow includes a trash command and other remote mutations. No nearby instruction requires user approval before execution."}],"subject_marketplace_commit_sha":"88a8e9a07f4c54ab105c1c41b6267c287146b07b","subject_content_hash":"6ff0be802a2c42c3561947d92c4bc655ac650df81361551925bd15229258202b","subject_tree_hash":"fbfe74ac264ba981930ed3288abc92af40cdb1a3d8bf68fb49261daf4ceeaa11","subject_plugin_path":"skills/sickn33/google-drive-automation","audit_payload_hash":"721d226862f8a3c383bac6df48a11382","confirmed_risk_level":"medium","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"88a8e9a07f4c54ab105c1c41b6267c287146b07b","contentHash":"6ff0be802a2c42c3561947d92c4bc655ac650df81361551925bd15229258202b","treeHash":"fbfe74ac264ba981930ed3288abc92af40cdb1a3d8bf68fb49261daf4ceeaa11","pluginPath":"skills/sickn33/google-drive-automation","auditPayloadHash":"721d226862f8a3c383bac6df48a11382"},"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/sickn33-google-drive-automation/audits/5/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":2,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}