Random Ghost — Open Skill

Random Ghost

Random Ghost is a public Open Skill on Digen. Open it to see what this workflow creates.

@JackRhino

Product

0 0 0

https://d7qlwi7tl2u27.cloudfront.net/skill-covers/prod/4284865/2026-10-21/bksndga8.jpg

# Random Ghost

Turn a user's photo into a quietly haunted version of the same photo. The edit is image-to-image: the original picture stays the picture, and one restrained ghostly presence plus a cold, low-key grade is layered on top. Each request produces a *different* haunting — never the same ghost, placement or palette twice in a row.

There is no structured project state. Progress lives in the conversation and in the canvas assets.

## When to use

- The user uploads a photo and asks to make it spooky, haunted, ghostly, eerie, "random ghost", or to add a ghost / a ghost girl / a shadow that does not belong.
- The user replies "another one", "reroll", "again but different", "more/less ghost" on an existing edit.
- The user supplies a photo plus text describing mood, place, palette or intensity (e.g. "old house, blurry", "hospital corridor, subtle", "sepia").

Do not use for: text-to-image from a description with no photo, video, or turning a photo into a monster / gore / creature transformation.

## Steps

1. **Collect the inputs.** Exactly one source image (a user attachment or an existing canvas asset URL) plus optional text. The text is never a replacement for the photo — if no image is present, ask for one and stop; never invent a picture or a URL.
   - Photo → `input_urls` of the generation call.
   - Text → what to keep fixed (person, room, mood), which haunting flavor or palette they want, and how strong it should be. If they name a flavor, use it; if not, choose one at random.
2. **Read the references before writing anything.** Call `read_skill_file(name='random-ghost', path='references/style-and-prompt.md')` for the visual rules, randomization table and the English prompt template, and `read_skill_file(name='random-ghost', path='references/step-details.md')` for the input checks, orientation mapping, prompt assembly checklist and retry branches. Do not draft the prompt from memory.
3. **Look at the photo (optional but recommended).** If the subject, the room layout or the light direction is not obvious from the conversation, call `recognize_image(image_url=<source>, prompt="Describe the main subject, the composition, the light sources and any mirror, doorway or window that could host a ghost.")`. Use the answer only to fill the template slots — do not re-describe the photo to the user.
4. **Roll one haunting recipe.** Pick one item from each column of the randomization table in `references/style-and-prompt.md` (presence archetype × placement × palette × intensity). It must differ from the previous recipe in this conversation; state the chosen flavor in one short phrase when you reply.
5. **Write the English prompt** by filling the template in `references/style-and-prompt.md` with that recipe and with the must-keep / must-avoid rules from the same file. The prompt must name the concrete ghost, where it sits in the frame, how visible it is, the palette, and the protected elements (identity, composition, existing text). No generic "make it spooky" wording.
6. **Generate the edit.** Call `generate_image` with:
   - `prompt`: the filled English prompt from step 5;
   - `input_urls`: `[<source image>]` (single entry);
   - `model`: `'i2i.hd.lite'` (image-to-image editing channel — never a physical model name);
   - `orientation`: match the source frame (`portrait` for taller-than-wide, the default when the source proportions are unclear; `landscape` for wider-than-tall; `square` when the source is square). Never crop a portrait photo to landscape;
   - `resolution`: `'2K'` (detail matters for faint silhouettes and grain);
   - `name`: short canvas title, e.g. `Random Ghost – Doorway`;
   - `entity_type`: `'ghost_edits'`.
   Make one generation call per request. Do not chain several edits of the same photo unless the user asks for variants.
7. **Reply and hand off.** Two or three sentences in the user's language: name the haunting you used ("a silhouette standing in the open doorway, cold teal grade"), confirm the subje