Grok Media
calesthio/OpenMontage
xAI Grok image and video generation guide covering authentication, endpoints, prompt structure, image editing, reference-image video, and async polling.
Generate or edit images via Grok Imagine Image 2.0 through DroidProxy (no XAIAPIKEY).
$ npx skills add nikships/droidproxy --skill grok-imagine -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nikships/droidproxy grok-imagine --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/nikships/droidproxy.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/grok-imagine .claude/skills/grok-imagine && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "grok-imagine" agent skill from https://github.com/nikships/droidproxy/tree/main/skills/grok-imagine into .claude/skills/grok-imagine/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "grok-imagine", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/nikships/droidproxy/tree/main/skills/grok-imagineType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add nikships/droidproxy --skill grok-imagine -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nikships/droidproxy grok-imagine --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nikships/droidproxy.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/grok-imagine .agents/skills/grok-imagine && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "grok-imagine" agent skill from https://github.com/nikships/droidproxy/tree/main/skills/grok-imagine into .agents/skills/grok-imagine/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "grok-imagine", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nikships/droidproxy --skill grok-imagine -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nikships/droidproxy grok-imagine --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nikships/droidproxy.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/grok-imagine .cursor/skills/grok-imagine && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "grok-imagine" agent skill from https://github.com/nikships/droidproxy/tree/main/skills/grok-imagine into .cursor/skills/grok-imagine/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "grok-imagine", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/nikships/droidproxy.git --path skills/grok-imagine--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add nikships/droidproxy --skill grok-imagine -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nikships/droidproxy grok-imagine --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nikships/droidproxy.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/grok-imagine .gemini/skills/grok-imagine && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "grok-imagine" agent skill from https://github.com/nikships/droidproxy/tree/main/skills/grok-imagine into .gemini/skills/grok-imagine/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "grok-imagine", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install nikships/droidproxy grok-imagineInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add nikships/droidproxy --skill grok-imagine -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/nikships/droidproxy.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/grok-imagine .github/skills/grok-imagine && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "grok-imagine" agent skill from https://github.com/nikships/droidproxy/tree/main/skills/grok-imagine into .github/skills/grok-imagine/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "grok-imagine", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nikships/droidproxy --skill grok-imagine -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install nikships/droidproxy grok-imagine --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nikships/droidproxy.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/grok-imagine .opencode/skills/grok-imagine && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "grok-imagine" agent skill from https://github.com/nikships/droidproxy/tree/main/skills/grok-imagine into .opencode/skills/grok-imagine/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "grok-imagine", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
grok-imagineGenerate or edit images via Grok Imagine Image 2.0 through DroidProxy (no XAIAPIKEY).
Grok Imagine is an agent skill from nikships/droidproxy. Generate or edit images via Grok Imagine Image 2.0 through DroidProxy (no XAIAPIKEY). Use when the user asks to generate, create, draw, imagine, or edit an image, illustration, icon, mockup, or similar visual asset and DroidProxy Grok OAuth is available. Prefer this over inventing image URLs or base64.
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Backend & APIs, covering Image editing and OAuth and OpenID Connect. It works with xAI Grok. The repository describes itself as: macOS menu bar app that proxies Claude/Codex/Grok + More subscriptions for use with Factory Droid CLI. Actively maintained and updated with new model releases! The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 9fdd443. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
jqcurlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
imgen.x.aiAlso links to:
docs.x.aiFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
XAI_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Grok Imagine loads about 2.2k tokens when it runs. Until then it costs about 80 tokens; SKILL.md has 1,052 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from nikships/droidproxy at commit 9fdd443, republished under its MIT licence (© nikships). 1,052 words, ~2,212 tokens.
.claude/skills/grok-imagine/SKILL.md (or your agent's skills folder).Generate and edit images with grok-imagine-image-2.0 using the SuperGrok /
X Premium+ OAuth session that powers DroidProxy chat. This is the current
Imagine image model (text or image → image). Do not use the older
grok-imagine-image / grok-imagine-image-quality ids unless the user
explicitly asks for them.
Two things you can't guess and that everything else depends on:
http://localhost:8317, not api.x.ai. DroidProxy
TLS-forwards any request whose model starts with grok- and injects the
OAuth bearer.Authorization: Bearer dummy-not-used. The real token comes from
the proxy. Never ask for or use an XAI_API_KEY.Use for generating or editing visual assets. Not for understanding an image the user already attached — that's chat multimodal, not this skill.
xAI rewrites the prompt with an upsampler before generation, so write a clear scene rather than a tag soup. If the user gives a detailed prompt or asks you to use theirs, use it verbatim. Otherwise craft 2–5 sentences of natural prose:
subject → action/pose → setting → style → composition → lighting/mood → key details
aspect_ratio to the use case:
icons 1:1, banners 16:9, stories 9:16.<IMAGE_0>, <IMAGE_1>,
<IMAGE_2> in the prompt (max 3). Combining subjects, transferring a style,
or composing a scene from references is the intended use.RESP=$(curl -sS http://localhost:8317/v1/images/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer dummy-not-used" \
-d "$(jq -n --arg p "A red balloon on a wooden table, soft natural light" \
'{model:"grok-imagine-image-2.0", prompt:$p, aspect_ratio:"1:1",
resolution:"1k", response_format:"b64_json"}')")
if B64=$(printf '%s' "$RESP" | jq -er '.data[0].b64_json' 2>/dev/null); then
printf '%s' "$B64" | base64 -d > out.jpg
else
printf '%s\n' "$RESP" >&2 # errors are plain text, not JSON
exit 1
fiTwo things that bite here:
.data[0].b64_json before decoding. On failure there is no b64
field, and piping the error body through base64 -d writes a corrupt file
that passes an ls check and only reveals itself when someone opens it.jq '.error.message'. Errors come
back as text/plain, so parsing them as JSON discards the useful part. The
raw text is specific and worth reading — a bad aspect_ratio replies
unknown variant `21:9`, expected one of `1:1`, `3:4`, ..., which tells
you exactly what to send.POST /v1/images/edits, same auth and routing. Pass either image (single)
or images (up to 3 references, addressed as <IMAGE_0>, <IMAGE_1>,
<IMAGE_2> in the prompt) — never both. Each source is JPEG, PNG, or WebP.
curl -sS http://localhost:8317/v1/images/edits \
-H "Content-Type: application/json" \
-H "Authorization: Bearer dummy-not-used" \
-d "$(jq -n --arg p "Make it blue-tinted studio lighting" --arg u "$SRC" \
'{model:"grok-imagine-image-2.0", prompt:$p,
image:{url:$u, type:"image_url"},
response_format:"b64_json"}')"The source url takes a public HTTPS URL, an xAI file_id (on the image
object, mutually exclusive with url), or a data URL. For a local file
there's no upload step — inline it as a data URL:
SRC="data:image/jpeg;base64,$(base64 -i ./photo.jpg)"Omit aspect_ratio on single-image edits; it follows the source, and setting
it can crop or letterbox. On multi-image edits it follows the first source
unless you override it.
Chain edits by feeding each output back as the next image. That is how you
refine, restyle, or correct without starting over.
Source of truth: Image Generation, Image Editing, Multi-Image Editing, and the Images REST API.
| Field | Values | Notes |
|---|---|---|
model | grok-imagine-image-2.0 | Must start with grok- or the proxy won't route it. Always send this id. |
prompt | string | See Prompting. Required on edits. |
aspect_ratio | 1:1, 3:4, 4:3, 9:16, 16:9, 2:3, 3:2, 9:19.5, 19.5:9, 9:20, 20:9, 1:2, 2:1, auto | Default auto (model picks the ratio). Icons 1:1, banners 16:9, stories 9:16. |
resolution | 1k, 2k | Default 1k. Stay there unless the user asks for print/hi-dpi — 2k returns much larger files. |
quality | low, medium | 2.0 only. Default medium when omitted. Do not send high, hd, or standard. Omit unless the user asks for low. |
response_format | url, b64_json | url is the default but expires fast — prefer b64_json when saving to disk. |
n | 1–10 | Default 1. Same-prompt variations belong in one request via n, not parallel calls. |
image / images | object or array (max 3) | Edits only. Mutually exclusive. Each item is {url, type:"image_url"} or {file_id}. |
storage_options | {filename, expires_after?, public_url?} | Persists to the xAI Files API; response gains file_output: {file_id, filename}. expires_after is seconds, max 2592000. |
user | string | Optional end-user id for abuse monitoring. Don't invent one. |
Anything outside these enums returns 422, and OpenAI-only fields (size,
style, background, output_format, quality:"hd") return 400 or are
silently ignored. Don't reach for them.
{"data": [{"b64_json": "...", "mime_type": "image/jpeg", "url": "https://imgen.x.ai/..."}]}Pick the file extension from mime_type, not from the prompt or the filename
the user asked for — 1k usually returns JPEG and 2k often returns PNG, so a
.jpg name on PNG bytes is a real outcome. If that contradicts the name they
gave, save the correct extension and say why. mime_type may also be
image/webp.
With response_format: "url" the URL is temporary (imgen.x.ai) — download it
immediately rather than handing it to the user.
Imagine has no alpha channel; output is always opaque JPEG, PNG, or WebP. There is no API field that changes this, so don't send one.
When someone asks for a transparent PNG:
Most errors explain themselves; these three don't:
| Symptom | Fix |
|---|---|
| Connection refused | DroidProxy isn't running — tell the user to launch it |
| 401, or 401 after a long idle | OAuth session dead — Settings → Connect Grok |
| 403 permission / quota | Subscription tier gates API OAuth. A BYOK XAI_API_KEY is the only fallback |
On a moderation / safety block, stop. Don't retry and don't paraphrase the prompt to evade the filter. Tell the user it was blocked and offer a different direction.
Report the API's own message rather than guessing, and never invent image content or a URL for a request that failed.
© nikships, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/grok-imagine of nikships/droidproxy.
Open the folder on GitHubat commit 9fdd443
Grok Imagine next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Grok Imagine this skillnikships/droidproxy | 122 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Grok Mediacalesthio/OpenMontage | 66k | — | ~950 | Automated safety check: Pass | AGPL-3.0 | |
| Setup API Keysonilo-ai/skills | 115 | — | ~3k | Automated safety check: Pass | MIT | |
| Youtube APIericrisco/rsc-harness | 180 | — | ~4k | Automated safety check: Pass | MIT | |
| Peertubemagnus919/agent-skills | 115 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Fortify Developmentcoollabsio/coolify | 63k | 4 repos | ~1.9k | Automated safety check: Pass | MIT |
calesthio/OpenMontage
xAI Grok image and video generation guide covering authentication, endpoints, prompt structure, image editing, reference-image video, and async polling.
sonilo-ai/skills
Guides users through connecting to Sonilo — signing in with sonilo login (OAuth, no key), the remote OAuth plugin for Claude Code or Muse Code, or an API key for CI and headless use.
ericrisco/rsc-harness
A skill your agent uses when wiring code to a real YouTube channel: user OAuth 2.0, resumable videos.insert uploads, editing metadata after publish, pulling views/watch time/retention/traffic from…
magnus919/agent-skills
Browse PeerTube federated video from the terminal — instance stats, latest videos, video detail, comment threads, channels, accounts, instance-local search, and OAuth2 login with per-instance token…
coollabsio/coolify
ACTIVATE when the user works on authentication in Laravel. An agent skill from coollabsio/coolify.
diegosouzapw/OmniRoute
Manages AI provider connections, API keys, OAuth flows and connection tests through OmniRoute's REST API across its 327-provider catalog.
nikships/droidproxy
Configure any third-party model as a custom model in Factory Droid (~/.factory/settings.json): resolve specs (context window, max output tokens, reasoning efforts), write a safe config entry, set…
nikships/droidproxy
Generate or edit images via GPT Image 2.5 Flare or Sunburst through DroidProxy Codex OAuth (no OPENAIAPIKEY).
nikships/droidproxy
Build, sign, notarize, and publish a new DroidProxy release.
Works with
Categories
Generate or edit images via Grok Imagine Image 2.0 through DroidProxy (no XAIAPIKEY). Grok Imagine is an agent skill from nikships/droidproxy.0 through DroidProxy (no XAIAPIKEY).
Grok Imagine fits situations like: the user asks to generate; similar visual asset and DroidProxy Grok OAuth is available.
Run `npx skills add nikships/droidproxy --skill grok-imagine -a claude-code`. Or copy the skill folder (skills/grok-imagine in nikships/droidproxy) into .claude/skills/grok-imagine in your project. Claude Code loads it when a task matches its description.
Run `npx skills add nikships/droidproxy --skill grok-imagine -a codex`. Or copy the skill folder (skills/grok-imagine in nikships/droidproxy) into .agents/skills/grok-imagine in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add nikships/droidproxy --skill grok-imagine -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/grok-imagine, .gemini/skills/grok-imagine, .github/skills/grok-imagine and .opencode/skills/grok-imagine in your project.
Going by SKILL.md and its folder, Grok Imagine needs the command-line tools its instructions call (jq and curl) and credentials named XAI_API_KEY. Our summary lists: A credential in XAI_API_KEY.
SKILL.md names 2 domains. In commands or code: imgen.x.ai; the agent is likely to contact it when it follows the instructions. As links in the text: docs.x.ai. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Grok Imagine is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Grok Imagine: Grok Media (calesthio/OpenMontage, 66k stars), Setup API Key (sonilo-ai/skills, 115 stars), Youtube API (ericrisco/rsc-harness, 180 stars) and Peertube (magnus919/agent-skills, 115 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
nikships (a GitHub user) maintains it in nikships/droidproxy, which has 122 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 9, 2026.
Source: nikships/droidproxy on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.