尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
Procedural image studio driven by short Python scripts, built for LLMs (no generative AI)
翻译准备中
正在加载完整 README。
查看完整 README ↗Let your LLM paint.
LLMs can write, reason and code, but when you ask one for a picture it hands the job to an image model. atelier gives the LLM itself the brush: it writes a short Python script, renders it, looks at the result and fixes it, until the image is right. No image model is ever called: no diffusion, no image API, no key, no GPU. Every pixel comes from code the LLM wrote, computed on the CPU.
That covers any style: photoreal 3D, oil and watercolour painting, anime-style painted landscapes, comics and engravings, people, landscapes, posters and typography, pixel art, generative abstracts, and new styles the agent works out itself from a reference, and the same scripts can loop into GIFs. Under the hood: noise fields, vector shapes, a brush engine, effects, an SDF path tracer, terrain erosion, a physical sky, posable figures, and tools that let the LLM inspect its own renders.
Website: https://atelier.wexop.eu · every image below was made by atelier from a script in examples/.
pip install git+https://github.com/Wexop/atelier
Python ≥ 3.11. Dependencies: numpy, pillow, opencv-python-headless, scipy, skia-python.
The skill is a folder: SKILL.md, a compact cheat sheet that teaches an agent the whole API and the render → look → fix loop, plus style guides the agent reads only when it needs them:
| guide | for |
|---|---|
| anime | painted anime landscapes: cel-shaded clouds, trees and mountains, rim light, god rays, sparkles |
| oil | oil painting from a colour study, watercolour washes |
| photoreal | path-traced still life and products, terrain landscapes, sea and sky |
| comic | ligne claire and toon from 3D, engraving, ink filters |
| flat | flat vector, posters, typography, people, silhouette scenes |
| pixel | pixel art with palettes and dithering |
| abstract | generative abstracts from warped fields |
| planning | process for complex pictures: written plan + focus, grey thumbnails scored side by side, build passes, hierarchy rules (example: planned.py) |
| animation | motion: the script reads T, keyframes and easing, seamless loops, GIF / WebP / MP4, motion check sheet (examples: lava.py, daynight.py) |
| new-style | any look not listed: study it, map it to the toolbox, paint it, then save it as a new guide |
If you are an AI agent: run pip install git+https://github.com/Wexop/atelier, then read
https://raw.githubusercontent.com/Wexop/atelier/main/SKILL.md and follow it (it links to the style guides).
Claude Code plugin (recommended, gets updates):
/plugin marketplace add Wexop/atelier
/plugin install atelier@atelier
Claude Code (personal skill, available in every project):
git clone --depth 1 https://github.com/Wexop/atelier /tmp/atelier && mkdir -p ~/.claude/skills && rm -rf ~/.claude/skills/atelier && cp -r /tmp/atelier/.claude/skills/atelier ~/.claude/skills/ && rm -rf /tmp/atelier
Windows PowerShell:
$t = "$env:TEMP\atelier"; git clone --depth 1 https://github.com/Wexop/atelier $t; New-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Remove-Item -Recurse -Force "$HOME\.claude\skills\atelier" -ErrorAction SilentlyContinue; Copy-Item -Recurse "$t\.claude\skills\atelier" "$HOME\.claude\skills\"; Remove-Item -Recurse -Force $t
For a single project, copy the folder to .claude/skills/atelier/ instead (this repo already has it). Without the
styles/ folder the skill still works: it fetches the guides from GitHub when it needs one.
Claude.ai / Claude desktop: zip the .claude/skills/atelier folder (SKILL.md + styles/) and upload it in
Settings → Capabilities → Skills. The skill installs the package itself with the pip install line above.
Updating: nothing updates automatically. Package: pip install -U git+https://github.com/Wexop/atelier
(the version is bumped on every package change). Skill: re-run the git clone line above,
or re-upload the zip on Claude.ai.
# night.py
from atelier import *
c = Canvas(1600, 1000)
c.fill(gradient([(0, "#0b1026"), (0.45, "#3b2a5a"), (0.68, "#f4a259")]))
c.layer(blend="screen").fill("white", mask=stars(70, seed=3) * top(0.5, soft=0.2))
c.circle(1180, 250, 44, fill="#fff4d6")
c.layer().fill_below(ridged(2.2, seed=1).ridge_line(y=0.74, amp=0.15), fbm(6).ramp(["#0c0c1a", "#1f1c34"]))
c.apply(bloom(0.8, 12), grain(0.03), vignette(0.3))
c.save("night.png")
atelier render night.py --preview # fast 512 px look -> night_prev.jpg
atelier inspect night.py # contact sheet: value study, clipping, auto zooms on defects, metrics
atelier render night.py --crop 600,500,300,200 # full-res zoom on a region
atelier render night.py --grid --boxes --mark 880,230 # coordinate grid, layer bounds, target mark
atelier critique night.py # ranked problems + fixes: contrast, balance, tangents, placeholders, style mix, floating bases, near-miss seams, ambient light, grounding, hierarchy
atelier sheet a.py b.py c.py # thumbnails / variants side by side with value studies and scores
atelier render night.py # final render
atelier animate night.py --frames 24 --check # GIF loop (T = 0..1 in the script) + motion check sheet
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