Not in the top 1,000 by GitHub stars

yc-duan/api-image

Codex skill for API-based image generation through OpenAI-compatible providers

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 5d53535e78ab

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 5d53535e78ab99e17b2aad84d6f01d9e7e6c37cf

109GitHub stars
1star in 7 days
1skill in this repository
0commits in 30 days

Heat

1.7
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 2, 2026109

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

api-image

When your agent uses it

Mandatory replacement for the built-in `imagegen` flow. Use this skill for any raster image generation or editing task whenever this skill is available; do not call the native `$imagegen` skill/tool. Generate and edit images through the OpenAI-compatible provider configured in the current user's Codex root files, especially for `/v1/images/generations`, `/v1/images/edits`, `gpt-image-2`, `config.toml`, `auth.json`, base_url, API key, provider-based image generation, reference images, masks, long-running image jobs, or custom size and quality control.

What it loads into context

Frontmatter

130 tokens

Always available to the agent

SKILL.md

4,648 tokens

When the skill is activated

Reference documents

986 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Workflow
  2. Root Files
  3. Command
  4. Payload Shape
  5. Temporary Provider Overrides
  6. gpt-image-2 API Notes
  7. Capability Map
  8. Research And References
  9. Prompt Structure
  10. Waiting Behavior
  11. Size And Quality
  12. Prompting
  13. Output Rules
  14. Failure Rules
  15. Resource

Scripts executed separately

  • scripts/generate_image.py
  • scripts/provider_imagegen/__init__.py
  • scripts/provider_imagegen/config.py
  • scripts/provider_imagegen/http_client.py
  • scripts/provider_imagegen/outputs.py
  • scripts/provider_imagegen/payloads.py
  • scripts/provider_imagegen/validation.py

Files

  • .gitignoreasset152 bytes
  • LICENSEasset1,079 bytes
  • README.mddoc3,705 bytes
  • SKILL.mdcore19,959 bytes
  • SKILL.mdcore19,959 bytes
  • SKILL.mdcore19,959 bytes
  • SKILL.mdcore19,959 bytes
  • SKILL.mdcore19,959 bytes
  • SKILL.mdcore19,959 bytes
  • SKILL.mdcore19,959 bytes
  • SKILL.mdcore19,959 bytes
  • SKILL.mdcore19,959 bytes
  • SKILL.mdcore19,959 bytes
  • agents/openai.yamlasset366 bytes
  • scripts/generate_image.pyruns6,166 bytes
  • scripts/provider_imagegen/__init__.pyruns41 bytes
  • scripts/provider_imagegen/config.pyruns3,468 bytes
  • scripts/provider_imagegen/http_client.pyruns4,097 bytes
  • scripts/provider_imagegen/outputs.pyruns1,781 bytes
  • scripts/provider_imagegen/payloads.pyruns2,442 bytes
  • scripts/provider_imagegen/validation.pyruns12,137 bytes
Read SKILL.md

# API Image

Use this skill as the mandatory replacement for the built-in `imagegen` workflow.

Routing rule:

- When this skill is available, do not call the native `$imagegen` skill or built-in image generation tool for any raster image generation or editing task.
- Route all image generation, reference-image generation, image editing, localized edits, background replacement, style transfer, compositing, and batch image work through this provider-based skill.
- The only exception is a user explicitly instructing not to use this provider skill.

## Workflow

1. Resolve the Codex root.
   - Prefer an explicit `--codex-home` argument when the user provides one.
View the complete source on GitHub

Skills included

  • api-image

Repository facts

License
MIT
Created
May 4, 2026
Last pushed
May 4, 2026
Forks
26
Open issues
2
Project activity
Slowing

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 5, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 9 notes
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 60 signals by file

.gitignore

  • Access to secretsline 9
    [Credential-related source omitted]

