product-photography — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited product-photography (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 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.
Turn a product description into a coherent shot list of prompt specs that generate commerce-grade product imagery. Prime rule: one product, one visual world. Every shot in a set shares the brand's lighting, palette, and treatment so listings, landing pages, and social posts read as one brand — a stunning hero next to a mismatched lifestyle shot is worse than two average matching ones.
Use for any imagery whose subject is a product: e-commerce listings, landing-page heroes, marketing shots, detail close-ups. Hand off instead when:
layouts) → skills/creative/social-graphics
skills/creative/brand-assetskills/creative/image-generationskills/creative/creative-strategist first; consume its style block here
skills/creative/product-video (stills from thisskill are its source frames)
Ask in one batch, only what's missing:
(If a real photo exists, ask for it as reference for accuracy.)
aspect ratios)
FAL_API_KEY set, or deliver specs only?Infer, don't ask: aspect ratios from destination (listing → 1:1, landing hero → 16:9, social feed → 4:5); resolution 2K default, 4K for heroes. Don't stall: with product + destination known, assume the rest, label it, go.
platform allows gallery images)
whole set from the style block (or infer from positioning: premium → dramatic or studio; approachable → natural golden hour; minimal brand → high-key). Every spec in the set uses it.
references/shot-library.md — read it now; it has the five shot-type templates plus the lighting/background/composition prompt language. Name colors in words and hex. Always state what must NOT appear (no watermark, no invented logos or label text unless the exact text is supplied, no clutter).
--num-images 3 ordistinct specs varying composition/background); detail and lifestyle shots get 2. The user picks winners.
FAL_API_KEY (or FAL_KEY) is set: python docs/creative_cli.py product \
--product-name "Luxury Watch" \
--prompt "<full prompt>" \
--aspect-ratio 1:1 --resolution 2K --num-images 3Images save to assets/product-photography/<product-slug>/ as <product>_<n>_<timestamp>.png. If no key, deliver the specs plus the exact commands — never claim generation happened. Full parameter reference: skills/creative/image-generation/references/automation.md.
references/shot-library.md (one iteration round), then present winners with file paths and a one-line recommendation per slot.
Deliver a shot list of these blocks (one per shot):
## Shot Spec — [shot name, e.g. hero-01]
- **Shot type:** clean / lifestyle / hero / detail / flat lay
- **Destination:** [listing / landing hero / ad / social]
- **Subject:** [product, concretely — materials, colors, orientation]
- **Setting / background:** [white / gradient X→Y / lifestyle setting / textured]
- **Lighting:** [studio / natural golden hour / dramatic rim / high-key]
- **Composition:** [centered / rule of thirds / negative space / overhead]
- **Mood:** [2–3 adjectives, from the style block]
- **Aspect ratio:** [ratio] · **Resolution:** [1K/2K/4K] · **Format:** png
- **Negative constraints:** [no watermark, no invented label text, ...]
- **Prompt (final, paste-ready):**
> [single flowing prompt]
- **Variants:** [n] — [what varies]
- **File naming:** assets/product-photography/<product-slug>/<product>_<n>_<timestamp>.png
- **Generate with:** `python docs/creative_cli.py product --product-name "..." --prompt "..." --aspect-ratio ... --resolution ... --num-images n`Close with a Set summary: shared lighting/palette line, shot count per type, and (if generated) recommended winner per slot with saved paths.
1:1 default by inertiafal-ai/nano-banana-pro; no size/steps/guidance knobs exist)Hard don'ts: never render readable brand/label text unless the user supplied the exact string; never mix premium dramatic lighting and casual snapshot styles in one set; never present AI shots as real photographs of the user's actual unit — if fidelity to the exact physical product matters, say so and recommend compositing or a reference-photo workflow.
skills/creative/creative-strategist → upstream; its style block sets thisset's lighting, palette, and mood fields.
skills/creative/image-generation → shared automation and prompt discipline;skills/creative/image-generation/references/automation.md is the parameter source of truth.
skills/creative/social-graphics → consumes winning shots as raw material forplatform posts.
skills/creative/product-video → consumes the hero/lifestyle stills as framesand art direction.
references/shot-library.md — full shot-type templates, lighting/background/composition prompt language, and fix-it phrases. Read before writing specs.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.