promptdojo_

Write audit_shot_list(shots) that takes a list of shot dicts and returns a list of suggestion strings — one per shot that has a problem.

Each shot is a dict with these keys:

  • description (str): the subject and action
  • camera_move (str): the camera move
  • duration_sec (float): clip duration in seconds

Apply these checks IN ORDER for each shot. As soon as ONE check fires, emit a suggestion and move to the next shot:

  1. If camera_move is one of the generic words"cinematic", "dramatic", "beautiful", "epic", or empty "" — emit: "shot {i}: '{camera_move}' is not a camera move. Specify one (push-in / orbit / track / pan / tilt / static)."
  2. If camera_move contains the substring "dolly zoom" AND duration_sec < 3.0: emit: "shot {i}: dolly zoom in {duration_sec}s is too fast — needs >=3s to read."
  3. If camera_move contains the substring "orbit" AND duration_sec < 4.0: emit: "shot {i}: orbit in {duration_sec}s won't complete cleanly — needs >=4s."
  4. If camera_move contains the substring "push-in" AND duration_sec < 2.0: emit: "shot {i}: push-in in {duration_sec}s reads as a jump — needs >=2s for the slow read."
  5. If description is shorter than 20 characters: emit: "shot {i}: description too short ({len} chars) — needs subject + action + framing detail."

Shots are numbered starting at 1. If a shot passes all checks, emit NOTHING for it. Return the list of suggestions in shot order.

Five shots run. Expected output:

shot 1: 'cinematic' is not a camera move. Specify one (push-in / orbit / track / pan / tilt / static).
shot 2: orbit in 2.0s won't complete cleanly — needs >=4s.
shot 3: push-in in 1.0s reads as a jump — needs >=2s for the slow read.
shot 5: description too short (8 chars) — needs subject + action + framing detail.

this step needs the editor

on desktop today; in the app (coming soon). save your spot and we'll bring you back here when you're ready.

open this same url on a laptop to keep going today.