{"id":"cmuxilnx40r83ad07brz4zxtb","slug":"generate-image","publicId":"4ac6a68f-b66f-4554-865e-4c7ad5fecd89","name":"generate-image","description":"Generates or edits images with AI models through the OpenRouter Image API (Gemini, Seedream, Recraft, GPT-Image, Riverflow). Use for photos, illustrations, artwork, concept art, visual assets, logos, and image editing or compositing from reference images. For flowcharts, circuits, pathways, and other technical diagrams, use the scientific-schematics skill instead.","version":"","author":"k-dense-ai","license":"MIT","compatibility":"Requires Python 3.9+ and network access to openrouter.ai. The bundled script uses only the standard library. Image generation requires the OPENROUTER_API_KEY credential and bills per request; listing models, inspecting a model, and --dry-run do not. Targets the OpenRouter Image API (POST /api/v1/images) documentation and public discovery reviewed on 2026-09-30.","status":"completed","overallGrade":"C","scannerVersion":11,"fileCount":3,"hasSkillMd":true,"hasScripts":true,"hasReferences":true,"hasEvals":false,"hasAssets":false,"sourceType":"github","sourceUrl":"https://github.com/k-dense-ai/scientific-agent-skills/tree/main/skills/generate-image","createdAt":"2026-10-07T02:55:07.863Z","completedAt":"2026-10-07T02:55:07.861Z","visibility":"public","publishedAt":"2026-09-10T21:06:22.214Z","category":"","frameworks":[],"badgeStatus":"flagged","downloadCount":0,"verdictRationale":{"summary":"Skill failed: 1 hard fail in security or structure checks.","verdict":"fail","scanners":[{"source":"vettd","weight":1,"verdict":"fail"},{"source":"cisco","weight":0.8,"verdict":"pass"}],"consensus":"fail","warnTriggers":["References external URL — review for indirect prompt injection risk"],"policyVersion":"consensus-v1","hardFailTriggers":["Base64-decoded content stored in variable"]},"verdictPolicyVersion":"consensus-v1","skillId":"cmtw0p08tbbunad07qobgv424","findings":[{"id":"cmuxilnx50r84ad07jcuj397n","source":"vettd","category":"security","label":"Base64-decoded content stored in variable","detail":"Detected in scripts/generate_image.py:510 — `content = base64.b64decode(payload, validate=True)`","severity":"high","ruleId":"VTD-0025","owaspLlmCategory":null,"intent":"negligent","chainId":null,"fingerprint":"304ba4a6b4243f53873355ccd4d8f855","filepath":"scripts/generate_image.py"},{"id":"cmuxilnx50r86ad07ee4k2feg","source":"cisco","category":"security","label":"Code makes network requests","detail":"SKILL.md — Skill code makes network requests. While not controlled by allowed-tools, network access should be documented and justified in the skill description.","severity":"medium","ruleId":"VTD-0087","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"bbe419cfb0687c04e7f13893e88c32c2","filepath":"SKILL.md"},{"id":"cmuxilnx50r87ad07b9igon24","source":"cisco","category":"security","label":"Outbound network request primitives that can transmit data externally","detail":"scripts/generate_image.py:194 — Pattern detected: urllib.request.Request(","severity":"medium","ruleId":"DATA_EXFIL_NETWORK_REQUESTS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"1932db29604cc2556dfbf83b0df9ed54","filepath":"scripts/generate_image.py"},{"id":"cmuxilnx50r88ad07j2clh10v","source":"cisco","category":"security","label":"Outbound network request primitives that can transmit data externally","detail":"scripts/generate_image.py:196 — Pattern detected: urllib.request.urlopen(","severity":"medium","ruleId":"DATA_EXFIL_NETWORK_REQUESTS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"1932db29604cc2556dfbf83b0df9ed54","filepath":"scripts/generate_image.py"},{"id":"cmuxilnx50r85ad07fwnmo38u","source":"vettd","category":"security","label":"References external URL — review for indirect prompt injection risk","detail":"External URL(s) detected in SKILL.md — referenced content can change after audit","severity":"medium","ruleId":"VTD-0088","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"42638a8b7e9fc5df27449992eaebc724","filepath":"SKILL.md"}],"scannerRuns":[{"source":"cisco","status":"success","verdict":null,"grade":"C","findingCount":3,"criticalCount":0,"highCount":0},{"source":"vettd","status":"success","verdict":null,"grade":"C","findingCount":2,"criticalCount":0,"highCount":1}],"user":{"name":"Kris Mondlane","image":"https://avatars.githubusercontent.com/u/237055?v=4"},"repository":{"owner":"k-dense-ai","name":"scientific-agent-skills"},"freshness":{"status":"verified_unchanged","reason":null,"retryable":false,"renamedTo":null,"lastCheckedAt":"2026-10-21T19:08:41.361Z","lastVerifiedAt":"2026-10-21T19:08:41.361Z","lastChangeDetectedAt":"2026-10-06T07:29:24.263Z","scannedHash":"0d7d7a6e71395e7a67d4458fc80c7b542e64ab4e","latestUpstreamHash":"0d7d7a6e71395e7a67d4458fc80c7b542e64ab4e","nextCheckDueAt":"2026-10-22T17:52:26.494Z"},"signalCategories":[{"category":"safety","label":"Safety","form":"graded","verdict":null,"rows":[]},{"category":"reliability","label":"Reliability & Quality","form":"graded","verdict":null,"rows":[]},{"category":"performance","label":"Performance","form":"measured","verdict":{"form":"measured","magnitudes":[{"ruleId":"performance/static-context-tokens","label":"Static context tokens","value":4165,"unit":null,"method":"tiktoken/cl100k_base/skill-md-body"}]},"rows":[{"origin":"signal","id":"cmuxilnzp0r8qad07lp1swrfp","subjectType":"skill_audit","subjectId":"cmuxilnx40r83ad07brz4zxtb","relatedType":"","relatedId":"","dataCategory":"performance","sourceClass":"scan","source":"vettd","ruleId":"performance/static-context-tokens","severity":null,"label":"Static context tokens","detail":null,"valueNum":4165,"valueText":null,"unit":null,"method":"tiktoken/cl100k_base/skill-md-body","derivation":null,"confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:55:06.000Z","payload":null},{"origin":"signal","id":"cmuxiloba0rbpad071e3xsksf","subjectType":"skill_audit","subjectId":"cmuxilnx40r83ad07brz4zxtb","relatedType":"","relatedId":"","dataCategory":"performance","sourceClass":"scan","source":"vettd","ruleId":"performance/progressive-disclosure","severity":null,"label":"Progressive disclosure","detail":null,"valueNum":null,"valueText":"present","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:55:06.000Z","payload":null}]},{"category":"cost","label":"Cost","form":"measured","verdict":null,"rows":[]},{"category":"compatibility","label":"Compatibility","form":"unjudged","verdict":{"form":"unjudged"},"rows":[{"origin":"signal","id":"cmuxilnzw0r8wad07y5hkjus9","subjectType":"skill_audit","subjectId":"cmuxilnx40r83ad07brz4zxtb","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/declared-environment-assumptions","severity":null,"label":"Declared environment assumptions","detail":null,"valueNum":null,"valueText":"Requires Python 3.9+ and network access to openrouter.ai. The bundled script uses only the standard library. Image generation requires the OPENROUTER_API_KEY credential and bills per request; listing models, inspecting a model, and --dry-run do not. Targets the OpenRouter Image API (POST /api/v1/images) documentation and public discovery reviewed on 2026-09-30.","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:55:06.000Z","payload":null},{"origin":"signal","id":"cmuxilo2i0r9ead07w8vwd8pf","subjectType":"skill_audit","subjectId":"cmuxilnx40r83ad07brz4zxtb","relatedType":"declared_tool","relatedId":"Bash","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/declared-required-tools","severity":null,"label":"Declared required tool","detail":null,"valueNum":null,"valueText":"Bash","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:55:06.000Z","payload":null},{"origin":"signal","id":"cmuxilo2r0r9mad07srp4lcs3","subjectType":"skill_audit","subjectId":"cmuxilnx40r83ad07brz4zxtb","relatedType":"declared_tool","relatedId":"Edit","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/declared-required-tools","severity":null,"label":"Declared required tool","detail":null,"valueNum":null,"valueText":"Edit","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:55:06.000Z","payload":null},{"origin":"signal","id":"cmuxilo2y0r9sad0746t8g5yf","subjectType":"skill_audit","subjectId":"cmuxilnx40r83ad07brz4zxtb","relatedType":"declared_tool","relatedId":"Read","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/declared-required-tools","severity":null,"label":"Declared required tool","detail":null,"valueNum":null,"valueText":"Read","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:55:06.000Z","payload":null},{"origin":"signal","id":"cmuxilo5b0r9xad07x6p7c6k4","subjectType":"skill_audit","subjectId":"cmuxilnx40r83ad07brz4zxtb","relatedType":"declared_tool","relatedId":"Write","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/declared-required-tools","severity":null,"label":"Declared required tool","detail":null,"valueNum":null,"valueText":"Write","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:55:06.000Z","payload":null},{"origin":"signal","id":"cmuxilo600radad07fqmxwh7f","subjectType":"skill_audit","subjectId":"cmuxilnx40r83ad07brz4zxtb","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/declared-name","severity":null,"label":"Declared skill name","detail":null,"valueNum":null,"valueText":"generate-image","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:55:06.000Z","payload":null},{"origin":"signal","id":"cmuxilobh0rbvad074vledfk0","subjectType":"skill_audit","subjectId":"cmuxilnx40r83ad07brz4zxtb","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/cli-help","severity":null,"label":"CLI help","detail":null,"valueNum":null,"valueText":"present","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:55:06.000Z","payload":null},{"origin":"signal","id":"cmuxilodl0rc4ad07tejrnczt","subjectType":"skill_audit","subjectId":"cmuxilnx40r83ad07brz4zxtb","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/structured-output","severity":null,"label":"Structured output","detail":null,"valueNum":null,"valueText":"present","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:55:06.000Z","payload":null}]},{"category":"sentiment","label":"Popularity","form":"unjudged","verdict":null,"rows":[]},{"category":"characteristics","label":"Characteristics","form":"unjudged","verdict":null,"rows":[]}],"signalCount":33,"publisherSupplied":["name","description","author","version","license"]}