← MorphixCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to Morphix
Snapshot Sep 30, 2026 · 22:47 UTC · version 1.2.0
Collection source: not recorded for this historical snapshot.
First saved snapshot
No earlier snapshot is available to establish a change.
Compare saved observations
Download comparison JSONFull technical diff · 0 changed fields
Full snapshot data
{
"name": "product-video",
"description": "Turn a supplied product photograph into a short video for an ad, a store page, or social. Trigger when the user has a product image and asks to animate it, make a product video, a video ad, a product clip, or motion for their product. Do not trigger for narrated creator-style videos where a person speaks, for editing existing footage, for still images, or when the user has not supplied a photograph of the real product.",
"included_files": [
{
"relative_path": "agents/openai.yaml",
"size_in_bytes": 1170
}
],
"skill_md_contents": "---\nname: product-video\ndescription: Turn a supplied product photograph into a short video for an ad, a store page, or social. Trigger when the user has a product image and asks to animate it, make a product video, a video ad, a product clip, or motion for their product. Do not trigger for narrated creator-style videos where a person speaks, for editing existing footage, for still images, or when the user has not supplied a photograph of the real product.\n---\n\n# Product Video\n\nProduce one short video of a real product supplied by the user.\n\n## Morphix tool contract\n\nThese are the tools available and the order they run in. Follow it exactly.\n\n**Getting the user's image in.** Chat attachments cannot be passed to generation. When a reference is needed, call show_upload_widget, which shows a drop box and returns an asset id once the user uploads. Never call upload_asset directly. If the user uploaded something earlier in the conversation, call get_assets and reuse that asset id rather than asking again.\n\n**Before spending credits.** Call explore_models to choose a model for this job, and get_account to confirm the user has credits. Both are read-only and free. Choosing a model blind, or starting a generation the user cannot pay for, are the two most common wasted turns.\n\n**Choosing a model.** Never hardcode a model name. Read the capabilities returned by explore_models and pick for the job at hand: reference fidelity when the result is anchored to a supplied image, text handling when legible type matters, motion quality for video, voice range for audio.\n\n**Generating.** generate_image and generate_video accept asset ids to edit or reference existing images, including image-to-video. generate_audio takes the script plus a voice chosen through explore_models. Each spends credits and renders a live view that polls itself, so never poll manually and never tell the user you will check back.\n\n**Retry spends again.** A regeneration costs credits a second time. The quality gate in this skill allows one automatic retry. Beyond that, say what is wrong and let the user decide.\n\n**Finishing.** upscale_image and upscale_video raise an existing asset. Offer these instead of regenerating at a larger size.\n\n**Recovering work.** get_assets lists the library newest first. get_generations fetches a generation by id. Use them to pick up earlier work instead of remaking it.\n\n## The failure mode this skill exists to prevent\n\nVideo models deform geometry and labels when motion is fast, when the camera crosses the face of the product, or when duration outruns the reference anchor. Every rule below exists because of that.\n\n## Product Lock\n\nThe product in the supplied reference is immutable data for the entire shot.\n\nPreserve shape, proportion, colour, material, finish, label geometry, typography, logo, and every printed character. The product stays rigid. Camera, light, and environment move; the product does not change.\n\nIf label text is unreadable in the reference, keep that face away from camera rather than reconstructing it.\n\n## Preconditions\n\nA photograph of the real product is required. The product should occupy at least a fifth of the frame in the reference; below that, ask for a tighter photo before spending credits.\n\n## Intake\n\nAsk once, bundled: the product photo; duration; where it will run; and whether the user wants sound. Offer five, eight, and ten seconds.\n\nAbove ten seconds, say plainly that product fidelity degrades and propose two short shots instead of one long one.\n\n## Permitted camera moves\n\nOnly these, because they preserve product legibility.\n\n| Move | Effect | Best duration |\n|---|---|---|\n| Slow push-in | focus and desire | 5 to 8s |\n| Partial orbit, up to forty-five degrees | reveals form and material | 8 to 10s |\n| Tilt reveal, low to high | scale and presence | 5 to 8s |\n| Pull-back from macro to wide | texture then context | 8 to 10s |\n| Locked camera with environmental motion | product still, light or background moves | any |\n\nForbidden: whip pan, full three-hundred-and-sixty degree orbit, morph or transformation of the product, hard cut inside the shot, abrupt zoom, and any move that passes behind the product. If the user requests one, explain in one sentence that it deforms the label and offer the permitted equivalent.\n\n## Put the motion in the environment\n\nWhen the product carries dense label text, the safest way to get a living shot is to keep the product locked and move everything else: airborne particles, smoke, liquid, a falling leaf, a shifting light, a travelling shadow. Recommend this by default for text-heavy packaging.\n\n## Sound\n\nIf the user wants sound, generate ambience or music only, using generate_audio.\n\nDo not write spoken narration in this skill. Voiceover with a scripted presenter is a different format and out of scope. If narration is requested, say so in one sentence and offer the ambience version.\n\n## Write the prompt\n\nName the product, the exact camera move and its speed, what moves in the environment, the lighting, the duration, and the instruction that the product stays rigid with geometry and label unchanged throughout the shot.\n\n## Execute\n\nCall generate_video with the product photograph as reference. Use nine-by-sixteen for vertical social, square for feed, sixteen-by-nine for website and long-form platforms.\n\n## Quality gate\n\nInspect the first frame, a middle frame, and the last frame. The product must be the same object in all three.\n\nReject if the shape changes, the label shifts position relative to the form, any text changes, colour drifts, or a second product appears. Regenerate once with a slower move or a shorter duration.\n\n## Deliver\n\nReturn the video and one line describing the move and duration. Never expose model names, job identifiers, prompts, or internal steps.\n\n## Stop conditions\n\n| Condition | Response |\n|---|---|\n| No product photograph supplied | Stop and ask for one |\n| Product occupies less than a fifth of the reference frame | Stop and ask for a tighter photo |\n| User requests a forbidden move and refuses the alternative | Stop and explain the deformation risk |\n| User requests spoken narration | State that this is a different format, offer the ambience version |\n| Quality gate fails twice | Deliver the most stable result and state what drifted |\n"
}SHA-256: 8efd6603c2f592d45ca7dc8e07ef375d6a8d356b5c116bab3254002c94ff962b