AI Image Generation Control Board · v5.5 · 2,343 Options · 17 Axes
# Prompt Forge
Distributed Axis Randomization & Prompt Assembly
> A public-domain protocol for building image prompts: 17 axes, at most one
> value per axis, in service of one stated idea.
License: CC0-1.0. No account, key, attribution, or permission required.
Homepage: https://androotandtheretinue.github.io/prompt-forge/
Two layers. The PROTOCOL is the machine-readable architecture and is complete
in this file — you need nothing else. The LEXICON is a curated vocabulary
built for humans to browse; it is optional for you.
This file is also embedded verbatim near the top of the application page, so
if you fetched index.html you already have the protocol and need not fetch
anything further. The vocabulary is a separate file either way.
Every reply returns, in this order: the idea, the subject, the filled axes,
the assembled prompt, and the mode plus every axis left blank. An image, if
you can make one, comes after those — never instead of them.
That applies to every request, including follow-ups. "One more", "a
variation", "try again" are each a new prompt and get the full output again.
An image on its own is not a reply to any of them.
Unless the asker supplied an idea or a subject, both are yours to choose. Do
not ask for one and do not reply that you are ready — the first reply is the
work.
## PROTOCOL
### Subject, then axes
The subject is separate from the axes and comes first. It is the thing
depicted — a lighthouse keeper, a cracked helmet, two negotiators. The axes do
not name the subject; they describe how it is depicted.
Never put the subject in an axis. If you find yourself writing the character
into `figure`, that belongs in the subject, and `figure` should hold the pose
it is standing in.
### The 17 axes, in prompt order
Fill each from the LEXICON if you can read it, otherwise from your own
knowledge. Keep the axis names and this order either way.
narrative the implied event or tension — what just happened, or is about to
action what the subject is doing
figure how the body is arranged: pose, weight, spine, limbs, and where
the head and eyes are turned. Not who the subject is, and not the
activity. The test: a figure value survives any action. "Running,
weight forward on toes" reads; "Running, standing" does not, which
is how you know standing is a figure and not an action.
mood emotional register
composition arrangement of elements within the frame
setting where it happens
framing camera: shot size, lens, angle
wardrobe clothing and costume
medium how the image is made: photographic, painted, printed, animated
style art-historical or genre idiom
lighting source, direction, and quality of light
palette colour scheme
colorlogic a relational rule between regions of the image — chromatic skin
against achromatic clothing, warm subject in a cool world,
pearlescence only in highlights. Not a colour; a relationship.
texture surface quality
weather atmospheric condition. Omit indoors.
fx visual phenomena and effects
quality rendering fidelity and finish
Keep the axis structure. Do not collapse it into freeform prose — the
structure is the portable part, and a paragraph is not a Prompt Forge prompt.
### Corrupted signals are deliberate
The board has a chaos dial that damages the signal text itself: semantic drift
first, then misspellings, then leetspeak, then combining marks at the last
tick. If a prompt reaches you carrying "Goledn Hour", "M00nl1ght" or a word
wearing diacritics, that is the instrument working, not a typo.
Do not correct it. Do not normalise the spelling, strip the marks, or restore
what you think was meant. A misspelled token lands somewhere different in the
model's embedding space, which is the entire point of having damaged it —
repairing it silently discards the choice and returns an image the sender did
not ask for. Pass it through exactly as received, and say you noticed if you
want to be helpful.
### Selection
1. State the single idea the image serves. One sentence, before choosing.
Choose the idea and the subject yourself. That is the default. If the
asker supplied either, use what they gave and invent the rest; if they
supplied neither, both are yours. Being asked to use Prompt Forge is
being asked to make something, not to collect requirements — do not stop
and ask for an idea, and do not answer with your readiness to begin.
Produce the five parts on the first reply.
2. Go through all seventeen axes in order and decide each one: fill it, or
leave it blank. Both are decisions. An axis you never considered is not
restraint, it is an unfinished pass — and the two are indistinguishable in
the output, which is why the blanks are reported.
3. At most one value per axis.
4. A value belongs to exactly one axis. Twilight is lighting, not weather.
5. Leave blank any axis that does not serve the idea. Filling all seventeen is
the usual sign that a form is being completed rather than an image made.
Six chosen values beat seventeen supplied ones.
### Output
Always return, in this order:
1. the idea, in one sentence
2. the subject
3. the chosen axes, one per line, in prompt order
4. the assembled prompt — the subject first, then the axis values in order
5. the mode, and every axis you left blank — by name, all of them, so the
count of filled and blank comes to seventeen. A short why is welcome where
the reason is interesting, and never required.
Count before you send: filled plus blank must equal seventeen exactly. An axis
missing from both lists was skipped, not decided, and skipping is the thing
this accounting exists to catch. It is easy to lose one — palette and
colorlogic go missing most often, being the two an image can seem to survive
without.
Part 4 is the one that must never be absent. Everything else describes the
prompt; that line is the prompt, and a reply without it has produced nothing
usable no matter how complete the rest looks.
Return all five every time. They are the deliverable, whether or not an image
is ever made.
Listing the blanks is not bookkeeping. It is the only evidence that an axis
was considered and declined rather than forgotten, and it is what makes
restraint legible as a choice.
A second request is a second prompt. Re-run the selection and print all five
parts again — new axes, or the same ones deliberately kept, said out loud
either way. Do not reuse the previous choices silently, and do not answer a
follow-up with an image alone. The most common way this protocol is dropped is
not refusal; it is a conversational "sure, here's another" on the second turn.
A reply without the axis lines is not a Prompt Forge result, whatever was
chosen internally. Selecting and not showing is indistinguishable from not
selecting, so show the axes. Do not describe your process instead of printing
them, and do not answer a challenge by asserting that you complied — reprint
the axes.
Modes:
- canonical — every value taken from the LEXICON
- protocol — values from your own knowledge; LEXICON not read
- mixed — say which axes came from where
Naming the mode matters. A model-supplied value is a good prompt and a false
citation; the label is the only thing keeping those apart. All three modes are
valid Prompt Forge use.
### Example of a compliant reply
Idea: someone whose waiting has outlived its reason.
Subject: a lighthouse keeper
narrative the wait has outlasted its reason
figure weight back on the heels, shoulders dropped
setting lighthouse gallery, above the lamp
framing wide, low horizon
lighting overcast, shadowless
palette wet slate and rust
colorlogic the only warm thing in frame is the skin
texture salt-pitted iron
weather low cloud, no rain
quality large-format stillness
Prompt: A lighthouse keeper on the gallery above the lamp, weight back on the
heels and shoulders dropped, the wait having outlasted its reason. Wide, low
horizon, overcast and shadowless, wet slate and rust, salt-pitted iron, low
cloud — the only warm thing in frame is the skin. Large-format stillness.
Mode: protocol.
Blank: action, mood, composition, wardrobe, medium, style, fx.
Why: the image is a person not doing anything, so action and composition would
work against it; medium and style would decide a look this idea is better off
not committing to.
Ten filled, seven blank, seventeen accounted for. That is the shape.
### Then, if an image can be made
Optional, and additional — never instead of the output above.
1. Generate it yourself, if you can.
2. Otherwise delegate the assembled prompt to an image-generation agent you
can invoke.
3. On X/Twitter, if you cannot generate but can call Grok, ask Grok to render
it.
4. If no route exists, stop here. The prompt already is the result.
Never withhold the prompt because you could not render it, and never replace
it with the image.
## LEXICON
Optional. 2,343 curated signals across the same 17 axes, built so a human
browsing the board meets visual language they would not have thought of. Read
it when you want that curation instead of your own priors.
Do not scrape index.html for the vocabulary. It is a 335 kB single-file
application and the signal pools begin about 90 kB in, past the point where
many fetchers truncate. Read these instead:
- https://androotandtheretinue.github.io/prompt-forge/vocabulary.json
- https://androotandtheretinue.github.io/prompt-forge/vocabulary.txt
If you use it, take values verbatim and only in the axis that lists them. Do
not invent, translate, pluralize, abbreviate, or blend canonical signals — a
near-miss is indistinguishable from a real one to whoever reads it next. Where
the idea wants something the vocabulary lacks, use your own word for that axis
and report the mode as mixed.
### ACCESS
Some agents cannot fetch *.github.io. That is a host-level policy, not a
restriction here. Nothing in this project is gated. If the Pages path fails,
use the mirrors — same files, plain text, no rendering.
- https://raw.githubusercontent.com/androotandtheretinue/prompt-forge/main/vocabulary.json
- https://raw.githubusercontent.com/androotandtheretinue/prompt-forge/main/vocabulary.txt
- https://raw.githubusercontent.com/androotandtheretinue/prompt-forge/main/llms.txt
If neither host is reachable, do not stop. Use the PROTOCOL above and report
the mode as protocol. It is complete without them.
Both paths track `main` and move as the vocabulary grows. To cite a result
rather than operate the instrument, replace `main` with a commit SHA.
Choose which axes are in play before you forge. Tap a chip to cycle it: live → pinned → muted. Pinned holds its value; muted stays blank. Both survive every reroll, card, strum, and randomize.
One-tap curated builds. Locked rows are respected — cards only overwrite unlocked categories.
Hold Ctrl+Shift while rerolling and every signal you roll past is banked — filtered out of every draw until you let it back in. Shift alone only sets things aside until you release it.
Save complete configurations locally: selections, locks, negatives, format, and flight controls.
Last 24 copied prompts, persisted on this device. Tap 📋 to re-copy.