Use this skill to create an image from a text description with AI image generation, then save it locally and display it to the user.
Setup
Before the first use, ensure the agent-gw Python SDK (version 0.2.6 or newer) is installed. This checks the current environment and installs or upgrades it only when needed:
python3 scripts/image_generation_tool.py ensure-deps
The SDK needs an API key from api_key=..., KIMI_API_KEY, or
~/.kimi/agent-gw.json.
Parameters
description(required): detailed text description of the image to generate.ratio: one of1:1, 3:2, 2:3, 16:9, 9:16. Default1:1.resolution: one of1K, 2K, 4K. Default1K. Opaque background supports only these combinations:1K:1:1(1024x1024),3:2(1536x1024),2:3(1024x1536);2K:1:1(2048x2048),16:9(2048x1152);4K:16:9(3840x2160),9:16(2160x3840). Transparent background only supports1Kwith1:1, 3:2, 2:3.background:opaque(default) ortransparent.reference_image: public URL(s) that guide the generation. Repeat--reference-imagefor multiple. The gateway only accepts public URLs, so a local image must be converted withimage-to-urlfirst (see "Reference images" below); passing a local path togenerateis rejected.output(required): local output path ending in.jpg,.jpeg, or.png. Transparent background must use.png.
Workflow
- Build a detailed, descriptive
descriptionfrom the user's request: include subject, style, composition, lighting, colors, and mood. - Choose
ratio,resolution, andbackground. Enforce the supported combinations. For opaque images:1Kallows1:1 / 3:2 / 2:3;2Kallows1:1 / 16:9;4Kallows16:9 / 9:16. Transparent only allows1:1 / 3:2 / 2:3ratios,1Kresolution, and PNG output. - Pick an
outputfile path with a matching extension. - If the user supplies reference images, they must be public URLs. For any
local image (a file on the execution environment, whether that is a sandbox
or the client's local machine), first run the
image-to-urlcommand to upload it and get a public URL, then pass that URL with--reference-image. The gateway only accepts public reference URLs; passing a local path togenerateis rejected. - Run the
generatecommand (see "Script"). It callsgenerate_imageon the gateway, readsmedia.url/media.mime_typefrom the response, and downloads the image to youroutputpath withcurl(the extension is corrected to matchmime_type). - If the call fails, explain the failure reason from the printed error. Do not invent an image or a local path.
- On success, the script prints the saved file path. Then display the image
to the user by calling the
readFiletool on that path. Reading the image to show it is the model's job, not this plugin's work.
Reference images
The plugin runs in an execution environment that may be a sandbox or the
client's local machine. Either way, the gateway's reference_image_urls must be
public URLs, so any local reference image has to be converted first. This is an
explicit, separate step — generate does not accept local paths.
Convert each local image to a public URL with image-to-url (it uploads the
file via the agent-gw upload_storage API and returns the public signed_url),
then pass the printed public URL to generate with --reference-image:
python3 scripts/image_generation_tool.py image-to-url --image-path /path/to/local.png
Script
Use the bundled script from the plugin directory.
Generate an image:
python3 scripts/image_generation_tool.py generate \
--description "A serene mountain lake at sunrise, soft golden light, mirror reflection, ultra detailed" \
--ratio "16:9" \
--resolution "2K" \
--background "opaque" \
--output "/path/to/output.png"
Convert a local reference image to a public URL first, then pass that URL:
# Step 1: upload the local image, capture the printed public URL
python3 scripts/image_generation_tool.py image-to-url --image-path /path/to/local_ref.png
# Step 2: pass public URLs (only) to generate
python3 scripts/image_generation_tool.py generate \
--description "Same character in a snowy forest, cinematic" \
--ratio "3:2" \
--reference-image "https://example.com/ref1.jpg" \
--reference-image "https://<public-url-from-step-1>" \
--output "/path/to/output.jpg"
The script:
generateaccepts only public--reference-imageURLs and sends them asreference_image_urls; a local path is rejected with a hint to useimage-to-urlimage-to-urluploads a local image via the agent-gwupload_storageAPI and prints the resulting publicsigned_url- sends
{"description", "ratio", "resolution", "background", "reference_image_urls"}to the gatewaygenerate_imageAPI - reads the generated
media.urlandmedia.mime_typefrom the response - downloads the image to the
--outputpath withcurl, naming the file bymime_type(png/jpg) - prints the saved path and a reminder to display it with
readFile
generate_image response shape (resp.json()):
{
"media": {
"url": str, # public URL of the generated image
"mime_type": str, # e.g. "image/png" or "image/jpeg"
}
}
This skill uses the agent-gw Python SDK:
client.tools.generate_image(...)for generation andclient.upload_storage(...)(which returns a publicsigned_url) to turn a local reference image into a public URL.