{"data":{"skill":{"slug":"inferen-sh-nano-banana","name":"nano-banana","icon":"📦","repo":"https://github.com/inferen-sh/skills/tree/main/tools/image/nano-banana/","status":"approved","author":"inferen-sh","authorVersion":null,"skillstoreRevision":2},"audit":{"id":"d13b8245-fed5-4963-8076-76edc1a59727","skill_id":"e45e8fba-06a2-4f5a-9a1d-1c70196e3cda","version":5,"content_hash":"v3:4121de961d1b6f2ffca856260e239505c302452c:492ac8d3e1667e0d083a0b01bd163195a707a6953f09250751f2fde0b26da8d9:37156bd66ad4487376d3760d5fe32e3418f5d468eda3f6412f35e1b3b60a87b0:736b696c6c732f696e666572656e2d73682f6e616e6f2d62616e616e61:a7865a7f02917eee2d282e9e7797e500","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"The skill legitimately invokes the belt CLI and remote Gemini image services, which can transmit prompts and source images externally. Most static findings are Markdown formatting, model identifiers, placeholder URLs, or documentation links without executable behavior.","remediation":[{"issue":"Prompts and source images are sent to external inference services.","severity":"medium","suggestion":"Warn users before transmission and advise them not to submit confidential, regulated, or unlicensed content."},{"issue":"The skill recommends remote skill installation through npx.","severity":"medium","suggestion":"Pin installation references to reviewed versions or immutable commits and require user confirmation before installation."},{"issue":"Generated images and grounded searches may consume paid service credits.","severity":"low","suggestion":"Confirm model, image count, resolution, and search grounding before running billable commands."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":7,"line_start":7},{"file":"SKILL.md","line_end":17,"line_start":17},{"file":"SKILL.md","line_end":23,"line_start":19},{"file":"SKILL.md","line_end":30,"line_start":23},{"file":"SKILL.md","line_end":31,"line_start":30},{"file":"SKILL.md","line_end":35,"line_start":31},{"file":"SKILL.md","line_end":37,"line_start":35},{"file":"SKILL.md","line_end":43,"line_start":37},{"file":"SKILL.md","line_end":47,"line_start":43},{"file":"SKILL.md","line_end":51,"line_start":47},{"file":"SKILL.md","line_end":56,"line_start":51},{"file":"SKILL.md","line_end":60,"line_start":56},{"file":"SKILL.md","line_end":65,"line_start":60},{"file":"SKILL.md","line_end":69,"line_start":65},{"file":"SKILL.md","line_end":74,"line_start":69},{"file":"SKILL.md","line_end":78,"line_start":74},{"file":"SKILL.md","line_end":83,"line_start":78},{"file":"SKILL.md","line_end":87,"line_start":83},{"file":"SKILL.md","line_end":92,"line_start":87},{"file":"SKILL.md","line_end":98,"line_start":92},{"file":"SKILL.md","line_end":99,"line_start":98},{"file":"SKILL.md","line_end":100,"line_start":99},{"file":"SKILL.md","line_end":101,"line_start":100},{"file":"SKILL.md","line_end":102,"line_start":101},{"file":"SKILL.md","line_end":103,"line_start":102},{"file":"SKILL.md","line_end":104,"line_start":103},{"file":"SKILL.md","line_end":118,"line_start":104},{"file":"SKILL.md","line_end":125,"line_start":118},{"file":"SKILL.md","line_end":129,"line_start":125},{"file":"SKILL.md","line_end":138,"line_start":129},{"file":"SKILL.md","line_end":140,"line_start":138}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":11,"line_start":11},{"file":"SKILL.md","line_end":13,"line_start":13},{"file":"SKILL.md","line_end":17,"line_start":17},{"file":"SKILL.md","line_end":72,"line_start":72},{"file":"SKILL.md","line_end":144,"line_start":144},{"file":"SKILL.md","line_end":145,"line_start":145},{"file":"SKILL.md","line_end":146,"line_start":146}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":7,"line_start":7}],"confidence":0.98,"description":"> **Install the belt CLI skill:** `npx skills add belt-sh/cli`","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"Line 7 instructs users to run npx to install a remote skill. This executes third-party package tooling and introduces supply-chain risk."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":23,"line_start":19}],"confidence":0.98,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"Lines 19 through 23 direct the agent to authenticate with belt and run a remote image application. These are intentional external commands with account and service effects."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":47,"line_start":43}],"confidence":0.97,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"Lines 43 through 47 invoke belt to submit a text prompt to a remote Gemini image application. This has network, account, and possible billing effects."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":56,"line_start":51}],"confidence":0.97,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"Lines 51 through 56 invoke belt to request multiple generated images from a remote model. The command may consume service credits and transmit prompt content."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":65,"line_start":60}],"confidence":0.97,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"Lines 60 through 65 execute belt against a remote image model with a supplied prompt and aspect ratio. This creates external service effects."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":74,"line_start":69}],"confidence":0.98,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"Lines 69 through 74 invoke belt and pass an image URL to a remote editing model. The service can retrieve and process user-supplied image content."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":83,"line_start":78}],"confidence":0.97,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"Lines 78 through 83 run belt to request a 4K image from a remote model. The operation can transmit content and consume paid resources."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":92,"line_start":87}],"confidence":0.98,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"Lines 87 through 92 invoke belt with Google Search grounding enabled. This sends prompt content to remote services and may trigger additional data retrieval."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":125,"line_start":118}],"confidence":0.98,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"Lines 118 through 125 run belt, save a sample input file, and submit that file to a remote model. These commands affect local files and external services."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":138,"line_start":129}],"confidence":0.98,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"Lines 129 through 138 recommend three npx commands that install remote skills. Executing third-party installation tooling creates supply-chain and local modification risk."},{"title":"User Content Sent to External Image Services","locations":[{"file":"SKILL.md","line_end":46,"line_start":43},{"file":"SKILL.md","line_end":73,"line_start":69}],"confidence":0.97,"description":"Image generation and editing commands send prompts and source image references to inference.sh and Gemini services. Sensitive content may leave the local environment.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The documented belt app run commands explicitly submit prompts and image URLs to named remote image models."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":148,"audit_model":"codex","audited_at":"2026-08-06T10:40:18.891+00:00","created_at":"2026-08-07T03:05:23.704131+00:00","static_findings":[{"id":"external_commands:SKILL.md:7:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> **Install the belt CLI skill:** `npx skills add belt-sh/cli`","category":"external_commands","line_end":7,"severity":"medium","line_start":7},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> Requires inference.sh CLI (`belt`). [Install instructions](https://raw.githubusercontent.com/infer","category":"external_commands","line_end":17,"severity":"medium","line_start":17},{"id":"external_commands:SKILL.md:19:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":23,"severity":"medium","line_start":19},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":30,"severity":"medium","line_start":23},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Gemini 3 Pro Image | `google/gemini-3-pro-image-preview` | Slower | Best |","category":"external_commands","line_end":31,"severity":"medium","line_start":30},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Gemini 2.5 Flash Image | `google/gemini-2-5-flash-image` | Fast | Excellent |","category":"external_commands","line_end":35,"severity":"medium","line_start":31},{"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":37,"severity":"medium","line_start":35},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":43,"severity":"medium","line_start":37},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":47,"severity":"medium","line_start":43},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":51,"severity":"medium","line_start":47},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":56,"severity":"medium","line_start":51},{"id":"external_commands:SKILL.md:56:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":60,"severity":"medium","line_start":56},{"id":"external_commands:SKILL.md:60:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":65,"severity":"medium","line_start":60},{"id":"external_commands:SKILL.md:65:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":69,"severity":"medium","line_start":65},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":74,"severity":"medium","line_start":69},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":78,"severity":"medium","line_start":74},{"id":"external_commands:SKILL.md:78:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":83,"severity":"medium","line_start":78},{"id":"external_commands:SKILL.md:83:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":87,"severity":"medium","line_start":83},{"id":"external_commands:SKILL.md:87:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":92,"severity":"medium","line_start":87},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":98,"severity":"medium","line_start":92},{"id":"external_commands:SKILL.md:98:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `prompt` | string | **Required.** What to generate or change |","category":"external_commands","line_end":99,"severity":"medium","line_start":98},{"id":"external_commands:SKILL.md:99:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `images` | array | Input images for editing (up to 14) |","category":"external_commands","line_end":100,"severity":"medium","line_start":99},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `num_images` | integer | Number of images to generate |","category":"external_commands","line_end":101,"severity":"medium","line_start":100},{"id":"external_commands:SKILL.md:101:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `aspect_ratio` | string | Output ratio: \"1:1\", \"16:9\", \"9:16\", \"4:3\", \"3:4\", \"auto\" |","category":"external_commands","line_end":102,"severity":"medium","line_start":101},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `resolution` | string | \"1K\", \"2K\", \"4K\" (Gemini 3 Pro only) |","category":"external_commands","line_end":103,"severity":"medium","line_start":102},{"id":"external_commands:SKILL.md:103:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `output_format` | string | Output format for images |","category":"external_commands","line_end":104,"severity":"medium","line_start":103},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `enable_google_search` | boolean | Enable real-time info grounding |","category":"external_commands","line_end":118,"severity":"medium","line_start":104},{"id":"external_commands:SKILL.md:118:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":125,"severity":"medium","line_start":118},{"id":"external_commands:SKILL.md:125:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":129,"severity":"medium","line_start":125},{"id":"external_commands:SKILL.md:129:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":138,"severity":"medium","line_start":129},{"id":"external_commands:SKILL.md:138:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":140,"severity":"medium","line_start":138},{"id":"network:SKILL.md:11:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"Generate images with Google Gemini native image models via [inference.sh](https://inference.sh) CLI.","category":"network","line_end":11,"severity":"low","line_start":11},{"id":"network:SKILL.md:13:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"![Nano Banana](https://cloud.inference.sh/u/33sqbmzt3mrg2xxphnhw5g5ear/01k8d6xa9cwawrvzk9cgtsexfc.pn","category":"network","line_end":13,"severity":"low","line_start":13},{"id":"network:SKILL.md:17:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"> Requires inference.sh CLI (`belt`). [Install instructions](https://raw.githubusercontent.com/infer","category":"network","line_end":17,"severity":"low","line_start":17},{"id":"network:SKILL.md:72:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"images\": [\"https://example.com/landscape.jpg\"]","category":"network","line_end":72,"severity":"low","line_start":72},{"id":"network:SKILL.md:144:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Running Apps](https://inference.sh/docs/apps/running) - How to run apps via CLI","category":"network","line_end":144,"severity":"low","line_start":144},{"id":"network:SKILL.md:145:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Streaming Results](https://inference.sh/docs/api/sdk/streaming) - Real-time progress updates","category":"network","line_end":145,"severity":"low","line_start":145},{"id":"network:SKILL.md:146:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [File Handling](https://inference.sh/docs/api/sdk/files) - Working with images","category":"network","line_end":146,"severity":"low","line_start":146}],"finding_verdicts":[{"id":"external_commands:SKILL.md:7:ruby-shell-backtick-execution","reason":"Line 7 instructs users to run npx to install a remote skill. This executes third-party package tooling and introduces supply-chain risk.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","reason":"Line 17 only formats the belt executable name as inline Markdown and links to installation instructions. It does not contain shell execution.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:19:ruby-shell-backtick-execution","reason":"Lines 19 through 23 direct the agent to authenticate with belt and run a remote image application. These are intentional external commands with account and service effects.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","reason":"The matched text begins with a Markdown fence terminator and continues into descriptive model documentation. It does not execute a command.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:30:ruby-shell-backtick-execution","reason":"Line 30 contains an application identifier formatted as inline code within a Markdown table. It is data, not shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","reason":"Line 31 contains another application identifier in a model comparison table. The nearby opening fence is Markdown formatting only.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","reason":"The example runs a fixed belt search command with a quoted static query. No untrusted interpolation or command injection path is present.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","reason":"The matched range contains Markdown fence boundaries and headings. It has no executable command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","reason":"Lines 43 through 47 invoke belt to submit a text prompt to a remote Gemini image application. This has network, account, and possible billing effects.","verdict":"confirmed","severity":"medium","confidence":0.97},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","reason":"The matched range contains a closing Markdown fence, headings, and an opening fence. It contains no command invocation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","reason":"Lines 51 through 56 invoke belt to request multiple generated images from a remote model. The command may consume service credits and transmit prompt content.","verdict":"confirmed","severity":"medium","confidence":0.97},{"id":"external_commands:SKILL.md:56:ruby-shell-backtick-execution","reason":"The matched range consists of Markdown structure between examples. It does not contain shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:60:ruby-shell-backtick-execution","reason":"Lines 60 through 65 execute belt against a remote image model with a supplied prompt and aspect ratio. This creates external service effects.","verdict":"confirmed","severity":"medium","confidence":0.97},{"id":"external_commands:SKILL.md:65:ruby-shell-backtick-execution","reason":"The matched range contains Markdown fence boundaries and an example heading. No command is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","reason":"Lines 69 through 74 invoke belt and pass an image URL to a remote editing model. The service can retrieve and process user-supplied image content.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","reason":"The matched range only spans Markdown boundaries and the high-resolution example heading. It is not executable.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:78:ruby-shell-backtick-execution","reason":"Lines 78 through 83 run belt to request a 4K image from a remote model. The operation can transmit content and consume paid resources.","verdict":"confirmed","severity":"medium","confidence":0.97},{"id":"external_commands:SKILL.md:83:ruby-shell-backtick-execution","reason":"The matched range contains Markdown fence boundaries and a heading. It does not invoke an external command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:87:ruby-shell-backtick-execution","reason":"Lines 87 through 92 invoke belt with Google Search grounding enabled. This sends prompt content to remote services and may trigger additional data retrieval.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","reason":"The range after line 92 contains Markdown headings and table structure. It includes no shell command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:98:ruby-shell-backtick-execution","reason":"The prompt name is an inline-code parameter label in a documentation table. It is not executed.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:99:ruby-shell-backtick-execution","reason":"The images name is an inline-code parameter label in a documentation table. It is not executed.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","reason":"The num_images name is an inline-code parameter label in a documentation table. It is not executed.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:101:ruby-shell-backtick-execution","reason":"The aspect_ratio name is an inline-code parameter label in a documentation table. It is not executed.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","reason":"The resolution name is an inline-code parameter label in a documentation table. It is not executed.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:103:ruby-shell-backtick-execution","reason":"The output_format name is an inline-code parameter label in a documentation table. It is not executed.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","reason":"The matched range contains a parameter label, prose guidance, and an opening Markdown fence. It contains no shell command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:118:ruby-shell-backtick-execution","reason":"Lines 118 through 125 run belt, save a sample input file, and submit that file to a remote model. These commands affect local files and external services.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:125:ruby-shell-backtick-execution","reason":"The matched range contains a closing Markdown fence, headings, and an opening fence. It does not itself execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:129:ruby-shell-backtick-execution","reason":"Lines 129 through 138 recommend three npx commands that install remote skills. Executing third-party installation tooling creates supply-chain and local modification risk.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:138:ruby-shell-backtick-execution","reason":"The only command in the matched range is a fixed, read-only belt application listing. It has no untrusted arguments or command injection path.","verdict":"false_positive","confidence":0.94},{"id":"network:SKILL.md:11:hardcoded-url","reason":"The URL is a normal hyperlink to the service named by the skill. It does not cause an agent-side request or expose data.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:13:hardcoded-url","reason":"The URL references a public illustrative image in Markdown. There is no evidence of secret transmission or a malicious destination.","verdict":"false_positive","confidence":0.96},{"id":"network:SKILL.md:17:hardcoded-url","reason":"The raw GitHub URL is a documentation link for CLI installation. The link alone does not execute or download content.","verdict":"false_positive","confidence":0.97},{"id":"network:SKILL.md:72:hardcoded-url","reason":"The example.com URL is a reserved placeholder used to demonstrate an input image field. It is not a real user image or suspicious endpoint.","verdict":"false_positive","confidence":0.97},{"id":"network:SKILL.md:144:hardcoded-url","reason":"This is a documentation hyperlink to the declared inference.sh service. It performs no automatic request.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:145:hardcoded-url","reason":"This is a documentation hyperlink about streaming results. It performs no automatic request or data transfer.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:146:hardcoded-url","reason":"This is a documentation hyperlink about file handling. It performs no automatic request or data transfer.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[{"title":"User Content Sent to External Image Services","severity":"medium","locations":[{"file":"SKILL.md","line_end":46,"line_start":43},{"file":"SKILL.md","line_end":73,"line_start":69}],"confidence":0.97,"description":"Image generation and editing commands send prompts and source image references to inference.sh and Gemini services. Sensitive content may leave the local environment.","confidence_reasoning":"The documented belt app run commands explicitly submit prompts and image URLs to named remote image models."}],"subject_marketplace_commit_sha":"4121de961d1b6f2ffca856260e239505c302452c","subject_content_hash":"492ac8d3e1667e0d083a0b01bd163195a707a6953f09250751f2fde0b26da8d9","subject_tree_hash":"37156bd66ad4487376d3760d5fe32e3418f5d468eda3f6412f35e1b3b60a87b0","subject_plugin_path":"skills/inferen-sh/nano-banana","audit_payload_hash":"a7865a7f02917eee2d282e9e7797e500","confirmed_risk_level":"medium","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"4121de961d1b6f2ffca856260e239505c302452c","contentHash":"492ac8d3e1667e0d083a0b01bd163195a707a6953f09250751f2fde0b26da8d9","treeHash":"37156bd66ad4487376d3760d5fe32e3418f5d468eda3f6412f35e1b3b60a87b0","pluginPath":"skills/inferen-sh/nano-banana","auditPayloadHash":"a7865a7f02917eee2d282e9e7797e500"},"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/inferen-sh-nano-banana/audits/5/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":1,"capabilityReviewCount":10,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}