{"data":{"skill":{"slug":"prime-skills-image-outpainting","name":"image-outpainting","icon":"📦","repo":"https://github.com/prime-skills/runcomfy-agent-skills/tree/fca19ae084c2ae4667f5c8affbb99da5103d5832/image-outpainting","status":"approved","author":"prime-skills","authorVersion":null,"skillstoreRevision":1,"license":"MIT"},"licenseCorrection":null,"audit":{"id":"cab73dd2-8091-41fd-9b00-bebfb4816a41","skill_id":"1d9f8788-806d-4c49-aa6f-90f702331906","version":1,"content_hash":"v3:00df9b2cd39764d369af6d0aa6ba7a955b71e9c0:f1507fa330c210e9d821ec36a9045689ec5dd43d47a9a8bba59d34a0f52b74c4:086c3272b40073a8898f00a6991d091a3ecf7a520c5b6037633f1724bdfdcd34:736b696c6c732f7072696d652d736b696c6c732f696d6167652d6f75747061696e74696e67:f82e4059395707a50dc7fb9b9427f54c","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 61 static alerts are false positives involving Markdown formatting, documentation links, protected token storage, or image-editing prose. A separate shell-quoting flaw breaks the portrait example and makes the blanket shell-safety assurance unreliable. No evidence found of malicious prompt injection or unauthorized data exfiltration; the external CLI implementation was not available for verification.","remediation":[{"issue":"The portrait example embeds an apostrophe inside a single-quoted shell argument, and the security guidance incorrectly rules out shell injection.","severity":"medium","suggestion":"Correct the example and pass serialized JSON through an argument array or a supported non-shell input mechanism. Remove the blanket shell-safety claim."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":6,"line_start":6},{"file":"SKILL.md","line_end":43,"line_start":32},{"file":"SKILL.md","line_end":45,"line_start":43},{"file":"SKILL.md","line_end":53,"line_start":45},{"file":"SKILL.md","line_end":58,"line_start":53},{"file":"SKILL.md","line_end":63,"line_start":58},{"file":"SKILL.md","line_end":64,"line_start":63},{"file":"SKILL.md","line_end":68,"line_start":64},{"file":"SKILL.md","line_end":68,"line_start":68},{"file":"SKILL.md","line_end":75,"line_start":69},{"file":"SKILL.md","line_end":82,"line_start":75},{"file":"SKILL.md","line_end":90,"line_start":82},{"file":"SKILL.md","line_end":94,"line_start":90},{"file":"SKILL.md","line_end":101,"line_start":94},{"file":"SKILL.md","line_end":105,"line_start":101},{"file":"SKILL.md","line_end":105,"line_start":105},{"file":"SKILL.md","line_end":108,"line_start":107},{"file":"SKILL.md","line_end":116,"line_start":108},{"file":"SKILL.md","line_end":119,"line_start":116},{"file":"SKILL.md","line_end":120,"line_start":119},{"file":"SKILL.md","line_end":130,"line_start":120},{"file":"SKILL.md","line_end":133,"line_start":130},{"file":"SKILL.md","line_end":133,"line_start":133},{"file":"SKILL.md","line_end":146,"line_start":145},{"file":"SKILL.md","line_end":152,"line_start":146},{"file":"SKILL.md","line_end":153,"line_start":152},{"file":"SKILL.md","line_end":153,"line_start":153},{"file":"SKILL.md","line_end":173,"line_start":173},{"file":"SKILL.md","line_end":177,"line_start":177},{"file":"SKILL.md","line_end":178,"line_start":178},{"file":"SKILL.md","line_end":183,"line_start":179},{"file":"SKILL.md","line_end":183,"line_start":183},{"file":"SKILL.md","line_end":189,"line_start":185},{"file":"SKILL.md","line_end":190,"line_start":189},{"file":"SKILL.md","line_end":191,"line_start":190},{"file":"SKILL.md","line_end":192,"line_start":191},{"file":"SKILL.md","line_end":193,"line_start":192}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":20,"line_start":20},{"file":"SKILL.md","line_end":28,"line_start":28},{"file":"SKILL.md","line_end":45,"line_start":45},{"file":"SKILL.md","line_end":69,"line_start":69},{"file":"SKILL.md","line_end":76,"line_start":76},{"file":"SKILL.md","line_end":86,"line_start":86},{"file":"SKILL.md","line_end":98,"line_start":98},{"file":"SKILL.md","line_end":121,"line_start":121},{"file":"SKILL.md","line_end":145,"line_start":145},{"file":"SKILL.md","line_end":146,"line_start":146},{"file":"SKILL.md","line_end":152,"line_start":152},{"file":"SKILL.md","line_end":153,"line_start":153},{"file":"SKILL.md","line_end":154,"line_start":154},{"file":"SKILL.md","line_end":169,"line_start":169},{"file":"SKILL.md","line_end":189,"line_start":189},{"file":"SKILL.md","line_end":190,"line_start":190},{"file":"SKILL.md","line_end":191,"line_start":191},{"file":"SKILL.md","line_end":192,"line_start":192},{"file":"SKILL.md","line_end":193,"line_start":193}]},{"factor":"filesystem","evidence":[{"file":"SKILL.md","line_end":178,"line_start":178},{"file":"SKILL.md","line_end":178,"line_start":178}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Unsafe Shell Quoting and Misleading Input-Safety Guidance","locations":[{"file":"SKILL.md","line_end":101,"line_start":94},{"file":"SKILL.md","line_end":179,"line_start":179}],"confidence":0.98,"description":"The portrait prompt contains \"subject's\" inside a single-quoted shell argument, breaking the example. The claim \"No shell-injection surface\" overlooks shell parsing before CLI execution. Reusing this pattern with unescaped user text can expose shell metacharacters.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The apostrophe visibly terminates the shell quote, and the blanket safety claim ignores that parsing stage. No active attacker-controlled execution is demonstrated."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":194,"audit_model":"codex","audited_at":"2026-11-04T15:55:33.656+00:00","created_at":"2026-11-05T02:39:46.49856+00:00","static_findings":[{"id":"external_commands:SKILL.md:6:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Image outpainting on RunComfy via the `runcomfy` CLI — extend a","category":"external_commands","line_end":6,"severity":"medium","line_start":6},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":43,"severity":"medium","line_start":32},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":45,"severity":"medium","line_start":43},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"CLI deep dive: [`runcomfy-cli`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/runcomfy-c","category":"external_commands","line_end":53,"severity":"medium","line_start":45},{"id":"external_commands:SKILL.md:53:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Nano Banana 2 Edit** — `google/nano-banana-2/edit` *(default for prompt-shaped outpaint)*","category":"external_commands","line_end":58,"severity":"medium","line_start":53},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**GPT Image 2 Edit** — `openai/gpt-image-2/edit`","category":"external_commands","line_end":63,"severity":"medium","line_start":58},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**FLUX Kontext Pro** — `blackforestlabs/flux-1-kontext/pro/edit`","category":"external_commands","line_end":64,"severity":"medium","line_start":63},{"id":"external_commands:SKILL.md:64:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> Single-instruction, high-preservation edit. Use form: `\"Extend the canvas to a 16:9 aspect ratio. ","category":"external_commands","line_end":68,"severity":"medium","line_start":64},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> Brand-specific edit endpoints (`bytedance/seedream-5/lite/edit`, `bytedance/dreamina-4-0/edit`, `q","category":"external_commands","line_end":68,"severity":"medium","line_start":68},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> Pick for: keeping the outpaint within the same brand/style as the source generation. See [`image-e","category":"external_commands","line_end":75,"severity":"medium","line_start":69},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Model**: `google/nano-banana-2/edit`","category":"external_commands","line_end":82,"severity":"medium","line_start":75},{"id":"external_commands:SKILL.md:82:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":90,"severity":"medium","line_start":82},{"id":"external_commands:SKILL.md:90:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":94,"severity":"medium","line_start":90},{"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":101,"severity":"medium","line_start":94},{"id":"external_commands:SKILL.md:101:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":105,"severity":"medium","line_start":101},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Lead with the canvas change**: `\"Extend the canvas to [aspect]\"`, `\"Extend downward\"`, `\"Extend ","category":"external_commands","line_end":105,"severity":"medium","line_start":105},{"id":"external_commands:SKILL.md:107:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **End with preservation**: `\"Keep [original visible area] exactly as in the input\"`. Without this ","category":"external_commands","line_end":108,"severity":"medium","line_start":107},{"id":"external_commands:SKILL.md:108:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Set `aspect_ratio` explicitly** to lock the output canvas — don't rely on the model to guess fro","category":"external_commands","line_end":116,"severity":"medium","line_start":108},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. **GPT Image 2 Edit** with a reference image of the desired surrounding style (`images: [original,","category":"external_commands","line_end":119,"severity":"medium","line_start":116},{"id":"external_commands:SKILL.md:119:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `comfyui-image-outpainting-workflow` — classic SDXL outpainting with seam handling","category":"external_commands","line_end":120,"severity":"medium","line_start":119},{"id":"external_commands:SKILL.md:120:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `flux-klein-unified-image-editing-inpaint-remove-outpaint-in-comfyui-advanced-image-restoration` —","category":"external_commands","line_end":130,"severity":"medium","line_start":120},{"id":"external_commands:SKILL.md:130:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Route 1 (Nano Banana 2 Edit)** with `aspect_ratio: \"9:16\"`, prompt extends top + bottom","category":"external_commands","line_end":133,"severity":"medium","line_start":130},{"id":"external_commands:SKILL.md:133:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Route 1** with `aspect_ratio: \"21:9\"` or `\"16:9\"`, prompt extends sides with matching environmen","category":"external_commands","line_end":133,"severity":"medium","line_start":133},{"id":"external_commands:SKILL.md:145:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Mask-driven local edits** (fill a hole inside the existing canvas): see [`image-inpainting`](htt","category":"external_commands","line_end":146,"severity":"medium","line_start":145},{"id":"external_commands:SKILL.md:146:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Video outpainting** (extend video canvas spatially): see [`video-outpainting`](https://www.skill","category":"external_commands","line_end":152,"severity":"medium","line_start":146},{"id":"external_commands:SKILL.md:152:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [`best-image-editing-models` collection](https://www.runcomfy.com/models/collections/best-image-ed","category":"external_commands","line_end":153,"severity":"medium","line_start":152},{"id":"external_commands:SKILL.md:153:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [`nano-banana`](https://www.runcomfy.com/models/collections/nano-banana?utm_source=skills.sh&utm_m","category":"external_commands","line_end":153,"severity":"medium","line_start":153},{"id":"external_commands:SKILL.md:173:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"The skill classifies user intent — simple aspect-ratio swap, reference-style match, or brand-locked ","category":"external_commands","line_end":173,"severity":"medium","line_start":173},{"id":"external_commands:SKILL.md:177:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Install via verified package manager only.** Use `npm i -g @runcomfy/cli` or `npx -y @runcomfy/c","category":"external_commands","line_end":177,"severity":"medium","line_start":177},{"id":"external_commands:SKILL.md:178:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Token storage**: `runcomfy login` writes the API token to `~/.config/runcomfy/token.json` with m","category":"external_commands","line_end":178,"severity":"medium","line_start":178},{"id":"external_commands:SKILL.md:179:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Input boundary (shell injection)**: prompts and image URLs are passed as a JSON string via `--in","category":"external_commands","line_end":183,"severity":"medium","line_start":179},{"id":"external_commands:SKILL.md:183:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Outbound endpoints (allowlist)**: only `model-api.runcomfy.net` and `*.runcomfy.net` / `*.runcom","category":"external_commands","line_end":183,"severity":"medium","line_start":183},{"id":"external_commands:SKILL.md:185:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Scope of bash usage**: `Bash(runcomfy *)` only.","category":"external_commands","line_end":189,"severity":"medium","line_start":185},{"id":"external_commands:SKILL.md:189:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [`runcomfy-cli`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/runcomfy-cli) — the und","category":"external_commands","line_end":190,"severity":"medium","line_start":189},{"id":"external_commands:SKILL.md:190:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [`image-edit`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/image-edit) — full image-","category":"external_commands","line_end":191,"severity":"medium","line_start":190},{"id":"external_commands:SKILL.md:191:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [`image-inpainting`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/image-inpainting) —","category":"external_commands","line_end":192,"severity":"medium","line_start":191},{"id":"external_commands:SKILL.md:192:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [`ai-image-generation`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/ai-image-generat","category":"external_commands","line_end":193,"severity":"medium","line_start":192},{"id":"network:SKILL.md:20:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"homepage: https://www.runcomfy.com","category":"network","line_end":20,"severity":"low","line_start":20},{"id":"network:SKILL.md:28:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"[runcomfy.com](https://www.runcomfy.com/?utm_source=skills.sh&utm_medium=skill&utm_campaign=image-ou","category":"network","line_end":28,"severity":"low","line_start":28},{"id":"network:SKILL.md:45:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"CLI deep dive: [`runcomfy-cli`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/runcomfy-c","category":"network","line_end":45,"severity":"low","line_start":45},{"id":"network:SKILL.md:69:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"> Pick for: keeping the outpaint within the same brand/style as the source generation. See [`image-e","category":"network","line_end":69,"severity":"low","line_start":69},{"id":"network:SKILL.md:76:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"**Catalog**: [Nano Banana 2 Edit](https://www.runcomfy.com/models/google/nano-banana-2/edit?utm_sour","category":"network","line_end":76,"severity":"low","line_start":76},{"id":"network:SKILL.md:86:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"image_urls\": [\"https://your-cdn.example/portrait-1to1.jpg\"],","category":"network","line_end":86,"severity":"low","line_start":86},{"id":"network:SKILL.md:98:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"image_urls\": [\"https://your-cdn.example/head-and-shoulders.jpg\"]","category":"network","line_end":98,"severity":"low","line_start":98},{"id":"network:SKILL.md:121:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- Browse: [runcomfy.com/comfyui-workflows](https://www.runcomfy.com/comfyui-workflows?utm_source=ski","category":"network","line_end":121,"severity":"low","line_start":121},{"id":"network:SKILL.md:145:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- **Mask-driven local edits** (fill a hole inside the existing canvas): see [`image-inpainting`](htt","category":"network","line_end":145,"severity":"low","line_start":145},{"id":"network:SKILL.md:146:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- **Video outpainting** (extend video canvas spatially): see [`video-outpainting`](https://www.skill","category":"network","line_end":146,"severity":"low","line_start":146},{"id":"network:SKILL.md:152:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [`best-image-editing-models` collection](https://www.runcomfy.com/models/collections/best-image-ed","category":"network","line_end":152,"severity":"low","line_start":152},{"id":"network:SKILL.md:153:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [`nano-banana`](https://www.runcomfy.com/models/collections/nano-banana?utm_source=skills.sh&utm_m","category":"network","line_end":153,"severity":"low","line_start":153},{"id":"network:SKILL.md:154:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [ComfyUI workflows](https://www.runcomfy.com/comfyui-workflows?utm_source=skills.sh&utm_medium=ski","category":"network","line_end":154,"severity":"low","line_start":154},{"id":"network:SKILL.md:169:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"Full reference: [docs.runcomfy.com/cli/troubleshooting](https://docs.runcomfy.com/cli/troubleshootin","category":"network","line_end":169,"severity":"low","line_start":169},{"id":"network:SKILL.md:189:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [`runcomfy-cli`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/runcomfy-cli) — the und","category":"network","line_end":189,"severity":"low","line_start":189},{"id":"network:SKILL.md:190:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [`image-edit`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/image-edit) — full image-","category":"network","line_end":190,"severity":"low","line_start":190},{"id":"network:SKILL.md:191:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [`image-inpainting`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/image-inpainting) —","category":"network","line_end":191,"severity":"low","line_start":191},{"id":"network:SKILL.md:192:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [`ai-image-generation`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/ai-image-generat","category":"network","line_end":192,"severity":"low","line_start":192},{"id":"network:SKILL.md:193:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [`video-outpainting`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/video-outpainting)","category":"network","line_end":193,"severity":"low","line_start":193},{"id":"filesystem:SKILL.md:178:hidden-file-in-home-directory","file":"SKILL.md","pattern":"Hidden file in home directory","snippet":"- **Token storage**: `runcomfy login` writes the API token to `~/.config/runcomfy/token.json` with m","category":"filesystem","line_end":178,"severity":"high","line_start":178},{"id":"filesystem:SKILL.md:178:hidden-file-access","file":"SKILL.md","pattern":"Hidden file access","snippet":"- **Token storage**: `runcomfy login` writes the API token to `~/.config/runcomfy/token.json` with m","category":"filesystem","line_end":178,"severity":"medium","line_start":178},{"id":"blocker:SKILL.md:56:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"> Avoid for: pixel-precise extension matching texture seams — use a ComfyUI outpainting workflow.","category":"blocker","line_end":56,"severity":"low","line_start":56},{"id":"blocker:SKILL.md:61:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"> Avoid for: simple outpaint without external references.","category":"blocker","line_end":61,"severity":"low","line_start":61},{"id":"blocker:SKILL.md:142:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- Chain: outpaint pass 1 → use result as input for pass 2. Each pass extends ~30–50% to avoid qualit","category":"blocker","line_end":142,"severity":"low","line_start":142}],"finding_verdicts":[{"id":"external_commands:SKILL.md:6:ruby-shell-backtick-execution","reason":"The backticks format the CLI name in Markdown front matter. They do not execute shell or Ruby code.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","reason":"This is a Markdown fence around ordinary installation, login, and outpainting commands. No backtick command substitution is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","reason":"This line closes a Markdown code fence. It is not executable backtick syntax.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","reason":"The backticks format a linked skill name and model identifiers. There is no shell evaluation.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:53:ruby-shell-backtick-execution","reason":"The inline code identifies the Nano Banana model endpoint. Surrounding text describes image-editing suitability, not command execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","reason":"The backticks delimit a GPT Image endpoint identifier in Markdown. They are not shell or Ruby instructions.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","reason":"Inline code formats the FLUX endpoint and an image-generation prompt. Neither is evaluated as code.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:64:ruby-shell-backtick-execution","reason":"The quoted text is an example canvas-extension prompt inside Markdown. It contains no executable shell substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","reason":"The backticks format a list of model endpoint names. This is descriptive documentation, not code execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","reason":"The matched backticks belong to a related-skill link and a model identifier. No shell command is evaluated.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","reason":"The model path is displayed as inline Markdown code. The remaining text introduces an invocation example.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:82:ruby-shell-backtick-execution","reason":"A Markdown fence encloses an expected RunComfy invocation with fixed example input. The fence is not backtick execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:90:ruby-shell-backtick-execution","reason":"The match spans closing and opening Markdown code fences around examples. These delimiters do not execute commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:94:ruby-shell-backtick-execution","reason":"The detected backticks are a Markdown code fence, not command substitution. The separate shell-quoting defect is recorded as a semantic finding.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:101:ruby-shell-backtick-execution","reason":"This line closes a Markdown example. The following inline text gives image-prompt guidance, not executable backtick expressions.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:105:ruby-shell-backtick-execution","reason":"The backticks format sample natural-language canvas instructions. No shell or Ruby interpreter evaluates them.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:107:ruby-shell-backtick-execution","reason":"The inline text is a preservation prompt and an aspect-ratio parameter name. These are Markdown examples rather than execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:108:ruby-shell-backtick-execution","reason":"The matched backticks format an aspect-ratio field and reference-image notation. No command substitution is present.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","reason":"This is reference-image input notation followed by GUI workflow names. Inline code formatting does not execute those names.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:119:ruby-shell-backtick-execution","reason":"The backticks delimit ComfyUI workflow identifiers. The document explicitly states these are GUI workflows, not CLI endpoints.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:120:ruby-shell-backtick-execution","reason":"The match covers a GUI workflow name and later aspect-ratio notation. Both are ordinary Markdown documentation.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:130:ruby-shell-backtick-execution","reason":"The inline code specifies output aspect ratios for image expansion. There is no shell command or backtick evaluation.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:133:ruby-shell-backtick-execution","reason":"The backticks format 21:9 and 16:9 aspect-ratio values. These values are not executable code.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:145:ruby-shell-backtick-execution","reason":"The backticks format a related image-inpainting skill link. The text describes an excluded capability, not command execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:146:ruby-shell-backtick-execution","reason":"The match spans related-skill and catalog link labels. These Markdown labels have no shell evaluation semantics.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:152:ruby-shell-backtick-execution","reason":"The backticks style catalog collection names inside links. They do not invoke external commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:153:ruby-shell-backtick-execution","reason":"This line lists model collection links with inline code labels. No executable shell syntax is involved.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:173:ruby-shell-backtick-execution","reason":"The text describes the expected RunComfy request, polling, and download lifecycle. Backticks only format the command and output option.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:177:ruby-shell-backtick-execution","reason":"Inline code documents standard scoped-package installation commands and prohibits piping arbitrary remote scripts into a shell. It is not backtick evaluation.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:178:ruby-shell-backtick-execution","reason":"The backticks format login, the documented token location, and an environment variable. There is no backtick substitution or credential-extraction instruction.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:179:ruby-shell-backtick-execution","reason":"The detected backticks format the input flag, not executable syntax. The inaccurate shell-safety assurance is addressed in the semantic finding.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:183:ruby-shell-backtick-execution","reason":"The inline code lists claimed service-domain restrictions. It does not execute a shell command, and the external implementation is not verified.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:185:ruby-shell-backtick-execution","reason":"The backticks delimit a declared tool scope and a related-skill label. They are documentation, not shell command substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:189:ruby-shell-backtick-execution","reason":"This match spans related CLI and image-editing skill link labels. No code is executed by those Markdown labels.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:190:ruby-shell-backtick-execution","reason":"The backticks format related image-editing and inpainting skill names. These are navigation references, not execution instructions.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:191:ruby-shell-backtick-execution","reason":"The matched text contains Markdown labels for related image skills. It contains no shell or Ruby evaluation.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:192:ruby-shell-backtick-execution","reason":"These backticks format related image-generation and video-outpainting links. They do not execute the linked names.","verdict":"false_positive","confidence":1},{"id":"network:SKILL.md:20:hardcoded-url","reason":"The URL declares the service homepage in metadata. It does not send credentials or user data.","verdict":"false_positive","confidence":1},{"id":"network:SKILL.md:28:hardcoded-url","reason":"The URLs link to the service, model catalog, and CLI documentation. Their campaign parameters contain no user data or secrets.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:45:hardcoded-url","reason":"This is a documentation link to the related CLI skill. It is not an automatic download or exfiltration request.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:69:hardcoded-url","reason":"The link points to a related image-editing router for additional endpoint guidance. No sensitive payload or automatic request is specified.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:76:hardcoded-url","reason":"This is a RunComfy catalog page for the documented model. The URL has campaign metadata, not credentials or image contents.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:86:hardcoded-url","reason":"The reserved .example domain is a placeholder for a user-supplied source image. It is not a real collection endpoint.","verdict":"false_positive","confidence":1},{"id":"network:SKILL.md:98:hardcoded-url","reason":"This image URL uses a reserved .example domain in an invocation sample. It does not identify an actual external data recipient.","verdict":"false_positive","confidence":1},{"id":"network:SKILL.md:121:hardcoded-url","reason":"The URL opens the RunComfy GUI workflow catalog. It does not instruct an agent to upload private files or secrets.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:145:hardcoded-url","reason":"This link directs users to a separate inpainting skill for an excluded capability. No executable download or data transfer is requested.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:146:hardcoded-url","reason":"The URL references a separate video-outpainting skill. It serves navigation rather than unauthorized network access.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:152:hardcoded-url","reason":"The link browses a model collection on the documented service. No credentials or private information appear in its query parameters.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:153:hardcoded-url","reason":"These URLs are model collection references with ordinary campaign parameters. They do not carry sensitive data.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:154:hardcoded-url","reason":"This is a link to the service workflow catalog for manual browsing. It is not a covert upload destination.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:169:hardcoded-url","reason":"The URL points to CLI troubleshooting documentation. No secret-bearing request or remote code execution is specified.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:189:hardcoded-url","reason":"The URL is a related CLI skill reference. Merely linking to documentation does not execute or install that skill.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:190:hardcoded-url","reason":"The URL references a related image-editing skill. It contains no private data and requests no automatic transfer.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:191:hardcoded-url","reason":"This is a related inpainting skill link. There is no instruction to send local files or credentials to it.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:192:hardcoded-url","reason":"The link references a related image-generation skill. It is navigation, not an executable network operation.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:193:hardcoded-url","reason":"This URL points to a related video-outpainting skill. No sensitive payload or automatic retrieval is prescribed.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:SKILL.md:178:hidden-file-in-home-directory","reason":"The path is the documented application-specific login token store with mode 0600. There is no instruction to enumerate or extract unrelated secrets.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:178:hidden-file-access","reason":"The text explains normal CLI credential persistence and restricted file permissions. A hidden configuration path alone is not malicious file access.","verdict":"false_positive","confidence":0.98},{"id":"blocker:SKILL.md:56:system-reconnaissance","reason":"The sentence recommends a different image workflow for precise texture matching. It contains no system inspection command or reconnaissance instruction.","verdict":"false_positive","confidence":1},{"id":"blocker:SKILL.md:61:system-reconnaissance","reason":"The sentence describes when reference-based image editing is unnecessary. It does not inspect the host or collect system information.","verdict":"false_positive","confidence":1},{"id":"blocker:SKILL.md:142:system-reconnaissance","reason":"The text recommends staged image expansion to maintain visual quality. It contains no host discovery or reconnaissance behavior.","verdict":"false_positive","confidence":1}],"semantic_findings":[{"title":"Unsafe Shell Quoting and Misleading Input-Safety Guidance","severity":"medium","locations":[{"file":"SKILL.md","line_end":101,"line_start":94},{"file":"SKILL.md","line_end":179,"line_start":179}],"confidence":0.98,"description":"The portrait prompt contains \"subject's\" inside a single-quoted shell argument, breaking the example. The claim \"No shell-injection surface\" overlooks shell parsing before CLI execution. Reusing this pattern with unescaped user text can expose shell metacharacters.","confidence_reasoning":"The apostrophe visibly terminates the shell quote, and the blanket safety claim ignores that parsing stage. No active attacker-controlled execution is demonstrated."}],"subject_marketplace_commit_sha":"00df9b2cd39764d369af6d0aa6ba7a955b71e9c0","subject_content_hash":"f1507fa330c210e9d821ec36a9045689ec5dd43d47a9a8bba59d34a0f52b74c4","subject_tree_hash":"086c3272b40073a8898f00a6991d091a3ecf7a520c5b6037633f1724bdfdcd34","subject_plugin_path":"skills/prime-skills/image-outpainting","audit_payload_hash":"f82e4059395707a50dc7fb9b9427f54c","confirmed_risk_level":"medium","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"00df9b2cd39764d369af6d0aa6ba7a955b71e9c0","contentHash":"f1507fa330c210e9d821ec36a9045689ec5dd43d47a9a8bba59d34a0f52b74c4","treeHash":"086c3272b40073a8898f00a6991d091a3ecf7a520c5b6037633f1724bdfdcd34","pluginPath":"skills/prime-skills/image-outpainting","auditPayloadHash":"f82e4059395707a50dc7fb9b9427f54c"},"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/prime-skills-image-outpainting/audits/1/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":1,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}