visual-prompt — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited visual-prompt (Agent Skill) and scored it 87/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 3 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 3 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Takes a short brief from the user and returns a paste-ready visual generation prompt at the level of detail that actually pulls 4K-quality realism out of modern image/video tools — applying the 9 Shlabu craft patterns from skills/references/shlabu-realism.md.
The output is a prompt, not media. Print it to chat in a fenced block. Save only if Will asks.
This skill fires in two modes. The first thing to do every time is figure out which.
Mode A — Explicit invocation. Will typed /visual-prompt (with or without a brief on the same line), OR a natural-language phrase that obviously asks for prompt expansion ("expand this for Kling", "give me the long version of [X]", "Shlabu this", "make this prompt detailed").
→ Skip ahead to Step 1. Compose immediately.
Mode B — Auto-detect. Will's last message wasn't an explicit invocation, but it looks like a raw visual brief — short, declarative, photographic/cinematic vocabulary, subject + scene + intent shape, no other clear request type. Examples that should trigger Mode B:
→ Do not compose yet. Reply with one line:
Looks like a visual brief — type/visual-promptand I'll build it out. (or sayimage/videoto lock the medium.)
Then stop. Wait. The next message from Will is the confirmation. When he sends /visual-prompt (alone, or with corrections), carry forward the previous brief as the input and proceed to Step 1.
When NOT to trigger Mode B — leave these alone, don't gate them:
If you're not sure whether something is a brief or just brainstorming, lean toward gating in Mode B — the cost of a one-line confirmation question is much smaller than the cost of generating a 300-word prompt for something that wasn't a brief.
The brief is whatever Will gives you after /visual-prompt or in natural language. Free-form, 1–3 sentences typically. Examples:
If the brief is missing a critical anchor (no subject, no scene, or no intent at all), ask one tight clarifying question. Otherwise just go.
Scan the brief for these. Don't ask if not mentioned — defaults are fine.
generic long prose.brands/[brand-name]/models/[name]/characteristics.md and pull hair / eye / skin / freckles / build into prose anchors. Pick the brand by matching the model name across brands/*/models/*/.Read `skills/references/shlabu-realism.md` before composing. The 9 patterns described there are the spec for this skill — apply them mechanically. Don't paraphrase from memory; the file is the source of truth.
Pick one of two grammars based on target tool:
Used for: kling, veo, sora, seedance, higgsfield, flux, gpt-image, nano-banana, generic.
Format:
—), not bullets, not headers, not labelsTool-specific length caps — these are hard limits, not soft suggestions:
| Tool | Hard cap | Implied word ceiling |
|---|---|---|
| Kling 3.0 (FAL) | 2500 characters | ~380 words (verified — anything over this gets a 422 from FAL) |
| Veo 3.1 | ~2000 characters (recommended) | ~320 words |
| Sora | ~2000 characters | ~320 words |
| Seedance, Higgsfield, Flux, GPT Image, Nano Banana | no documented hard cap | 250–350 words |
When the target tool is kling, count characters before producing the final prompt and trim aggressively if over 2500. The 422 error from FAL costs Will an iteration cycle, not money — but it's still friction worth avoiding. Cuts to make first when over-cap: redundant scene-setting (the start frame already shows it), repeated anti-synthetic phrases (4× is enough, not 6×), trailing colour-grade caveats. Preserve dialog, delivery direction, camera-as-choreography, and high-frequency detail callouts — those are load-bearing.
Mechanical checklist (every prompt must hit all that apply):
"line" — tone, gesture, beat. Multiple short lines beat one long monologue.Skip patterns 1, 2 (skin/hair detail), 3, 4 when the brief is for a clean studio packshot, product rotation, or commercial campaign hero — those want clean directed cinematography, not handheld organic chaos. Use patterns 5, 6, 9 always.
Used only when target tool is midjourney.
Format:
--ar [aspect] --v 6.1 (or --v 7 if newer) --style raw (for photoreal)--sref [url] if a style reference image is mentionedPrint the prompt to chat as plain visible prose — not in a code fence, not blockquoted, not collapsed. Will needs to see and read the prose directly in the message, not click-to-expand a code block.
Format:
**Prompt:**
[the full prose paragraph here, written out in full, no truncation]
[ generic prose · 287 words · image ]Rules:
**Prompt:** on its own line so it's visually anchored.[ {tool grammar} · {word count} words · {medium} ].After the meta line, stop. Do not ask whether to save. Do not offer follow-up options. The skill ends with the prompt printed in chat — Will copies it from there. If he wants to save it later, he'll ask explicitly with something like "save that" or "save it under [name]", which routes to Step 6.
Only on user request. Save to:
brands/[brand-name]/visual-prompts/[slug]/
prompt.txt the prose / keyword line
brief.json the original input + detected optionsSlug derivation: short kebab-case from the most distinctive nouns in the brief. e.g. blonde-paris-cafe-selfie, watch-rotation-velvet. Ask Will to confirm or rename if ambiguous.
brief.json shape:
{
"brief": "blonde woman in a Paris café at golden hour, looking at her phone, raw iPhone selfie energy",
"target_tool": "generic",
"medium": "video",
"model_anchor": null,
"dialog": null,
"word_count": 287,
"created": "2026-05-09T22:14:00Z"
}If no brand is active in the project (no brands/*/brand-identity/visual-guidelines.md), save to visual-prompts/[slug]/ at project root instead, and tell Will.
skills/references/shlabu-realism.md (distilled from Shlabu's "Kling 4K Prompts" tutorial). Always read that file before composing — don't compose from memory.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.