{"data":{"skill":{"slug":"gencraft-labs-ai-music","name":"ai-music","icon":"📦","repo":"https://github.com/gencraft-labs/skills/tree/5d625f59c710d7a33316b50b302b7158cdee5971/ai-music","status":"approved","author":"gencraft-labs","authorVersion":null,"skillstoreRevision":1,"license":"MIT"},"licenseCorrection":null,"audit":{"id":"f4abc7e6-5623-4a63-a250-3017b9e3c3b1","skill_id":"5cecc993-7bf1-4090-937d-7f6c0a0b79a6","version":1,"content_hash":"v3:91700357fd5a20128e50b01770f4cdd0788a3877:afec31ead5a4a0b5011be38be6d755bd111b605f7cbdfbe99859b112ac61ff88:5bcfce2bd2a49e15b53b5c720ab7c6800c510be1b656d9c974ce61f045695671:736b696c6c732f67656e63726166742d6c6162732f61692d6d75736963:59e5c76649565b8fbfd201b20400f4d6","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 76 static detections are false positives involving Markdown, documentation links, illustrative URLs, protected token storage, or model-selection prose. One semantic concern remains: inline shell examples lack safe quoting guidance despite claiming prompt content cannot cause injection. No evidence found of malicious instructions, credential exfiltration, or security-review manipulation; external CLI behavior was not independently verified.","remediation":[{"issue":"Shell examples wrap editable JSON in single quotes, but the input-boundary guidance incorrectly dismisses shell injection.","severity":"medium","suggestion":"Pass serialized JSON as a separate process argument without a shell, or document safe shell escaping and test apostrophes and shell metacharacters."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":6,"line_start":6},{"file":"SKILL.md","line_end":17,"line_start":17},{"file":"SKILL.md","line_end":28,"line_start":28},{"file":"SKILL.md","line_end":36,"line_start":34},{"file":"SKILL.md","line_end":40,"line_start":36},{"file":"SKILL.md","line_end":42,"line_start":40},{"file":"SKILL.md","line_end":45,"line_start":42},{"file":"SKILL.md","line_end":47,"line_start":45},{"file":"SKILL.md","line_end":49,"line_start":47},{"file":"SKILL.md","line_end":51,"line_start":49},{"file":"SKILL.md","line_end":55,"line_start":51},{"file":"SKILL.md","line_end":59,"line_start":55},{"file":"SKILL.md","line_end":61,"line_start":59},{"file":"SKILL.md","line_end":69,"line_start":61},{"file":"SKILL.md","line_end":74,"line_start":69},{"file":"SKILL.md","line_end":79,"line_start":74},{"file":"SKILL.md","line_end":86,"line_start":79},{"file":"SKILL.md","line_end":91,"line_start":86},{"file":"SKILL.md","line_end":92,"line_start":91},{"file":"SKILL.md","line_end":92,"line_start":92},{"file":"SKILL.md","line_end":103,"line_start":102},{"file":"SKILL.md","line_end":107,"line_start":103},{"file":"SKILL.md","line_end":114,"line_start":107},{"file":"SKILL.md","line_end":116,"line_start":114},{"file":"SKILL.md","line_end":116,"line_start":116},{"file":"SKILL.md","line_end":122,"line_start":122},{"file":"SKILL.md","line_end":127,"line_start":123},{"file":"SKILL.md","line_end":135,"line_start":127},{"file":"SKILL.md","line_end":137,"line_start":135},{"file":"SKILL.md","line_end":137,"line_start":137},{"file":"SKILL.md","line_end":153,"line_start":143},{"file":"SKILL.md","line_end":155,"line_start":153},{"file":"SKILL.md","line_end":155,"line_start":155},{"file":"SKILL.md","line_end":171,"line_start":161},{"file":"SKILL.md","line_end":173,"line_start":171},{"file":"SKILL.md","line_end":173,"line_start":173},{"file":"SKILL.md","line_end":192,"line_start":186},{"file":"SKILL.md","line_end":195,"line_start":192},{"file":"SKILL.md","line_end":198,"line_start":195},{"file":"SKILL.md","line_end":198,"line_start":198},{"file":"SKILL.md","line_end":254,"line_start":254},{"file":"SKILL.md","line_end":258,"line_start":258},{"file":"SKILL.md","line_end":259,"line_start":259},{"file":"SKILL.md","line_end":261,"line_start":260},{"file":"SKILL.md","line_end":265,"line_start":261},{"file":"SKILL.md","line_end":265,"line_start":265},{"file":"SKILL.md","line_end":267,"line_start":267},{"file":"SKILL.md","line_end":272,"line_start":271},{"file":"SKILL.md","line_end":273,"line_start":272},{"file":"SKILL.md","line_end":274,"line_start":273}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":22,"line_start":22},{"file":"SKILL.md","line_end":30,"line_start":30},{"file":"SKILL.md","line_end":61,"line_start":61},{"file":"SKILL.md","line_end":103,"line_start":103},{"file":"SKILL.md","line_end":123,"line_start":123},{"file":"SKILL.md","line_end":146,"line_start":146},{"file":"SKILL.md","line_end":155,"line_start":155},{"file":"SKILL.md","line_end":164,"line_start":164},{"file":"SKILL.md","line_end":232,"line_start":232},{"file":"SKILL.md","line_end":233,"line_start":233},{"file":"SKILL.md","line_end":234,"line_start":234},{"file":"SKILL.md","line_end":235,"line_start":235},{"file":"SKILL.md","line_end":250,"line_start":250},{"file":"SKILL.md","line_end":271,"line_start":271},{"file":"SKILL.md","line_end":272,"line_start":272},{"file":"SKILL.md","line_end":273,"line_start":273},{"file":"SKILL.md","line_end":274,"line_start":274},{"file":"SKILL.md","line_end":275,"line_start":275}]},{"factor":"filesystem","evidence":[{"file":"SKILL.md","line_end":259,"line_start":259},{"file":"SKILL.md","line_end":259,"line_start":259}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Shell-Safety Claim Omits User-Text Quoting Risks","locations":[{"file":"SKILL.md","line_end":113,"line_start":107},{"file":"SKILL.md","line_end":134,"line_start":127},{"file":"SKILL.md","line_end":260,"line_start":260}],"confidence":0.88,"description":"The guidance claims \"No shell-injection surface from prompt content\" while examples embed editable JSON inside shell single quotes. Inserting unescaped user lyrics or prompts containing apostrophes can break quoting and allow shell commands before the CLI receives JSON.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"The examples and unconditional safety claim directly show the missing shell-boundary protection. Exploitation depends on unsafe user-text substitution; no vulnerable runtime implementation is included."}],"low_findings":[],"dangerous_patterns":[],"files_scanned":1,"total_lines":276,"audit_model":"codex","audited_at":"2026-11-04T15:55:30.173+00:00","created_at":"2026-11-05T02:58:12.024303+00:00","static_findings":[{"id":"external_commands:SKILL.md:6:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Generate AI music on RunComfy via the `runcomfy` CLI — a smart router","category":"external_commands","line_end":6,"severity":"medium","line_start":6},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"minimal `runcomfy run` invoke. Triggers on \"generate music\",","category":"external_commands","line_end":17,"severity":"medium","line_start":17},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Generate AI music on RunComfy through one CLI — vocal songs, instrumentals, jingles, game loops, mul","category":"external_commands","line_end":28,"severity":"medium","line_start":28},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":36,"severity":"medium","line_start":34},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":40,"severity":"medium","line_start":36},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Step 1 — install** (one of, see the `runcomfy-cli` skill for details):","category":"external_commands","line_end":42,"severity":"medium","line_start":40},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":45,"severity":"medium","line_start":42},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":47,"severity":"medium","line_start":45},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Step 2 — sign in** (or set `RUNCOMFY_TOKEN` env var in CI / containers):","category":"external_commands","line_end":49,"severity":"medium","line_start":47},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":51,"severity":"medium","line_start":49},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":55,"severity":"medium","line_start":51},{"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":59,"severity":"medium","line_start":55},{"id":"external_commands:SKILL.md:59:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":61,"severity":"medium","line_start":59},{"id":"external_commands:SKILL.md:61: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":69,"severity":"medium","line_start":61},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**ACE Step 1.5** — `acestep-ai/ace-step-1.5/text-to-audio`","category":"external_commands","line_end":74,"severity":"medium","line_start":69},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**ElevenLabs AI Music Generation** — `elevenlabs/elevenlabs/music-generation`","category":"external_commands","line_end":79,"severity":"medium","line_start":74},{"id":"external_commands:SKILL.md:79:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**ACE Step (base)** — `acestep-ai/ace-step/text-to-audio` *(default for cost-sensitive work)*","category":"external_commands","line_end":86,"severity":"medium","line_start":79},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**ACE Step audio-inpaint** — `acestep-ai/ace-step/audio-inpaint`","category":"external_commands","line_end":91,"severity":"medium","line_start":86},{"id":"external_commands:SKILL.md:91:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**ACE Step audio-outpaint** — `acestep-ai/ace-step/audio-outpaint`","category":"external_commands","line_end":92,"severity":"medium","line_start":91},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> Extend an existing track **bidirectionally** — add intro before, outro after, or both (`extend_bef","category":"external_commands","line_end":92,"severity":"medium","line_start":92},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Model**: `elevenlabs/elevenlabs/music-generation`","category":"external_commands","line_end":103,"severity":"medium","line_start":102},{"id":"external_commands:SKILL.md:103:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Full schema + tips**: see the dedicated [`elevenlabs-music-generation`](https://www.skills.sh/agen","category":"external_commands","line_end":107,"severity":"medium","line_start":103},{"id":"external_commands:SKILL.md:107:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":114,"severity":"medium","line_start":107},{"id":"external_commands:SKILL.md:114:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":116,"severity":"medium","line_start":114},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"ElevenLabs Music reads **one `prompt`** carrying both style brief and lyrics with section markers. `","category":"external_commands","line_end":116,"severity":"medium","line_start":116},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Model**: `acestep-ai/ace-step/text-to-audio` (base) or `acestep-ai/ace-step-1.5/text-to-audio` (1.","category":"external_commands","line_end":122,"severity":"medium","line_start":122},{"id":"external_commands:SKILL.md:123:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Full schema + tips**: see the dedicated [`ace-step`](https://www.skills.sh/agentspace-so/runcomfy-","category":"external_commands","line_end":127,"severity":"medium","line_start":123},{"id":"external_commands:SKILL.md:127:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":135,"severity":"medium","line_start":127},{"id":"external_commands:SKILL.md:135:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":137,"severity":"medium","line_start":135},{"id":"external_commands:SKILL.md:137:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"ACE Step splits **style into `tags`** and **vocal content into `lyrics`** (with `[Verse]/[Chorus]/[B","category":"external_commands","line_end":137,"severity":"medium","line_start":137},{"id":"external_commands:SKILL.md:143:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":153,"severity":"medium","line_start":143},{"id":"external_commands:SKILL.md:153:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":155,"severity":"medium","line_start":153},{"id":"external_commands:SKILL.md:155:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`start_time_relative_to` and `end_time_relative_to` default to `start`; set to `end` to anchor again","category":"external_commands","line_end":155,"severity":"medium","line_start":155},{"id":"external_commands:SKILL.md:161:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":171,"severity":"medium","line_start":161},{"id":"external_commands:SKILL.md:171:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":173,"severity":"medium","line_start":171},{"id":"external_commands:SKILL.md:173:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Bidirectional in one call — set both `extend_before_duration` and `extend_after_duration` to add int","category":"external_commands","line_end":173,"severity":"medium","line_start":173},{"id":"external_commands:SKILL.md:186:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Route 2 (ACE Step 1.5)** — identical tags, swap `lyrics` per language. Or **Route 1 (ElevenLabs ","category":"external_commands","line_end":192,"severity":"medium","line_start":186},{"id":"external_commands:SKILL.md:192:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Route 1 (ElevenLabs Music)** with full brief + lyrics + section markers, `music_length_ms` match","category":"external_commands","line_end":195,"severity":"medium","line_start":192},{"id":"external_commands:SKILL.md:195:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Route 4 (ACE Step audio-outpaint)** with the hook as `audio`, add 30 s intro + 60 s outro in one","category":"external_commands","line_end":198,"severity":"medium","line_start":195},{"id":"external_commands:SKILL.md:198:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Route 3 (ACE Step audio-inpaint)** with `start_time` / `end_time` around the bad chorus, tags ma","category":"external_commands","line_end":198,"severity":"medium","line_start":198},{"id":"external_commands:SKILL.md:254:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"The skill classifies the user request into one of the four routes — generate (ElevenLabs or ACE Step","category":"external_commands","line_end":254,"severity":"medium","line_start":254},{"id":"external_commands:SKILL.md:258: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":258,"severity":"medium","line_start":258},{"id":"external_commands:SKILL.md:259: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":259,"severity":"medium","line_start":259},{"id":"external_commands:SKILL.md:260:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Input boundary (shell injection)**: prompts, tags, lyrics, and audio URLs are passed as a JSON s","category":"external_commands","line_end":261,"severity":"medium","line_start":260},{"id":"external_commands:SKILL.md:261:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Indirect prompt injection (third-party content)**: source `audio` URLs for inpaint / outpaint ar","category":"external_commands","line_end":265,"severity":"medium","line_start":261},{"id":"external_commands:SKILL.md:265: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":265,"severity":"medium","line_start":265},{"id":"external_commands:SKILL.md:267:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Scope of bash usage**: declared `allowed-tools: Bash(runcomfy *)`. The skill only invokes `runco","category":"external_commands","line_end":267,"severity":"medium","line_start":267},{"id":"external_commands:SKILL.md:271: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":272,"severity":"medium","line_start":271},{"id":"external_commands:SKILL.md:272:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [`elevenlabs-music-generation`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/elevenla","category":"external_commands","line_end":273,"severity":"medium","line_start":272},{"id":"external_commands:SKILL.md:273:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [`ace-step`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/ace-step) — full schema + p","category":"external_commands","line_end":274,"severity":"medium","line_start":273},{"id":"external_commands:SKILL.md:274:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- [`ai-video-generation`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/ai-video-generat","category":"external_commands","line_end":275,"severity":"medium","line_start":274},{"id":"network:SKILL.md:22:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"homepage: https://www.runcomfy.com","category":"network","line_end":22,"severity":"low","line_start":22},{"id":"network:SKILL.md:30:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"[runcomfy.com](https://www.runcomfy.com/?utm_source=skills.sh&utm_medium=skill&utm_campaign=ai-music","category":"network","line_end":30,"severity":"low","line_start":30},{"id":"network:SKILL.md:61: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":61,"severity":"low","line_start":61},{"id":"network:SKILL.md:103:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"**Full schema + tips**: see the dedicated [`elevenlabs-music-generation`](https://www.skills.sh/agen","category":"network","line_end":103,"severity":"low","line_start":103},{"id":"network:SKILL.md:123:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"**Full schema + tips**: see the dedicated [`ace-step`](https://www.skills.sh/agentspace-so/runcomfy-","category":"network","line_end":123,"severity":"low","line_start":123},{"id":"network:SKILL.md:146:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"audio\": \"https://your-cdn.example/song.mp3\",","category":"network","line_end":146,"severity":"low","line_start":146},{"id":"network:SKILL.md:155:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"`start_time_relative_to` and `end_time_relative_to` default to `start`; set to `end` to anchor again","category":"network","line_end":155,"severity":"low","line_start":155},{"id":"network:SKILL.md:164:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"audio\": \"https://your-cdn.example/hook-30s.mp3\",","category":"network","line_end":164,"severity":"low","line_start":164},{"id":"network:SKILL.md:232:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [All RunComfy models](https://www.runcomfy.com/models?utm_source=skills.sh&utm_medium=skill&utm_ca","category":"network","line_end":232,"severity":"low","line_start":232},{"id":"network:SKILL.md:233:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [ElevenLabs Music model page](https://www.runcomfy.com/models/elevenlabs/elevenlabs/music-generati","category":"network","line_end":233,"severity":"low","line_start":233},{"id":"network:SKILL.md:234:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [ACE Step base](https://www.runcomfy.com/models/acestep-ai/ace-step/text-to-audio?utm_source=skill","category":"network","line_end":234,"severity":"low","line_start":234},{"id":"network:SKILL.md:235:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [docs.runcomfy.com/cli](https://docs.runcomfy.com/cli/introduction?utm_source=skills.sh&utm_medium","category":"network","line_end":235,"severity":"low","line_start":235},{"id":"network:SKILL.md:250: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":250,"severity":"low","line_start":250},{"id":"network:SKILL.md:271: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":271,"severity":"low","line_start":271},{"id":"network:SKILL.md:272:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [`elevenlabs-music-generation`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/elevenla","category":"network","line_end":272,"severity":"low","line_start":272},{"id":"network:SKILL.md:273:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [`ace-step`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/ace-step) — full schema + p","category":"network","line_end":273,"severity":"low","line_start":273},{"id":"network:SKILL.md:274:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [`ai-video-generation`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/ai-video-generat","category":"network","line_end":274,"severity":"low","line_start":274},{"id":"network:SKILL.md:275:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [`ai-avatar-video`](https://www.skills.sh/agentspace-so/runcomfy-agent-skills/ai-avatar-video) — t","category":"network","line_end":275,"severity":"low","line_start":275},{"id":"filesystem:SKILL.md:259: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":259,"severity":"high","line_start":259},{"id":"filesystem:SKILL.md:259: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":259,"severity":"medium","line_start":259},{"id":"blocker:SKILL.md:72:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"> Avoid for: maximally polished commercial vocal hooks (try ElevenLabs Music) or cost-sensitive batc","category":"blocker","line_end":72,"severity":"low","line_start":72},{"id":"blocker:SKILL.md:77:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"> Avoid for: high-volume drafts / background music libraries — cost dominates.","category":"blocker","line_end":77,"severity":"low","line_start":77},{"id":"blocker:SKILL.md:82:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"> Avoid for: premium vocal hooks — use **ElevenLabs Music** or **ACE Step 1.5**.","category":"blocker","line_end":82,"severity":"low","line_start":82},{"id":"blocker:SKILL.md:89:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"> Avoid for: edits not bounded by time (use the source-model text-to-music instead).","category":"blocker","line_end":89,"severity":"low","line_start":89},{"id":"blocker:SKILL.md:94:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"> Avoid for: extending past 4 min total — chain calls instead.","category":"blocker","line_end":94,"severity":"low","line_start":94}],"finding_verdicts":[{"id":"external_commands:SKILL.md:6:ruby-shell-backtick-execution","reason":"Backticks format the CLI name in YAML description text. They do not execute Ruby or shell code.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","reason":"The command name is inline documentation within the skill description. No executable backtick substitution appears.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","reason":"Backticks mark an inline command name in introductory prose. This is Markdown formatting, not shell execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","reason":"The match is a Markdown fence around a skill-installation example. It is not Ruby execution or shell backtick substitution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:36:ruby-shell-backtick-execution","reason":"This closes the installation code fence and precedes a section heading. The backticks are Markdown delimiters.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","reason":"The line formats a related skill name before an installation example. No command substitution is present.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","reason":"The Markdown fence contains standard npm and npx setup commands for the documented CLI. No backtick execution occurs.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:45:ruby-shell-backtick-execution","reason":"This is a closing code fence followed by authentication guidance. It is not executable backtick syntax.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","reason":"Backticks format the supported token environment variable in authentication instructions. The text does not execute shell code.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","reason":"A Markdown fence documents the intended login command. No Ruby or shell backtick execution is shown.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:51:ruby-shell-backtick-execution","reason":"The match spans a closing login fence and the next section. These are Markdown delimiters, not command substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:55:ruby-shell-backtick-execution","reason":"The fenced example documents the intended music-generation command and local output directory. Its backticks do not execute anything.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:59:ruby-shell-backtick-execution","reason":"A closing Markdown fence precedes a documentation link. This is not shell backtick execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:61:ruby-shell-backtick-execution","reason":"The backticks format a linked skill name and a model identifier. Neither is executable code.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","reason":"Backticks delimit music model identifiers in a comparison section. No shell execution or system inspection is described.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","reason":"This section uses inline formatting for model names while comparing quality and cost. The backticks are not executable.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:79:ruby-shell-backtick-execution","reason":"The match covers model-selection prose and an inline model identifier. It contains no shell backtick substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:86:ruby-shell-backtick-execution","reason":"Backticks format the inpaint and outpaint endpoint names in documentation. No executable backtick expression appears.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:91:ruby-shell-backtick-execution","reason":"The endpoint and parameter names are inline Markdown code. They are not Ruby or shell execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","reason":"Backticks format audio-extension parameter names inside explanatory prose. No command is executed by this text.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:102:ruby-shell-backtick-execution","reason":"A model identifier and linked skill name use inline Markdown formatting. This is not shell command substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:103:ruby-shell-backtick-execution","reason":"The match spans a documentation link and an opening code fence. Both use Markdown backticks rather than executable substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:107:ruby-shell-backtick-execution","reason":"The fence encloses a fixed music-generation example, not backtick execution. User-text quoting guidance is assessed separately as a semantic concern.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:114:ruby-shell-backtick-execution","reason":"A closing code fence precedes inline parameter documentation. These backticks do not execute shell commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","reason":"Backticks format prompt and instrumental parameter names in prose. No shell substitution is present.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","reason":"Two model endpoint identifiers are formatted as inline code. Neither expression executes Ruby or a shell.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:123:ruby-shell-backtick-execution","reason":"The match spans a related-skill link and a code fence. The backticks are Markdown formatting.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:127:ruby-shell-backtick-execution","reason":"This is a fenced ACE Step command with fixed example inputs, not backtick execution. Dynamic shell quoting is assessed separately.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:135:ruby-shell-backtick-execution","reason":"The match begins at a closing code fence and reaches parameter descriptions. It is Markdown, not shell execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:137:ruby-shell-backtick-execution","reason":"Backticks delimit tags, lyrics, and section markers in documentation. No executable command substitution occurs.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:143:ruby-shell-backtick-execution","reason":"The fence encloses a documented audio-inpaint example with fixed parameters. The backticks themselves are not executable.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:153:ruby-shell-backtick-execution","reason":"This is a closing code fence followed by inline parameter guidance. No Ruby or shell backtick execution is present.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:155:ruby-shell-backtick-execution","reason":"Inline backticks format time-anchor parameters, values, and a related skill name. These are documentation elements.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:161:ruby-shell-backtick-execution","reason":"A Markdown fence surrounds the intended audio-extension command with fixed example data. No backtick command substitution occurs.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:171:ruby-shell-backtick-execution","reason":"The match covers a closing fence and extension parameter descriptions. Its backticks are Markdown syntax.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:173:ruby-shell-backtick-execution","reason":"Inline code formatting identifies the two extension-duration parameters. No executable shell expression is present.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:186:ruby-shell-backtick-execution","reason":"Backticks format lyric and duration fields in workflow recommendations. These are not shell commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:192:ruby-shell-backtick-execution","reason":"The text references input-field names while recommending generation and extension routes. Markdown backticks do not execute those fields.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:195:ruby-shell-backtick-execution","reason":"Inline formatting identifies audio and time-range parameters in examples. There is no shell command substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:198:ruby-shell-backtick-execution","reason":"The line formats start and end parameter names for chorus repair. It does not execute Ruby or shell code.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:254:ruby-shell-backtick-execution","reason":"Backticks identify the intended CLI invocation, output flag, and cancellation shortcut. The prose describes normal service interaction, not backtick execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:258:ruby-shell-backtick-execution","reason":"Inline commands document package-manager setup and explicitly discourage piping remote scripts into a shell. No executable backtick expression appears.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:259:ruby-shell-backtick-execution","reason":"Inline formatting marks login, a token path, and an environment variable. The paragraph prohibits exposing credentials.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:260:ruby-shell-backtick-execution","reason":"The backticks format the input flag and audio field. The inaccurate shell-safety claim is assessed separately, not as backtick execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:261:ruby-shell-backtick-execution","reason":"Backticks format an audio field and documented service domains. The surrounding text discusses input trust and endpoint restrictions.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:265:ruby-shell-backtick-execution","reason":"Service domains are inline Markdown code in an asserted endpoint policy. The backticks do not execute commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:267:ruby-shell-backtick-execution","reason":"The line documents the allowed command scope and operator-only installation. Backticks are formatting rather than executable substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:271:ruby-shell-backtick-execution","reason":"Backticks format names in related-skill links. No command execution is requested by the linked labels.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:272:ruby-shell-backtick-execution","reason":"This match spans related-skill link labels with inline code formatting. It is not executable Ruby or shell syntax.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:273:ruby-shell-backtick-execution","reason":"Backticks delimit related-skill names in a reference list. No backtick command substitution appears.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:274:ruby-shell-backtick-execution","reason":"The text links video-related skills using Markdown labels. Those labels do not execute shell commands.","verdict":"false_positive","confidence":1},{"id":"network:SKILL.md:22:hardcoded-url","reason":"The URL is homepage metadata for the advertised service. It does not transmit user data or credentials.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:30:hardcoded-url","reason":"These are service and documentation links with campaign attribution parameters. No sensitive data is included in the URLs.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:61:hardcoded-url","reason":"The URL links a related CLI documentation skill. It is not a callback or credential-upload endpoint.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:103:hardcoded-url","reason":"This is a related-skill reference for music-generation parameters. The link contains no user content or secrets.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:123:hardcoded-url","reason":"The URL references ACE Step documentation through a related skill. No data-exfiltration operation is shown.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:146:hardcoded-url","reason":"The reserved .example domain is an illustrative source-audio placeholder. It is not a real hardcoded collection endpoint.","verdict":"false_positive","confidence":1},{"id":"network:SKILL.md:155:hardcoded-url","reason":"The URL links further documentation for time-anchor parameters. No sensitive information is embedded in the link.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:164:hardcoded-url","reason":"This reserved .example URL represents user-provided source audio in a template. It is not an operational exfiltration destination.","verdict":"false_positive","confidence":1},{"id":"network:SKILL.md:232:hardcoded-url","reason":"The link opens the advertised service model catalog. Its campaign parameters do not contain private user data.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:233:hardcoded-url","reason":"The URL is a public model-information page with attribution parameters. No credential transmission is shown.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:234:hardcoded-url","reason":"These URLs identify public ACE Step model pages relevant to the skill. They are documentation links, not hidden callbacks.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:235:hardcoded-url","reason":"The URL links public CLI installation and authentication documentation. It carries no token or user input.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:250:hardcoded-url","reason":"The URL is a troubleshooting reference for documented exit codes. No outbound data-upload behavior is attached to it.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:271:hardcoded-url","reason":"This reference links a related CLI skill. The URL alone neither installs it nor sends credentials.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:272:hardcoded-url","reason":"The link points to related music-model documentation. No secret-bearing query or callback is present.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:273:hardcoded-url","reason":"This is a related ACE Step skill reference. It does not direct user data to an unrelated destination.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:274:hardcoded-url","reason":"The URL is an optional related video-generation skill link. It is not a network execution or data-upload instruction.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:275:hardcoded-url","reason":"The link references an optional avatar-video skill. There is no evidence of credential transfer or hidden network activity.","verdict":"false_positive","confidence":0.99},{"id":"filesystem:SKILL.md:259:hidden-file-in-home-directory","reason":"The path is the CLI's documented authentication store, reportedly protected with mode 0600. The paragraph explicitly prohibits token disclosure.","verdict":"false_positive","confidence":0.98},{"id":"filesystem:SKILL.md:259:hidden-file-access","reason":"The text documents normal login-token storage, not arbitrary hidden-file inspection. It instructs users not to log or commit the token.","verdict":"false_positive","confidence":0.98},{"id":"blocker:SKILL.md:72:system-reconnaissance","reason":"The sentence compares model quality and cost. It contains no host discovery, system inspection, or reconnaissance command.","verdict":"false_positive","confidence":1},{"id":"blocker:SKILL.md:77:system-reconnaissance","reason":"This is a warning about high-volume music-generation costs. It does not inspect or enumerate any system.","verdict":"false_positive","confidence":1},{"id":"blocker:SKILL.md:82:system-reconnaissance","reason":"The line recommends alternative music models for premium vocals. No system reconnaissance behavior appears.","verdict":"false_positive","confidence":1},{"id":"blocker:SKILL.md:89:system-reconnaissance","reason":"The sentence explains when time-range audio editing is unsuitable. It contains no host or environment discovery.","verdict":"false_positive","confidence":1},{"id":"blocker:SKILL.md:94:system-reconnaissance","reason":"The line discusses an audio-duration limit and chaining generation calls. It is unrelated to system reconnaissance.","verdict":"false_positive","confidence":1}],"semantic_findings":[{"title":"Shell-Safety Claim Omits User-Text Quoting Risks","severity":"medium","locations":[{"file":"SKILL.md","line_end":113,"line_start":107},{"file":"SKILL.md","line_end":134,"line_start":127},{"file":"SKILL.md","line_end":260,"line_start":260}],"confidence":0.88,"description":"The guidance claims \"No shell-injection surface from prompt content\" while examples embed editable JSON inside shell single quotes. Inserting unescaped user lyrics or prompts containing apostrophes can break quoting and allow shell commands before the CLI receives JSON.","confidence_reasoning":"The examples and unconditional safety claim directly show the missing shell-boundary protection. Exploitation depends on unsafe user-text substitution; no vulnerable runtime implementation is included."}],"subject_marketplace_commit_sha":"91700357fd5a20128e50b01770f4cdd0788a3877","subject_content_hash":"afec31ead5a4a0b5011be38be6d755bd111b605f7cbdfbe99859b112ac61ff88","subject_tree_hash":"5bcfce2bd2a49e15b53b5c720ab7c6800c510be1b656d9c974ce61f045695671","subject_plugin_path":"skills/gencraft-labs/ai-music","audit_payload_hash":"59e5c76649565b8fbfd201b20400f4d6","confirmed_risk_level":"medium","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"91700357fd5a20128e50b01770f4cdd0788a3877","contentHash":"afec31ead5a4a0b5011be38be6d755bd111b605f7cbdfbe99859b112ac61ff88","treeHash":"5bcfce2bd2a49e15b53b5c720ab7c6800c510be1b656d9c974ce61f045695671","pluginPath":"skills/gencraft-labs/ai-music","auditPayloadHash":"59e5c76649565b8fbfd201b20400f4d6"},"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/gencraft-labs-ai-music/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}}