Codex Native Image Generation
Use Codex's native image-generation capability. This skill is separate from the
API-based imagegen skill and must never fall back to that workflow.
Preconditions
Confirm the assigned runtime CLI from the employee/runtime context.
If the CLI is not
codex, stop and report exactly:precondition failed: not codex - codex-imagegen requires Codex native image generationDo not re-dispatch, call another image skill, or ask for an API key.
If Codex does not expose native image generation in the current session, stop and report
precondition failed: codex native image generation unavailable.
Native Workflow
Derive a short lowercase ASCII kebab-case slug from the subject.
Use a local timestamp in
YYYYMMDD-HHMMSSform.Ensure the default output directory exists:
~/.cli-jaw/uploadsIf
CLI_JAW_HOMEis explicitly set for this runtime, use itsuploadsdirectory instead so the running server and the output path share one JAW_HOME.Set the final output path to:
~/.cli-jaw/uploads/<slug>-<timestamp>.pngPerform the user's image generation or edit directly with Codex's native image-generation capability. No API key, Python image script, OpenAI SDK, or
skills_ref/imagegenworkflow is required.Materialize the final artifact at the output path and verify that the file exists and is a non-empty PNG before reporting success.
For an edit, preserve every user-named invariant and inspect the final result before reporting it.
Web Report
Unless direct channel delivery was explicitly requested and completed, the final answer must contain the expanded absolute path in Markdown image syntax:

Do not use ~, a relative path, file://, a remote URL, or a data URL in this
Markdown. The absolute local path is the cli-jaw web inlay trigger.
Explicit Channel Delivery
Call POST /api/channel/send only when the user explicitly asks to send the
image to Telegram, Discord, or both. Use the final absolute path:
{
"channel": "telegram",
"type": "photo",
"file_path": "/absolute/path/to/.cli-jaw/uploads/<slug>-<timestamp>.png",
"caption": "Optional concise caption"
}
For Discord, send the same shape with "channel": "discord". If both channels
were requested, make two calls, one per channel. Do not use channel: "active"
as a substitute for an explicit two-channel request.
A request that merely originated in Telegram or Discord is not permission to make an extra direct API call. The host may relay the normal final Markdown itself.
Duplicate Prevention
Choose exactly one final reporting mode:
- No direct channel send: include the Markdown image from Web Report.
- Direct channel send completed: do not include Markdown image syntax. Report only
Saved: <absolute path>and the channel names that succeeded.
Never both call /api/channel/send and leave the same image as  in
the final answer. If a channel call fails, report the failed channel and error;
do not claim delivery.
Hard Boundaries
- Never require or inspect
OPENAI_API_KEY. - Never invoke
scripts/image_gen.pyor the API-basedimagegenskill. - Never save the final artifact outside the active JAW_HOME uploads directory.
- Never send to a channel that the user did not explicitly name.
- Never report success before the local file existence/non-empty check passes.