From mcp-media-toolkit
Generate an AI image with Google Gemini and upload it to S3-compatible storage in one step, returning a public URL. Use whenever the user asks for "an image of X", "create an image for my project", "I need a visual of Y", "generate and upload", "make me an image I can use", or any image request where the user is likely to want a URL they can share/embed. This is the most common image workflow — prefer this skill over /generate-image-gemini when the user needs the result online, not just as a local file. Includes automatic prompt optimization.
npx claudepluginhub tadeukaiba/mcp-media-toolkit --plugin mcp-media-toolkitThis skill uses the workspace's default tool permissions.
One-shot workflow: take a user request, optimize the prompt, generate an image with Gemini, upload it to S3-compatible storage, and return the public URL. This is the most common image use case — the user almost always wants a URL they can use.
Implements structured self-debugging workflow for AI agent failures: capture errors, diagnose patterns like loops or context overflow, apply contained recoveries, and generate introspection reports.
Monitors deployed URLs for regressions in HTTP status, console errors, performance metrics, content, network, and APIs after deploys, merges, or upgrades.
Provides React and Next.js patterns for component composition, compound components, state management, data fetching, performance optimization, forms, routing, and accessible UIs.
One-shot workflow: take a user request, optimize the prompt, generate an image with Gemini, upload it to S3-compatible storage, and return the public URL. This is the most common image use case — the user almost always wants a URL they can use.
image-gemini-s3) when the user will want the image online — embedding in docs, sharing a link, using in a project, posting somewhere./generate-image-gemini when the user explicitly only wants a local file, is in a disconnected environment, or hasn't configured S3.When in doubt, default to this skill. Adding an upload takes almost no extra time and the user ends up with both the local file path AND the URL.
Capture the request. If the prompt is vague, ask one focused question to lock down the subject. Otherwise proceed.
Optimize the prompt. Rewrite the user's description into a detailed image prompt. See the Prompt Optimization section below — it's the same approach as /generate-image-gemini, and it's the main reason this skill produces better results than calling the raw tool.
Pick defaults.
quality: fast (Nano Banana, 1K) — this is the right default. It's cheap and quick, and most image requests don't need more. Move up to balanced only when the user signals they care about quality ("for my landing page", "this needs to look polished"). Use quality only when the user explicitly asks for photorealistic/print-quality work — warn them it takes several minutes.aspect_ratio: match the use case — 1:1 for avatars/icons, 16:9 for landing pages/banners, 9:16 for portraits/stories, 4:3 for photos, 3:4 for postersformat: png default, webp if the user mentioned web performance, jpeg only for large photographic contentCall the tool. Use mcp__mcp-media-toolkit__generate_and_upload_gemini_s3 with the optimized prompt and chosen options. This runs generation and upload in one call, so partial failures are handled cleanly.
Return the result. Report:
Offer iteration. If they want changes, rerun the tool with a modified prompt. Don't rebuild the whole workflow — just adjust the prompt.
The raw Gemini tool doesn't optimize prompts — this skill does it on the Claude side, adding detail about composition, lighting, style, and technical quality before the API call.
Keep the result to 1-3 dense sentences. Model responds better to information density than to long paragraphs.
Example 1
quality: balanced, aspect_ratio: 16:9, format: png (bumped to balanced because "for my blog" signals quality matters)Example 2
quality: fast, aspect_ratio: 1:1, format: png (fast is fine for exploratory logo drafts)Example 3 — user was already specific
If the user's prompt is already dense and specific, don't bloat it. Tighten wording, maybe add technical quality hints, and pass it through. Only expand prompts that are genuinely vague.
Partial failure is the most important case here. If the image generates but the upload fails, the tool returns isError: true but still includes the local file path and a thumbnail preview. When this happens:
/upload-image-s3.Other errors:
/generate-image-gemini (local only).