[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71K7ET33R7D0XM33S4F98SC":3,"skill-same:01M71K7ET33R7D0XM33S4F98SC":121},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":25,"publishedAt":46,"linkOnly":47,"markdownContent":48,"markdownBody":49,"frontMatter":50,"refName":55,"commitSha":56,"skillDirectory":57,"forksCount":58,"repositoryHtmlUrl":59,"repositoryHomepageUrl":6,"ownerHtmlUrl":60,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":61,"install":62,"resources":75},"01M71K7ET33R7D0XM33S4F98SC","ai-image-creator",null,"Generate PNG images using AI (multiple models via OpenRouter including Gemini, FLUX.2, Riverflow, SeedDream, GPT-5 Image, GPT-5.4 Image 2, proxied through Cloudflare AI Gateway BYOK). Also analyze\u002Fdescribe existing images using multimodal AI vision. Use when user asks to \"generate an image\", \"create a PNG\", \"make an icon\", \"make it transparent\", \"describe this image\", \"analyze this image\", \"what's in this image\", \"explain this image\", or needs AI-generated visual assets for the project. Supports model selection via keywords (gemini, riverflow, flux2, seedream, gpt5, gpt5.4), configurable aspect ratios\u002Fresolutions, transparent backgrounds (-t), reference image editing (-r), image analysis (--analyze), and per-project cost tracking (--costs).","developAgent\u002Fbmad-start","developAgent","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F264530239?v=4","01M71J8X6CY24V5ZZHFGETRMSW","01M71J8X739FS28DGQAAY7V4QR",1,"MIT","https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fai-image-creator\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体",[26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"ai image creator","ai image","image creator","creator","image","describe","multimodal","write","read","generate","ai gateway","bashrc","create","analyze","Variables","uv","selection","project","api keys","image-generation","2026-11-10 10:12:30",false,"---\nname: ai-image-creator\ndescription: Generate PNG images using AI (multiple models via OpenRouter including Gemini, FLUX.2, Riverflow, SeedDream, GPT-5 Image, GPT-5.4 Image 2, proxied through Cloudflare AI Gateway BYOK). Also analyze\u002Fdescribe existing images using multimodal AI vision. Use when user asks to \"generate an image\", \"create a PNG\", \"make an icon\", \"make it transparent\", \"describe this image\", \"analyze this image\", \"what's in this image\", \"explain this image\", or needs AI-generated visual assets for the project. Supports model selection via keywords (gemini, riverflow, flux2, seedream, gpt5, gpt5.4), configurable aspect ratios\u002Fresolutions, transparent backgrounds (-t), reference image editing (-r), image analysis (--analyze), and per-project cost tracking (--costs).\nallowed-tools: Bash, Read, Write\ncompatibility: Requires uv (Python runner) and network access. Environment variables for CF AI Gateway or direct API keys must be configured in shell profile (~\u002F.zshrc on macOS, ~\u002F.bashrc on Linux, or System Environment Variables on Windows).\nmetadata:\n  tags: image-generation, ai, openrouter, cloudflare, gemini, flux2, riverflow, seedream, gpt5, gpt54\n---\n\n# AI Image Creator\n\nGenerate PNG images via multiple AI models, routed through Cloudflare AI Gateway BYOK or directly via OpenRouter\u002FGoogle AI Studio.\n\n## Model Selection\n\nWhen the user mentions a model keyword in their image request, use the corresponding `--model` flag:\n\n| Keyword | Model | Use When User Says |\n|---------|-------|--------------------|\n| `gemini` | [Google Gemini 3.1 Flash](https:\u002F\u002Fopenrouter.ai\u002Fgoogle\u002Fgemini-3.1-flash-image-preview) (default) | \"gemini\", \"generate an image\" (no model specified) |\n| `riverflow` | [Sourceful Riverflow v2 Pro](https:\u002F\u002Fopenrouter.ai\u002Fsourceful\u002Friverflow-v2-pro) | \"riverflow\", \"use riverflow\" |\n| `flux2` | [FLUX.2 Max](https:\u002F\u002Fopenrouter.ai\u002Fblack-forest-labs\u002Fflux.2-max) | \"flux2\", \"flux\", \"use flux\" |\n| `seedream` | [ByteDance SeedDream 4.5](https:\u002F\u002Fopenrouter.ai\u002Fbytedance-seed\u002Fseedream-4.5) | \"seedream\", \"use seedream\" |\n| `gpt5` | [OpenAI GPT-5 Image](https:\u002F\u002Fopenrouter.ai\u002Fopenai\u002Fgpt-5-image) | \"gpt5\", \"gpt5 image\", \"use gpt5\" |\n| `gpt5.4` | [OpenAI GPT-5.4 Image 2](https:\u002F\u002Fopenrouter.ai\u002Fopenai\u002Fgpt-5.4-image-2) | \"gpt5.4\", \"gpt-5.4 image\", \"use gpt5.4\" |\n\n## Instructions\n\n> **Routing check:** If the user asks to **describe, analyze, or explain an existing image** (not generate a new one), skip directly to the **Image Analysis (`--analyze`)** section below. No prompt enhancement or output path needed.\n\n### Step 1: Write Prompt\n\nFor long or complex prompts (recommended), write to `${CLAUDE_SKILL_DIR}\u002Ftmp\u002Fprompt.txt` using the Write tool:\n\n```\nWrite prompt text to ${CLAUDE_SKILL_DIR}\u002Ftmp\u002Fprompt.txt\n```\n\nFor short prompts (under 200 chars, no special characters), pass inline via `--prompt`.\n\n**CRITICAL — Prompt Quality Tips:**\n- Be detailed and descriptive. Include style, colors, composition, background, and intended use.\n- Good: \"A flat-design globe icon with vertical timezone band lines in blue and teal, white background, clean vector style, suitable for a web app at 512x512 pixels\"\n- Bad: \"globe icon\"\n- Specify \"transparent background\" or \"white background\" explicitly.\n- For icons, mention the target size (e.g., \"512x512\", \"favicon at 32x32\").\n- For photos, describe lighting, camera angle, and mood.\n\n### Step 1.5: Prompt Enhancement (Optional — Progressive Disclosure)\n\nProfessional prompt patterns are available in 3 reference files. These are **not loaded by default** — only read them when the user's request matches a category or they explicitly ask for enhancement.\n\n**Category Detection** — Match the user's request to a category:\n\n| If request mentions... | Category | Also read |\n|----------------------|----------|-----------|\n| \"product shot\", \"product photo\", \"hero image\" | `product_hero` | `prompt-core.md` + `prompt-categories.md` § product_hero |\n| \"lifestyle\", \"in-use\", \"in context\" | `lifestyle` | `prompt-core.md` + `prompt-categories.md` § lifestyle |\n| \"instagram\", \"social media\", \"tiktok\", \"pinterest\" | `social_media` | `prompt-core.md` + `prompt-platforms.md` + `prompt-categories.md` § social_media |\n| \"banner\", \"ad\", \"email header\" | `marketing_banner` | `prompt-core.md` + `prompt-platforms.md` + `prompt-categories.md` § marketing_banner. **Routing hint:** If user has an existing logo and wants multiple standard sizes → use composite mode instead (see `## Composite Banners`). |\n| \"website\", \"app\", \"logo\", \"ad format\", \"leaderboard\", \"skyscraper\" | `web_app` | `prompt-core.md` + `prompt-platforms.md` + `prompt-categories.md` § web_app. **Routing hint:** For \"logo banners\" or \"OG images with my logo\" where user has existing logo → use `composite-banners.py`. For \"design me a new logo\" → use `generate-image.py`. |\n| \"brand kit\", \"logo banners\", \"banner sizes\", \"IAB sizes\", \"consistent banners\" + user has existing logo | `composite` | Read `references\u002Fcomposite-reference.md`, use `composite-banners.py` |\n| \"icon\", \"favicon\", \"app icon\" | `icon_logo` | `prompt-core.md` + `prompt-categories.md` § icon_logo |\n| \"mascot\", \"character\", \"illustration\", \"artwork\" | `illustration` | `prompt-core.md` + `prompt-categories.md` § illustration |\n| \"food\", \"drink\", \"recipe\", \"restaurant\" | `food_drink` | `prompt-core.md` + `prompt-categories.md` § food_drink |\n| \"building\", \"interior\", \"room\", \"architecture\" | `architecture` | `prompt-core.md` + `prompt-categories.md` § architecture |\n| \"chart\", \"infographic\", \"data\", \"diagram\" | `infographic` | `prompt-core.md` + `prompt-categories.md` § infographic |\n| \"t-shirt\", \"mug design\", \"poster\", \"POD\", \"print-on-demand\" | `pod_design` | `prompt-core.md` + `prompt-platforms.md` + `prompt-categories.md` § pod_design |\n| \"describe\", \"analyze\", \"what's in this image\", \"explain image\" | `analyze` | Skip prompt enhancement — use `--analyze` mode directly. Read `references\u002Fanalyze-reference.md` for advanced analysis patterns |\n| No match \u002F simple request | — | Skip patterns, generate directly |\n\n**When to skip enhancement:**\n- User's prompt is already detailed (150+ words with camera\u002Flighting\u002Fcomposition specifics)\n- Simple\u002Fdirect requests (\"generate a blue circle on white background\")\n- User says \"no pattern\" or provides a fully formed prompt\n\n**When to apply:**\n- User says \"use product_hero pattern\" or \"apply social_media pattern\" (explicit)\n- Request clearly matches a category above (auto-detect)\n- User asks for \"enhanced prompt\" or \"professional quality\"\n\n**Reference files** (in `references\u002F` directory):\n- `prompt-core.md` — Foundational rules: narrative prompting, camera\u002Flens\u002Flighting specs, text rendering rules, model recommendations\n- `prompt-platforms.md` — Social media ratios, IAB ad sizes, web dimensions, POD specs — all mapped to `-a`\u002F`-s` flags\n- `prompt-categories.md` — 11 category formulas with templates and complete example prompts\n\n### Step 2: Run Generation Script\n\n```bash\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  -o \"OUTPUT_PATH\" \\\n  [--provider openrouter|google] \\\n  [-a \"16:9\"] \\\n  [-s \"2K\"] \\\n  [-m \"model-id\"] \\\n  [-r \"ref-image.png\"] \\\n  [-t]\n```\n\nWith a specific model:\n```bash\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  -o \"OUTPUT_PATH\" \\\n  -m riverflow \\\n  -p \"A serene mountain lake at sunset\"\n```\n\nWith transparent background (requires ffmpeg + imagemagick):\n```bash\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  -o \"mascot.png\" \\\n  -t \\\n  -p \"A friendly robot mascot character\"\n```\n\nWith reference image for editing\u002Fstyle transfer (multimodal models only):\n```bash\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  -o \"edited.png\" \\\n  -r \"original.png\" \\\n  -p \"Change the background to a sunset scene\"\n```\n\nOr with inline prompt (default model):\n```bash\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  -o \"OUTPUT_PATH\" \\\n  -p \"A simple blue circle on white background\"\n```\n\n### Step 3: Clean Up (if temp file used)\n\n```bash\nrm -f ${CLAUDE_SKILL_DIR}\u002Ftmp\u002Fprompt.txt\n```\n\n### Step 4: Verify Output\n\n```bash\nfile OUTPUT_PATH\n```\n\nConfirm it shows \"PNG image data\" and report the file path and size to the user.\n\n### Step 5: Post-Processing (optional)\n\nIf the user needs resizing, format conversion, or other manipulation, first detect available image tools, then use them. See **Image Tools** section below.\n\n## Parameters\n\n| Argument | Short | Required | Default | Description |\n|----------|-------|----------|---------|-------------|\n| `--output` | `-o` | Yes | -- | Output file path (parent dirs auto-created) |\n| `--prompt` | `-p` | No | -- | Inline prompt text |\n| `--prompt-file` | -- | No | `..\u002Ftmp\u002Fprompt.txt` | Path to prompt file |\n| `--provider` | -- | No | `openrouter` | `openrouter` or `google` |\n| `--aspect-ratio` | `-a` | No | model default | OpenRouter only: `1:1`, `16:9`, `9:16`, `3:2`, `2:3`, `4:3`, `3:4`, `4:5`, `5:4`, `21:9` |\n| `--image-size` | `-s` | No | model default | OpenRouter only: `0.5K`, `1K`, `2K`, `4K` |\n| `--model` | `-m` | No | `gemini` | Model keyword (`gemini`, `riverflow`, `flux2`, `seedream`, `gpt5`) or full model ID |\n| `--ref` | `-r` | No | -- | Reference image file (repeatable). For editing\u002Fstyle transfer. Multimodal models only (gemini, gpt5) |\n| `--analyze` | -- | No | -- | Analyze\u002Fdescribe a reference image (text-only output, no image generated). Requires `-r`. Multimodal models only |\n| `--transparent` | `-t` | No | -- | Generate with transparent background. Requires ffmpeg + imagemagick |\n| `--costs` | -- | No | -- | Display generation\u002Fcost history for this project and exit |\n| `--list-models` | -- | No | -- | List available model keywords and exit |\n\n## Environment Variables\n\n| Variable | Required For | Description |\n|----------|-------------|-------------|\n| `AI_IMG_CREATOR_CF_ACCOUNT_ID` | Gateway mode | Cloudflare account ID |\n| `AI_IMG_CREATOR_CF_GATEWAY_ID` | Gateway mode | AI Gateway name |\n| `AI_IMG_CREATOR_CF_TOKEN` | Gateway mode | Gateway auth token |\n| `AI_IMG_CREATOR_OPENROUTER_KEY` | Direct OpenRouter | OpenRouter API key (`sk-or-...`) |\n| `AI_IMG_CREATOR_GEMINI_KEY` | Direct Google | Google AI Studio API key |\n\nGateway mode activates when all 3 `CF_*` vars are set. Falls back to direct mode if gateway fails.\n\nFor first-time setup, see `references\u002Fsetup-guide.md`.\n\n## Transparent Mode (`-t`)\n\nGenerates images with transparent backgrounds using a 3-step pipeline:\n\n1. **Green screen generation** — Prompt is augmented to place subject on solid #00FF00 green\n2. **FFmpeg chroma key** — Removes green background + green fringe from edges\n3. **ImageMagick auto-crop** — Trims transparent padding\n\n**Requirements:** `brew install ffmpeg imagemagick`\n\n**Use cases:** Game sprites, icons, logos, mascots, marketing assets with transparency.\n\n```bash\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  -o \"sprite.png\" -t -p \"A pixel art treasure chest\"\n```\n\n## Reference Images (`-r`)\n\nSend existing images alongside text prompts for editing, style transfer, or guided generation. Supports multiple references. **Multimodal models only** (gemini, gpt5) — image-only models (riverflow, flux2, seedream) will error.\n\n```bash\n# Edit an existing image\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  -o \"edited.png\" -r \"photo.png\" -p \"Make the background white\"\n\n# Style transfer with multiple references\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  -o \"combined.png\" -r \"style1.png\" -r \"content.png\" -p \"Apply the style of the first image to the second\"\n```\n\nSupported formats: PNG, JPEG, WebP, GIF.\n\n## Image Analysis (`--analyze`)\n\nDescribe, analyze, or explain existing images using multimodal AI vision. Returns text-only output (no image generated). **Multimodal models only** (gemini, gpt5).\n\nNo `-o` output path needed. No prompt enhancement needed. The script outputs JSON to stdout with the model's analysis in the `analysis` field.\n\n```bash\n# Analyze with default prompt (describes subject, style, colors, composition, mood, text)\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  --analyze -r \"photo.png\"\n\n# Analyze with custom prompt\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  --analyze -r \"photo.png\" -p \"Describe this image in plain text and also in JSON structured output\"\n\n# Analyze with a specific model\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  --analyze -r \"photo.png\" -m gpt5 -p \"What text is visible in this image?\"\n\n# Analyze multiple images together\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  --analyze -r \"before.png\" -r \"after.png\" -p \"Compare these two images and describe the differences\"\n```\n\n**JSON output format:**\n\n```json\n{\"ok\": true, \"analyze\": true, \"analysis\": \"\u003Cmodel text>\", \"provider\": \"openrouter\", \"model\": \"...\", \"mode\": \"gateway\", \"elapsed_seconds\": 3.2, \"ref_images\": 1}\n```\n\n**Incompatible flags:** `--analyze` cannot be combined with `-o`, `-t`, `-a`, or `-s`.\n\nFor advanced analysis prompt patterns (structured output, comparison, targeted analysis), read `references\u002Fanalyze-reference.md`.\n\n## Cost Tracking (`--costs`)\n\nEvery generation is logged to `.ai-image-creator\u002Fcosts.json` in your project directory. View history:\n\n```bash\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py --costs\n```\n\nShows per-model breakdown: generation count, total tokens, elapsed time, and recent entries. **Security:** Only non-sensitive data is logged (model, tokens, timing, file path). No API keys or credentials are ever stored.\n\nConsider adding `.ai-image-creator\u002F` to your `.gitignore`.\n\n## Composite Banners\n\nGenerate consistent logo banners across multiple sizes from a JSON config. Uses ImageMagick for offline compositing — no API calls, no network required. Composites an existing logo\u002Fmark onto branded backgrounds with text at standard dimensions.\n\n### Composite vs. AI Generation — Decision Rule\n\nUse **composite-banners.py** when ALL of these are true:\n- User has an existing logo\u002Fmark they want to use as-is (provides or references a logo file)\n- User wants consistent branding across multiple standard sizes (not one creative image)\n- The output is logo + text on a solid\u002Fgradient background (not a photograph, illustration, or creative design)\n\nUse **generate-image.py** (AI generation) when ANY of these are true:\n- User wants a creative\u002Fartistic banner design (describes a scene, mood, concept, or style)\n- User wants AI to design the visual content (product shots, illustrations, creative layouts)\n- User wants a single banner with artistic content, not a multi-size brand kit\n\n**When composite mode applies**, read `references\u002Fcomposite-reference.md` for full config schema, preset dimensions, and font handling details.\n\n### Quick Start\n\n1. **Init config:** `uv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcomposite-banners.py --init`\n2. **Edit** `banner-config.json` — set logo path, brand text, colors, banner sizes\n3. **Validate:** `uv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcomposite-banners.py --validate`\n4. **Generate:** `uv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcomposite-banners.py -c banner-config.json -o .\u002Fbanners\u002F`\n\n### Composite Parameters\n\n| Argument | Short | Default | Description |\n|----------|-------|---------|-------------|\n| `--config` | `-c` | `banner-config.json` | Config JSON path |\n| `--output-dir` | `-o` | `.` | Output directory |\n| `--name` | `-n` | all | Generate single banner by name |\n| `--format` | `-f` | `png` | `png`, `webp`, `jpeg` |\n| `--list-presets` | | | List IAB\u002Fsocial\u002Fweb size presets |\n| `--init` | | | Generate starter config |\n| `--validate` | | | Check config, exit 0 or 2 |\n| `--dry-run` | | | Preview without rendering |\n| `--json` | | | Structured JSON to stdout |\n| `--verbose` | `-v` | | Verbose output |\n\n**Requirements:** ImageMagick 7 (`brew install imagemagick` or `apt install imagemagick`).\n\n### Workflow Hints\n\n**Starting composite mode:**\n- Ask user for: logo file path, brand name, tagline text, brand colors (hex)\n- If user doesn't have a logo yet → use generate-image.py to create one first\n- Run `--init` to scaffold config, then help user fill in their brand values\n\n**During generation:**\n- Always run `--validate` before generating to catch font\u002Flogo issues early\n- Use `--name` to iterate on one banner before generating the full set\n- Show user 3-4 representative sizes (hero, OG, square, leaderboard) for approval\n\n**After generation:**\n- If user wants creative\u002Fartistic redesign of banner visuals → switch to generate-image.py (composite only does logo + text on gradient\u002Fsolid backgrounds)\n- If banners look too plain → suggest AI-generating a textured or photographic background first, then compositing the logo onto it\n\n**Combined workflow (most powerful):**\n1. Use generate-image.py to AI-create a hero background or textured pattern\n2. Use composite-banners.py to overlay the logo + text onto that background at all standard sizes\nThis gives both creative AI visuals AND pixel-perfect logo consistency.\n\n## Image Tools\n\nOn first invocation, detect available image manipulation tools:\n\n```bash\nwhich magick convert sips ffmpeg 2>\u002Fdev\u002Fnull\n```\n\n### Available Tools\n\n| Tool | Check | Key Operations |\n|------|-------|----------------|\n| **ImageMagick 7** (`magick`) | `magick --version` | Resize, crop, convert, composite |\n| **ImageMagick 6** (`convert`) | `convert --version` | Same ops, legacy command name |\n| **sips** (macOS) | `sips --help` | Resize, format conversion |\n| **ffmpeg** | `ffmpeg -version` | Convert formats, resize |\n\n### Common Post-Processing\n\n```bash\n# Resize\nmagick output.png -resize 512x512 icon-512.png\n\n# Multiple sizes (icons)\nfor s in 16 32 48 64 128 256 512; do magick output.png -resize ${s}x${s} icon-${s}.png; done\n\n# Convert to WebP\nmagick output.png output.webp\n\n# Maskable icon (add safe-zone padding)\nmagick output.png -gravity center -extent 120%x120% maskable.png\n\n# macOS sips resize\nsips --resampleWidth 512 --resampleHeight 512 output.png --out icon-512.png\n```\n\nCRITICAL: Check tool availability before using. Prefer `magick` (IM7) over `convert` (IM6). If no tools found, inform user: `brew install imagemagick`.\n\n## Common Issues\n\n### \"No API credentials configured\"\n**Cause:** Environment variables not set or not exported.\n**Fix:** Add exports to `~\u002F.zshrc` and run `source ~\u002F.zshrc`. See `references\u002Fsetup-guide.md`.\n\n### \"HTTP 401: Unauthorized\"\n**Cause:** Invalid or expired API key\u002Ftoken.\n**Fix:** Check `AI_IMG_CREATOR_CF_TOKEN` (gateway) or `AI_IMG_CREATOR_OPENROUTER_KEY` (direct). Regenerate if needed.\n\n### \"No images in response\"\n**Cause:** Model returned text only (safety filter, unclear prompt, or unsupported request).\n**Fix:** Make the prompt more specific and descriptive. Avoid prohibited content.\n\n### \"Connection error\" \u002F timeout\n**Cause:** Network issue or image generation taking too long (120s timeout).\n**Fix:** Retry. If persistent, try `--provider google` as alternative. Check CF gateway status.\n\n## Detailed API Reference\n\nFor full API formats, response schemas, BYOK configuration, and curl examples:\nsee [references\u002Fapi-reference.md](references\u002Fapi-reference.md)\n\nFor first-time setup instructions:\nsee [references\u002Fsetup-guide.md](references\u002Fsetup-guide.md)\n","# AI Image Creator\n\nGenerate PNG images via multiple AI models, routed through Cloudflare AI Gateway BYOK or directly via OpenRouter\u002FGoogle AI Studio.\n\n## Model Selection\n\nWhen the user mentions a model keyword in their image request, use the corresponding `--model` flag:\n\n| Keyword | Model | Use When User Says |\n|---------|-------|--------------------|\n| `gemini` | [Google Gemini 3.1 Flash](https:\u002F\u002Fopenrouter.ai\u002Fgoogle\u002Fgemini-3.1-flash-image-preview) (default) | \"gemini\", \"generate an image\" (no model specified) |\n| `riverflow` | [Sourceful Riverflow v2 Pro](https:\u002F\u002Fopenrouter.ai\u002Fsourceful\u002Friverflow-v2-pro) | \"riverflow\", \"use riverflow\" |\n| `flux2` | [FLUX.2 Max](https:\u002F\u002Fopenrouter.ai\u002Fblack-forest-labs\u002Fflux.2-max) | \"flux2\", \"flux\", \"use flux\" |\n| `seedream` | [ByteDance SeedDream 4.5](https:\u002F\u002Fopenrouter.ai\u002Fbytedance-seed\u002Fseedream-4.5) | \"seedream\", \"use seedream\" |\n| `gpt5` | [OpenAI GPT-5 Image](https:\u002F\u002Fopenrouter.ai\u002Fopenai\u002Fgpt-5-image) | \"gpt5\", \"gpt5 image\", \"use gpt5\" |\n| `gpt5.4` | [OpenAI GPT-5.4 Image 2](https:\u002F\u002Fopenrouter.ai\u002Fopenai\u002Fgpt-5.4-image-2) | \"gpt5.4\", \"gpt-5.4 image\", \"use gpt5.4\" |\n\n## Instructions\n\n> **Routing check:** If the user asks to **describe, analyze, or explain an existing image** (not generate a new one), skip directly to the **Image Analysis (`--analyze`)** section below. No prompt enhancement or output path needed.\n\n### Step 1: Write Prompt\n\nFor long or complex prompts (recommended), write to `${CLAUDE_SKILL_DIR}\u002Ftmp\u002Fprompt.txt` using the Write tool:\n\n```\nWrite prompt text to ${CLAUDE_SKILL_DIR}\u002Ftmp\u002Fprompt.txt\n```\n\nFor short prompts (under 200 chars, no special characters), pass inline via `--prompt`.\n\n**CRITICAL — Prompt Quality Tips:**\n- Be detailed and descriptive. Include style, colors, composition, background, and intended use.\n- Good: \"A flat-design globe icon with vertical timezone band lines in blue and teal, white background, clean vector style, suitable for a web app at 512x512 pixels\"\n- Bad: \"globe icon\"\n- Specify \"transparent background\" or \"white background\" explicitly.\n- For icons, mention the target size (e.g., \"512x512\", \"favicon at 32x32\").\n- For photos, describe lighting, camera angle, and mood.\n\n### Step 1.5: Prompt Enhancement (Optional — Progressive Disclosure)\n\nProfessional prompt patterns are available in 3 reference files. These are **not loaded by default** — only read them when the user's request matches a category or they explicitly ask for enhancement.\n\n**Category Detection** — Match the user's request to a category:\n\n| If request mentions... | Category | Also read |\n|----------------------|----------|-----------|\n| \"product shot\", \"product photo\", \"hero image\" | `product_hero` | `prompt-core.md` + `prompt-categories.md` § product_hero |\n| \"lifestyle\", \"in-use\", \"in context\" | `lifestyle` | `prompt-core.md` + `prompt-categories.md` § lifestyle |\n| \"instagram\", \"social media\", \"tiktok\", \"pinterest\" | `social_media` | `prompt-core.md` + `prompt-platforms.md` + `prompt-categories.md` § social_media |\n| \"banner\", \"ad\", \"email header\" | `marketing_banner` | `prompt-core.md` + `prompt-platforms.md` + `prompt-categories.md` § marketing_banner. **Routing hint:** If user has an existing logo and wants multiple standard sizes → use composite mode instead (see `## Composite Banners`). |\n| \"website\", \"app\", \"logo\", \"ad format\", \"leaderboard\", \"skyscraper\" | `web_app` | `prompt-core.md` + `prompt-platforms.md` + `prompt-categories.md` § web_app. **Routing hint:** For \"logo banners\" or \"OG images with my logo\" where user has existing logo → use `composite-banners.py`. For \"design me a new logo\" → use `generate-image.py`. |\n| \"brand kit\", \"logo banners\", \"banner sizes\", \"IAB sizes\", \"consistent banners\" + user has existing logo | `composite` | Read `references\u002Fcomposite-reference.md`, use `composite-banners.py` |\n| \"icon\", \"favicon\", \"app icon\" | `icon_logo` | `prompt-core.md` + `prompt-categories.md` § icon_logo |\n| \"mascot\", \"character\", \"illustration\", \"artwork\" | `illustration` | `prompt-core.md` + `prompt-categories.md` § illustration |\n| \"food\", \"drink\", \"recipe\", \"restaurant\" | `food_drink` | `prompt-core.md` + `prompt-categories.md` § food_drink |\n| \"building\", \"interior\", \"room\", \"architecture\" | `architecture` | `prompt-core.md` + `prompt-categories.md` § architecture |\n| \"chart\", \"infographic\", \"data\", \"diagram\" | `infographic` | `prompt-core.md` + `prompt-categories.md` § infographic |\n| \"t-shirt\", \"mug design\", \"poster\", \"POD\", \"print-on-demand\" | `pod_design` | `prompt-core.md` + `prompt-platforms.md` + `prompt-categories.md` § pod_design |\n| \"describe\", \"analyze\", \"what's in this image\", \"explain image\" | `analyze` | Skip prompt enhancement — use `--analyze` mode directly. Read `references\u002Fanalyze-reference.md` for advanced analysis patterns |\n| No match \u002F simple request | — | Skip patterns, generate directly |\n\n**When to skip enhancement:**\n- User's prompt is already detailed (150+ words with camera\u002Flighting\u002Fcomposition specifics)\n- Simple\u002Fdirect requests (\"generate a blue circle on white background\")\n- User says \"no pattern\" or provides a fully formed prompt\n\n**When to apply:**\n- User says \"use product_hero pattern\" or \"apply social_media pattern\" (explicit)\n- Request clearly matches a category above (auto-detect)\n- User asks for \"enhanced prompt\" or \"professional quality\"\n\n**Reference files** (in `references\u002F` directory):\n- `prompt-core.md` — Foundational rules: narrative prompting, camera\u002Flens\u002Flighting specs, text rendering rules, model recommendations\n- `prompt-platforms.md` — Social media ratios, IAB ad sizes, web dimensions, POD specs — all mapped to `-a`\u002F`-s` flags\n- `prompt-categories.md` — 11 category formulas with templates and complete example prompts\n\n### Step 2: Run Generation Script\n\n```bash\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  -o \"OUTPUT_PATH\" \\\n  [--provider openrouter|google] \\\n  [-a \"16:9\"] \\\n  [-s \"2K\"] \\\n  [-m \"model-id\"] \\\n  [-r \"ref-image.png\"] \\\n  [-t]\n```\n\nWith a specific model:\n```bash\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  -o \"OUTPUT_PATH\" \\\n  -m riverflow \\\n  -p \"A serene mountain lake at sunset\"\n```\n\nWith transparent background (requires ffmpeg + imagemagick):\n```bash\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  -o \"mascot.png\" \\\n  -t \\\n  -p \"A friendly robot mascot character\"\n```\n\nWith reference image for editing\u002Fstyle transfer (multimodal models only):\n```bash\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  -o \"edited.png\" \\\n  -r \"original.png\" \\\n  -p \"Change the background to a sunset scene\"\n```\n\nOr with inline prompt (default model):\n```bash\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  -o \"OUTPUT_PATH\" \\\n  -p \"A simple blue circle on white background\"\n```\n\n### Step 3: Clean Up (if temp file used)\n\n```bash\nrm -f ${CLAUDE_SKILL_DIR}\u002Ftmp\u002Fprompt.txt\n```\n\n### Step 4: Verify Output\n\n```bash\nfile OUTPUT_PATH\n```\n\nConfirm it shows \"PNG image data\" and report the file path and size to the user.\n\n### Step 5: Post-Processing (optional)\n\nIf the user needs resizing, format conversion, or other manipulation, first detect available image tools, then use them. See **Image Tools** section below.\n\n## Parameters\n\n| Argument | Short | Required | Default | Description |\n|----------|-------|----------|---------|-------------|\n| `--output` | `-o` | Yes | -- | Output file path (parent dirs auto-created) |\n| `--prompt` | `-p` | No | -- | Inline prompt text |\n| `--prompt-file` | -- | No | `..\u002Ftmp\u002Fprompt.txt` | Path to prompt file |\n| `--provider` | -- | No | `openrouter` | `openrouter` or `google` |\n| `--aspect-ratio` | `-a` | No | model default | OpenRouter only: `1:1`, `16:9`, `9:16`, `3:2`, `2:3`, `4:3`, `3:4`, `4:5`, `5:4`, `21:9` |\n| `--image-size` | `-s` | No | model default | OpenRouter only: `0.5K`, `1K`, `2K`, `4K` |\n| `--model` | `-m` | No | `gemini` | Model keyword (`gemini`, `riverflow`, `flux2`, `seedream`, `gpt5`) or full model ID |\n| `--ref` | `-r` | No | -- | Reference image file (repeatable). For editing\u002Fstyle transfer. Multimodal models only (gemini, gpt5) |\n| `--analyze` | -- | No | -- | Analyze\u002Fdescribe a reference image (text-only output, no image generated). Requires `-r`. Multimodal models only |\n| `--transparent` | `-t` | No | -- | Generate with transparent background. Requires ffmpeg + imagemagick |\n| `--costs` | -- | No | -- | Display generation\u002Fcost history for this project and exit |\n| `--list-models` | -- | No | -- | List available model keywords and exit |\n\n## Environment Variables\n\n| Variable | Required For | Description |\n|----------|-------------|-------------|\n| `AI_IMG_CREATOR_CF_ACCOUNT_ID` | Gateway mode | Cloudflare account ID |\n| `AI_IMG_CREATOR_CF_GATEWAY_ID` | Gateway mode | AI Gateway name |\n| `AI_IMG_CREATOR_CF_TOKEN` | Gateway mode | Gateway auth token |\n| `AI_IMG_CREATOR_OPENROUTER_KEY` | Direct OpenRouter | OpenRouter API key (`sk-or-...`) |\n| `AI_IMG_CREATOR_GEMINI_KEY` | Direct Google | Google AI Studio API key |\n\nGateway mode activates when all 3 `CF_*` vars are set. Falls back to direct mode if gateway fails.\n\nFor first-time setup, see `references\u002Fsetup-guide.md`.\n\n## Transparent Mode (`-t`)\n\nGenerates images with transparent backgrounds using a 3-step pipeline:\n\n1. **Green screen generation** — Prompt is augmented to place subject on solid #00FF00 green\n2. **FFmpeg chroma key** — Removes green background + green fringe from edges\n3. **ImageMagick auto-crop** — Trims transparent padding\n\n**Requirements:** `brew install ffmpeg imagemagick`\n\n**Use cases:** Game sprites, icons, logos, mascots, marketing assets with transparency.\n\n```bash\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  -o \"sprite.png\" -t -p \"A pixel art treasure chest\"\n```\n\n## Reference Images (`-r`)\n\nSend existing images alongside text prompts for editing, style transfer, or guided generation. Supports multiple references. **Multimodal models only** (gemini, gpt5) — image-only models (riverflow, flux2, seedream) will error.\n\n```bash\n# Edit an existing image\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  -o \"edited.png\" -r \"photo.png\" -p \"Make the background white\"\n\n# Style transfer with multiple references\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  -o \"combined.png\" -r \"style1.png\" -r \"content.png\" -p \"Apply the style of the first image to the second\"\n```\n\nSupported formats: PNG, JPEG, WebP, GIF.\n\n## Image Analysis (`--analyze`)\n\nDescribe, analyze, or explain existing images using multimodal AI vision. Returns text-only output (no image generated). **Multimodal models only** (gemini, gpt5).\n\nNo `-o` output path needed. No prompt enhancement needed. The script outputs JSON to stdout with the model's analysis in the `analysis` field.\n\n```bash\n# Analyze with default prompt (describes subject, style, colors, composition, mood, text)\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  --analyze -r \"photo.png\"\n\n# Analyze with custom prompt\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  --analyze -r \"photo.png\" -p \"Describe this image in plain text and also in JSON structured output\"\n\n# Analyze with a specific model\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  --analyze -r \"photo.png\" -m gpt5 -p \"What text is visible in this image?\"\n\n# Analyze multiple images together\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py \\\n  --analyze -r \"before.png\" -r \"after.png\" -p \"Compare these two images and describe the differences\"\n```\n\n**JSON output format:**\n\n```json\n{\"ok\": true, \"analyze\": true, \"analysis\": \"\u003Cmodel text>\", \"provider\": \"openrouter\", \"model\": \"...\", \"mode\": \"gateway\", \"elapsed_seconds\": 3.2, \"ref_images\": 1}\n```\n\n**Incompatible flags:** `--analyze` cannot be combined with `-o`, `-t`, `-a`, or `-s`.\n\nFor advanced analysis prompt patterns (structured output, comparison, targeted analysis), read `references\u002Fanalyze-reference.md`.\n\n## Cost Tracking (`--costs`)\n\nEvery generation is logged to `.ai-image-creator\u002Fcosts.json` in your project directory. View history:\n\n```bash\nuv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fgenerate-image.py --costs\n```\n\nShows per-model breakdown: generation count, total tokens, elapsed time, and recent entries. **Security:** Only non-sensitive data is logged (model, tokens, timing, file path). No API keys or credentials are ever stored.\n\nConsider adding `.ai-image-creator\u002F` to your `.gitignore`.\n\n## Composite Banners\n\nGenerate consistent logo banners across multiple sizes from a JSON config. Uses ImageMagick for offline compositing — no API calls, no network required. Composites an existing logo\u002Fmark onto branded backgrounds with text at standard dimensions.\n\n### Composite vs. AI Generation — Decision Rule\n\nUse **composite-banners.py** when ALL of these are true:\n- User has an existing logo\u002Fmark they want to use as-is (provides or references a logo file)\n- User wants consistent branding across multiple standard sizes (not one creative image)\n- The output is logo + text on a solid\u002Fgradient background (not a photograph, illustration, or creative design)\n\nUse **generate-image.py** (AI generation) when ANY of these are true:\n- User wants a creative\u002Fartistic banner design (describes a scene, mood, concept, or style)\n- User wants AI to design the visual content (product shots, illustrations, creative layouts)\n- User wants a single banner with artistic content, not a multi-size brand kit\n\n**When composite mode applies**, read `references\u002Fcomposite-reference.md` for full config schema, preset dimensions, and font handling details.\n\n### Quick Start\n\n1. **Init config:** `uv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcomposite-banners.py --init`\n2. **Edit** `banner-config.json` — set logo path, brand text, colors, banner sizes\n3. **Validate:** `uv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcomposite-banners.py --validate`\n4. **Generate:** `uv run python ${CLAUDE_SKILL_DIR}\u002Fscripts\u002Fcomposite-banners.py -c banner-config.json -o .\u002Fbanners\u002F`\n\n### Composite Parameters\n\n| Argument | Short | Default | Description |\n|----------|-------|---------|-------------|\n| `--config` | `-c` | `banner-config.json` | Config JSON path |\n| `--output-dir` | `-o` | `.` | Output directory |\n| `--name` | `-n` | all | Generate single banner by name |\n| `--format` | `-f` | `png` | `png`, `webp`, `jpeg` |\n| `--list-presets` | | | List IAB\u002Fsocial\u002Fweb size presets |\n| `--init` | | | Generate starter config |\n| `--validate` | | | Check config, exit 0 or 2 |\n| `--dry-run` | | | Preview without rendering |\n| `--json` | | | Structured JSON to stdout |\n| `--verbose` | `-v` | | Verbose output |\n\n**Requirements:** ImageMagick 7 (`brew install imagemagick` or `apt install imagemagick`).\n\n### Workflow Hints\n\n**Starting composite mode:**\n- Ask user for: logo file path, brand name, tagline text, brand colors (hex)\n- If user doesn't have a logo yet → use generate-image.py to create one first\n- Run `--init` to scaffold config, then help user fill in their brand values\n\n**During generation:**\n- Always run `--validate` before generating to catch font\u002Flogo issues early\n- Use `--name` to iterate on one banner before generating the full set\n- Show user 3-4 representative sizes (hero, OG, square, leaderboard) for approval\n\n**After generation:**\n- If user wants creative\u002Fartistic redesign of banner visuals → switch to generate-image.py (composite only does logo + text on gradient\u002Fsolid backgrounds)\n- If banners look too plain → suggest AI-generating a textured or photographic background first, then compositing the logo onto it\n\n**Combined workflow (most powerful):**\n1. Use generate-image.py to AI-create a hero background or textured pattern\n2. Use composite-banners.py to overlay the logo + text onto that background at all standard sizes\nThis gives both creative AI visuals AND pixel-perfect logo consistency.\n\n## Image Tools\n\nOn first invocation, detect available image manipulation tools:\n\n```bash\nwhich magick convert sips ffmpeg 2>\u002Fdev\u002Fnull\n```\n\n### Available Tools\n\n| Tool | Check | Key Operations |\n|------|-------|----------------|\n| **ImageMagick 7** (`magick`) | `magick --version` | Resize, crop, convert, composite |\n| **ImageMagick 6** (`convert`) | `convert --version` | Same ops, legacy command name |\n| **sips** (macOS) | `sips --help` | Resize, format conversion |\n| **ffmpeg** | `ffmpeg -version` | Convert formats, resize |\n\n### Common Post-Processing\n\n```bash\n# Resize\nmagick output.png -resize 512x512 icon-512.png\n\n# Multiple sizes (icons)\nfor s in 16 32 48 64 128 256 512; do magick output.png -resize ${s}x${s} icon-${s}.png; done\n\n# Convert to WebP\nmagick output.png output.webp\n\n# Maskable icon (add safe-zone padding)\nmagick output.png -gravity center -extent 120%x120% maskable.png\n\n# macOS sips resize\nsips --resampleWidth 512 --resampleHeight 512 output.png --out icon-512.png\n```\n\nCRITICAL: Check tool availability before using. Prefer `magick` (IM7) over `convert` (IM6). If no tools found, inform user: `brew install imagemagick`.\n\n## Common Issues\n\n### \"No API credentials configured\"\n**Cause:** Environment variables not set or not exported.\n**Fix:** Add exports to `~\u002F.zshrc` and run `source ~\u002F.zshrc`. See `references\u002Fsetup-guide.md`.\n\n### \"HTTP 401: Unauthorized\"\n**Cause:** Invalid or expired API key\u002Ftoken.\n**Fix:** Check `AI_IMG_CREATOR_CF_TOKEN` (gateway) or `AI_IMG_CREATOR_OPENROUTER_KEY` (direct). Regenerate if needed.\n\n### \"No images in response\"\n**Cause:** Model returned text only (safety filter, unclear prompt, or unsupported request).\n**Fix:** Make the prompt more specific and descriptive. Avoid prohibited content.\n\n### \"Connection error\" \u002F timeout\n**Cause:** Network issue or image generation taking too long (120s timeout).\n**Fix:** Retry. If persistent, try `--provider google` as alternative. Check CF gateway status.\n\n## Detailed API Reference\n\nFor full API formats, response schemas, BYOK configuration, and curl examples:\nsee [references\u002Fapi-reference.md](references\u002Fapi-reference.md)\n\nFor first-time setup instructions:\nsee [references\u002Fsetup-guide.md](references\u002Fsetup-guide.md)\n",{"name":5,"metadata":51,"description":7,"allowed-tools":53,"compatibility":54},{"tags":52},"image-generation, ai, openrouter, cloudflare, gemini, flux2, riverflow, seedream, gpt5, gpt54","Bash, Read, Write","Requires uv (Python runner) and network access. Environment variables for CF AI Gateway or direct API keys must be configured in shell profile (~\u002F.zshrc on macOS, ~\u002F.bashrc on Linux, or System Environment Variables on Windows).","main","1907bbe850fb749efa8b499b8da7ebb78a663519",".claude\u002Fskills\u002Fai-image-creator",0,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start","https:\u002F\u002Fgithub.com\u002FdevelopAgent","2026-07-19 05:19:22",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add developAgent\u002Fbmad-start --skill ai-image-creator",{"tool":68,"command":69},"bunx","bunx skills add developAgent\u002Fbmad-start --skill ai-image-creator",{"tool":71,"command":72},"pnpm","pnpm dlx skills add developAgent\u002Fbmad-start --skill ai-image-creator","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fai-image-creator\u002FSKILL.md",true,[76,82,86,90,94,98,102,106,112,116],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Fanalyze-reference.md","REFERENCE","参考文档",3433,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fai-image-creator\u002Freferences\u002Fanalyze-reference.md",{"path":83,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fapi-reference.md",8015,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fai-image-creator\u002Freferences\u002Fapi-reference.md",{"path":87,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Fcomposite-reference.md",8031,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fai-image-creator\u002Freferences\u002Fcomposite-reference.md",{"path":91,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Fprompt-categories.md",12998,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fai-image-creator\u002Freferences\u002Fprompt-categories.md",{"path":95,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":96,"sourceHtmlUrl":97},"references\u002Fprompt-core.md",7200,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fai-image-creator\u002Freferences\u002Fprompt-core.md",{"path":99,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":100,"sourceHtmlUrl":101},"references\u002Fprompt-platforms.md",5348,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fai-image-creator\u002Freferences\u002Fprompt-platforms.md",{"path":103,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":104,"sourceHtmlUrl":105},"references\u002Fsetup-guide.md",6780,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fai-image-creator\u002Freferences\u002Fsetup-guide.md",{"path":107,"resourceType":108,"resourceTypeDesc":109,"sizeBytes":110,"sourceHtmlUrl":111},"scripts\u002Fcomposite-banners.py","SCRIPT","脚本",31418,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fai-image-creator\u002Fscripts\u002Fcomposite-banners.py",{"path":113,"resourceType":108,"resourceTypeDesc":109,"sizeBytes":114,"sourceHtmlUrl":115},"scripts\u002Fgenerate-image.py",50649,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fai-image-creator\u002Fscripts\u002Fgenerate-image.py",{"path":117,"resourceType":118,"resourceTypeDesc":119,"sizeBytes":58,"sourceHtmlUrl":120},"tmp\u002F.gitkeep","OTHER","其他","https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fai-image-creator\u002Ftmp\u002F.gitkeep",[122,146,176,194,208,234],{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":133,"publishedAt":145},"01M71R3M9DJTTY0ARFQ6K04NMP","gds-correct-course","Manage significant changes during sprint execution. Use when the user says \"correct course\" or \"propose sprint change\"","https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.rovodev\u002Fskills\u002Fgds-correct-course\u002FSKILL.md",[128],{"categoryNo":129,"categoryName":130,"taxonomyType":131,"taxonomyTypeDesc":132},"01JBSEEDCAT000000000000039","教师与教育","PROFESSION","适用职业",[134,135,136,137,138,139,140,141,142,143,144],"gds correct course","course","correct","user","changes","change","when","use","execution","manage","sprint","2026-11-10 13:02:02",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":158,"publishedAt":145},"01M71R3GENSFD1A1XVZTTQG1KF","gds-code-review","Review code changes adversarially using parallel review layers (Blind Hunter, Edge Case Hunter, Acceptance Auditor) with structured triage into actionable categories. Use when the user says \"run code review\" or \"review this code\"","https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.rovodev\u002Fskills\u002Fgds-code-review\u002FSKILL.md",[152,155],{"categoryNo":153,"categoryName":154,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":156,"categoryName":157,"taxonomyType":131,"taxonomyTypeDesc":132},"01JBSEEDCAT000000000000030","开发工程师",[159,160,161,162,163,138,164,165,166,167,168,169,170,140,171,141,172,173,174,175],"code review","code","review","gds code review","categories","triage","review code","run","parallel","case","with","run code","acceptance","edge","actionable","layers","hunter",{"skillNo":177,"name":178,"nameZh":6,"description":179,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":180,"categories":181,"keywords":182,"publishedAt":145},"01M71R3DD098MQRD6F8S4GG0AW","gds-check-implementation-readiness","Verify GDD, UX, Architecture, and Epics alignment before production. Use when the user says \"check readiness\" or \"implementation readiness\"","https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.rovodev\u002Fskills\u002Fgds-check-implementation-readiness\u002FSKILL.md",[],[183,184,185,186,187,188,137,189,190,191,192,140,141,193],"check","readiness","Implementation Readiness","gds check implementation readiness","implementation","check readiness","Production","ux","verify","architecture","alignment",{"skillNo":195,"name":196,"nameZh":6,"description":197,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":198,"categories":199,"keywords":200,"publishedAt":145},"01M71R3ACAA1G0NVQ330JQNJPK","gds-brainstorm-game","Facilitate game brainstorming sessions with game-specific techniques. Use when the user says \"brainstorm game\" or \"game ideas\"","https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.rovodev\u002Fskills\u002Fgds-brainstorm-game\u002FSKILL.md",[],[201,202,203,137,204,169,140,141,205,206,207],"gds brainstorm game","game","brainstorm","brainstorming","techniques","sessions","ideas",{"skillNo":209,"name":210,"nameZh":6,"description":211,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":212,"categories":213,"keywords":217,"publishedAt":145},"01M71R377MJ6WJTTFARGKH3HX7","gds-agent-tech-writer","Technical documentation specialist and knowledge curator for game projects. Use when the user asks to talk to Paige or requests the Technical Writer.","https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.rovodev\u002Fskills\u002Fgds-agent-tech-writer\u002FSKILL.md",[214],{"categoryNo":215,"categoryName":216,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[218,219,220,221,141,222,223,224,225,140,137,226,227,228,229,230,231,232,202,233],"gds agent tech writer","tech","writer","technical writer","technical","knowledge","for","projects","technical documentation","talk","specialist","documentation specialist","knowledge curator","requests","documentation","curator",{"skillNo":235,"name":236,"nameZh":6,"description":237,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":238,"categories":239,"keywords":241,"publishedAt":145},"01M71R34RGT2ZX3TSFA2CRT0NC","gds-agent-game-solo-dev","Elite indie game developer for rapid prototyping and solo quick-flow development. Use when the user asks to talk to Indie or requests the Game Solo Dev.","https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.rovodev\u002Fskills\u002Fgds-agent-game-solo-dev\u002FSKILL.md",[240],{"categoryNo":215,"categoryName":216,"taxonomyType":20,"taxonomyTypeDesc":21},[242,202,243,244,245,246,137,227,231,247,248,140,141,249,224,250,251],"solo","gds agent game solo dev","dev","flow","developer","RAPID","game developer","prototyping","development","quick"]