{"data":{"skill":{"slug":"skills-shell-ai-avatar-video","name":"ai-avatar-video","icon":"📦","repo":"https://github.com/skills-shell/skills/tree/main/tools/video/ai-avatar-video/","status":"approved","author":"skills-shell","authorVersion":null,"skillstoreRevision":2},"audit":{"id":"e379a37e-ab90-42e6-9b4e-e28e7eb43eeb","skill_id":"cca5a6a1-c24d-40e6-8064-49f786cf35be","version":5,"content_hash":"v3:b1ef80115e869b66867d4eac8e3c8dc56a393a8d:3f7ac4ca778280b0f976761c347aa58e6ae2d01fde691b8a9ac16bdfc8327d71:4649b11d874126d484157e56354978a97fdf02eb0535cd752851f66c09082db7:736b696c6c732f736b696c6c732d7368656c6c2f61692d6176617461722d766964656f:0319a53049e1f64c4e7eea8336fb444a","risk_level":"high","is_blocked":false,"safe_to_publish":false,"analysis_status":"ok","agent_auto_install_policy":"confirmation_required","manual_install_policy":"allowed","summary":"The skill legitimately invokes hosted inference models, so command blocks that run belt, redirect outputs, loop over jobs, or install packages are confirmed. Formatting-only backticks and placeholder or documentation URLs are false positives, while the remote image carries a minor privacy risk. The UGC workflow also encourages synthetic testimonials designed to appear authentic.","remediation":[{"issue":"Remote package installation can execute unreviewed package code.","severity":"medium","suggestion":"Require explicit approval and pin reviewed package versions before running any npx installation command."},{"issue":"Hosted belt jobs upload media, may write local output files, and may create usage charges.","severity":"medium","suggestion":"Confirm uploads, output paths, model choice, and estimated charges before executing belt workflows."},{"issue":"The UGC examples present synthetic speakers as authentic customers.","severity":"high","suggestion":"Require consent, synthetic-media disclosure, and truthful claims. Remove instructions that frame generated endorsements as real testimonials."},{"issue":"The remote Markdown image can disclose viewer network metadata.","severity":"low","suggestion":"Bundle a reviewed local image or omit the remote image from marketplace-rendered documentation."}],"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":28,"line_start":19},{"file":"SKILL.md","line_end":36,"line_start":28},{"file":"SKILL.md","line_end":37,"line_start":36},{"file":"SKILL.md","line_end":38,"line_start":37},{"file":"SKILL.md","line_end":39,"line_start":38},{"file":"SKILL.md","line_end":55,"line_start":39},{"file":"SKILL.md","line_end":63,"line_start":55},{"file":"SKILL.md","line_end":67,"line_start":63},{"file":"SKILL.md","line_end":76,"line_start":67},{"file":"SKILL.md","line_end":80,"line_start":76},{"file":"SKILL.md","line_end":85,"line_start":80},{"file":"SKILL.md","line_end":91,"line_start":85},{"file":"SKILL.md","line_end":104,"line_start":91},{"file":"SKILL.md","line_end":108,"line_start":104},{"file":"SKILL.md","line_end":113,"line_start":108},{"file":"SKILL.md","line_end":119,"line_start":113},{"file":"SKILL.md","line_end":124,"line_start":119},{"file":"SKILL.md","line_end":128,"line_start":124},{"file":"SKILL.md","line_end":133,"line_start":128},{"file":"SKILL.md","line_end":139,"line_start":133},{"file":"SKILL.md","line_end":152,"line_start":139},{"file":"SKILL.md","line_end":158,"line_start":152},{"file":"SKILL.md","line_end":172,"line_start":158},{"file":"SKILL.md","line_end":178,"line_start":172},{"file":"SKILL.md","line_end":194,"line_start":178},{"file":"SKILL.md","line_end":206,"line_start":194},{"file":"SKILL.md","line_end":218,"line_start":206},{"file":"SKILL.md","line_end":235,"line_start":218},{"file":"SKILL.md","line_end":235,"line_start":235},{"file":"SKILL.md","line_end":259,"line_start":241},{"file":"SKILL.md","line_end":261,"line_start":259}]},{"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":24,"line_start":24},{"file":"SKILL.md","line_end":57,"line_start":57},{"file":"SKILL.md","line_end":69,"line_start":69},{"file":"SKILL.md","line_end":82,"line_start":82},{"file":"SKILL.md","line_end":83,"line_start":83},{"file":"SKILL.md","line_end":110,"line_start":110},{"file":"SKILL.md","line_end":111,"line_start":111},{"file":"SKILL.md","line_end":121,"line_start":121},{"file":"SKILL.md","line_end":122,"line_start":122},{"file":"SKILL.md","line_end":130,"line_start":130},{"file":"SKILL.md","line_end":131,"line_start":131},{"file":"SKILL.md","line_end":149,"line_start":149},{"file":"SKILL.md","line_end":160,"line_start":160},{"file":"SKILL.md","line_end":169,"line_start":169},{"file":"SKILL.md","line_end":210,"line_start":210},{"file":"SKILL.md","line_end":265,"line_start":265},{"file":"SKILL.md","line_end":266,"line_start":266},{"file":"SKILL.md","line_end":267,"line_start":267}]}],"critical_findings":[],"high_findings":[{"title":"Deceptive Synthetic Testimonial Workflow","locations":[{"file":"SKILL.md","line_end":218,"line_start":174}],"confidence":0.98,"description":"The UGC workflow generates fictional speakers who claim product experience, describes them as authentic testimonials, and demonstrates producing multiple presenters at scale.","review_kind":"security","source_category":"semantic","source_severity":"high","confidence_reasoning":"The example script claims personal product use, while the prompts explicitly request an authentic testimonial from generated presenters."}],"medium_findings":[{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":7,"line_start":7}],"confidence":0.94,"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 against a remote package, which can download and execute package code."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":28,"line_start":19}],"confidence":0.98,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"This range contains belt login and a hosted model invocation, both of which execute an external CLI and can create network activity or charges."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":63,"line_start":55}],"confidence":0.98,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The code block runs belt against a hosted avatar model, causing an external process and remote inference request."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":76,"line_start":67}],"confidence":0.98,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The range runs belt against a hosted avatar model with user-selected media and style inputs."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":85,"line_start":80}],"confidence":0.98,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The code block invokes belt and sends image and audio references to a hosted model."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":104,"line_start":91}],"confidence":0.98,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The range contains two belt model invocations that generate an image and then an avatar video."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":113,"line_start":108}],"confidence":0.98,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The code block invokes belt to submit image and audio inputs to the OmniHuman service."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":124,"line_start":119}],"confidence":0.98,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The code block executes belt to send image and audio inputs to a hosted Fabric model."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":133,"line_start":128}],"confidence":0.98,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The code block executes belt to submit media to the hosted PixVerse lipsync model."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":152,"line_start":139}],"confidence":0.99,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The range invokes two hosted models and redirects command output into speech.json, creating both network and filesystem effects."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":172,"line_start":158}],"confidence":0.99,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The dubbing workflow invokes three hosted models and redirects results into local files."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":194,"line_start":178}],"confidence":0.99,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The block executes two belt jobs to generate a portrait and synthetic presenter video."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":218,"line_start":206}],"confidence":0.99,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The shell loop runs three hosted inference jobs and interpolates the voice variable, creating repeated billable external actions."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":259,"line_start":241}],"confidence":0.99,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The code block contains five npx installation commands that can fetch and execute remote package code."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":261,"line_start":259}],"confidence":0.96,"description":"```","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"Although line 259 closes a block, this finding range also includes an inline belt command that lists remote video applications."}],"low_findings":[{"title":"Hardcoded URL","locations":[{"file":"SKILL.md","line_end":13,"line_start":13}],"confidence":0.9,"description":"![AI Avatar & Talking Head Videos](https://cloud.inference.sh/app/files/u/4mg21r6ta37mpaz6ktzwtt8krr","review_kind":"capability","source_category":"network","source_severity":"low","confidence_reasoning":"The Markdown embeds a remote image, so rendering the document can contact cloud.inference.sh and disclose viewer network metadata."}],"dangerous_patterns":[],"files_scanned":1,"total_lines":268,"audit_model":"codex","audited_at":"2026-09-07T15:57:00.412+00:00","created_at":"2026-09-07T17:18:02.487577+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":28,"severity":"medium","line_start":19},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":36,"severity":"medium","line_start":28},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| **P-Video-Avatar** | `pruna/p-video-avatar` | **Best overall: speed, cost, quality, control** | **","category":"external_commands","line_end":37,"severity":"medium","line_start":36},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| OmniHuman 1.5 | `bytedance/omnihuman-1-5` | Multi-character, audio-driven | No |","category":"external_commands","line_end":38,"severity":"medium","line_start":37},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Fabric 1.0 | `falai/fabric-1-0` | Image talks with lipsync | Yes |","category":"external_commands","line_end":39,"severity":"medium","line_start":38},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| PixVerse Lipsync | `falai/pixverse-lipsync` | Highly realistic lipsync | No |","category":"external_commands","line_end":55,"severity":"medium","line_start":39},{"id":"external_commands:SKILL.md:55:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":63,"severity":"medium","line_start":55},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":67,"severity":"medium","line_start":63},{"id":"external_commands:SKILL.md:67:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":76,"severity":"medium","line_start":67},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":80,"severity":"medium","line_start":76},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":85,"severity":"medium","line_start":80},{"id":"external_commands:SKILL.md:85:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":91,"severity":"medium","line_start":85},{"id":"external_commands:SKILL.md:91:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":104,"severity":"medium","line_start":91},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":108,"severity":"medium","line_start":104},{"id":"external_commands:SKILL.md:108:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":113,"severity":"medium","line_start":108},{"id":"external_commands:SKILL.md:113:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":119,"severity":"medium","line_start":113},{"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":124,"severity":"medium","line_start":119},{"id":"external_commands:SKILL.md:124:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":128,"severity":"medium","line_start":124},{"id":"external_commands:SKILL.md:128:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":133,"severity":"medium","line_start":128},{"id":"external_commands:SKILL.md:133:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":139,"severity":"medium","line_start":133},{"id":"external_commands:SKILL.md:139:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":152,"severity":"medium","line_start":139},{"id":"external_commands:SKILL.md:152:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":158,"severity":"medium","line_start":152},{"id":"external_commands:SKILL.md:158:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":172,"severity":"medium","line_start":158},{"id":"external_commands:SKILL.md:172:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":178,"severity":"medium","line_start":172},{"id":"external_commands:SKILL.md:178:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":194,"severity":"medium","line_start":178},{"id":"external_commands:SKILL.md:194:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":206,"severity":"medium","line_start":194},{"id":"external_commands:SKILL.md:206:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":218,"severity":"medium","line_start":206},{"id":"external_commands:SKILL.md:218:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":235,"severity":"medium","line_start":218},{"id":"external_commands:SKILL.md:235:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Generate portraits with `pruna/p-image` using `9:16` aspect ratio for vertical videos","category":"external_commands","line_end":235,"severity":"medium","line_start":235},{"id":"external_commands:SKILL.md:241:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":259,"severity":"medium","line_start":241},{"id":"external_commands:SKILL.md:259:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":261,"severity":"medium","line_start":259},{"id":"network:SKILL.md:11:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"Create AI avatars and talking head videos 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":"![AI Avatar & Talking Head Videos](https://cloud.inference.sh/app/files/u/4mg21r6ta37mpaz6ktzwtt8krr","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:24:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"image\": \"https://portrait.jpg\",","category":"network","line_end":24,"severity":"low","line_start":24},{"id":"network:SKILL.md:57:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"image\": \"https://portrait.jpg\",","category":"network","line_end":57,"severity":"low","line_start":57},{"id":"network:SKILL.md:69:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"image\": \"https://portrait.jpg\",","category":"network","line_end":69,"severity":"low","line_start":69},{"id":"network:SKILL.md:82:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"image\": \"https://portrait.jpg\",","category":"network","line_end":82,"severity":"low","line_start":82},{"id":"network:SKILL.md:83:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"audio\": \"https://speech.mp3\"","category":"network","line_end":83,"severity":"low","line_start":83},{"id":"network:SKILL.md:110:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"image_url\": \"https://portrait.jpg\",","category":"network","line_end":110,"severity":"low","line_start":110},{"id":"network:SKILL.md:111:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"audio_url\": \"https://speech.mp3\"","category":"network","line_end":111,"severity":"low","line_start":111},{"id":"network:SKILL.md:121:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"image_url\": \"https://face.jpg\",","category":"network","line_end":121,"severity":"low","line_start":121},{"id":"network:SKILL.md:122:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"audio_url\": \"https://audio.mp3\"","category":"network","line_end":122,"severity":"low","line_start":122},{"id":"network:SKILL.md:130:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"image_url\": \"https://portrait.jpg\",","category":"network","line_end":130,"severity":"low","line_start":130},{"id":"network:SKILL.md:131:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"audio_url\": \"https://speech.mp3\"","category":"network","line_end":131,"severity":"low","line_start":131},{"id":"network:SKILL.md:149:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"image_url\": \"https://presenter-photo.jpg\",","category":"network","line_end":149,"severity":"low","line_start":149},{"id":"network:SKILL.md:160:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"belt app run infsh/fast-whisper-large-v3 --input '{\"audio_url\": \"https://video.mp4\"}' > transcript.j","category":"network","line_end":160,"severity":"low","line_start":160},{"id":"network:SKILL.md:169:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"video_url\": \"https://original-video.mp4\",","category":"network","line_end":169,"severity":"low","line_start":169},{"id":"network:SKILL.md:210:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\\\"image\\\": \\\"https://portrait.jpg\\\",","category":"network","line_end":210,"severity":"low","line_start":210},{"id":"network:SKILL.md:265: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":265,"severity":"low","line_start":265},{"id":"network:SKILL.md:266:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Content Pipeline Example](https://inference.sh/docs/examples/content-pipeline) - Building media w","category":"network","line_end":266,"severity":"low","line_start":266},{"id":"network:SKILL.md:267: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":267,"severity":"low","line_start":267}],"finding_verdicts":[{"id":"external_commands:SKILL.md:7:ruby-shell-backtick-execution","reason":"Line 7 instructs users to run npx against a remote package, which can download and execute package code.","verdict":"confirmed","severity":"medium","confidence":0.94},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","reason":"The backticks only format the belt executable name in prose. No shell expression is executed on this line.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:19:ruby-shell-backtick-execution","reason":"This range contains belt login and a hosted model invocation, both of which execute an external CLI and can create network activity or charges.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","reason":"The matched text closes a Markdown code block and is followed by descriptive model information. It does not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","reason":"Backticks format a model identifier inside a comparison table. There is no shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","reason":"Backticks format a model identifier inside a comparison table. There is no shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","reason":"Backticks format a model identifier inside a comparison table. There is no shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","reason":"Backticks format a model identifier, and the remaining range contains only prose and tables. No command is executed.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:55:ruby-shell-backtick-execution","reason":"The code block runs belt against a hosted avatar model, causing an external process and remote inference request.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","reason":"This match is a closing Markdown fence followed by descriptive prose. It does not execute shell code.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:67:ruby-shell-backtick-execution","reason":"The range runs belt against a hosted avatar model with user-selected media and style inputs.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","reason":"The match closes a Markdown example and introduces the next example. It is not executable shell syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","reason":"The code block invokes belt and sends image and audio references to a hosted model.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:85:ruby-shell-backtick-execution","reason":"This is a closing Markdown fence followed by workflow explanation. It does not run a process.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:91:ruby-shell-backtick-execution","reason":"The range contains two belt model invocations that generate an image and then an avatar video.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","reason":"The matched fence ends an example, and the remaining lines are headings and prose. No command executes.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:108:ruby-shell-backtick-execution","reason":"The code block invokes belt to submit image and audio inputs to the OmniHuman service.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:113:ruby-shell-backtick-execution","reason":"The match is a closing Markdown fence followed by model description. It is not a shell operation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:119:ruby-shell-backtick-execution","reason":"The code block executes belt to send image and audio inputs to a hosted Fabric model.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:124:ruby-shell-backtick-execution","reason":"This closes a Markdown example and introduces another model. It performs no command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:128:ruby-shell-backtick-execution","reason":"The code block executes belt to submit media to the hosted PixVerse lipsync model.","verdict":"confirmed","severity":"medium","confidence":0.98},{"id":"external_commands:SKILL.md:133:ruby-shell-backtick-execution","reason":"The match closes a Markdown block, and the remaining range is workflow prose. No process is started.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:139:ruby-shell-backtick-execution","reason":"The range invokes two hosted models and redirects command output into speech.json, creating both network and filesystem effects.","verdict":"confirmed","severity":"medium","confidence":0.99},{"id":"external_commands:SKILL.md:152:ruby-shell-backtick-execution","reason":"The matched fence and following explanatory text contain no executable command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:158:ruby-shell-backtick-execution","reason":"The dubbing workflow invokes three hosted models and redirects results into local files.","verdict":"confirmed","severity":"medium","confidence":0.99},{"id":"external_commands:SKILL.md:172:ruby-shell-backtick-execution","reason":"The match closes the dubbing example and is followed by prose. It executes no shell command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:178:ruby-shell-backtick-execution","reason":"The block executes two belt jobs to generate a portrait and synthetic presenter video.","verdict":"confirmed","severity":"medium","confidence":0.99},{"id":"external_commands:SKILL.md:194:ruby-shell-backtick-execution","reason":"The matched closing fence is followed only by feature descriptions and a heading. It does not execute code.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:206:ruby-shell-backtick-execution","reason":"The shell loop runs three hosted inference jobs and interpolates the voice variable, creating repeated billable external actions.","verdict":"confirmed","severity":"medium","confidence":0.99},{"id":"external_commands:SKILL.md:218:ruby-shell-backtick-execution","reason":"The matched fence is followed by use-case and tip prose with inline model names. No command runs in this range.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:235:ruby-shell-backtick-execution","reason":"Backticks only format a model identifier and aspect ratio in a recommendation. There is no command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:241:ruby-shell-backtick-execution","reason":"The code block contains five npx installation commands that can fetch and execute remote package code.","verdict":"confirmed","severity":"medium","confidence":0.99},{"id":"external_commands:SKILL.md:259:ruby-shell-backtick-execution","reason":"Although line 259 closes a block, this finding range also includes an inline belt command that lists remote video applications.","verdict":"confirmed","severity":"medium","confidence":0.96},{"id":"network:SKILL.md:11:hardcoded-url","reason":"The URL is a visible link to the named service homepage, not a hidden request or data destination.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:13:hardcoded-url","reason":"The Markdown embeds a remote image, so rendering the document can contact cloud.inference.sh and disclose viewer network metadata.","verdict":"confirmed","severity":"low","confidence":0.9},{"id":"network:SKILL.md:17:hardcoded-url","reason":"This is a visible link to installation documentation on the stated provider repository. It does not automatically transmit user data.","verdict":"false_positive","confidence":0.97},{"id":"network:SKILL.md:24:hardcoded-url","reason":"The URL is an illustrative portrait placeholder inside an example, not an operational endpoint.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:57:hardcoded-url","reason":"The URL is an illustrative portrait placeholder that users must replace. It is not a data collection endpoint.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:69:hardcoded-url","reason":"The URL is an illustrative portrait placeholder that users must replace. It is not a data collection endpoint.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:82:hardcoded-url","reason":"The portrait URL is a placeholder input for the documented model, not a concealed external destination.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:83:hardcoded-url","reason":"The audio URL is a placeholder input for the documented model, not a concealed external destination.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:110:hardcoded-url","reason":"The portrait URL is an obvious placeholder in a model example and must be replaced by the user.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:111:hardcoded-url","reason":"The speech URL is an obvious placeholder in a model example and must be replaced by the user.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:121:hardcoded-url","reason":"The face URL is an obvious placeholder in a model example and does not identify a real receiver.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:122:hardcoded-url","reason":"The audio URL is an obvious placeholder in a model example and does not identify a real receiver.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:130:hardcoded-url","reason":"The portrait URL is an obvious placeholder in a model example and must be replaced by the user.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:131:hardcoded-url","reason":"The speech URL is an obvious placeholder in a model example and must be replaced by the user.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:149:hardcoded-url","reason":"The presenter URL is an obvious placeholder in a documented workflow, not a hardcoded collection endpoint.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:160:hardcoded-url","reason":"The video URL is a placeholder media input for a transcription example and does not identify a real host.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:169:hardcoded-url","reason":"The video URL is a placeholder media input for a dubbing example and does not identify a real host.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:210:hardcoded-url","reason":"The escaped portrait URL remains an illustrative placeholder inside a shell loop.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:265:hardcoded-url","reason":"This is a visible link to the provider documentation for running applications.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:266:hardcoded-url","reason":"This is a visible link to the provider documentation for content pipelines.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:267:hardcoded-url","reason":"This is a visible link to the provider documentation for streaming results.","verdict":"false_positive","confidence":0.98}],"semantic_findings":[{"title":"Deceptive Synthetic Testimonial Workflow","severity":"high","locations":[{"file":"SKILL.md","line_end":218,"line_start":174}],"confidence":0.98,"description":"The UGC workflow generates fictional speakers who claim product experience, describes them as authentic testimonials, and demonstrates producing multiple presenters at scale.","confidence_reasoning":"The example script claims personal product use, while the prompts explicitly request an authentic testimonial from generated presenters."}],"subject_marketplace_commit_sha":"b1ef80115e869b66867d4eac8e3c8dc56a393a8d","subject_content_hash":"3f7ac4ca778280b0f976761c347aa58e6ae2d01fde691b8a9ac16bdfc8327d71","subject_tree_hash":"4649b11d874126d484157e56354978a97fdf02eb0535cd752851f66c09082db7","subject_plugin_path":"skills/skills-shell/ai-avatar-video","audit_payload_hash":"0319a53049e1f64c4e7eea8336fb444a","confirmed_risk_level":"high","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"b1ef80115e869b66867d4eac8e3c8dc56a393a8d","contentHash":"3f7ac4ca778280b0f976761c347aa58e6ae2d01fde691b8a9ac16bdfc8327d71","treeHash":"4649b11d874126d484157e56354978a97fdf02eb0535cd752851f66c09082db7","pluginPath":"skills/skills-shell/ai-avatar-video","auditPayloadHash":"0319a53049e1f64c4e7eea8336fb444a"},"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/skills-shell-ai-avatar-video/audits/5/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"high","confirmedFindingCount":1,"capabilityReviewCount":16,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"confirmation_required","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}