Skip to content
Mark Rogers edited this page Oct 27, 2026 · 4 revisions

Does artwright make or fix images?

No. It judges, explains and says what to change; generation, editing and grid fixing belong to other tools, which the skills name (Skills). The only images aw.py writes are working copies: fitted copies, contact sheets, pair images, previews and deliberately damaged test images.

Can it tell me whether an image is AI-generated?

No, and it says so. Nothing in the pixels settles it, so the skills answer neither yes nor no: they describe visible traits, never as proof, and name what would settle it, such as provenance, the file's history or C2PA metadata. The same goes for "is this a real Rubens" and "what is it worth" (Skills).

Why does it judge every pair twice?

Because models judging images are swayed by which image comes first: in the research the judge is built on, swapping two images flipped up to 61% of verdicts. When the two orders disagree, the honest answer is a tie, shown to a person (How images are judged).

Why no score out of 10?

Model scores bunch at the top and mean little on their own. artwright ranks by comparison. When you ask for an absolute score, it gives one anchored by three labelled reference images and warns about the bunching, and verdict validate rejects a score without score_anchors.

How many tokens does judging cost?

aw.py info prints the cost of reading any image on the standard and high-resolution tiers before it is read (Commands). The judge skill's own figure for a 16-image round robin in both orders is about 624k image tokens at the default 768 px pair cell; above about 12 images it switches to Swiss rounds.

Do I need Pillow or ffmpeg?

No. Without either, aw.py reads PNG in pure Python and every other format fails with a message saying what to install. With ffmpeg it reads JPEG, WebP and more; with Pillow (11 or later) it reads everything Pillow reads, and faster. aw.py doctor says which applies (Getting started).

What happens to my picks and verdicts?

They stay on your machine, in ARTWRIGHT_HOME (default ~/.artwright): verdicts.jsonl, taste.md, calibration/labels.jsonl, keywords/ and palettes/. The skills never write them into a repository. aw.py makes a network request only to fetch a Lospec palette you name or for doctor --probe.

Can I check a sprite against my own palette?

Yes. --against (for palette) and --palette (for pixel) take pico-8, a .hex, .txt or .gpl file, comma-separated hex colours, or a Lospec slug (Commands).

Why does pixel report a scale of 16 when I drew at 4x?

It reports the largest block size the colour changes fit, and a pattern of 4-pixel squares drawn at 4x is made of 16 x 16 single-colour blocks. Pass --scale 4 (Errors and edge cases).

Can I ask for "in the style of" a living artist?

The skills turn a living artist's name into descriptive traits (medium, palette, line, subject, era) and say so in one line. Public-domain masters, movements and studio genres may be named.

Does it handle non-Western art?

The style skill answers in the tradition's own terms from its traditions file, and says when a row there is not yet verified by a fetched source. The README notes why: style labels from vision models are right about half the time and worse for non-Western art.

Where do the art facts come from?

From sources fetched for the question, not from memory: the facts procedure names the readings of a question, checks the category and the year to date, and hands the dated facts to historywright for two independent sources (Guinness and Wikipedia count as finders, not sources). Each answer ends with a confidence line.

Which agents does it work in?

It is written for Claude Code, GitHub Copilot, Cursor and Codex. Claude Code installs it as a plugin; the others take the four skill folders copied into their skills folder (Getting started). Only Claude Code was run for this wiki.

Is there a release?

Yes. The latest is 0.7.2, tagged v0.7.2 on 2026-10-26. Its release page holds artwright-0.7.2.zip: the four skill folders with the README, LICENSE and SECURITY.md. 0.3.0, 0.4.0, 0.4.2 and 0.7.0 have releases too; the versions in between were never tagged and ship inside the next release (Versions and upgrading).

Why did my cached verdicts stop matching after the upgrade?

The rubric version is part of the cache key. 0.3.0 moved the default from 1 to 2 and 0.5.0 from 2 to 3, so cache get misses on verdicts stored under an older version and the judge judges those images again under the new rubric. Passing --rubric-version 2 (or 1) reaches the old rows (Versions and upgrading).

Does a flag from light or comp mean the image is wrong?

No. A flag such as glowing_shadows or competing_focal says where to look. The skill opens that region, confirms it, and only then writes it as a finding with the region named. The thresholds were set from how often each flag fired on 7 museum works and 48 AI stills, with no owner labels, so the repository calls them uncalibrated (Light, colour and composition).

Does pixel fail my sprite for banding or pillow shading?

No. The 0.7.0 craft numbers (banding, corner_doubles, jaggies_interior, pillow, edge_lost_on_bg and the tile repetition fields) are reported and never change clean_pixel_art. None of them has a pass line yet: the repository will not set one until there is evidence for it (LEARNINGS L-019). Read them as where to look; even the clean test sprite reports banding (Commands).

Can artwright check a painting I made over a 3D render?

Yes, since 0.4.0: aw.py geomgate compares the painting with the render's wheel rims, spokes, parts and contacts, given a render folder with beauty.png, id.png and sprite.json. aw.py sprite checks a painted game sprite against the set it joins, and aw.py setfit (0.5.0) one illustration against its series (Commands).

How do I report a problem?

Open an issue. Security problems can go through the repository's Security tab, "Report a vulnerability" (see SECURITY.md).

Clone this wiki locally