{"data":{"skill":{"slug":"reload-apps-citation-draft","name":"citation-draft","icon":"📦","repo":"https://github.com/reload-apps/citation-plugins/tree/d97dd78bc566fcc8b33fe87424d1a09fde6db298/skills/citation-draft","status":"approved","author":"reload-apps","authorVersion":null,"skillstoreRevision":1},"audit":{"id":"485a7cde-4699-4dc0-9bad-18ccbcf4ff9f","skill_id":"df09e911-d25b-4824-bb7c-f66d59f099ce","version":1,"content_hash":"v3:45dcc884ec6fa1961423f1fee8072918692dac22:c92aac8b48aa25f440beb46538548213924cb35cc736679d6690af1f34de2756:48754b52ddc7f08fcf86080b1f85d710eee804d038ab6595ae114144b28dd7a1:736b696c6c732f72656c6f61642d617070732f6369746174696f6e2d6472616674:f600a2127b31ddad96e22a516aea68f2","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 11 static findings are false positives involving Markdown formatting or authorized Citation document operations, not shell substitution or system reconnaissance. The instructions require scoped authentication, preservation of unrelated content, and verification after saving. No evidence found of prompt injection, credential extraction, unauthorized disclosure, or destructive actions in the reviewed files.","remediation":[],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":12,"line_start":12},{"file":"SKILL.md","line_end":18,"line_start":14},{"file":"SKILL.md","line_end":20,"line_start":18},{"file":"SKILL.md","line_end":20,"line_start":20},{"file":"SKILL.md","line_end":28,"line_start":26},{"file":"SKILL.md","line_end":30,"line_start":28},{"file":"SKILL.md","line_end":32,"line_start":30},{"file":"SKILL.md","line_end":32,"line_start":32},{"file":"SKILL.md","line_end":40,"line_start":40}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":3,"total_lines":71,"audit_model":"codex","audited_at":"2026-10-30T23:59:36.812+00:00","created_at":"2026-10-31T01:04:35.626906+00:00","static_findings":[{"id":"external_commands:SKILL.md:12:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Use `list_workspaces`, then `read_document` with `include_content: true`. Read all text pages when n","category":"external_commands","line_end":12,"severity":"medium","line_start":12},{"id":"external_commands:SKILL.md:14:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```sh","category":"external_commands","line_end":18,"severity":"medium","line_start":14},{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","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":"Retain the returned `version` and the editor `content`. Preserve headings, marks and citation nodes.","category":"external_commands","line_end":20,"severity":"medium","line_start":20},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"For a new requested draft, use `create_draft` with a title and text or valid editor content. For a r","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":"```sh","category":"external_commands","line_end":30,"severity":"medium","line_start":28},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":32,"severity":"medium","line_start":30},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Generate `REQUEST_UUID` once with `citation request-id`. Direct MCP uses `update_draft` with `docume","category":"external_commands","line_end":32,"severity":"medium","line_start":32},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Read the saved draft again with content and compare the relevant text and citation IDs. Run `check_c","category":"external_commands","line_end":40,"severity":"medium","line_start":40},{"id":"blocker:SKILL.md:26:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"For a new requested draft, use `create_draft` with a title and text or valid editor content. For a r","category":"blocker","line_end":26,"severity":"low","line_start":26},{"id":"blocker:SKILL.md:29:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"citation documents update DOCUMENT_ID --version VERSION --content-file revised-content.json --reques","category":"blocker","line_end":29,"severity":"low","line_start":29}],"finding_verdicts":[{"id":"external_commands:SKILL.md:12:ruby-shell-backtick-execution","reason":"Line 12 uses Markdown inline backticks to name MCP tools and parameters. These are document and source reads, not executable shell substitutions.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:14:ruby-shell-backtick-execution","reason":"Lines 14-18 form a Markdown shell example for authentication status and document or source reads. No shell backtick substitution occurs.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","reason":"Line 18 closes a Markdown code fence; line 20 formats editor field names as inline code. Neither construct executes shell or Ruby code.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:20:ruby-shell-backtick-execution","reason":"Line 20 marks version and content as field names using Markdown backticks. It requires preserving editor nodes and respecting editing restrictions, not executing commands.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","reason":"Line 26 names create_draft as inline Markdown and describes saving revised editor JSON locally. Line 28 opens a code fence, not shell substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","reason":"Lines 28-30 fence a Citation update command using document, version, content-file, and request-ID placeholders. The operation is scoped to requested edits, with no backtick execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","reason":"Line 30 closes the shell example; line 32 formats request-ID generation and MCP parameter names as Markdown code. No shell substitution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","reason":"Line 32 documents request-ID generation and update_draft parameters using inline backticks. These support authorized saves and do not contain executable backtick syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","reason":"Line 40 names citation checks and a returned URL field with Markdown backticks. These are post-save verification steps, not shell command substitution.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:26:system-reconnaissance","reason":"Line 26 describes creating a requested draft or preparing revised editor JSON. It does not enumerate system properties, processes, credentials, or host information.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:29:system-reconnaissance","reason":"Line 29 updates a specified Citation document with version and request-ID safeguards. It performs no host discovery or system reconnaissance.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[],"subject_marketplace_commit_sha":"45dcc884ec6fa1961423f1fee8072918692dac22","subject_content_hash":"c92aac8b48aa25f440beb46538548213924cb35cc736679d6690af1f34de2756","subject_tree_hash":"48754b52ddc7f08fcf86080b1f85d710eee804d038ab6595ae114144b28dd7a1","subject_plugin_path":"skills/reload-apps/citation-draft","audit_payload_hash":"f600a2127b31ddad96e22a516aea68f2","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"45dcc884ec6fa1961423f1fee8072918692dac22","contentHash":"c92aac8b48aa25f440beb46538548213924cb35cc736679d6690af1f34de2756","treeHash":"48754b52ddc7f08fcf86080b1f85d710eee804d038ab6595ae114144b28dd7a1","pluginPath":"skills/reload-apps/citation-draft","auditPayloadHash":"f600a2127b31ddad96e22a516aea68f2"},"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/reload-apps-citation-draft/audits/1/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}}