{"data":{"skill":{"slug":"101-skills-ai-avatar-video","name":"ai-avatar-video","icon":"📦","repo":"https://github.com/101-skills/skills/tree/main/tools/video/ai-avatar-video/","status":"approved","author":"101-skills","authorVersion":null,"skillstoreRevision":null},"audit":{"id":"97042fb5-2916-41c8-9520-db23c2e4fdfb","skill_id":"ff7b5746-bedc-45f7-a1cb-89f45223dddc","version":3,"content_hash":"v2:b959ebfd1043a07c0c4378ab94ca4342cb0259f5:b5c578f169c47226f86ad57cc4e1252b05d01ae6639c8351fc1e673f4cf37b47:3f32005cea6659a02f95f9e1df664e90f62af2bb3ddf1df3cd9bc2ce16a2d069:00ac9616beb48edd4ae76879c36b561f","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"The skill intentionally uses the belt CLI to run external avatar, TTS, transcription, and lipsync services. Most static hits are Markdown formatting or placeholder URLs, but the external command workflows, broad belt permission, and synthetic testimonial use case require user review.","remediation":[{"issue":"Broad belt CLI permission","severity":"medium","suggestion":"Limit allowed tools to the smallest set of belt commands needed for documented avatar workflows, if the host tool supports narrower allowlists."},{"issue":"External media processing","severity":"medium","suggestion":"Warn users before sending private images, audio, video, scripts, or signed URLs to inference.sh or related model providers."},{"issue":"Synthetic endorsement misuse","severity":"medium","suggestion":"Add guidance requiring consent, likeness rights, and clear disclosure for AI presenters, UGC ads, and testimonial-style videos."},{"issue":"External skill installation commands","severity":"medium","suggestion":"Ask users to verify the source and version before running npx skills add commands for related skills or CLI setup."}],"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":[],"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 instructs users to run npx to add an external belt CLI skill. This is visible supply-chain behavior, but it still installs and executes third-party tooling."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":28,"line_start":19}],"confidence":0.84,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The code block runs belt login and belt app run against pruna/p-video-avatar. This is expected functionality, but it executes an external CLI and sends media input to a service."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":63,"line_start":55}],"confidence":0.84,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The cited code block runs belt app run for an avatar or lipsync model. It is visible and purposeful, but it executes an external CLI with user-provided media inputs."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":76,"line_start":67}],"confidence":0.84,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The cited code block runs belt app run for an avatar or lipsync model. It is visible and purposeful, but it executes an external CLI with user-provided media inputs."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":85,"line_start":80}],"confidence":0.84,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The cited code block runs belt app run for an avatar or lipsync model. It is visible and purposeful, but it executes an external CLI with user-provided media inputs."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":104,"line_start":91}],"confidence":0.84,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The workflow runs belt app run for image generation and then avatar generation. The commands are user-visible, but they execute external services with supplied prompt and media data."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":113,"line_start":108}],"confidence":0.84,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The cited code block runs belt app run for an avatar or lipsync model. It is visible and purposeful, but it executes an external CLI with user-provided media inputs."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":124,"line_start":119}],"confidence":0.84,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The cited code block runs belt app run for an avatar or lipsync model. It is visible and purposeful, but it executes an external CLI with user-provided media inputs."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":133,"line_start":128}],"confidence":0.84,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The cited code block runs belt app run for an avatar or lipsync model. It is visible and purposeful, but it executes an external CLI with user-provided media inputs."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":152,"line_start":139}],"confidence":0.84,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The code block runs text-to-speech and avatar generation commands and writes speech.json. This is legitimate workflow output, but it still performs external CLI execution."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":172,"line_start":158}],"confidence":0.84,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The dubbing workflow runs transcription, TTS, and lipsync belt commands with file redirection. These commands transmit media references to remote model services."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":194,"line_start":178}],"confidence":0.84,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The cited code block runs belt app run for an avatar or lipsync model. It is visible and purposeful, but it executes an external CLI with user-provided media inputs."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":218,"line_start":206}],"confidence":0.84,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The batch example runs belt app run inside a shell loop. The loop values are hardcoded, but it still executes repeated external CLI calls."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":259,"line_start":241}],"confidence":0.84,"description":"```bash","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The related skills block recommends several npx skills add commands. Installing external skills is legitimate here, but it is supply-chain sensitive."},{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":261,"line_start":259}],"confidence":0.72,"description":"```","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The cited range includes the inline command belt app store --category video. It is legitimate browsing behavior, but it still invokes an external CLI."},{"title":"Broad External CLI Permission","locations":[{"file":"SKILL.md","line_end":4,"line_start":4}],"confidence":0.66,"description":"The skill declares allowed-tools as Bash(belt *), which permits any belt subcommand, not only the documented avatar workflows. A future or mistaken command could access broader belt functionality than users expect.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The frontmatter directly grants wildcard belt command access. The documented commands are legitimate, but the permission is broader than the specific workflows shown."},{"title":"Synthetic Testimonial And Presenter Abuse Risk","locations":[{"file":"SKILL.md","line_end":193,"line_start":174},{"file":"SKILL.md","line_end":227,"line_start":220}],"confidence":0.78,"description":"The skill includes UGC-style avatar generation and sample testimonial language. Without consent and disclosure controls, this can support deceptive synthetic endorsements or impersonation-style marketing.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The file explicitly targets UGC ads, virtual presenters, and generated testimonial-style scripts. The risk is contextual misuse rather than hidden code behavior."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":268,"audit_model":"codex","audited_at":"2026-07-08T14:08:34.014+00:00","created_at":"2026-07-10T12:22:23.352908+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 to add an external belt CLI skill. This is visible supply-chain behavior, but it still installs and executes third-party tooling.","verdict":"confirmed","severity":"medium","confidence":0.9},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","reason":"Line 17 mentions the belt CLI and links install documentation, but it does not execute a command. The actual install command is covered separately.","verdict":"false_positive","confidence":0.88},{"id":"external_commands:SKILL.md:19:ruby-shell-backtick-execution","reason":"The code block runs belt login and belt app run against pruna/p-video-avatar. This is expected functionality, but it executes an external CLI and sends media input to a service.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","reason":"The cited range starts after a completed command block and contains model documentation, not an executable instruction. The scanner matched Markdown fencing and inline code.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","reason":"The line contains an inline model identifier in a Markdown table. It is not shell execution and does not interpolate user input.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:37:ruby-shell-backtick-execution","reason":"The line contains an inline model identifier in a Markdown table. It is descriptive documentation, not a command.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","reason":"The line contains an inline model identifier in a Markdown table. There is no shell invocation at this location.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","reason":"The cited range contains table and comparison text only. The backticks mark Markdown code spans, not command execution.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:55:ruby-shell-backtick-execution","reason":"The cited code block runs belt app run for an avatar or lipsync model. It is visible and purposeful, but it executes an external CLI with user-provided media inputs.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"external_commands:SKILL.md:63:ruby-shell-backtick-execution","reason":"The cited range contains Markdown text and a code fence boundary before the next example. It does not include an executable command line.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:67:ruby-shell-backtick-execution","reason":"The cited code block runs belt app run for an avatar or lipsync model. It is visible and purposeful, but it executes an external CLI with user-provided media inputs.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","reason":"The cited range only closes one example and introduces another. It does not include the command that appears in the next confirmed finding.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:80:ruby-shell-backtick-execution","reason":"The cited code block runs belt app run for an avatar or lipsync model. It is visible and purposeful, but it executes an external CLI with user-provided media inputs.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"external_commands:SKILL.md:85:ruby-shell-backtick-execution","reason":"The cited range is explanatory text and a code fence boundary. The command appears later and is adjudicated separately.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:91:ruby-shell-backtick-execution","reason":"The workflow runs belt app run for image generation and then avatar generation. The commands are user-visible, but they execute external services with supplied prompt and media data.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","reason":"The cited range contains a section heading and code fence boundary, not a shell command. The following OmniHuman command is covered separately.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:108:ruby-shell-backtick-execution","reason":"The cited code block runs belt app run for an avatar or lipsync model. It is visible and purposeful, but it executes an external CLI with user-provided media inputs.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"external_commands:SKILL.md:113:ruby-shell-backtick-execution","reason":"The cited range contains prose and a code fence boundary. It does not contain a shell command.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:119:ruby-shell-backtick-execution","reason":"The cited code block runs belt app run for an avatar or lipsync model. It is visible and purposeful, but it executes an external CLI with user-provided media inputs.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"external_commands:SKILL.md:124:ruby-shell-backtick-execution","reason":"The cited range contains the PixVerse heading and a code fence boundary. The actual command is in the next confirmed range.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:128:ruby-shell-backtick-execution","reason":"The cited code block runs belt app run for an avatar or lipsync model. It is visible and purposeful, but it executes an external CLI with user-provided media inputs.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"external_commands:SKILL.md:133:ruby-shell-backtick-execution","reason":"The cited range introduces a workflow and opens a code block. It does not include the executable belt lines.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:139:ruby-shell-backtick-execution","reason":"The code block runs text-to-speech and avatar generation commands and writes speech.json. This is legitimate workflow output, but it still performs external CLI execution.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"external_commands:SKILL.md:152:ruby-shell-backtick-execution","reason":"The cited range contains a tip, heading, and code fence boundary. The later dubbing commands are adjudicated separately.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:158:ruby-shell-backtick-execution","reason":"The dubbing workflow runs transcription, TTS, and lipsync belt commands with file redirection. These commands transmit media references to remote model services.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"external_commands:SKILL.md:172:ruby-shell-backtick-execution","reason":"The cited range introduces the UGC workflow and code block. It does not include a command invocation.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:178:ruby-shell-backtick-execution","reason":"The cited code block runs belt app run for an avatar or lipsync model. It is visible and purposeful, but it executes an external CLI with user-provided media inputs.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"external_commands:SKILL.md:194:ruby-shell-backtick-execution","reason":"The cited range contains descriptive bullets and a code fence boundary. It does not execute anything.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:206:ruby-shell-backtick-execution","reason":"The batch example runs belt app run inside a shell loop. The loop values are hardcoded, but it still executes repeated external CLI calls.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"external_commands:SKILL.md:218:ruby-shell-backtick-execution","reason":"The cited range contains use cases and tips with inline model names. It has no shell command.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:235:ruby-shell-backtick-execution","reason":"Line 235 uses inline code for a model name and aspect ratio. It is documentation formatting, not command execution.","verdict":"false_positive","confidence":0.9},{"id":"external_commands:SKILL.md:241:ruby-shell-backtick-execution","reason":"The related skills block recommends several npx skills add commands. Installing external skills is legitimate here, but it is supply-chain sensitive.","verdict":"confirmed","severity":"medium","confidence":0.84},{"id":"external_commands:SKILL.md:259:ruby-shell-backtick-execution","reason":"The cited range includes the inline command belt app store --category video. It is legitimate browsing behavior, but it still invokes an external CLI.","verdict":"confirmed","severity":"medium","confidence":0.72},{"id":"network:SKILL.md:11:hardcoded-url","reason":"The URL is a visible public documentation link for inference.sh. It does not transmit local files, secrets, or user content by itself.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:13:hardcoded-url","reason":"The URL is a visible Markdown image asset for documentation. It may load a remote image when rendered, but it is not hidden data exfiltration or credential transfer.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:17:hardcoded-url","reason":"The URL points to public installation documentation on GitHub. It is a visible reference link, not an automatic network request by the skill.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:24:hardcoded-url","reason":"The URL is a placeholder media URL in an example input. It illustrates user-supplied media fields and is not a fixed exfiltration endpoint.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:57:hardcoded-url","reason":"The URL is a placeholder media URL in an example input. It illustrates user-supplied media fields and is not a fixed exfiltration endpoint.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:69:hardcoded-url","reason":"The URL is a placeholder media URL in an example input. It illustrates user-supplied media fields and is not a fixed exfiltration endpoint.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:82:hardcoded-url","reason":"The URL is a placeholder media URL in an example input. It illustrates user-supplied media fields and is not a fixed exfiltration endpoint.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:83:hardcoded-url","reason":"The URL is a placeholder media URL in an example input. It illustrates user-supplied media fields and is not a fixed exfiltration endpoint.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:110:hardcoded-url","reason":"The URL is a placeholder media URL in an example input. It illustrates user-supplied media fields and is not a fixed exfiltration endpoint.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:111:hardcoded-url","reason":"The URL is a placeholder media URL in an example input. It illustrates user-supplied media fields and is not a fixed exfiltration endpoint.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:121:hardcoded-url","reason":"The URL is a placeholder media URL in an example input. It illustrates user-supplied media fields and is not a fixed exfiltration endpoint.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:122:hardcoded-url","reason":"The URL is a placeholder media URL in an example input. It illustrates user-supplied media fields and is not a fixed exfiltration endpoint.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:130:hardcoded-url","reason":"The URL is a placeholder media URL in an example input. It illustrates user-supplied media fields and is not a fixed exfiltration endpoint.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:131:hardcoded-url","reason":"The URL is a placeholder media URL in an example input. It illustrates user-supplied media fields and is not a fixed exfiltration endpoint.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:149:hardcoded-url","reason":"The URL is a placeholder media URL in an example input. It illustrates user-supplied media fields and is not a fixed exfiltration endpoint.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:160:hardcoded-url","reason":"The URL is a placeholder media URL in an example input. It illustrates user-supplied media fields and is not a fixed exfiltration endpoint.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:169:hardcoded-url","reason":"The URL is a placeholder media URL in an example input. It illustrates user-supplied media fields and is not a fixed exfiltration endpoint.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:210:hardcoded-url","reason":"The URL is a placeholder media URL in an example input. It illustrates user-supplied media fields and is not a fixed exfiltration endpoint.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:265:hardcoded-url","reason":"The URL is a visible public documentation link for inference.sh. It does not transmit local files, secrets, or user content by itself.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:266:hardcoded-url","reason":"The URL is a visible public documentation link for inference.sh. It does not transmit local files, secrets, or user content by itself.","verdict":"false_positive","confidence":0.86},{"id":"network:SKILL.md:267:hardcoded-url","reason":"The URL is a visible public documentation link for inference.sh. It does not transmit local files, secrets, or user content by itself.","verdict":"false_positive","confidence":0.86}],"semantic_findings":[{"title":"Broad External CLI Permission","severity":"medium","locations":[{"file":"SKILL.md","line_end":4,"line_start":4}],"confidence":0.66,"description":"The skill declares allowed-tools as Bash(belt *), which permits any belt subcommand, not only the documented avatar workflows. A future or mistaken command could access broader belt functionality than users expect.","confidence_reasoning":"The frontmatter directly grants wildcard belt command access. The documented commands are legitimate, but the permission is broader than the specific workflows shown."},{"title":"Synthetic Testimonial And Presenter Abuse Risk","severity":"medium","locations":[{"file":"SKILL.md","line_end":193,"line_start":174},{"file":"SKILL.md","line_end":227,"line_start":220}],"confidence":0.78,"description":"The skill includes UGC-style avatar generation and sample testimonial language. Without consent and disclosure controls, this can support deceptive synthetic endorsements or impersonation-style marketing.","confidence_reasoning":"The file explicitly targets UGC ads, virtual presenters, and generated testimonial-style scripts. The risk is contextual misuse rather than hidden code behavior."}],"subject_marketplace_commit_sha":null,"subject_content_hash":null,"subject_tree_hash":null,"subject_plugin_path":null,"audit_payload_hash":null,"confirmed_risk_level":null,"scanner_version":null,"policy_version":null,"subject":{"marketplaceCommitSha":null,"contentHash":null,"treeHash":null,"pluginPath":null,"auditPayloadHash":null},"scannerVersion":null,"policyVersion":null},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"not_attestable","url":null,"status":null,"reason":"confirmed_risk_level does not match the canonical trust resolver"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":2,"capabilityReviewCount":15,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"not_attestable","verificationState":"not_verified"},"isLatest":false}}