[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M712Z103GCMDB7NT7FVK5ZAF":3,"skill-same:01M712Z103GCMDB7NT7FVK5ZAF":277},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":59,"commitSha":60,"skillDirectory":61,"forksCount":62,"repositoryHtmlUrl":63,"repositoryHomepageUrl":6,"ownerHtmlUrl":64,"ownerBlogUrl":65,"ownerDescription":66,"updatedAt":67,"install":68,"resources":80},"01M712Z103GCMDB7NT7FVK5ZAF","baoyu-image-gen",null,"AI image generation with OpenAI GPT Image 2, Azure OpenAI, Google, OpenRouter, DashScope, Z.AI GLM-Image, MiniMax, Jimeng, Seedream, Replicate and Agnes APIs. Supports text-to-image, reference images, aspect ratios, and batch generation from saved prompt files. Sequential by default; use batch parallel generation when the user already has multiple prompts or wants stable multi-image throughput. Use when user asks to generate, create, or draw images.","EthanYoQ\u002FSkill-hub","EthanYoQ","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F257484394?v=4","01M70C9QKWR1YS0S7V26DNB18H","Ethan","01M70C9QMER047R5ANZZA6KC2P",11,"MIT","https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"image gen","baoyu image gen","image","throughput","openai","google","ai image generation","Parallel Generation","ai image","generate","azure openai","replicate","openrouter","create","text","batch","when","files","default","images","2026-11-10 10:12:30",false,"---\nname: baoyu-image-gen\ndescription: AI image generation with OpenAI GPT Image 2, Azure OpenAI, Google, OpenRouter, DashScope, Z.AI GLM-Image, MiniMax, Jimeng, Seedream, Replicate and Agnes APIs. Supports text-to-image, reference images, aspect ratios, and batch generation from saved prompt files. Sequential by default; use batch parallel generation when the user already has multiple prompts or wants stable multi-image throughput. Use when user asks to generate, create, or draw images.\nmetadata:\n  openclaw:\n    homepage: https:\u002F\u002Fgithub.com\u002FJimLiu\u002Fbaoyu-skills#baoyu-image-gen\n    requires:\n      anyBins:\n        - bun\n        - npx\n---\n\n# Image Generation (AI SDK)\n\nOfficial API-based image generation. Supports OpenAI GPT Image 2, Azure OpenAI, Google, OpenRouter, DashScope (阿里通义万象), Z.AI GLM-Image, MiniMax, Jimeng (即梦), Seedream (豆包), Replicate and Agnes.\n\n## User Input Tools\n\nWhen this skill prompts the user, follow this tool-selection rule (priority order):\n\n1. **Prefer built-in user-input tools** exposed by the current agent runtime — e.g., `AskUserQuestion`, `request_user_input`, `clarify`, `ask_user`, or any equivalent.\n2. **Fallback**: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number\u002Fanswer for each question.\n3. **Batching**: if the tool supports multiple questions per call, combine all applicable questions into a single call; if only single-question, ask them one at a time in priority order.\n\nConcrete `AskUserQuestion` references below are examples — substitute the local equivalent in other runtimes.\n\n## Script Directory\n\n`{baseDir}` = this SKILL.md's directory. All `scripts\u002F...` paths below are relative to `{baseDir}`. Main script: `{baseDir}\u002Fscripts\u002Fmain.ts`. Batch payload helper: `{baseDir}\u002Fscripts\u002Fbuild-batch.ts`. Resolve `${BUN_X}`: prefer `bun`; else `npx -y bun`; else suggest `brew install oven-sh\u002Fbun\u002Fbun`.\n\n## Step 0: Load Preferences ⛔ BLOCKING\n\nThis step MUST complete before any image generation — generation is blocked until EXTEND.md exists.\n\nCheck these paths in order; first hit wins:\n\n| Path | Scope |\n|------|-------|\n| `.baoyu-skills\u002Fbaoyu-image-gen\u002FEXTEND.md` | Project |\n| `${XDG_CONFIG_HOME:-$HOME\u002F.config}\u002Fbaoyu-skills\u002Fbaoyu-image-gen\u002FEXTEND.md` | XDG |\n| `$HOME\u002F.baoyu-skills\u002Fbaoyu-image-gen\u002FEXTEND.md` | User home |\n\n- **Found** → load, parse, apply. If `default_model.[provider]` is null → ask model only.\n- **Not found** → run first-time setup (`references\u002Fconfig\u002Ffirst-time-setup.md`) using AskUserQuestion to collect provider + model + quality + save location. Save EXTEND.md, then continue. Do not generate images before this completes.\n\nLegacy compatibility: if `.baoyu-skills\u002Fbaoyu-imagine\u002FEXTEND.md` exists and the new path doesn't, the runtime renames it to `baoyu-image-gen`. If both exist, the runtime leaves them alone and uses the new path.\n\n**EXTEND.md keys**: default provider, default quality, default aspect ratio, default image size, OpenAI image API dialect, default models, batch worker cap, provider-specific batch limits. Schema: `references\u002Fconfig\u002Fpreferences-schema.md`.\n\n## Usage\n\nMinimum working examples — see `references\u002Fusage-examples.md` for the full set including per-provider invocations and batch mode.\n\n### Identity-preserving reference prompts\n\nWhen the user wants a real person\u002Fcharacter\u002Fobject preserved from reference images, do **not** replace the reference with a long generic description. Prefer short, hard identity-preservation language:\n\n- \"Use the person\u002Fobject in the reference image(s) as the same identity. Do not redesign it or create a similar-looking new subject.\"\n- \"Only change scene, clothing, pose, lighting, rendering style, and composition. Keep the face\u002Fproportions\u002Fhair\u002Fkey accessories\u002Foverall identity from the references.\"\n- If using multiple references, state that they are the same subject and should jointly define identity.\n\nPitfall: long descriptions like \"young East Asian woman, oval face, clear eyes...\" can cause the model to synthesize a new person matching the description instead of preserving the referenced person.\n\n```bash\n# Basic\n${BUN_X} {baseDir}\u002Fscripts\u002Fmain.ts --prompt \"A cat\" --image cat.png\n\n# With aspect ratio and high quality\n${BUN_X} {baseDir}\u002Fscripts\u002Fmain.ts --prompt \"A landscape\" --image out.png --ar 16:9 --quality 2k\n\n# Prompt from files\n${BUN_X} {baseDir}\u002Fscripts\u002Fmain.ts --promptfiles system.md content.md --image out.png\n\n# With reference image\n${BUN_X} {baseDir}\u002Fscripts\u002Fmain.ts --prompt \"Make blue\" --image out.png --ref source.png\n\n# Specific provider\n${BUN_X} {baseDir}\u002Fscripts\u002Fmain.ts --prompt \"A cat\" --image out.png --provider dashscope --model qwen-image-2.0-pro\n\n# OpenAI GPT Image 2\n${BUN_X} {baseDir}\u002Fscripts\u002Fmain.ts --prompt \"A cat\" --image out.png --provider openai --model gpt-image-2\n\n# Codex CLI (uses logged-in Codex subscription — no OPENAI_API_KEY required; requires `codex` on PATH)\n${BUN_X} {baseDir}\u002Fscripts\u002Fmain.ts --prompt \"A cat\" --image out.png --provider codex-cli --ar 16:9\n\n# Batch mode\n${BUN_X} {baseDir}\u002Fscripts\u002Fmain.ts --batchfile batch.json --jobs 4\n\n# Build a batch file from outline.md + prompts\u002F (e.g. baoyu-article-illustrator output)\n${BUN_X} {baseDir}\u002Fscripts\u002Fbuild-batch.ts --outline outline.md --prompts prompts --output batch.json --images-dir attachments\n${BUN_X} {baseDir}\u002Fscripts\u002Fmain.ts --batchfile batch.json --jobs 4\n```\n\n## Reference-Image Identity Preservation\n\nWhen the user wants a person\u002Fobject preserved from reference images:\n\n- Prefer a small curated set of existing source references (usually 2–4) over many images; large multi-megabyte refs can destabilize streaming providers.\n- Make the prompt say the references are the same subject and the output must use that identity. Avoid long generic facial-feature descriptions that can cause the model to synthesize a new similar-looking person.\n- Do not use newly generated outputs as references unless the user explicitly asks; generated refs compound drift.\n- If results become too polished or influencer-like, reduce stylized refs and add explicit anti-beautification constraints (no face slimming, eye enlargement, heavy makeup, commercial travel shoot, over-smoothing).\n- If the subject should look younger\u002Folder, preserve the face and express age through clothing, posture, scene, and styling; do not ask the model to change facial identity.\n\n## Options\n\n| Option | Description |\n|--------|-------------|\n| `--prompt \u003Ctext>`, `-p` | Prompt text |\n| `--promptfiles \u003Cfiles...>` | Read prompt from files (concatenated) |\n| `--image \u003Cpath>` | Output image path (required in single-image mode) |\n| `--batchfile \u003Cpath>` | JSON batch file for multi-image generation |\n| `--jobs \u003Ccount>` | Worker count for batch mode (default: auto, max from config, built-in default 10) |\n| `--provider google\\|openai\\|azure\\|openrouter\\|dashscope\\|zai\\|minimax\\|jimeng\\|seedream\\|replicate\\|codex-cli\\|agnes` | Force provider (default: auto-detect; `codex-cli` is never auto-selected — must be pinned via CLI or EXTEND.md) |\n| `--model \u003Cid>`, `-m` | Model ID — see provider references for defaults and allowed values |\n| `--ar \u003Cratio>` | Aspect ratio (`16:9`, `1:1`, `4:3`, …) |\n| `--size \u003CWxH>` | Explicit size (e.g., `1024x1024`; for `gpt-image-2`, width\u002Fheight must be multiples of 16, max edge 3840px, ratio no wider than 3:1) |\n| `--quality normal\\|2k` | Quality preset (default: `2k`) |\n| `--imageSize 1K\\|2K\\|4K` | Image size for Google\u002FOpenRouter (default: from quality) |\n| `--imageApiDialect openai-native\\|ratio-metadata` | OpenAI-compatible endpoint dialect — use `ratio-metadata` for gateways that expect aspect-ratio `size` plus `metadata.resolution` |\n| `--ref \u003Cfiles...>` | Reference images. Supported by Google multimodal, OpenAI GPT Image edits, Azure OpenAI edits (PNG\u002FJPG only), OpenRouter multimodal models, Replicate supported families, MiniMax subject-reference, Seedream 5.0\u002F4.5\u002F4.0, DashScope `wan2.7-image-pro`\u002F`wan2.7-image`. Not supported by Jimeng, Seedream 3.0, SeedEdit 3.0, or any DashScope model outside the `wan2.7-image*` family |\n| `--n \u003Ccount>` | Number of images. Replicate requires `--n 1` (single-output save semantics) |\n| `--json` | JSON output |\n\n## Environment Variables\n\n| Variable | Description |\n|----------|-------------|\n| `OPENAI_API_KEY` | OpenAI API key |\n| `AZURE_OPENAI_API_KEY` | Azure OpenAI API key |\n| `OPENROUTER_API_KEY` | OpenRouter API key |\n| `GOOGLE_API_KEY` | Google API key |\n| `DASHSCOPE_API_KEY` | DashScope API key |\n| `ZAI_API_KEY` (alias `BIGMODEL_API_KEY`) | Z.AI API key |\n| `MINIMAX_API_KEY` | MiniMax API key |\n| `REPLICATE_API_TOKEN` | Replicate API token |\n| `JIMENG_ACCESS_KEY_ID`, `JIMENG_SECRET_ACCESS_KEY` | Jimeng (即梦) Volcengine credentials |\n| `ARK_API_KEY` | Seedream (豆包) Volcengine ARK API key |\n| `\u003CPROVIDER>_IMAGE_MODEL` | Per-provider model override (`OPENAI_IMAGE_MODEL`, `GOOGLE_IMAGE_MODEL`, `DASHSCOPE_IMAGE_MODEL`, `ZAI_IMAGE_MODEL`\u002F`BIGMODEL_IMAGE_MODEL`, `MINIMAX_IMAGE_MODEL`, `OPENROUTER_IMAGE_MODEL`, `REPLICATE_IMAGE_MODEL`, `JIMENG_IMAGE_MODEL`, `SEEDREAM_IMAGE_MODEL`, `AGNES_IMAGE_MODEL`) |\n| `AZURE_OPENAI_DEPLOYMENT` (alias `AZURE_OPENAI_IMAGE_MODEL`) | Azure default deployment |\n| `\u003CPROVIDER>_BASE_URL` | Per-provider endpoint override |\n| `AZURE_API_VERSION` | Azure image API version (default `2025-04-01-preview`) |\n| `JIMENG_REGION` | Jimeng region (default `cn-north-1`) |\n| `OPENAI_IMAGE_API_DIALECT` | `openai-native` \\| `ratio-metadata` |\n| `OPENROUTER_HTTP_REFERER`, `OPENROUTER_TITLE` | Optional OpenRouter attribution |\n| `BAOYU_IMAGE_GEN_MAX_WORKERS` | Override batch worker cap |\n| `BAOYU_IMAGE_GEN_\u003CPROVIDER>_CONCURRENCY` | Per-provider concurrency (e.g., `BAOYU_IMAGE_GEN_REPLICATE_CONCURRENCY`; for codex-cli use `BAOYU_IMAGE_GEN_CODEX_CLI_CONCURRENCY`) |\n| `BAOYU_IMAGE_GEN_\u003CPROVIDER>_START_INTERVAL_MS` | Per-provider start-gap |\n| `BAOYU_CODEX_IMAGEGEN_BIN` | Override the codex-imagegen wrapper path for the `codex-cli` provider (default: bundled `scripts\u002Fcodex-imagegen\u002Fmain.ts`; accepts `.ts` or legacy `.sh`\u002Fbinary) |\n| `BAOYU_CODEX_IMAGEGEN_CACHE_DIR` | Enable idempotency cache for the `codex-cli` provider (off by default) |\n| `BAOYU_CODEX_IMAGEGEN_TIMEOUT_MS` | Per-attempt `codex exec` timeout for the `codex-cli` provider (default: 300000 ms) |\n| `BAOYU_CODEX_IMAGEGEN_RETRIES` | Wrapper-side retry attempts on retryable errors for the `codex-cli` provider (default: 2) |\n| `BAOYU_CODEX_IMAGEGEN_LOG_FILE` | Append JSONL diagnostic log for the `codex-cli` provider |\n\n**Load priority**: CLI args > EXTEND.md > env vars > `\u003Ccwd>\u002F.baoyu-skills\u002F.env` > `~\u002F.baoyu-skills\u002F.env`\n\n### Codex\u002FChatGPT OAuth is not an OpenAI API key\n\n`--provider openai --model gpt-image-2` uses the standard OpenAI Images API (`\u002Fv1\u002Fimages\u002Fgenerations` or `\u002Fv1\u002Fimages\u002Fedits`) and requires `OPENAI_API_KEY`. A Codex or ChatGPT desktop login is a different entitlement and is not a drop-in replacement for `OPENAI_API_KEY`; do not paste a Codex OAuth token into `OPENAI_API_KEY` or only set `OPENAI_BASE_URL` to a Codex backend.\n\nIf the user wants to use their Codex subscription \u002F GPT Image 2 entitlement without an OpenAI API key, route through a Codex-native backend instead of this skill's `openai` provider:\n\n- In Codex runtime: use the native `imagegen` skill\u002Ftool.\n- In non-Codex runtimes with `codex` CLI installed and logged in: use `baoyu-image-gen --provider codex-cli` (preferred — it gives you the same retry \u002F cache \u002F batch flow as every other provider). The provider spawns the bundled `scripts\u002Fcodex-imagegen\u002Fmain.ts`; the same code lives upstream at `packages\u002Fbaoyu-codex-imagegen\u002Fsrc\u002Fmain.ts` for standalone callers.\n- In Hermes runtimes with a native `image_generate` tool: use that tool as a fallback, and state whether reference images were passed directly or reconstructed from extracted traits.\n\nDo not modify the existing `openai` provider to silently consume Codex OAuth. The first-class Codex-CLI path is the dedicated `codex-cli` provider, which has its own auth (Codex login), route (`codex exec`), request shape, and tests. See `references\u002Fcodex-oauth-vs-openai-api-key.md`.\n\n## Model Resolution\n\nPriority (highest → lowest) applies to every provider:\n\n1. CLI flag `--model \u003Cid>`\n2. EXTEND.md `default_model.[provider]`\n3. Env var `\u003CPROVIDER>_IMAGE_MODEL`\n4. Built-in default\n\nFor OpenAI, the built-in default is `gpt-image-2`. `gpt-image-1.5`, `gpt-image-1`, and GPT Image snapshots remain selectable with `--model` or `OPENAI_IMAGE_MODEL`.\n\nFor Azure, `--model` \u002F `default_model.azure` is the Azure deployment name. `AZURE_OPENAI_DEPLOYMENT` is the preferred env var; `AZURE_OPENAI_IMAGE_MODEL` is kept as a backward-compatible alias. If your Azure deployment is named after the underlying model, use `gpt-image-2`; otherwise use the exact custom deployment name.\n\nEXTEND.md overrides env vars: if EXTEND.md sets `default_model.google: \"gemini-3-pro-image\"` and the env var sets `GOOGLE_IMAGE_MODEL=gemini-3.1-flash-image`, EXTEND.md wins.\n\n**Display model info before each generation**:\n\n- `Using [provider] \u002F [model]`\n- `Switch model: --model \u003Cid> | EXTEND.md default_model.[provider] | env \u003CPROVIDER>_IMAGE_MODEL`\n\n## OpenAI-Compatible Gateway Dialects\n\n`provider=openai` means the auth and routing entrypoint is OpenAI-compatible. It does **not** guarantee the upstream image API uses OpenAI native semantics. When a gateway expects a different wire format, set `default_image_api_dialect` in EXTEND.md, `OPENAI_IMAGE_API_DIALECT`, or `--imageApiDialect`:\n\n- `openai-native`: pixel `size` (`1536x1024`) and native OpenAI quality fields\n- `ratio-metadata`: aspect-ratio `size` (`16:9`) plus `metadata.resolution` (`1K|2K|4K`) and `metadata.orientation`\n\nUse `openai-native` for the OpenAI native API or strict clones; try `ratio-metadata` for compatibility gateways in front of Gemini or similar models. Current limitation: `ratio-metadata` applies only to text-to-image; reference-image edits still need `openai-native` or a provider with first-class edit support.\n\n## Provider-Specific Guides\n\nEach provider has its own quirks (model families, size rules, ref support, limits). Read these when the user picks that provider or asks for non-default behavior:\n\n| Provider | Reference |\n|----------|-----------|\n| DashScope (Qwen-Image families, custom sizes) | `references\u002Fproviders\u002Fdashscope.md` |\n| Z.AI (GLM-Image, cogview-4) | `references\u002Fproviders\u002Fzai.md` |\n| MiniMax (image-01, subject-reference) | `references\u002Fproviders\u002Fminimax.md` |\n| OpenRouter (multimodal models, `\u002Fchat\u002Fcompletions` flow) | `references\u002Fproviders\u002Fopenrouter.md` |\n| Replicate (nano-banana, Seedream, Wan) | `references\u002Fproviders\u002Freplicate.md` |\n| Codex CLI (wraps bundled `scripts\u002Fcodex-imagegen\u002F`; Codex login, no `OPENAI_API_KEY`) | `references\u002Fproviders\u002Fcodex-cli.md` |\n| Agnes (agnes-image-2.1-flash, reference-image support) | `references\u002Fproviders\u002Fagnes.md` |\n\n## Provider Selection\n\n1. `--ref` provided + no `--provider` → auto-select Google → OpenAI → Azure → OpenRouter → Replicate → Seedream → MiniMax → Agnes (MiniMax's subject reference is more specialized toward character\u002Fportrait consistency)\n2. `--provider` specified → use it (if `--ref`, must be google\u002Fopenai\u002Fazure\u002Fopenrouter\u002Freplicate\u002Fseedream\u002Fminimax\u002Fcodex-cli\u002Fagnes)\n3. Only one API key present → use that provider\n4. Multiple keys → default priority: Google → OpenAI → Azure → OpenRouter → DashScope → Z.AI → MiniMax → Replicate → Jimeng → Seedream → Agnes\n5. `codex-cli` is **never auto-selected** — set `default_provider: codex-cli` in EXTEND.md or pass `--provider codex-cli`. It spawns `codex exec` via the bundled `scripts\u002Fcodex-imagegen\u002Fmain.ts` TS entrypoint (run with `bun`) and uses the user's Codex subscription (no `OPENAI_API_KEY`). Requires `codex` on `PATH` with an active `codex login`.\n\n## Quality Presets\n\n| Preset | Google imageSize | OpenAI size | OpenRouter size | Replicate resolution | Use case |\n|--------|------------------|-------------|-----------------|----------------------|----------|\n| `normal` | 1K | 1024px target | 1K | 1K | Quick previews |\n| `2k` (default) | 2K | 2048px target | 2K | 2K | Covers, illustrations, infographics |\n\nGoogle\u002FOpenRouter `imageSize` can be overridden with `--imageSize 1K|2K|4K`.\n\nFor OpenAI native `gpt-image-2`, `normal` maps to `quality=medium` and a low-latency valid size near the requested aspect ratio; `2k` maps to `quality=high` and 2048px-class sizes such as `2048x2048`, `2048x1152`, or `1152x2048`. Use explicit `--size` for valid custom or 4K outputs, e.g. `3840x2160`.\n\n## Aspect Ratios\n\nSupported: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `2.35:1`.\n\n- Google multimodal: `imageConfig.aspectRatio`\n- OpenAI: `gpt-image-2` uses the closest valid custom size for the requested ratio; older GPT Image and DALL·E models use their closest supported fixed size\n- OpenRouter: `imageGenerationOptions.aspect_ratio`; if only `--size \u003CWxH>` is given, the ratio is inferred\n- Replicate: behavior is model-specific — `google\u002Fnano-banana*` uses `aspect_ratio`, `bytedance\u002Fseedream-*` uses documented Replicate ratios, Wan 2.7 maps `--ar` to a concrete `size`\n- MiniMax: official `aspect_ratio` values; if `--size \u003CWxH>` is given without `--ar`, sends `width`\u002F`height` for `image-01`\n\n## Generation Mode\n\n**Default**: sequential. **Batch parallel**: enabled automatically when `--batchfile` contains 2+ pending tasks.\n\n| Situation | Prefer | Why |\n|-----------|--------|-----|\n| One image, or 1-2 simple images | Sequential | Lower coordination overhead, easier debugging |\n| Multiple images with saved prompt files | Batch (`--batchfile`) | Reuses finalized prompts, applies shared throttling\u002Fretries, predictable throughput |\n| Each image still needs its own reasoning \u002F prompt writing \u002F style exploration | Subagents | Work is still exploratory, each needs independent analysis |\n| Input is `outline.md` + `prompts\u002F` (e.g. from `baoyu-article-illustrator`) | Batch — use `{baseDir}\u002Fscripts\u002Fbuild-batch.ts` to assemble the payload | The outline + prompt files already contain everything needed |\n\nRule of thumb: once prompt files are saved and the task is \"generate all of these\", prefer batch over subagents. Use subagents only when generation is coupled with per-image thinking or divergent creative exploration.\n\n**Parallel behavior**:\n\n- Default worker count is automatic, capped by config, built-in default 10\n- Provider-specific throttling applies only in batch mode; defaults are tuned for throughput while avoiding RPM bursts\n- Override with `--jobs \u003Ccount>`\n- Each image retries up to 3 attempts\n- Final output includes success count, failure count, and per-image failure reasons\n\n## Error Handling\n\n- Missing API key → error with setup instructions\n- Generation failure → auto-retry up to 3 attempts per image\n- Invalid aspect ratio → warning, proceed with default\n- Reference images with unsupported provider\u002Fmodel → error with fix hint\n\n### Codex image2 fallback\n\nIf `--provider openai --model gpt-image-2` fails because `OPENAI_API_KEY` is missing but the current runtime has a native image-generation backend or the repo-level `codex-imagegen` wrapper is available, use that path rather than leaving the user waiting. Be explicit about whether the fallback is true reference-image generation or only a text-prompt reconstruction from extracted visual traits. See `references\u002Fcodex-image2-fallback.md`.\n\n## References\n\n| File | Content |\n|------|---------|\n| `references\u002Fusage-examples.md` | Extended CLI examples across providers and batch mode |\n| `references\u002Fcodex-oauth-vs-openai-api-key.md` | Why Codex\u002FChatGPT OAuth image2 entitlement is not usable through baoyu-image-gen's standard OpenAI API-key provider |\n| `references\u002Fcodex-image2-fallback.md` | Practical fallback behavior when OpenAI API credentials are absent but Codex\u002Fnative image generation is available |\n| `references\u002Fproviders\u002Fdashscope.md` | DashScope families, sizes, limits |\n| `references\u002Fproviders\u002Fzai.md` | Z.AI GLM-image \u002F cogview-4 |\n| `references\u002Fproviders\u002Fminimax.md` | MiniMax image-01 + subject reference |\n| `references\u002Fproviders\u002Fopenrouter.md` | OpenRouter multimodal flow |\n| `references\u002Fproviders\u002Freplicate.md` | Replicate supported families + guardrails |\n| `references\u002Fproviders\u002Fagnes.md` | Agnes (agnes-image-2.1-flash) sizing, refs, and limits |\n| `references\u002Fconfig\u002Fpreferences-schema.md` | EXTEND.md schema |\n| `references\u002Fconfig\u002Ffirst-time-setup.md` | First-time setup flow |\n\n## Extension Support\n\nCustom configurations via EXTEND.md. See Step 0 for paths and schema.\n","# Image Generation (AI SDK)\n\nOfficial API-based image generation. Supports OpenAI GPT Image 2, Azure OpenAI, Google, OpenRouter, DashScope (阿里通义万象), Z.AI GLM-Image, MiniMax, Jimeng (即梦), Seedream (豆包), Replicate and Agnes.\n\n## User Input Tools\n\nWhen this skill prompts the user, follow this tool-selection rule (priority order):\n\n1. **Prefer built-in user-input tools** exposed by the current agent runtime — e.g., `AskUserQuestion`, `request_user_input`, `clarify`, `ask_user`, or any equivalent.\n2. **Fallback**: if no such tool exists, emit a numbered plain-text message and ask the user to reply with the chosen number\u002Fanswer for each question.\n3. **Batching**: if the tool supports multiple questions per call, combine all applicable questions into a single call; if only single-question, ask them one at a time in priority order.\n\nConcrete `AskUserQuestion` references below are examples — substitute the local equivalent in other runtimes.\n\n## Script Directory\n\n`{baseDir}` = this SKILL.md's directory. All `scripts\u002F...` paths below are relative to `{baseDir}`. Main script: `{baseDir}\u002Fscripts\u002Fmain.ts`. Batch payload helper: `{baseDir}\u002Fscripts\u002Fbuild-batch.ts`. Resolve `${BUN_X}`: prefer `bun`; else `npx -y bun`; else suggest `brew install oven-sh\u002Fbun\u002Fbun`.\n\n## Step 0: Load Preferences ⛔ BLOCKING\n\nThis step MUST complete before any image generation — generation is blocked until EXTEND.md exists.\n\nCheck these paths in order; first hit wins:\n\n| Path | Scope |\n|------|-------|\n| `.baoyu-skills\u002Fbaoyu-image-gen\u002FEXTEND.md` | Project |\n| `${XDG_CONFIG_HOME:-$HOME\u002F.config}\u002Fbaoyu-skills\u002Fbaoyu-image-gen\u002FEXTEND.md` | XDG |\n| `$HOME\u002F.baoyu-skills\u002Fbaoyu-image-gen\u002FEXTEND.md` | User home |\n\n- **Found** → load, parse, apply. If `default_model.[provider]` is null → ask model only.\n- **Not found** → run first-time setup (`references\u002Fconfig\u002Ffirst-time-setup.md`) using AskUserQuestion to collect provider + model + quality + save location. Save EXTEND.md, then continue. Do not generate images before this completes.\n\nLegacy compatibility: if `.baoyu-skills\u002Fbaoyu-imagine\u002FEXTEND.md` exists and the new path doesn't, the runtime renames it to `baoyu-image-gen`. If both exist, the runtime leaves them alone and uses the new path.\n\n**EXTEND.md keys**: default provider, default quality, default aspect ratio, default image size, OpenAI image API dialect, default models, batch worker cap, provider-specific batch limits. Schema: `references\u002Fconfig\u002Fpreferences-schema.md`.\n\n## Usage\n\nMinimum working examples — see `references\u002Fusage-examples.md` for the full set including per-provider invocations and batch mode.\n\n### Identity-preserving reference prompts\n\nWhen the user wants a real person\u002Fcharacter\u002Fobject preserved from reference images, do **not** replace the reference with a long generic description. Prefer short, hard identity-preservation language:\n\n- \"Use the person\u002Fobject in the reference image(s) as the same identity. Do not redesign it or create a similar-looking new subject.\"\n- \"Only change scene, clothing, pose, lighting, rendering style, and composition. Keep the face\u002Fproportions\u002Fhair\u002Fkey accessories\u002Foverall identity from the references.\"\n- If using multiple references, state that they are the same subject and should jointly define identity.\n\nPitfall: long descriptions like \"young East Asian woman, oval face, clear eyes...\" can cause the model to synthesize a new person matching the description instead of preserving the referenced person.\n\n```bash\n# Basic\n${BUN_X} {baseDir}\u002Fscripts\u002Fmain.ts --prompt \"A cat\" --image cat.png\n\n# With aspect ratio and high quality\n${BUN_X} {baseDir}\u002Fscripts\u002Fmain.ts --prompt \"A landscape\" --image out.png --ar 16:9 --quality 2k\n\n# Prompt from files\n${BUN_X} {baseDir}\u002Fscripts\u002Fmain.ts --promptfiles system.md content.md --image out.png\n\n# With reference image\n${BUN_X} {baseDir}\u002Fscripts\u002Fmain.ts --prompt \"Make blue\" --image out.png --ref source.png\n\n# Specific provider\n${BUN_X} {baseDir}\u002Fscripts\u002Fmain.ts --prompt \"A cat\" --image out.png --provider dashscope --model qwen-image-2.0-pro\n\n# OpenAI GPT Image 2\n${BUN_X} {baseDir}\u002Fscripts\u002Fmain.ts --prompt \"A cat\" --image out.png --provider openai --model gpt-image-2\n\n# Codex CLI (uses logged-in Codex subscription — no OPENAI_API_KEY required; requires `codex` on PATH)\n${BUN_X} {baseDir}\u002Fscripts\u002Fmain.ts --prompt \"A cat\" --image out.png --provider codex-cli --ar 16:9\n\n# Batch mode\n${BUN_X} {baseDir}\u002Fscripts\u002Fmain.ts --batchfile batch.json --jobs 4\n\n# Build a batch file from outline.md + prompts\u002F (e.g. baoyu-article-illustrator output)\n${BUN_X} {baseDir}\u002Fscripts\u002Fbuild-batch.ts --outline outline.md --prompts prompts --output batch.json --images-dir attachments\n${BUN_X} {baseDir}\u002Fscripts\u002Fmain.ts --batchfile batch.json --jobs 4\n```\n\n## Reference-Image Identity Preservation\n\nWhen the user wants a person\u002Fobject preserved from reference images:\n\n- Prefer a small curated set of existing source references (usually 2–4) over many images; large multi-megabyte refs can destabilize streaming providers.\n- Make the prompt say the references are the same subject and the output must use that identity. Avoid long generic facial-feature descriptions that can cause the model to synthesize a new similar-looking person.\n- Do not use newly generated outputs as references unless the user explicitly asks; generated refs compound drift.\n- If results become too polished or influencer-like, reduce stylized refs and add explicit anti-beautification constraints (no face slimming, eye enlargement, heavy makeup, commercial travel shoot, over-smoothing).\n- If the subject should look younger\u002Folder, preserve the face and express age through clothing, posture, scene, and styling; do not ask the model to change facial identity.\n\n## Options\n\n| Option | Description |\n|--------|-------------|\n| `--prompt \u003Ctext>`, `-p` | Prompt text |\n| `--promptfiles \u003Cfiles...>` | Read prompt from files (concatenated) |\n| `--image \u003Cpath>` | Output image path (required in single-image mode) |\n| `--batchfile \u003Cpath>` | JSON batch file for multi-image generation |\n| `--jobs \u003Ccount>` | Worker count for batch mode (default: auto, max from config, built-in default 10) |\n| `--provider google\\|openai\\|azure\\|openrouter\\|dashscope\\|zai\\|minimax\\|jimeng\\|seedream\\|replicate\\|codex-cli\\|agnes` | Force provider (default: auto-detect; `codex-cli` is never auto-selected — must be pinned via CLI or EXTEND.md) |\n| `--model \u003Cid>`, `-m` | Model ID — see provider references for defaults and allowed values |\n| `--ar \u003Cratio>` | Aspect ratio (`16:9`, `1:1`, `4:3`, …) |\n| `--size \u003CWxH>` | Explicit size (e.g., `1024x1024`; for `gpt-image-2`, width\u002Fheight must be multiples of 16, max edge 3840px, ratio no wider than 3:1) |\n| `--quality normal\\|2k` | Quality preset (default: `2k`) |\n| `--imageSize 1K\\|2K\\|4K` | Image size for Google\u002FOpenRouter (default: from quality) |\n| `--imageApiDialect openai-native\\|ratio-metadata` | OpenAI-compatible endpoint dialect — use `ratio-metadata` for gateways that expect aspect-ratio `size` plus `metadata.resolution` |\n| `--ref \u003Cfiles...>` | Reference images. Supported by Google multimodal, OpenAI GPT Image edits, Azure OpenAI edits (PNG\u002FJPG only), OpenRouter multimodal models, Replicate supported families, MiniMax subject-reference, Seedream 5.0\u002F4.5\u002F4.0, DashScope `wan2.7-image-pro`\u002F`wan2.7-image`. Not supported by Jimeng, Seedream 3.0, SeedEdit 3.0, or any DashScope model outside the `wan2.7-image*` family |\n| `--n \u003Ccount>` | Number of images. Replicate requires `--n 1` (single-output save semantics) |\n| `--json` | JSON output |\n\n## Environment Variables\n\n| Variable | Description |\n|----------|-------------|\n| `OPENAI_API_KEY` | OpenAI API key |\n| `AZURE_OPENAI_API_KEY` | Azure OpenAI API key |\n| `OPENROUTER_API_KEY` | OpenRouter API key |\n| `GOOGLE_API_KEY` | Google API key |\n| `DASHSCOPE_API_KEY` | DashScope API key |\n| `ZAI_API_KEY` (alias `BIGMODEL_API_KEY`) | Z.AI API key |\n| `MINIMAX_API_KEY` | MiniMax API key |\n| `REPLICATE_API_TOKEN` | Replicate API token |\n| `JIMENG_ACCESS_KEY_ID`, `JIMENG_SECRET_ACCESS_KEY` | Jimeng (即梦) Volcengine credentials |\n| `ARK_API_KEY` | Seedream (豆包) Volcengine ARK API key |\n| `\u003CPROVIDER>_IMAGE_MODEL` | Per-provider model override (`OPENAI_IMAGE_MODEL`, `GOOGLE_IMAGE_MODEL`, `DASHSCOPE_IMAGE_MODEL`, `ZAI_IMAGE_MODEL`\u002F`BIGMODEL_IMAGE_MODEL`, `MINIMAX_IMAGE_MODEL`, `OPENROUTER_IMAGE_MODEL`, `REPLICATE_IMAGE_MODEL`, `JIMENG_IMAGE_MODEL`, `SEEDREAM_IMAGE_MODEL`, `AGNES_IMAGE_MODEL`) |\n| `AZURE_OPENAI_DEPLOYMENT` (alias `AZURE_OPENAI_IMAGE_MODEL`) | Azure default deployment |\n| `\u003CPROVIDER>_BASE_URL` | Per-provider endpoint override |\n| `AZURE_API_VERSION` | Azure image API version (default `2025-04-01-preview`) |\n| `JIMENG_REGION` | Jimeng region (default `cn-north-1`) |\n| `OPENAI_IMAGE_API_DIALECT` | `openai-native` \\| `ratio-metadata` |\n| `OPENROUTER_HTTP_REFERER`, `OPENROUTER_TITLE` | Optional OpenRouter attribution |\n| `BAOYU_IMAGE_GEN_MAX_WORKERS` | Override batch worker cap |\n| `BAOYU_IMAGE_GEN_\u003CPROVIDER>_CONCURRENCY` | Per-provider concurrency (e.g., `BAOYU_IMAGE_GEN_REPLICATE_CONCURRENCY`; for codex-cli use `BAOYU_IMAGE_GEN_CODEX_CLI_CONCURRENCY`) |\n| `BAOYU_IMAGE_GEN_\u003CPROVIDER>_START_INTERVAL_MS` | Per-provider start-gap |\n| `BAOYU_CODEX_IMAGEGEN_BIN` | Override the codex-imagegen wrapper path for the `codex-cli` provider (default: bundled `scripts\u002Fcodex-imagegen\u002Fmain.ts`; accepts `.ts` or legacy `.sh`\u002Fbinary) |\n| `BAOYU_CODEX_IMAGEGEN_CACHE_DIR` | Enable idempotency cache for the `codex-cli` provider (off by default) |\n| `BAOYU_CODEX_IMAGEGEN_TIMEOUT_MS` | Per-attempt `codex exec` timeout for the `codex-cli` provider (default: 300000 ms) |\n| `BAOYU_CODEX_IMAGEGEN_RETRIES` | Wrapper-side retry attempts on retryable errors for the `codex-cli` provider (default: 2) |\n| `BAOYU_CODEX_IMAGEGEN_LOG_FILE` | Append JSONL diagnostic log for the `codex-cli` provider |\n\n**Load priority**: CLI args > EXTEND.md > env vars > `\u003Ccwd>\u002F.baoyu-skills\u002F.env` > `~\u002F.baoyu-skills\u002F.env`\n\n### Codex\u002FChatGPT OAuth is not an OpenAI API key\n\n`--provider openai --model gpt-image-2` uses the standard OpenAI Images API (`\u002Fv1\u002Fimages\u002Fgenerations` or `\u002Fv1\u002Fimages\u002Fedits`) and requires `OPENAI_API_KEY`. A Codex or ChatGPT desktop login is a different entitlement and is not a drop-in replacement for `OPENAI_API_KEY`; do not paste a Codex OAuth token into `OPENAI_API_KEY` or only set `OPENAI_BASE_URL` to a Codex backend.\n\nIf the user wants to use their Codex subscription \u002F GPT Image 2 entitlement without an OpenAI API key, route through a Codex-native backend instead of this skill's `openai` provider:\n\n- In Codex runtime: use the native `imagegen` skill\u002Ftool.\n- In non-Codex runtimes with `codex` CLI installed and logged in: use `baoyu-image-gen --provider codex-cli` (preferred — it gives you the same retry \u002F cache \u002F batch flow as every other provider). The provider spawns the bundled `scripts\u002Fcodex-imagegen\u002Fmain.ts`; the same code lives upstream at `packages\u002Fbaoyu-codex-imagegen\u002Fsrc\u002Fmain.ts` for standalone callers.\n- In Hermes runtimes with a native `image_generate` tool: use that tool as a fallback, and state whether reference images were passed directly or reconstructed from extracted traits.\n\nDo not modify the existing `openai` provider to silently consume Codex OAuth. The first-class Codex-CLI path is the dedicated `codex-cli` provider, which has its own auth (Codex login), route (`codex exec`), request shape, and tests. See `references\u002Fcodex-oauth-vs-openai-api-key.md`.\n\n## Model Resolution\n\nPriority (highest → lowest) applies to every provider:\n\n1. CLI flag `--model \u003Cid>`\n2. EXTEND.md `default_model.[provider]`\n3. Env var `\u003CPROVIDER>_IMAGE_MODEL`\n4. Built-in default\n\nFor OpenAI, the built-in default is `gpt-image-2`. `gpt-image-1.5`, `gpt-image-1`, and GPT Image snapshots remain selectable with `--model` or `OPENAI_IMAGE_MODEL`.\n\nFor Azure, `--model` \u002F `default_model.azure` is the Azure deployment name. `AZURE_OPENAI_DEPLOYMENT` is the preferred env var; `AZURE_OPENAI_IMAGE_MODEL` is kept as a backward-compatible alias. If your Azure deployment is named after the underlying model, use `gpt-image-2`; otherwise use the exact custom deployment name.\n\nEXTEND.md overrides env vars: if EXTEND.md sets `default_model.google: \"gemini-3-pro-image\"` and the env var sets `GOOGLE_IMAGE_MODEL=gemini-3.1-flash-image`, EXTEND.md wins.\n\n**Display model info before each generation**:\n\n- `Using [provider] \u002F [model]`\n- `Switch model: --model \u003Cid> | EXTEND.md default_model.[provider] | env \u003CPROVIDER>_IMAGE_MODEL`\n\n## OpenAI-Compatible Gateway Dialects\n\n`provider=openai` means the auth and routing entrypoint is OpenAI-compatible. It does **not** guarantee the upstream image API uses OpenAI native semantics. When a gateway expects a different wire format, set `default_image_api_dialect` in EXTEND.md, `OPENAI_IMAGE_API_DIALECT`, or `--imageApiDialect`:\n\n- `openai-native`: pixel `size` (`1536x1024`) and native OpenAI quality fields\n- `ratio-metadata`: aspect-ratio `size` (`16:9`) plus `metadata.resolution` (`1K|2K|4K`) and `metadata.orientation`\n\nUse `openai-native` for the OpenAI native API or strict clones; try `ratio-metadata` for compatibility gateways in front of Gemini or similar models. Current limitation: `ratio-metadata` applies only to text-to-image; reference-image edits still need `openai-native` or a provider with first-class edit support.\n\n## Provider-Specific Guides\n\nEach provider has its own quirks (model families, size rules, ref support, limits). Read these when the user picks that provider or asks for non-default behavior:\n\n| Provider | Reference |\n|----------|-----------|\n| DashScope (Qwen-Image families, custom sizes) | `references\u002Fproviders\u002Fdashscope.md` |\n| Z.AI (GLM-Image, cogview-4) | `references\u002Fproviders\u002Fzai.md` |\n| MiniMax (image-01, subject-reference) | `references\u002Fproviders\u002Fminimax.md` |\n| OpenRouter (multimodal models, `\u002Fchat\u002Fcompletions` flow) | `references\u002Fproviders\u002Fopenrouter.md` |\n| Replicate (nano-banana, Seedream, Wan) | `references\u002Fproviders\u002Freplicate.md` |\n| Codex CLI (wraps bundled `scripts\u002Fcodex-imagegen\u002F`; Codex login, no `OPENAI_API_KEY`) | `references\u002Fproviders\u002Fcodex-cli.md` |\n| Agnes (agnes-image-2.1-flash, reference-image support) | `references\u002Fproviders\u002Fagnes.md` |\n\n## Provider Selection\n\n1. `--ref` provided + no `--provider` → auto-select Google → OpenAI → Azure → OpenRouter → Replicate → Seedream → MiniMax → Agnes (MiniMax's subject reference is more specialized toward character\u002Fportrait consistency)\n2. `--provider` specified → use it (if `--ref`, must be google\u002Fopenai\u002Fazure\u002Fopenrouter\u002Freplicate\u002Fseedream\u002Fminimax\u002Fcodex-cli\u002Fagnes)\n3. Only one API key present → use that provider\n4. Multiple keys → default priority: Google → OpenAI → Azure → OpenRouter → DashScope → Z.AI → MiniMax → Replicate → Jimeng → Seedream → Agnes\n5. `codex-cli` is **never auto-selected** — set `default_provider: codex-cli` in EXTEND.md or pass `--provider codex-cli`. It spawns `codex exec` via the bundled `scripts\u002Fcodex-imagegen\u002Fmain.ts` TS entrypoint (run with `bun`) and uses the user's Codex subscription (no `OPENAI_API_KEY`). Requires `codex` on `PATH` with an active `codex login`.\n\n## Quality Presets\n\n| Preset | Google imageSize | OpenAI size | OpenRouter size | Replicate resolution | Use case |\n|--------|------------------|-------------|-----------------|----------------------|----------|\n| `normal` | 1K | 1024px target | 1K | 1K | Quick previews |\n| `2k` (default) | 2K | 2048px target | 2K | 2K | Covers, illustrations, infographics |\n\nGoogle\u002FOpenRouter `imageSize` can be overridden with `--imageSize 1K|2K|4K`.\n\nFor OpenAI native `gpt-image-2`, `normal` maps to `quality=medium` and a low-latency valid size near the requested aspect ratio; `2k` maps to `quality=high` and 2048px-class sizes such as `2048x2048`, `2048x1152`, or `1152x2048`. Use explicit `--size` for valid custom or 4K outputs, e.g. `3840x2160`.\n\n## Aspect Ratios\n\nSupported: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `2.35:1`.\n\n- Google multimodal: `imageConfig.aspectRatio`\n- OpenAI: `gpt-image-2` uses the closest valid custom size for the requested ratio; older GPT Image and DALL·E models use their closest supported fixed size\n- OpenRouter: `imageGenerationOptions.aspect_ratio`; if only `--size \u003CWxH>` is given, the ratio is inferred\n- Replicate: behavior is model-specific — `google\u002Fnano-banana*` uses `aspect_ratio`, `bytedance\u002Fseedream-*` uses documented Replicate ratios, Wan 2.7 maps `--ar` to a concrete `size`\n- MiniMax: official `aspect_ratio` values; if `--size \u003CWxH>` is given without `--ar`, sends `width`\u002F`height` for `image-01`\n\n## Generation Mode\n\n**Default**: sequential. **Batch parallel**: enabled automatically when `--batchfile` contains 2+ pending tasks.\n\n| Situation | Prefer | Why |\n|-----------|--------|-----|\n| One image, or 1-2 simple images | Sequential | Lower coordination overhead, easier debugging |\n| Multiple images with saved prompt files | Batch (`--batchfile`) | Reuses finalized prompts, applies shared throttling\u002Fretries, predictable throughput |\n| Each image still needs its own reasoning \u002F prompt writing \u002F style exploration | Subagents | Work is still exploratory, each needs independent analysis |\n| Input is `outline.md` + `prompts\u002F` (e.g. from `baoyu-article-illustrator`) | Batch — use `{baseDir}\u002Fscripts\u002Fbuild-batch.ts` to assemble the payload | The outline + prompt files already contain everything needed |\n\nRule of thumb: once prompt files are saved and the task is \"generate all of these\", prefer batch over subagents. Use subagents only when generation is coupled with per-image thinking or divergent creative exploration.\n\n**Parallel behavior**:\n\n- Default worker count is automatic, capped by config, built-in default 10\n- Provider-specific throttling applies only in batch mode; defaults are tuned for throughput while avoiding RPM bursts\n- Override with `--jobs \u003Ccount>`\n- Each image retries up to 3 attempts\n- Final output includes success count, failure count, and per-image failure reasons\n\n## Error Handling\n\n- Missing API key → error with setup instructions\n- Generation failure → auto-retry up to 3 attempts per image\n- Invalid aspect ratio → warning, proceed with default\n- Reference images with unsupported provider\u002Fmodel → error with fix hint\n\n### Codex image2 fallback\n\nIf `--provider openai --model gpt-image-2` fails because `OPENAI_API_KEY` is missing but the current runtime has a native image-generation backend or the repo-level `codex-imagegen` wrapper is available, use that path rather than leaving the user waiting. Be explicit about whether the fallback is true reference-image generation or only a text-prompt reconstruction from extracted visual traits. See `references\u002Fcodex-image2-fallback.md`.\n\n## References\n\n| File | Content |\n|------|---------|\n| `references\u002Fusage-examples.md` | Extended CLI examples across providers and batch mode |\n| `references\u002Fcodex-oauth-vs-openai-api-key.md` | Why Codex\u002FChatGPT OAuth image2 entitlement is not usable through baoyu-image-gen's standard OpenAI API-key provider |\n| `references\u002Fcodex-image2-fallback.md` | Practical fallback behavior when OpenAI API credentials are absent but Codex\u002Fnative image generation is available |\n| `references\u002Fproviders\u002Fdashscope.md` | DashScope families, sizes, limits |\n| `references\u002Fproviders\u002Fzai.md` | Z.AI GLM-image \u002F cogview-4 |\n| `references\u002Fproviders\u002Fminimax.md` | MiniMax image-01 + subject reference |\n| `references\u002Fproviders\u002Fopenrouter.md` | OpenRouter multimodal flow |\n| `references\u002Fproviders\u002Freplicate.md` | Replicate supported families + guardrails |\n| `references\u002Fproviders\u002Fagnes.md` | Agnes (agnes-image-2.1-flash) sizing, refs, and limits |\n| `references\u002Fconfig\u002Fpreferences-schema.md` | EXTEND.md schema |\n| `references\u002Fconfig\u002Ffirst-time-setup.md` | First-time setup flow |\n\n## Extension Support\n\nCustom configurations via EXTEND.md. See Step 0 for paths and schema.\n",{"name":5,"metadata":52,"description":7},{"openclaw":53},{"homepage":54,"requires":55},"https:\u002F\u002Fgithub.com\u002FJimLiu\u002Fbaoyu-skills#baoyu-image-gen",{"anyBins":56},[57,58],"bun","npx","mine","1e7390741dffd3d5041fca4ebc056071ee3ba137","archives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen",5,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub","https:\u002F\u002Fgithub.com\u002FEthanYoQ","www.orz.md","Part Marketer, Part AI Explorer.","2026-11-07 14:52:29",{"source":8,"skillName":5,"commands":69,"prompt":78,"zipAvailable":79},[70,72,75],{"tool":58,"command":71},"npx skills add EthanYoQ\u002FSkill-hub --skill baoyu-image-gen",{"tool":73,"command":74},"bunx","bunx skills add EthanYoQ\u002FSkill-hub --skill baoyu-image-gen",{"tool":76,"command":77},"pnpm","pnpm dlx skills add EthanYoQ\u002FSkill-hub --skill baoyu-image-gen","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002FSKILL.md",true,[81,87,91,95,99,103,107,111,115,119,123,127,131,137,141,145,149,153,157,161,165,169,173,177,181,185,189,193,197,201,205,209,213,217,221,225,229,233,237,241,245,249,253,257,261,265,269,273],{"path":82,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Fcodex-image2-fallback.md","REFERENCE","参考文档",1985,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Freferences\u002Fcodex-image2-fallback.md",{"path":88,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":89,"sourceHtmlUrl":90},"references\u002Fcodex-oauth-vs-openai-api-key.md",2137,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Freferences\u002Fcodex-oauth-vs-openai-api-key.md",{"path":92,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":93,"sourceHtmlUrl":94},"references\u002Fconfig\u002Ffirst-time-setup.md",13316,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Freferences\u002Fconfig\u002Ffirst-time-setup.md",{"path":96,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":97,"sourceHtmlUrl":98},"references\u002Fconfig\u002Fpreferences-schema.md",4890,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Freferences\u002Fconfig\u002Fpreferences-schema.md",{"path":100,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":101,"sourceHtmlUrl":102},"references\u002Fproviders\u002Fagnes.md",2301,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Freferences\u002Fproviders\u002Fagnes.md",{"path":104,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":105,"sourceHtmlUrl":106},"references\u002Fproviders\u002Fcodex-cli.md",6011,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Freferences\u002Fproviders\u002Fcodex-cli.md",{"path":108,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":109,"sourceHtmlUrl":110},"references\u002Fproviders\u002Fdashscope.md",4597,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Freferences\u002Fproviders\u002Fdashscope.md",{"path":112,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":113,"sourceHtmlUrl":114},"references\u002Fproviders\u002Fminimax.md",1228,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Freferences\u002Fproviders\u002Fminimax.md",{"path":116,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":117,"sourceHtmlUrl":118},"references\u002Fproviders\u002Fopenrouter.md",760,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Freferences\u002Fproviders\u002Fopenrouter.md",{"path":120,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":121,"sourceHtmlUrl":122},"references\u002Fproviders\u002Freplicate.md",1814,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Freferences\u002Fproviders\u002Freplicate.md",{"path":124,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":125,"sourceHtmlUrl":126},"references\u002Fproviders\u002Fzai.md",1099,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Freferences\u002Fproviders\u002Fzai.md",{"path":128,"resourceType":83,"resourceTypeDesc":84,"sizeBytes":129,"sourceHtmlUrl":130},"references\u002Fusage-examples.md",6101,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Freferences\u002Fusage-examples.md",{"path":132,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":135,"sourceHtmlUrl":136},"scripts\u002Fbuild-batch.test.ts","SCRIPT","脚本",4575,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fbuild-batch.test.ts",{"path":138,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":139,"sourceHtmlUrl":140},"scripts\u002Fbuild-batch.ts",7593,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fbuild-batch.ts",{"path":142,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":143,"sourceHtmlUrl":144},"scripts\u002Fcodex-imagegen\u002Fcache.ts",2300,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fcodex-imagegen\u002Fcache.ts",{"path":146,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":147,"sourceHtmlUrl":148},"scripts\u002Fcodex-imagegen\u002Flogger.ts",1356,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fcodex-imagegen\u002Flogger.ts",{"path":150,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":151,"sourceHtmlUrl":152},"scripts\u002Fcodex-imagegen\u002Fmain.ts",12089,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fcodex-imagegen\u002Fmain.ts",{"path":154,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":155,"sourceHtmlUrl":156},"scripts\u002Fcodex-imagegen\u002Fparser.ts",2072,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fcodex-imagegen\u002Fparser.ts",{"path":158,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":159,"sourceHtmlUrl":160},"scripts\u002Fcodex-imagegen\u002Fspawn.ts",2432,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fcodex-imagegen\u002Fspawn.ts",{"path":162,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":163,"sourceHtmlUrl":164},"scripts\u002Fcodex-imagegen\u002Ftypes.ts",1632,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fcodex-imagegen\u002Ftypes.ts",{"path":166,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":167,"sourceHtmlUrl":168},"scripts\u002Fcodex-imagegen\u002Fvalidator.ts",2353,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fcodex-imagegen\u002Fvalidator.ts",{"path":170,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":171,"sourceHtmlUrl":172},"scripts\u002Fmain.test.ts",18783,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fmain.test.ts",{"path":174,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":175,"sourceHtmlUrl":176},"scripts\u002Fmain.ts",46544,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fmain.ts",{"path":178,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":179,"sourceHtmlUrl":180},"scripts\u002Fproviders\u002Fagnes.test.ts",6810,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fagnes.test.ts",{"path":182,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":183,"sourceHtmlUrl":184},"scripts\u002Fproviders\u002Fagnes.ts",5002,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fagnes.ts",{"path":186,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":187,"sourceHtmlUrl":188},"scripts\u002Fproviders\u002Fazure.test.ts",5425,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fazure.test.ts",{"path":190,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":191,"sourceHtmlUrl":192},"scripts\u002Fproviders\u002Fazure.ts",5820,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fazure.ts",{"path":194,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":195,"sourceHtmlUrl":196},"scripts\u002Fproviders\u002Fcodex-cli.test.ts",1674,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fcodex-cli.test.ts",{"path":198,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":199,"sourceHtmlUrl":200},"scripts\u002Fproviders\u002Fcodex-cli.ts",5892,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fcodex-cli.ts",{"path":202,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":203,"sourceHtmlUrl":204},"scripts\u002Fproviders\u002Fdashscope.test.ts",11534,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fdashscope.test.ts",{"path":206,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":207,"sourceHtmlUrl":208},"scripts\u002Fproviders\u002Fdashscope.ts",18458,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fdashscope.ts",{"path":210,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":211,"sourceHtmlUrl":212},"scripts\u002Fproviders\u002Fgoogle.test.ts",3620,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fgoogle.test.ts",{"path":214,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":215,"sourceHtmlUrl":216},"scripts\u002Fproviders\u002Fgoogle.ts",10042,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fgoogle.ts",{"path":218,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":219,"sourceHtmlUrl":220},"scripts\u002Fproviders\u002Fjimeng.test.ts",2737,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fjimeng.test.ts",{"path":222,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":223,"sourceHtmlUrl":224},"scripts\u002Fproviders\u002Fjimeng.ts",12845,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fjimeng.ts",{"path":226,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":227,"sourceHtmlUrl":228},"scripts\u002Fproviders\u002Fminimax.test.ts",5254,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fminimax.test.ts",{"path":230,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":231,"sourceHtmlUrl":232},"scripts\u002Fproviders\u002Fminimax.ts",6331,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fminimax.ts",{"path":234,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":235,"sourceHtmlUrl":236},"scripts\u002Fproviders\u002Fopenai.test.ts",5536,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fopenai.test.ts",{"path":238,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":239,"sourceHtmlUrl":240},"scripts\u002Fproviders\u002Fopenai.ts",12671,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fopenai.ts",{"path":242,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":243,"sourceHtmlUrl":244},"scripts\u002Fproviders\u002Fopenrouter.test.ts",5450,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fopenrouter.test.ts",{"path":246,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":247,"sourceHtmlUrl":248},"scripts\u002Fproviders\u002Fopenrouter.ts",9957,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fopenrouter.ts",{"path":250,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":251,"sourceHtmlUrl":252},"scripts\u002Fproviders\u002Freplicate.test.ts",7190,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Freplicate.test.ts",{"path":254,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":255,"sourceHtmlUrl":256},"scripts\u002Fproviders\u002Freplicate.ts",17822,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Freplicate.ts",{"path":258,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":259,"sourceHtmlUrl":260},"scripts\u002Fproviders\u002Fseedream.test.ts",6544,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fseedream.test.ts",{"path":262,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":263,"sourceHtmlUrl":264},"scripts\u002Fproviders\u002Fseedream.ts",9855,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fseedream.ts",{"path":266,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":267,"sourceHtmlUrl":268},"scripts\u002Fproviders\u002Fzai.test.ts",5274,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fzai.test.ts",{"path":270,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":271,"sourceHtmlUrl":272},"scripts\u002Fproviders\u002Fzai.ts",8950,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Fproviders\u002Fzai.ts",{"path":274,"resourceType":133,"resourceTypeDesc":134,"sizeBytes":275,"sourceHtmlUrl":276},"scripts\u002Ftypes.ts",2337,"https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Farchives\u002Fuser-installed-skills\u002Fbaoyu-image-gen\u002Fa731a72a5659ea55\u002Fbaoyu-image-gen\u002Fscripts\u002Ftypes.ts",[278,304,335,359,377,392],{"skillNo":279,"name":280,"nameZh":6,"description":281,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":282,"categories":283,"keywords":285,"publishedAt":47},"01M713CBDSYARG4PXFXK2R2NNN","xhs-pharma-social-listening","Run evidence-disciplined Xiaohongshu social listening for foreign pharma employee pain points. Use when the user asks to collect and analyze notes\u002Fcomments about pharma companies, aliases, roles, compliance, medical affairs, or AI topics, then produce a cited and scored sampled-insight report. Includes independent-evidence counting, MediaCrawler batch collection, and CAPTCHA\u002F461 fallback to Agent Reach\u002FOpenCLI.","https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Fskills\u002F10-business-industry\u002Fxhs-pharma-social-listening\u002FSKILL.md",[284],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[286,287,288,289,290,291,43,292,42,293,294,295,296,297,298,299,300,301,302,303],"social","xhs pharma social listening","social listening","xhs","medical","counting","collection","analyze","notes","run","opencli","fallback","captcha","agent reach","evidence","for","collect","produce",{"skillNo":305,"name":306,"nameZh":6,"description":307,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":308,"categories":309,"keywords":316,"publishedAt":47},"01M713C8Q76ZP0WXXBRAFKS6EE","healthcare-phi-compliance","Protected Health Information (PHI) and Personally Identifiable Information (PII) compliance patterns for healthcare applications. Covers data classification, access control, audit trails, encryption, and common leak vectors. Use when code touches PHI or PII in a healthcare system, or when auditing access control, audit trails, or leak vectors.","https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Fskills\u002F10-business-industry\u002Fhealthcare-phi-compliance\u002FSKILL.md",[310,311],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":312,"categoryName":313,"taxonomyType":314,"taxonomyTypeDesc":315},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[317,318,319,320,321,322,323,324,43,325,326,327,328,329,330,331,301,332,333,334],"healthcare","phi","compliance","healthcare phi compliance","pii","compliance patterns","information","access","encryption","code","common","audit","data","patterns","Access Control","system","applications","Auditing Access Control",{"skillNo":336,"name":337,"nameZh":6,"description":338,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":339,"categories":340,"keywords":342,"publishedAt":47},"01M713C5R2GE43X45T2K75TB76","healthcare-eval-harness","Patient safety evaluation harness for healthcare application deployments. Automated test suites for CDSS accuracy, PHI exposure, clinical workflow integrity, and integration compliance. Blocks deployments on safety failures. Use when a healthcare deployment must be gated on patient-safety tests for CDSS accuracy, PHI exposure, and workflow integrity.","https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Fskills\u002F10-business-industry\u002Fhealthcare-eval-harness\u002FSKILL.md",[341],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[317,343,344,345,346,347,348,43,349,350,351,352,318,301,353,354,355,356,357,358],"eval","harness","healthcare eval harness","eval harness","clinical","patient","workflow","Evaluation","Safety","integrity","deployment","accuracy","tests","deployments","use","super",{"skillNo":360,"name":361,"nameZh":6,"description":362,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":363,"categories":364,"keywords":366,"publishedAt":47},"01M713C2J17S91VYR7A8M696VR","healthcare-emr-patterns","EMR\u002FEHR development patterns for healthcare applications. Clinical safety, encounter workflows, prescription generation, clinical decision support integration, and accessibility-first UI for medical data entry. Use when building EMR or EHR features such as encounter workflows, prescription generation, or clinical data entry UI.","https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Fskills\u002F10-business-industry\u002Fhealthcare-emr-patterns\u002FSKILL.md",[365],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[317,367,330,368,369,290,347,370,43,371,372,373,351,329,374,375,376,301,333,357],"EMR","healthcare emr patterns","decision","workflows","support","clinical decision support","features","ui","as","development",{"skillNo":378,"name":379,"nameZh":6,"description":380,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":381,"categories":382,"keywords":384,"publishedAt":47},"01M713BZERTXV0N8X6SW9DDVWZ","healthcare-cdss-patterns","Clinical Decision Support System (CDSS) development patterns. Drug interaction checking, dose validation, clinical scoring (NEWS2, qSOFA), alert severity classification, and integration into EMR workflows. Use when building clinical decision support — drug interaction checks, dose validation, clinical scoring, or alert severity.","https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Fskills\u002F10-business-industry\u002Fhealthcare-cdss-patterns\u002FSKILL.md",[383],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[317,330,385,369,347,367,370,43,386,387,371,372,388,376,332,389,357,390,358,391],"healthcare cdss patterns","scoring","interaction","severity","classification","alert","decision support",{"skillNo":393,"name":394,"nameZh":6,"description":395,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":396,"categories":397,"keywords":399,"publishedAt":47},"01M713BVK3PQR7V4ZKYGMWMXJD","dxy-task-clarify","用户的请求含糊、缺背景、缺资料说明、缺读者或用途时使用。先用少量带选项的追问把任务问清楚，写成任务卡，用户确认后再执行。尤其适用于医生、科研人员和药企各岗位的工作，例如「帮我分析一下这些数据」「帮我准备明天的拜访」「写个总结」「做个 PPT」「回一下这封邮件」「整理一下会议纪要」「整理一下这些文献」「帮我准备下周的讲课」「写个病例汇报」「帮我写个提示词」。用户说「先问我」「帮我理清需求」「我不知道怎么描述」「我不会问 AI」时也使用。用途、资料、读者都已说清的请求，纯翻译，以及写代码、改代码，不使用。","https:\u002F\u002Fgithub.com\u002FEthanYoQ\u002FSkill-hub\u002Fblob\u002Fmine\u002Fskills\u002F10-business-industry\u002Fdxy-task-clarify\u002FSKILL.md",[398],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[400,401,402,403,404,405,406,407],"clarify","dxy task clarify","task","pptx","整理","翻译","数据","总结"]