PROMPT FORGE

AI Image Generation Control Board · v5.5 · 2,343 Options · 17 Axes

For AI agents — Prompt Forge protocol (llms.txt)

# 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.
⌖ Per-format subject all four use the subject above
UNIVERSAL
⇪ Import a list of subjects for this format
🎚️ SIGNAL RIG 17 live · 0 pinned · 0 muted

Choose which axes are in play before you forge. Tap a chip to cycle it: livepinnedmuted. Pinned holds its value; muted stays blank. Both survive every reroll, card, strum, and randomize.

🌀 CHAOS DIAL 0%
CLEAN DRIFT MISSPELL LEET ZALGO
Corruption: CLEAN Seed
📡 OUTPUT FORMAT
📐 ASPECT
🃏 FORGE CARDS ▶ Show
⚱ BANISHED SIGNALS 0 banked ▶ Show
🚫 NEGATIVE PROMPT ▶ Show
↔ STRUM
STRUM
LIVE PROMPT OUTPUT
Your prompt will appear here...
🧬 BLUEPRINT VAULT ▶ Show
📜 FORGE HISTORY ▶ Show