{"data":{"skill":{"slug":"googleworkspace-gws-slides","name":"gws-slides","icon":"📦","repo":"https://github.com/googleworkspace/cli/tree/main/skills/gws-slides/","status":"approved","author":"googleworkspace","authorVersion":"0.23.0","skillstoreRevision":2},"audit":{"id":"7db73e8e-b055-4f21-94fd-cf68f952ec84","skill_id":"97ddc263-d928-4507-84e1-e65fea728842","version":7,"content_hash":"v3:286d37c9c189ddd1aafd3548415fb031d1df79d5:69b9f7d285f0c32c94040dd8df0fe3b29b5d3b4a0335c380aeac275680bc7c06:d64c82f7a019e496f2986c1b8ead304060db5e3ece5bb4b2511e98e9e3981380:736b696c6c732f676f6f676c65776f726b73706163652f6777732d736c69646573:ef72f78a81e5f792223ff244c3c913d1","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 12 static findings are false positives caused by Markdown backticks, prose containing request-related words, and a fixed sibling documentation path. No malicious intent, prompt injection, unsafe dynamic command construction, or data exfiltration behavior was found.","remediation":[],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":16,"line_start":16},{"file":"SKILL.md","line_end":20,"line_start":18},{"file":"SKILL.md","line_end":26,"line_start":20},{"file":"SKILL.md","line_end":27,"line_start":26},{"file":"SKILL.md","line_end":27,"line_start":27},{"file":"SKILL.md","line_end":29,"line_start":28},{"file":"SKILL.md","line_end":35,"line_start":29},{"file":"SKILL.md","line_end":41,"line_start":35},{"file":"SKILL.md","line_end":43,"line_start":41},{"file":"SKILL.md","line_end":43,"line_start":43}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":26,"line_start":26}]},{"factor":"filesystem","evidence":[{"file":"SKILL.md","line_end":16,"line_start":16}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":45,"audit_model":"codex","audited_at":"2026-08-05T11:31:29.907+00:00","created_at":"2026-08-06T01:10:44.251855+00:00","static_findings":[{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If mis","category":"external_commands","line_end":16,"severity":"medium","line_start":16},{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":20,"severity":"medium","line_start":18},{"id":"external_commands:SKILL.md:20:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":26,"severity":"medium","line_start":20},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `batchUpdate` — Applies one or more updates to the presentation. Each request is validated before ","category":"external_commands","line_end":27,"severity":"medium","line_start":26},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `create` — Creates a blank presentation using the title given in the request. If a `presentationId","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":"- `get` — Gets the latest version of the specified presentation.","category":"external_commands","line_end":29,"severity":"medium","line_start":28},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `pages` — Operations on the 'pages' resource","category":"external_commands","line_end":35,"severity":"medium","line_start":29},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":41,"severity":"medium","line_start":35},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":43,"severity":"medium","line_start":41},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Use `gws schema` output to build your `--params` and `--json` flags.","category":"external_commands","line_end":43,"severity":"medium","line_start":43},{"id":"network:SKILL.md:26:python-http-libraries","file":"SKILL.md","pattern":"Python HTTP libraries","snippet":"- `batchUpdate` — Applies one or more updates to the presentation. Each request is validated before ","category":"network","line_end":26,"severity":"low","line_start":26},{"id":"filesystem:SKILL.md:16:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"> **PREREQUISITE:** Read `../gws-shared/SKILL.md` for auth, global flags, and security rules. If mis","category":"filesystem","line_end":16,"severity":"high","line_start":16}],"finding_verdicts":[{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","reason":"Line 16 uses Markdown backticks to format a fixed file path and a documented gws command. It contains no Ruby execution or dynamic shell interpolation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","reason":"Line 18 is the opening fence for a Bash example. Markdown fencing does not execute a command or introduce shell interpolation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:20:ruby-shell-backtick-execution","reason":"Line 20 closes the fenced command example. It is Markdown syntax, not Ruby or shell backtick execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","reason":"Line 26 formats the batchUpdate API method name with Markdown backticks. No command is executed and no input reaches a shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:27:ruby-shell-backtick-execution","reason":"Line 27 uses Markdown backticks around create and presentationId identifiers. These are API documentation terms, not executable shell expressions.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","reason":"Line 28 formats the get method name as inline code. It does not contain shell execution or dynamic command construction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:29:ruby-shell-backtick-execution","reason":"Line 29 formats the pages resource name with Markdown backticks. The text only documents an API resource.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","reason":"Line 35 opens a fenced Bash documentation block. The backticks are Markdown delimiters and cannot execute code.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","reason":"Line 41 closes the fenced Bash documentation block. It contains no executable expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","reason":"Line 43 formats gws schema and its flags as inline code. It documents fixed CLI syntax without shell interpolation.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:26:python-http-libraries","reason":"Line 26 is prose describing API requests and replies. It imports no Python HTTP library and contains no network implementation.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:SKILL.md:16:path-traversal-sequence","reason":"Line 16 references a fixed sibling documentation file in the same skill collection. The path is not user-controlled and is not used for filesystem mutation.","verdict":"false_positive","confidence":0.98}],"semantic_findings":[],"subject_marketplace_commit_sha":"286d37c9c189ddd1aafd3548415fb031d1df79d5","subject_content_hash":"69b9f7d285f0c32c94040dd8df0fe3b29b5d3b4a0335c380aeac275680bc7c06","subject_tree_hash":"d64c82f7a019e496f2986c1b8ead304060db5e3ece5bb4b2511e98e9e3981380","subject_plugin_path":"skills/googleworkspace/gws-slides","audit_payload_hash":"ef72f78a81e5f792223ff244c3c913d1","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"286d37c9c189ddd1aafd3548415fb031d1df79d5","contentHash":"69b9f7d285f0c32c94040dd8df0fe3b29b5d3b4a0335c380aeac275680bc7c06","treeHash":"d64c82f7a019e496f2986c1b8ead304060db5e3ece5bb4b2511e98e9e3981380","pluginPath":"skills/googleworkspace/gws-slides","auditPayloadHash":"ef72f78a81e5f792223ff244c3c913d1"},"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/googleworkspace-gws-slides/audits/7/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"safe","confirmedFindingCount":0,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}