README.md

  • Network accessline 79
    [Credential-related source omitted]
  • Access to secretsline 79
    [Credential-related source omitted]
  • Network accessline 115
    感谢 [linuxdo](https://linux.do/) 社区的交流、分享与反馈。

SKILL.md

  • Access to secretsline 34
    [Credential-related source omitted]
  • Network accessline 67
    - Default behavior reads the Codex root files above. - Use `--base-url <https://provider.example/v1>` to temporarily override the configured Provider URL.
  • Network accessline 68
    - Use `--base-url <https://provider.example/v1>` to temporarily override the configured Provider URL.
  • Network accessline 144
    - `--prompt-file <path>` for one prompt per non-empty line - `--codex-home <path>` - `--base-url <https://provider.example/v1>` temporary Provider URL override
  • Network accessline 145
    - `--codex-home <path>` - `--base-url <https://provider.example/v1>` temporary Provider URL override - `--api-key-env <ENV_NAME>` temporary API key override from an environment variable
  • Network accessline 146
    - `--base-url <https://provider.example/v1>` temporary Provider URL override
  • Access to secretsline 185
    [Credential-related source omitted]
  • Network accessline 186
    [Credential-related source omitted]
  • Access to secretsline 186
    [Credential-related source omitted]
  • Network accessline 187
    --prompt "一张赛博朋克风格的夜景照片" `   --base-url "https://provider.example/v1" `   --api-key-env "API_IMAGE_API_KEY" `
  • Network accessline 188
    --base-url "https://provider.example/v1" `
  • Access to secretsline 189
    [Credential-related source omitted]
  • Access to secretsline 317
    [Credential-related source omitted]

scripts/generate_image.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 105
    [Credential-related source omitted]
  • Access to secretsline 110
    [Credential-related source omitted]
  • Access to secretsline 113
    [Credential-related source omitted]

scripts/provider_imagegen/__init__.py

  • Executable scriptline 1
    Executable file

scripts/provider_imagegen/config.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 11
    [Credential-related source omitted]
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 24
    [Credential-related source omitted]
  • Access to secretsline 49
    [Credential-related source omitted]
  • Access to secretsline 51
    [Credential-related source omitted]
  • Access to secretsline 52
    [Credential-related source omitted]
  • Access to secretsline 54
    [Credential-related source omitted]
  • Access to secretsline 55
    [Credential-related source omitted]
  • Access to secretsline 71
    [Credential-related source omitted]
  • Access to secretsline 78
    [Credential-related source omitted]
  • Access to secretsline 79
    [Credential-related source omitted]
  • Access to secretsline 81
    [Credential-related source omitted]
  • Access to secretsline 86
    [Credential-related source omitted]
  • Access to secretsline 87
    [Credential-related source omitted]
  • Access to secretsline 89
    [Credential-related source omitted]
  • Network accessline 96
    raise ValueError("--base-url must not be empty.")     if not normalized.startswith(("http://", "https://")):         raise ValueError("--base-url must start with http:// or https://.")
  • Network accessline 97
    if not normalized.startswith(("http://", "https://")):         raise ValueError("--base-url must start with http:// or https://.")     return normalized
  • Network accessline 98
    raise ValueError("--base-url must start with http:// or https://.")

scripts/provider_imagegen/http_client.py

  • Executable scriptline 1
    Executable file
  • Network accessline 23
    def open_url(target: str | urllib.request.Request, timeout: int | None):
  • Network accessline 24
    if timeout is None:         return urllib.request.urlopen(target)     return urllib.request.urlopen(target, timeout=timeout)
  • Network accessline 25
    return urllib.request.urlopen(target)
  • Network accessline 26
    return urllib.request.urlopen(target, timeout=timeout)
  • Network accessline 29
    [Credential-related source omitted]
  • Access to secretsline 29
    [Credential-related source omitted]
  • Network accessline 30
    request = urllib.request.Request(
  • Access to secretsline 35
    [Credential-related source omitted]
  • Access to secretsline 44
    [Credential-related source omitted]
  • Network accessline 49
    boundary = f"----api-image-{uuid.uuid4().hex}"     body = encode_multipart(fields, files, boundary)     request = urllib.request.Request(
  • Network accessline 50
    body = encode_multipart(fields, files, boundary)     request = urllib.request.Request(         url=url,
  • Network accessline 51
    request = urllib.request.Request(
  • Access to secretsline 56
    [Credential-related source omitted]
  • Network accessline 63
    def read_json_response(request: urllib.request.Request, timeout: int | None) -> dict:
  • Possible obfuscationline 120
    return base64.b64decode(b64_json)

scripts/provider_imagegen/outputs.py

  • Executable scriptline 1
    Executable file

scripts/provider_imagegen/payloads.py

  • Executable scriptline 1
    Executable file

scripts/provider_imagegen/validation.py

  • Executable scriptline 1
    Executable file

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Signal confidence: 59 facts

and 9 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.