ワンクリックで
image-gen
Generate images via OpenRouter (GPT-5 Image, GPT-5 Image Mini, Gemini Pro/Flash).
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Generate images via OpenRouter (GPT-5 Image, GPT-5 Image Mini, Gemini Pro/Flash).
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Debug and investigate foci platform internals. API logs, payload logs, session files, CC backend transcripts, cache diagnosis, service logs, and common investigation patterns. Read the relevant subfile before investigating.
Security scanner for untrusted code and AI agent skills. Detects credential theft, code injection, privacy violations, deception, resource abuse, and ethical issues before you read or activate untrusted content.
How to operate as a foci agent — the tools you call, how your prompts and turns are built, the databases behind your state, and the config that shapes you. Read the relevant subfile before doing related work.
Finding text on disk — use ack, not grep (grep is only for filtering the piped output of other commands). Conventions for fast, correct file-content search across a codebase.
Drive a live browser via accessibility-tree snapshots — navigate, click, fill forms, select, press keys, screenshot. Use when a task needs interacting with a real web page (logins, JS-rendered content, multi-step flows), not a static read (that's web_fetch).
Developing the foci platform itself (Go server + backends). Architecture, the CC/opencode backends, the routing/delivery model, and the turn/steer/ask lifecycle — the internals you need when CODING foci, not when operating as an agent. Read the relevant subfile before changing that area.
| name | image-gen |
| description | Generate images via OpenRouter (GPT-5 Image, GPT-5 Image Mini, Gemini Pro/Flash). |
| homepage | https://openrouter.ai/ |
| metadata | {"foci":{"requires":{"secrets":["openrouter.api_key"]}}} |
Generate images using OpenRouter's image-capable models via http_request.
| Alias | Model ID | Notes |
|---|---|---|
gpt5 | openai/gpt-5-image | Best quality, slower |
gpt5-mini | openai/gpt-5-image-mini | Default. Fast + cheap |
gemini-pro | google/gemini-3-pro-image-preview | Supports resolution/aspect config |
gemini-flash | google/gemini-2.5-flash-image | Cheapest, fast |
One http_request call does everything — calls the API, extracts the image from the JSON response, decodes base64, and saves to disk:
http_request(
method: "POST",
url: "https://openrouter.ai/api/v1/chat/completions",
headers: {
"Authorization": "Bearer {{secret:openrouter.api_key}}",
"Content-Type": "application/json"
},
body: '{"model":"openai/gpt-5-image-mini","messages":[{"role":"user","content":"A cat on the moon"}],"modalities":["image","text"]}',
save_to: "/tmp/generated-image.png",
save_from_json_path: "choices.0.message.images.0.image_url.url"
)
Then send the image to the user:
send_to_chat(file_path: "/tmp/generated-image.png", text: "Here's your image")
For Gemini models, add image_config to the request body:
{
"model": "google/gemini-3-pro-image-preview",
"messages": [{"role": "user", "content": "prompt"}],
"modalities": ["image", "text"],
"image_config": {
"aspect_ratio": "16:9",
"image_size": "2K"
}
}
http_request POSTs to OpenRouter with the secret API key (domain-locked, never exposed)save_from_json_path extracts choices.0.message.images.0.image_url.url from the JSON responsedata:image/png;base64,... URI, it's decoded to binary automaticallysave_to pathsend_to_chat with file_pathhttp_request tool directlyopenrouter.api_key must be configured in secrets.toml with allowed_hosts = ["openrouter.ai"]