{"data":{"skill":{"slug":"sickn33-base","name":"base","icon":"📦","repo":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/libreoffice/base","status":"approved","author":"sickn33","authorVersion":null,"skillstoreRevision":2},"audit":{"id":"ad782b39-8484-446d-8d76-7708d028f83e","skill_id":"5fc396d4-5977-4388-a388-e96b7c5479f0","version":5,"content_hash":"v3:5a26d1d61d694db29af9b138c661c1981076d9df:a6f55f766d7a78e5182da07ea91a473ea9b846442a4808dcfd3c8045a71bd232:a5209d39f168d4c41bc0cfc71e16fd9850eb5d34640430c0c192c89a6f7d04f8:736b696c6c732f7369636b6e33332f62617365:4e5e198280eabc07cbe7a50fff9a8c8c","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 20 static findings are false positives caused by Markdown fences, reference links, placeholder connection text, localhost configuration, or unrelated list text. The review identified two separate medium-severity guidance risks: a broad process termination command and a database example that handles a plaintext password without secure-storage guidance. No prompt injection, malicious network activity, or data exfiltration intent was found.","remediation":[{"issue":"The troubleshooting workflow terminates every soffice.bin process for the current user.","severity":"medium","suggestion":"Replace killall with a targeted process check and require user confirmation before terminating a specific LibreOffice process."},{"issue":"The external database example assigns a plaintext password and then stores the database document without discussing credential persistence.","severity":"medium","suggestion":"Use runtime secret input or an approved credential store, and state whether LibreOffice saves credentials inside the ODB document."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":63,"line_start":61},{"file":"SKILL.md","line_end":66,"line_start":63},{"file":"SKILL.md","line_end":81,"line_start":66},{"file":"SKILL.md","line_end":85,"line_start":81},{"file":"SKILL.md","line_end":106,"line_start":85},{"file":"SKILL.md","line_end":121,"line_start":106},{"file":"SKILL.md","line_end":133,"line_start":121},{"file":"SKILL.md","line_end":137,"line_start":133},{"file":"SKILL.md","line_end":140,"line_start":137},{"file":"SKILL.md","line_end":144,"line_start":140},{"file":"SKILL.md","line_end":147,"line_start":144},{"file":"SKILL.md","line_end":163,"line_start":147},{"file":"SKILL.md","line_end":166,"line_start":163}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":176,"line_start":176},{"file":"SKILL.md","line_end":177,"line_start":177},{"file":"SKILL.md","line_end":178,"line_start":178},{"file":"SKILL.md","line_end":179,"line_start":179}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Broad LibreOffice Process Termination","locations":[{"file":"SKILL.md","line_end":164,"line_start":164}],"confidence":0.97,"description":"The troubleshooting example runs killall soffice.bin, which can terminate unrelated LibreOffice sessions and cause loss of unsaved work.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The command explicitly terminates every matching soffice.bin process. Its broad effect is clear even though the stated intent is socket troubleshooting."},{"title":"Unsafe Database Credential Handling Guidance","locations":[{"file":"SKILL.md","line_end":104,"line_start":88}],"confidence":0.82,"description":"The connection example assigns a plaintext password to the data source and stores the document without warning about credential persistence or secret storage.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The example visibly handles a password and then stores the document. Actual persistence can vary, but the missing secret-handling guidance creates a credible exposure risk."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":193,"audit_model":"codex","audited_at":"2026-08-14T09:53:47.031+00:00","created_at":"2026-08-15T04:55:16.411245+00:00","static_findings":[{"id":"external_commands:SKILL.md:61:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":63,"severity":"medium","line_start":61},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":66,"severity":"medium","line_start":63},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":81,"severity":"medium","line_start":66},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":85,"severity":"medium","line_start":81},{"id":"external_commands:SKILL.md:85:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":106,"severity":"medium","line_start":85},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":121,"severity":"medium","line_start":106},{"id":"external_commands:SKILL.md:121:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":133,"severity":"medium","line_start":121},{"id":"external_commands:SKILL.md:133:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":137,"severity":"medium","line_start":133},{"id":"external_commands:SKILL.md:137:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":140,"severity":"medium","line_start":137},{"id":"external_commands:SKILL.md:140:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":144,"severity":"medium","line_start":140},{"id":"external_commands:SKILL.md:144:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":147,"severity":"medium","line_start":144},{"id":"external_commands:SKILL.md:147:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":163,"severity":"medium","line_start":147},{"id":"external_commands:SKILL.md:163:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":166,"severity":"medium","line_start":163},{"id":"network:SKILL.md:176:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [LibreOffice Base Guide](https://documentation.libreoffice.org/)","category":"network","line_end":176,"severity":"low","line_start":176},{"id":"network:SKILL.md:177:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [UNO API Reference](https://api.libreoffice.org/)","category":"network","line_end":177,"severity":"low","line_start":177},{"id":"network:SKILL.md:178:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [HSQLDB Documentation](http://hsqldb.org/)","category":"network","line_end":178,"severity":"low","line_start":178},{"id":"network:SKILL.md:179:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Firebird Documentation](https://firebirdsql.org/)","category":"network","line_end":179,"severity":"low","line_start":179},{"id":"sensitive:SKILL.md:129:sqlite-database-file","file":"SKILL.md","pattern":"SQLite database file","snippet":"sdbc:sqlite:file:///path/to/database.db","category":"sensitive","line_end":129,"severity":"medium","line_start":129},{"id":"blocker:SKILL.md:165:network-reconnaissance","file":"SKILL.md","pattern":"Network reconnaissance","snippet":"soffice --headless --accept=\"socket,host=localhost,port=8100;urp;\"","category":"blocker","line_end":165,"severity":"low","line_start":165},{"id":"blocker:SKILL.md:185:network-reconnaissance","file":"SKILL.md","pattern":"Network reconnaissance","snippet":"- impress","category":"blocker","line_end":186,"severity":"low","line_start":185}],"finding_verdicts":[{"id":"external_commands:SKILL.md:61:ruby-shell-backtick-execution","reason":"Line 61 is an opening Markdown fence for a Bash example. It is not Ruby backtick syntax and does not execute a command by itself.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","reason":"Line 63 is a closing Markdown fence. The backticks format documentation and are not an execution construct.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:66:ruby-shell-backtick-execution","reason":"Line 66 opens a Python code block in Markdown. No Ruby or shell backtick execution occurs.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","reason":"Line 81 closes a Python example with a Markdown fence. The delimiter is documentation syntax, not executable code.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:85:ruby-shell-backtick-execution","reason":"Line 85 is an opening Markdown fence for Python. It does not invoke a shell or evaluate backticks.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","reason":"Line 106 is the closing fence of a Python example. It has no command-execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:121:ruby-shell-backtick-execution","reason":"Line 121 opens a plain-text connection-string block. The Markdown backticks do not execute its contents.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:133:ruby-shell-backtick-execution","reason":"Line 133 closes a documentation block. It is not Ruby or shell backtick execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:137:ruby-shell-backtick-execution","reason":"Line 137 opens a Bash code block using standard Markdown syntax. The fence itself performs no execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:140:ruby-shell-backtick-execution","reason":"Line 140 is a closing Markdown fence. It does not create a shell execution path.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:144:ruby-shell-backtick-execution","reason":"Line 144 opens a Bash installation example. It is a Markdown delimiter rather than an executable backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:147:ruby-shell-backtick-execution","reason":"Line 147 closes the package installation example. The delimiter does not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:163:ruby-shell-backtick-execution","reason":"Line 163 opens a Bash troubleshooting block. The finding detects Markdown fencing, not shell backtick execution.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:176:hardcoded-url","reason":"The URL is a visible reference link to LibreOffice documentation. The skill does not automatically request it or transmit data.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:177:hardcoded-url","reason":"The URL is a visible reference link to the official UNO API documentation. It is not used for an automatic network operation.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:178:hardcoded-url","reason":"The HSQLDB URL appears only as a documentation resource. No code fetches the URL or sends information to it.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:179:hardcoded-url","reason":"The Firebird URL is a user-visible documentation link. It does not establish network behavior within the skill.","verdict":"false_positive","confidence":0.98},{"id":"sensitive:SKILL.md:129:sqlite-database-file","reason":"The SQLite URI contains the explicit placeholder path /path/to/database.db in a connection-string reference. It does not expose or access a real database file.","verdict":"false_positive","confidence":0.98},{"id":"blocker:SKILL.md:165:network-reconnaissance","reason":"The command starts a LibreOffice UNO socket bound to localhost for local automation. It performs no host discovery, port scanning, or remote reconnaissance.","verdict":"false_positive","confidence":0.96},{"id":"blocker:SKILL.md:185:network-reconnaissance","reason":"Line 185 is the word impress in a Related Skills list. It contains no command, network target, or reconnaissance behavior.","verdict":"false_positive","confidence":1}],"semantic_findings":[{"title":"Broad LibreOffice Process Termination","severity":"medium","locations":[{"file":"SKILL.md","line_end":164,"line_start":164}],"confidence":0.97,"description":"The troubleshooting example runs killall soffice.bin, which can terminate unrelated LibreOffice sessions and cause loss of unsaved work.","confidence_reasoning":"The command explicitly terminates every matching soffice.bin process. Its broad effect is clear even though the stated intent is socket troubleshooting."},{"title":"Unsafe Database Credential Handling Guidance","severity":"medium","locations":[{"file":"SKILL.md","line_end":104,"line_start":88}],"confidence":0.82,"description":"The connection example assigns a plaintext password to the data source and stores the document without warning about credential persistence or secret storage.","confidence_reasoning":"The example visibly handles a password and then stores the document. Actual persistence can vary, but the missing secret-handling guidance creates a credible exposure risk."}],"subject_marketplace_commit_sha":"5a26d1d61d694db29af9b138c661c1981076d9df","subject_content_hash":"a6f55f766d7a78e5182da07ea91a473ea9b846442a4808dcfd3c8045a71bd232","subject_tree_hash":"a5209d39f168d4c41bc0cfc71e16fd9850eb5d34640430c0c192c89a6f7d04f8","subject_plugin_path":"skills/sickn33/base","audit_payload_hash":"4e5e198280eabc07cbe7a50fff9a8c8c","confirmed_risk_level":"medium","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"5a26d1d61d694db29af9b138c661c1981076d9df","contentHash":"a6f55f766d7a78e5182da07ea91a473ea9b846442a4808dcfd3c8045a71bd232","treeHash":"a5209d39f168d4c41bc0cfc71e16fd9850eb5d34640430c0c192c89a6f7d04f8","pluginPath":"skills/sickn33/base","auditPayloadHash":"4e5e198280eabc07cbe7a50fff9a8c8c"},"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-base/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}}