{"data":{"skill":{"slug":"inferen-sh-p-image","name":"p-image","icon":"📦","repo":"https://github.com/inferen-sh/skills/tree/main/tools/image/p-image/","status":"approved","author":"inferen-sh","authorVersion":null,"skillstoreRevision":2},"audit":{"id":"c59b30c2-cc44-478d-b8f2-adc45aa73d5b","skill_id":"38417311-9ea2-4275-b92d-fd4370ac0e45","version":5,"content_hash":"v3:4121de961d1b6f2ffca856260e239505c302452c:215b15db2fddf4189a9a1dd395576d4b30880dcfccd443e14cef899e8c645b83:f528b3468fc6ec7b4b5f47e94d04996a1503071fd0ad7ae8673d2021c0096130:736b696c6c732f696e666572656e2d73682f702d696d616765:51a3bd4a428c72d8f70df52e3fef95ff","risk_level":"high","is_blocked":false,"safe_to_publish":false,"analysis_status":"ok","agent_auto_install_policy":"confirmation_required","manual_install_policy":"allowed","summary":"Most static detections are Markdown backticks, fenced examples, or documentation links and are false positives. Unpinned skill installation commands and remote image loading remain real risks. The command templates also require safeguards against shell injection and disclosure of sensitive prompts or image URLs.","remediation":[{"issue":"Prompt text and image URLs may be inserted into single-quoted shell arguments.","severity":"high","suggestion":"Require shell-safe JSON serialization and prohibit raw concatenation of user values into command strings."},{"issue":"The skill recommends unpinned npx installation commands.","severity":"medium","suggestion":"Pin installers and referenced skills to reviewed immutable versions or commits, and document the exact source."},{"issue":"Image prompts and source URLs are submitted to a hosted inference service.","severity":"medium","suggestion":"Warn users before transmission and advise them to exclude secrets, private URLs, and regulated content."},{"issue":"The Markdown preview loads an image from a remote inference.sh host.","severity":"low","suggestion":"Bundle a reviewed local image or document that previews may contact the remote host."}],"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":32,"line_start":23},{"file":"SKILL.md","line_end":33,"line_start":32},{"file":"SKILL.md","line_end":34,"line_start":33},{"file":"SKILL.md","line_end":35,"line_start":34},{"file":"SKILL.md","line_end":41,"line_start":35},{"file":"SKILL.md","line_end":46,"line_start":41},{"file":"SKILL.md","line_end":52,"line_start":46},{"file":"SKILL.md","line_end":57,"line_start":52},{"file":"SKILL.md","line_end":59,"line_start":57},{"file":"SKILL.md","line_end":59,"line_start":59},{"file":"SKILL.md","line_end":68,"line_start":63},{"file":"SKILL.md","line_end":72,"line_start":68},{"file":"SKILL.md","line_end":77,"line_start":72},{"file":"SKILL.md","line_end":81,"line_start":77},{"file":"SKILL.md","line_end":86,"line_start":81},{"file":"SKILL.md","line_end":88,"line_start":86},{"file":"SKILL.md","line_end":88,"line_start":88},{"file":"SKILL.md","line_end":109,"line_start":94},{"file":"SKILL.md","line_end":113,"line_start":109},{"file":"SKILL.md","line_end":115,"line_start":113},{"file":"SKILL.md","line_end":119,"line_start":115},{"file":"SKILL.md","line_end":131,"line_start":119},{"file":"SKILL.md","line_end":133,"line_start":131}]},{"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":66,"line_start":66},{"file":"SKILL.md","line_end":75,"line_start":75},{"file":"SKILL.md","line_end":137,"line_start":137},{"file":"SKILL.md","line_end":138,"line_start":138},{"file":"SKILL.md","line_end":139,"line_start":139}]}],"critical_findings":[],"high_findings":[{"title":"Shell Injection Through Prompt Interpolation","locations":[{"file":"SKILL.md","line_end":45,"line_start":41},{"file":"SKILL.md","line_end":56,"line_start":52},{"file":"SKILL.md","line_end":67,"line_start":63},{"file":"SKILL.md","line_end":76,"line_start":72},{"file":"SKILL.md","line_end":85,"line_start":81}],"confidence":0.87,"description":"Examples place prompts and image URLs inside single-quoted shell arguments. Unescaped user input can terminate quoting and append commands.","review_kind":"security","source_category":"semantic","source_severity":"high","confidence_reasoning":"The examples establish a repeatable shell template where user-supplied prompts or URLs replace literals. Single quotes inside those values would break the shown quoting boundary."}],"medium_findings":[{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":7,"line_start":7}],"confidence":0.9,"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 directs users to run an unpinned npx installer that can download executable code and add a third-party skill. This creates a supply-chain risk."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":131,"line_start":119}],"confidence":0.94,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"This block directs users to run several unpinned npx skill installers from remote repositories. Mutable dependencies can introduce unreviewed instructions or code."},{"title":"Remote Submission of User Content","locations":[{"file":"SKILL.md","line_end":22,"line_start":19},{"file":"SKILL.md","line_end":76,"line_start":63}],"confidence":0.94,"description":"The belt commands send prompts and referenced image URLs to hosted Pruna applications, potentially exposing sensitive content to an external service.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The skill states that belt uses inference.sh and the commands submit prompts and image references to hosted app identifiers. Remote processing is the documented purpose."}],"low_findings":[{"title":"Hardcoded URL","locations":[{"file":"SKILL.md","line_end":13,"line_start":13}],"confidence":0.96,"description":"![P-Image Generation](https://cloud.inference.sh/app/files/u/4mg21r6ta37mpaz6ktzwtt8krr/01kkgym0yqys","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"The embedded Markdown image can trigger an automatic request to cloud.inference.sh when the skill is rendered. That request exposes viewer network metadata to the remote host."},{"title":"Hardcoded URL","locations":[{"file":"SKILL.md","line_end":17,"line_start":17}],"confidence":0.84,"description":"> Requires inference.sh CLI (`belt`). [Install instructions](https://raw.githubusercontent.com/infer","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"The installation link targets a mutable raw file on the main branch. Its instructions can change after review and influence users to execute new installation steps."}],"dangerous_patterns":[],"files_scanned":1,"total_lines":141,"audit_model":"codex","audited_at":"2026-08-06T10:46:49.709+00:00","created_at":"2026-08-07T03:05:41.470238+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":32,"severity":"medium","line_start":23},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| P-Image | `pruna/p-image` | Fast text-to-image, multiple aspect ratios |","category":"external_commands","line_end":33,"severity":"medium","line_start":32},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| P-Image-LoRA | `pruna/p-image-lora` | Custom styles with preset LoRAs |","category":"external_commands","line_end":34,"severity":"medium","line_start":33},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| P-Image-Edit | `pruna/p-image-edit` | Image editing with multi-image support |","category":"external_commands","line_end":35,"severity":"medium","line_start":34},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| P-Image-Edit-LoRA | `pruna/p-image-edit-lora` | Stylized image editing |","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":"```bash","category":"external_commands","line_end":46,"severity":"medium","line_start":41},{"id":"external_commands:SKILL.md:46:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":52,"severity":"medium","line_start":46},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":57,"severity":"medium","line_start":52},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":59,"severity":"medium","line_start":57},{"id":"external_commands:SKILL.md:59:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Available presets: `photos-realism`, `pixel-art`, `japanese-modern-look`, `cinematic-movie-style`, `","category":"external_commands","line_end":59,"severity":"medium","line_start":59},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":68,"severity":"medium","line_start":63},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":72,"severity":"medium","line_start":68},{"id":"external_commands:SKILL.md:72:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":77,"severity":"medium","line_start":72},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":81,"severity":"medium","line_start":77},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":86,"severity":"medium","line_start":81},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":88,"severity":"medium","line_start":86},{"id":"external_commands:SKILL.md:88:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Supported ratios: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `3:2`, `2:3`, or `custom` with width/height","category":"external_commands","line_end":88,"severity":"medium","line_start":88},{"id":"external_commands:SKILL.md:94:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":109,"severity":"medium","line_start":94},{"id":"external_commands:SKILL.md:109:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":113,"severity":"medium","line_start":109},{"id":"external_commands:SKILL.md:113:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":115,"severity":"medium","line_start":113},{"id":"external_commands:SKILL.md:115:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","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":"```bash","category":"external_commands","line_end":131,"severity":"medium","line_start":119},{"id":"external_commands:SKILL.md:131:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":133,"severity":"medium","line_start":131},{"id":"network:SKILL.md:11:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"Generate images with Pruna's optimized P-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":"![P-Image Generation](https://cloud.inference.sh/app/files/u/4mg21r6ta37mpaz6ktzwtt8krr/01kkgym0yqys","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:66:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"images\": [\"https://your-image.jpg\"]","category":"network","line_end":66,"severity":"low","line_start":66},{"id":"network:SKILL.md:75:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"images\": [\"https://img1.jpg\", \"https://img2.jpg\", \"https://img3.jpg\"]","category":"network","line_end":75,"severity":"low","line_start":75},{"id":"network:SKILL.md:137: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":137,"severity":"low","line_start":137},{"id":"network:SKILL.md:138:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Image Generation Example](https://inference.sh/docs/examples/image-generation) - Complete image g","category":"network","line_end":138,"severity":"low","line_start":138},{"id":"network:SKILL.md:139: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":139,"severity":"low","line_start":139}],"finding_verdicts":[{"id":"external_commands:SKILL.md:7:ruby-shell-backtick-execution","reason":"Line 7 directs users to run an unpinned npx installer that can download executable code and add a third-party skill. This creates a supply-chain risk.","verdict":"confirmed","severity":"medium","confidence":0.9},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","reason":"The backticks only format the belt executable name in prose. No shell command is executed by this text.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:19:ruby-shell-backtick-execution","reason":"This fenced example uses fixed belt subcommands and a literal JSON payload for the documented image service. It contains no Ruby execution or dynamic shell expansion.","verdict":"false_positive","confidence":0.91},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","reason":"Line 23 is only the closing marker of a Markdown code fence. It cannot execute a command.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","reason":"The backticks format a model identifier inside a Markdown table. They are not shell execution syntax in this context.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"The backticks format a model identifier inside a Markdown table. They do not invoke Ruby or a shell.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","reason":"The backticks format a model identifier inside a Markdown table. No executable expression is present.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:35:ruby-shell-backtick-execution","reason":"The backticks format a model identifier inside a Markdown table. This is inert documentation.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","reason":"The fenced example calls the expected belt app with fixed arguments and literal JSON. The shown command has no command substitution or Ruby execution.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:46:ruby-shell-backtick-execution","reason":"Line 46 is only a Markdown code-fence terminator. It is not an executable backtick expression.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","reason":"The fenced example invokes a documented belt app with fixed parameters and a literal preset. No dynamic shell feature is used.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:57:ruby-shell-backtick-execution","reason":"Line 57 closes a Markdown code fence. It does not execute the enclosed text.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:59:ruby-shell-backtick-execution","reason":"The backticks format allowed preset names in prose. These names are not evaluated by a shell.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","reason":"The example uses the intended belt app with a literal prompt and placeholder URL. The displayed command has no command substitution.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","reason":"Line 68 is a Markdown fence terminator rather than Ruby or shell backtick execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:72:ruby-shell-backtick-execution","reason":"The example calls the intended editing app with literal JSON and placeholder image URLs. It contains no dynamic command execution.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:77:ruby-shell-backtick-execution","reason":"Line 77 only closes a Markdown code block. It has no execution semantics.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:81:ruby-shell-backtick-execution","reason":"The fenced example invokes the documented belt app with fixed arguments and literal JSON. No shell expansion is shown.","verdict":"false_positive","confidence":0.92},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","reason":"Line 86 is an inert Markdown code-fence terminator.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:88:ruby-shell-backtick-execution","reason":"The backticks format supported aspect-ratio values. They are documentation literals, not executable expressions.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:94:ruby-shell-backtick-execution","reason":"The code block lists fixed belt invocations for documented Pruna apps. It does not use command substitution, variables, or Ruby execution.","verdict":"false_positive","confidence":0.93},{"id":"external_commands:SKILL.md:109:ruby-shell-backtick-execution","reason":"Line 109 only closes a Markdown code block and cannot execute a command.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:113:ruby-shell-backtick-execution","reason":"The fenced example lists apps in the fixed pruna namespace through the expected belt CLI. No user-controlled shell syntax appears.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:115:ruby-shell-backtick-execution","reason":"Line 115 is only a Markdown code-fence terminator.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:119:ruby-shell-backtick-execution","reason":"This block directs users to run several unpinned npx skill installers from remote repositories. Mutable dependencies can introduce unreviewed instructions or code.","verdict":"confirmed","severity":"medium","confidence":0.94},{"id":"external_commands:SKILL.md:131:ruby-shell-backtick-execution","reason":"Line 131 only closes the Markdown block containing the preceding commands.","verdict":"false_positive","confidence":1},{"id":"network:SKILL.md:11:hardcoded-url","reason":"This is a visible link to the named service homepage. It does not automatically transmit skill data.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:13:hardcoded-url","reason":"The embedded Markdown image can trigger an automatic request to cloud.inference.sh when the skill is rendered. That request exposes viewer network metadata to the remote host.","verdict":"confirmed","severity":"low","confidence":0.96},{"id":"network:SKILL.md:17:hardcoded-url","reason":"The installation link targets a mutable raw file on the main branch. Its instructions can change after review and influence users to execute new installation steps.","verdict":"confirmed","severity":"low","confidence":0.84},{"id":"network:SKILL.md:66:hardcoded-url","reason":"This is an obvious placeholder image URL in an example payload. It identifies no real host or destination.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:75:hardcoded-url","reason":"These are placeholder image URLs used to illustrate multi-image input. They do not reference an operational endpoint.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:137:hardcoded-url","reason":"This is a visible first-party documentation link for the service used by the skill. Access requires an explicit user action.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:138:hardcoded-url","reason":"This is a visible first-party documentation link to an image-generation guide. It does not automatically send user content.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:139:hardcoded-url","reason":"This is a visible first-party documentation link about streaming. It is not hidden network behavior.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[{"title":"Shell Injection Through Prompt Interpolation","severity":"high","locations":[{"file":"SKILL.md","line_end":45,"line_start":41},{"file":"SKILL.md","line_end":56,"line_start":52},{"file":"SKILL.md","line_end":67,"line_start":63},{"file":"SKILL.md","line_end":76,"line_start":72},{"file":"SKILL.md","line_end":85,"line_start":81}],"confidence":0.87,"description":"Examples place prompts and image URLs inside single-quoted shell arguments. Unescaped user input can terminate quoting and append commands.","confidence_reasoning":"The examples establish a repeatable shell template where user-supplied prompts or URLs replace literals. Single quotes inside those values would break the shown quoting boundary."},{"title":"Remote Submission of User Content","severity":"medium","locations":[{"file":"SKILL.md","line_end":22,"line_start":19},{"file":"SKILL.md","line_end":76,"line_start":63}],"confidence":0.94,"description":"The belt commands send prompts and referenced image URLs to hosted Pruna applications, potentially exposing sensitive content to an external service.","confidence_reasoning":"The skill states that belt uses inference.sh and the commands submit prompts and image references to hosted app identifiers. Remote processing is the documented purpose."}],"subject_marketplace_commit_sha":"4121de961d1b6f2ffca856260e239505c302452c","subject_content_hash":"215b15db2fddf4189a9a1dd395576d4b30880dcfccd443e14cef899e8c645b83","subject_tree_hash":"f528b3468fc6ec7b4b5f47e94d04996a1503071fd0ad7ae8673d2021c0096130","subject_plugin_path":"skills/inferen-sh/p-image","audit_payload_hash":"51a3bd4a428c72d8f70df52e3fef95ff","confirmed_risk_level":"high","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"4121de961d1b6f2ffca856260e239505c302452c","contentHash":"215b15db2fddf4189a9a1dd395576d4b30880dcfccd443e14cef899e8c645b83","treeHash":"f528b3468fc6ec7b4b5f47e94d04996a1503071fd0ad7ae8673d2021c0096130","pluginPath":"skills/inferen-sh/p-image","auditPayloadHash":"51a3bd4a428c72d8f70df52e3fef95ff"},"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-p-image/audits/5/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"high","confirmedFindingCount":2,"capabilityReviewCount":4,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"confirmation_required","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}