← ChatCutCONTENT HISTORYWHAT CHANGED · RULE-BASED ANALYSIS
Update to ChatCut
Snapshot Sep 30, 2026 · 23:14 UTC · version 1.10.14
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": "digital-human",
"description": "Create and manage script- or audio-driven AI avatar videos from an official or saved presenter, an imported portrait, or a representative still prepared from video. Use for 数字人、数字分身、虚拟人、照片开口说话、人像口播、改稿不重拍, AI avatar, AI avatar video, avatar video, talking avatar, talking photo, photo avatar, video avatar, AI presenter, virtual presenter, virtual spokesperson, digital human, or a person's digital twin, including choosing or creating the avatar and deciding its voice, script, aspect ratio, and output quality. Do not use for a static profile-picture avatar, game or 3D character creation, an industrial digital twin, ordinary B-roll, generic image-to-video, video translation, talking-head editing, lip-sync dubbing alone, or TTS-only requests.",
"included_files": [],
"skill_md_contents": "---\nname: digital-human\ndescription: Create and manage script- or audio-driven AI avatar videos from an official or saved presenter, an imported portrait, or a representative still prepared from video. Use for 数字人、数字分身、虚拟人、照片开口说话、人像口播、改稿不重拍, AI avatar, AI avatar video, avatar video, talking avatar, talking photo, photo avatar, video avatar, AI presenter, virtual presenter, virtual spokesperson, digital human, or a person's digital twin, including choosing or creating the avatar and deciding its voice, script, aspect ratio, and output quality. Do not use for a static profile-picture avatar, game or 3D character creation, an industrial digital twin, ordinary B-roll, generic image-to-video, video translation, talking-head editing, lip-sync dubbing alone, or TTS-only requests.\nuser-invocable: true\n---\n\n# Digital Human\n\nCreate a reusable presenter identity or generate a lip-synced presenter video\nwithout exposing the underlying provider. Treat avatar selection, speech, script,\nformat, consent, generation, and verification as one stateful conversation.\n\n## When to Use\n\nUse this skill when the user wants to:\n\n- Make an official or saved AI avatar, talking avatar, or virtual presenter speak.\n- Turn a consented portrait into a reusable digital-human identity.\n- Use a representative still from an imported video as a photo avatar.\n- Create a synthetic AI presenter from a description, when live capabilities allow it.\n- Draft or revise the narration for a digital-human video.\n- Regenerate, reorder, remove, retry, or accept segments from an avatar-video batch.\n\nTreat **AI avatar** as the broad default English concept. **Digital twin** means a\nreusable likeness of a specific real person; **photo avatar** or **talking photo**\nmeans a still-image source; **AI presenter**, **virtual presenter**, and **virtual\nspokesperson** describe the presenter's role. **Digital human** is valid but is often\nused for broader enterprise or interactive experiences.\n\nRoute adjacent requests elsewhere:\n\n- Speech, voice audition, or voice cloning without avatar video: use the Voice Skill.\n- Ordinary footage cleanup or presenter editing: use the Talking Head Guide.\n- Generic image-to-video or video generation without a speaking avatar: use the\n Video Generation Skill.\n- Translation or dubbing of an existing video: use the dedicated translation or\n dubbing workflow when available.\n\n## Required Inputs\n\nResolve these slots before submission, but do not ask for them in a fixed order:\n\n1. **Target project** — use the active project when it is unambiguous.\n2. **Avatar identity and ready revision** — an official avatar, a saved avatar, or\n a newly created photo or synthetic avatar.\n3. **Speech source** — one exact available voice, one cloned voice, or one imported\n audio asset. A text-driven source also requires the final script.\n4. **Final script** — preserve the user's wording and punctuation. Show any AI-written\n draft in full and let the user edit or approve it before generation.\n5. **Aspect ratio** — `auto`, `1:1`, `4:5`, `5:4`, `9:16`, or `16:9`. Explicit user\n choice wins; otherwise omit it so the backend uses `auto` and preserves the\n selected avatar's original framing. Do not substitute the current project ratio.\n6. **Resolution** — `1080p` by default; use `720p` when requested or when live\n capabilities require it, and explain any fallback.\n7. **Optional controls** — motion guidance only when the live capability response\n says it is supported. For an official catalog avatar, use its returned\n `hasBackground` value: preserve the original scene when true and request a\n transparent background when false. For a saved/custom avatar, preserve its original\n background by default. Request a transparent background only when the user explicitly\n asks to remove the background or use transparency. Do not ask the user to choose a\n background mode; briefly state the resolved default before submission. An explicit\n user request to preserve or remove the background always wins.\n\nFor avatar creation also resolve:\n\n- A non-empty name. Keep numeric validation limits out of the question label;\n only explain a limit if the submitted name actually fails validation.\n- One final avatar-creation source: an imported JPEG/PNG portrait, a\n representative JPEG/PNG still prepared from an imported video, or a prompt\n for a synthetic identity when supported.\n- Explicit consent when a real person's likeness is involved.\n\nDo not pass a video directly to photo-avatar creation unless the live capability\ncontract explicitly supports it. For an imported video, use the host's prepared\nrepresentative still or help select a clear, unobstructed, front-facing frame, then\nuse that image asset as the source.\n\nWhen a user attaches or references a video containing a person and says \"this\navatar\", \"this person\", \"use her/him\", `这个形象`, `这个人`, `用她`, `用他`, or an\nequivalent phrase, resolve the person in that exact attachment as the intended\nlikeness source. Do not treat the attachment as the requested speech source merely\nbecause it has audio or a transcript. If the user also supplies a new topic or an\napproved script, that new topic or script wins; do not read or reuse the video's\nspoken content unless the user explicitly asks for it.\n\nThe attached video is a prospective avatar source, not a ready `identityId`. Enter\nthe video-to-avatar creation flow: prepare a clean representative still, obtain the\nrequired likeness consent, create the identity, and then reuse that identity for the\nrequested generation. Do not show official or saved avatar choices while this\nprospective source remains valid. Offer other identities only when the user declines\nto use the person in the video or no eligible face frame can be prepared.\n\nIf \"this\" could reasonably mean the person's likeness, the video's existing pixels,\nor its spoken content, ask exactly one targeted clarification before choosing a\nworkflow: \"Do you want to use the person in this video as the avatar and have them\nspeak your new script?\" Do not replace this with a generic \"What do you want to do\nwith this video?\" question.\n\nWhen the user is about to upload or pick a video for avatar creation, tell them up\nfront that the chosen frame must show the face clearly with nothing covering it — no\nburned-in subtitles, captions, watermarks, stickers, or hands over the face — and\nprefer a frame with a neutral, front-facing pose. Never upload an inspection contact\nsheet or any preview that carries an overlaid time label as the avatar source; use a\nclean frame with no added markings.\n\nA video source also carries the person's voice. After the avatar is created from a\nvideo, offer to clone that voice from the same video so the avatar speaks with it:\n\n1. Run the Voice Skill's cloning flow (`manage_custom_voice action=clone` with the\n video's asset and explicit voice-cloning consent — likeness consent alone does\n not cover the voice).\n2. When the cloned voice is ready, call\n `manage_avatar action=set-default-voice identityId=<avatar> voiceRef=<cloned voiceRef>`\n so it becomes this avatar's saved default voice.\n3. Later generations with this avatar should use the returned `defaultVoiceRef` by\n default, while still letting the user pick another voice.\n\nThis is an offer, not an automatic step: skip it when the user declines or the video\nhas unusable audio (music, multiple speakers, heavy noise).\n\n## Workflow\n\nThis is an intent-driven constraint resolver, not a linear wizard. Do not walk the\nuser through every section or ask for fields in a preset order.\n\nOn every turn:\n\n1. Extract all facts already supplied by the user, attachments, active project,\n selected media, saved avatar state, and prior answers in this request.\n2. Resolve deictic phrases such as \"this\", `这个`, `这个形象`, and `这个人` against\n the attached or selected media and the user's action words before inferring a\n generic media workflow.\n3. Infer the user's immediate requested action: explore, choose, create, revise,\n generate, inspect progress, retry, reorder, remove, accept, place, or export.\n4. Compute only the blockers for that action. Defaults and live saved bindings count\n as resolved unless they conflict with an explicit request.\n5. If nothing blocks the action, execute it immediately.\n6. Otherwise ask about the single most important missing or ambiguous constraint,\n preferably with structured choices, then recompute from the new state.\n\nFor example, a user who names a ready avatar, supplies approved text, and accepts its\nsaved voice should not be asked to choose them again. A user inspecting a running\nbatch does not need to resolve a new script or aspect ratio. Consent is requested only\nfor the creation or cloning action that needs it.\n\n### Load live capabilities and state when relevant\n\nUse `ToolSearch` to load `manage_avatar` and `submit_avatar_video` if they are not\nalready visible. Call `manage_avatar` for live capabilities before\noffering creation or advanced options.\n\nIf the user has neither selected an exact identity nor supplied a prospective\nlikeness source, list the current official and saved identities before recommending\none. Do not infer availability from chat history, examples, or provider knowledge.\nFor official avatars, use the live catalog's `tags` as factual selection filters and\nits `description` as recommendation guidance. Match those fields against the user's\nrequested presenter and use case, and never infer a missing age, gender, ethnicity,\nrole, setting, or capability from the preview's appearance.\nFor the empty saved-avatar recommendation state, call the official catalog with\n`limit: 5`; do not page through the catalog or turn a full catalog page into one\nrecommendation form.\n\nAn avatar attached from ChatCut's Digital Humans library or native visual picker is\nalready an exact selection. Reuse its attached ChatCut `avatarId` as `identityId`\nacross later confirmation and retry turns. An official attached identity is directly\nusable by `submit_avatar_video`; it does not need to be imported or rediscovered in\nthe first catalog page. Before resolving speech for an attached identity, call\n`manage_avatar` with `action: get` and that exact ID unless a live result in the\ncurrent turn already supplies its `defaultVoiceRef`. Never reject or replace an\nattached avatar just because it is absent from the five-item recommendation page.\n\nOnly use identities and revisions reported as ready. Pending, failed, deleting,\ndeleted, or orphaned identities are not valid generation inputs.\n\nIf the digital-human tools are unavailable, explain that this generation capability\nis not connected. Do not silently substitute generic video generation or call the\nbackend HTTP routes directly.\n\n### Resolve the avatar when it is missing or invalid\n\nRespect an explicit user choice. Otherwise:\n\n- A person-containing video explicitly or provisionally resolved as the likeness\n source: continue the video-to-avatar creation flow. Do not enter the generic avatar\n picker and do not ask the user to choose among saved or official identities.\n- No ready saved avatar: show at most five suitable official avatars and include the\n reserved **create** card in the same choice surface. This is a strict empty-state\n contract: never render a sixth official recommendation, and never omit the\n creation option merely because official avatars are available.\n- Ready saved avatars exist: show them first (up to five total cards), then the\n reserved create card.\n- Exactly one ready saved avatar: offer it first and ask whether to use it.\n- Multiple ready saved avatars: prefer higher live usage count; when counts tie, prefer\n the newest creation. If usage metadata is absent, rank by newest creation only;\n never invent a frequency.\n\nAvatar identity selection is media-preview-only and is a strict exception to the generic\nsingle-branch `<choices/>` rule. Always use visual cards through the Widget Forms\nSkill, including when exactly one ready saved avatar exists. Never ask a text-only\ncategory question such as \"use the saved avatar\" versus \"browse official avatars\",\nand never use `<choices/>`, `<form-single>`, or label-only identity cards for avatar\nselection. For an avatar card in ChatCut's native widget — official or the user's own\nsaved avatar — write only its exact `identityId` as `avatar-id`; the host resolves the\ncurrent name, preview video or fallback image, aspect ratio, and submitted value from the live avatar\nidentity even when the tool payload does not expose a preview URL. Never copy `value`,\n`name`, `media`, or `aspect-ratio` onto an `avatar-id` option. If the host cannot\nresolve preview media, omit that identity rather than falling back to text. Prefer\nthe live preview video when available and use the preview image only as its poster\nor fallback. When\nthe user has ready saved avatars, place their cards before official recommendations.\nAsk one most important missing question at a time and do not repeat answered questions.\n\nThe raw tags below are the embedded ChatCut protocol only. In a published Codex or\nClaude Code plugin, the Widget Forms Skill's host adapter takes priority: never emit\nraw ChatCut tags. Map each live identity to the host's visual-choice surface using\n`identityId` as its stable value and `name` as its label. In Codex, pass\n`previewVideoUrl` as `previewVideo` and `previewImageUrl` as `preview` so the image is\nthe video's poster and failure fallback. Keep the create action\nas a separate `create_avatar` value; plugin hosts return that value to the workflow\ninstead of opening ChatCut's native dialog automatically.\nFor a saved identity whose `list` row has no preview URLs, call `manage_avatar\naction=get` for that exact candidate before rendering it; use the selected ready\nrevision's returned preview media and do not invent or copy media from another avatar.\n\nOne reserved label-only option value opens a native editor surface instead of\nsubmitting an answer. Write it with no `media`:\n\n- `create_avatar` — opens the native creation dialog where the user uploads a photo\n and creates a personal avatar. Keep its card label a short \"create your own\n avatar\" phrase (e.g. 创建专属数字人); do not mention uploading a photo — the\n dialog explains that itself.\n\nClicking that card does not produce a form answer. When the user finishes in the\nnative dialog, their chosen or newly created avatar is sent back automatically as\nthis question's answer with the avatar attached; treat that reply as the avatar\nselection and do not re-ask.\n\nThe selection shape is therefore one `<form-visual>` containing up to five avatar\npreview cards (saved first, then official) followed by the creation card. Localize\nthe visible question and card label to the conversation language:\n\n```text\n<widget>\n <form-visual id=\"avatar\" question=\"Please choose an avatar\" required=\"true\">\n <visual-option avatar-id=\"<saved-or-official-identity-id>\"/>\n <visual-option value=\"create_avatar\" name=\"Create your own avatar\"/>\n </form-visual>\n</widget>\n```\n\nCreating an identity is separate from generating a video:\n\n1. Resolve the source or prompt and name.\n2. Obtain required consent.\n3. Create the identity through `manage_avatar`.\n4. Poll until it is ready or terminal.\n5. Save it under **My avatars**. Do not auto-generate a video merely because avatar\n creation succeeded.\n\nWhen asking for a portrait in an embedded ChatCut Widget, always mark the upload as an avatar source so\nthe host uses the same validation, JPEG normalization, private transport storage, and\nupload-readiness behavior as the native Digital Humans dialog:\n\n```text\n<widget>\n <form-files id=\"avatar_source\" label=\"Please upload a portrait photo\"\n accept=\"image/jpeg,image/png\" purpose=\"avatar-source\"\n multiple=\"false\" required=\"true\"/>\n <form-text id=\"avatar_name\" label=\"Name this avatar\" required=\"true\"/>\n</widget>\n```\n\nDo not use an unmarked generic `<form-files>` upload for avatar creation.\nPublished plugin forms do not provide this native upload control. Ask the user to\nattach the portrait through their host, then use the Asset Import Skill and pass the\nreturned ChatCut image asset id to `manage_avatar`.\n\n### Resolve speech only when the requested action needs it\n\nFor an official avatar, never silently use its paired voice and never immediately\nopen the broader voice catalog. When the live result provides `defaultVoiceRef` and\nthe user has not already made this choice, first ask one blocking text-only decision\nin the conversation language: whether to use this avatar's official built-in voice\nor choose another voice. In embedded ChatCut, render that decision with localized\n`<choices options=\"Use official voice,Choose another voice\"/>`, then stop and wait.\nIf the user accepts, resolve speech with that exact `defaultVoiceRef` and do not call\n`manage_avatar action=voices`. Call `action=voices` only after the user chooses\nanother voice, or when the live identity has no `defaultVoiceRef`. Do not ask for\nlanguage or script and then pre-emptively call `action=voices` in the same turn.\n\nFor a saved or newly created avatar, reuse its saved voice binding when present and\nconfirm it; otherwise offer available voices. When the user settles on a voice they\nwant this avatar to keep, save it with `manage_avatar action=set-default-voice`;\n`list`/`get` then return it as the avatar's `defaultVoiceRef`.\n\nFor voice discovery, audition, or cloning, follow the Voice Skill and reuse its live\nvoice list, consent gate, and generated voice asset. Do not duplicate voice-cloning\nlogic here.\n\nWhen an exact voice still needs to be selected, never present voice names as prose\nbeside a free-text field. Use the exact `voiceRef` returned by `manage_avatar` as the\nsubmitted value. Voice selection is audio-preview-only and is a strict exception to\nthe generic `<choices/>` rule:\n\n- Never render `<choices/>`, `<form-single>`, prose voice names, or label-only voice\n options. A voice without a returned playable `previewUrl` must be omitted from the\n recommendation surface rather than presented as an unplayable choice.\n- When the user wants to audition voices, prefer up to five suitable available\n official, preset, or custom voices that actually include `previewUrl`. Render them as one\n required `<form-visual id=\"voiceRef\" media-kind=\"audio\">`; `hasPreview: true`\n without `previewUrl` is not playable and must not be presented as an audition\n card. Always append one no-media `<visual-option value=\"clone_voice\"\nname=\"Clone Voice\"/>` action, localized to the conversation language, as the\n final card. This clone option is required on every recommended-voice surface.\n- An official avatar's paired default voice may still be used without listing the\n broader official voice catalog. Do not show that default voice as an audition\n card unless an actual audio `previewUrl` was returned for it. Never reuse the\n avatar image or video URL as a voice preview.\n- Copy each returned `previewUrl` exactly. In particular, keep\n `/voice-samples/...` root-relative; do not expand it to `chatcut.com` or invent\n another host.\n- When script text is also being confirmed, put the voice selector and script field\n in the same widget. Do not make the user type a voice name into the script field.\n\n```text\n<widget>\n <form-visual id=\"voiceRef\" label=\"Please choose a voice and listen to its preview\" media-kind=\"audio\" required=\"true\">\n <visual-option value=\"<voiceRef>\" name=\"<voice name>\"\n media=\"<previewUrl>\" media-kind=\"audio\" summary=\"<voice traits>\"/>\n <visual-option value=\"clone_voice\" name=\"Clone a voice\"/>\n </form-visual>\n <form-textarea id=\"script\" label=\"Please confirm the script\" required=\"true\" default=\"<script>\"/>\n</widget>\n```\n\nIf the source began as a user video, ask whether the user wants that video's voice.\nIf yes, follow the Voice Skill's explicit voice-cloning authorization flow before\nusing it. An attachment alone is not permission to clone. If no, continue with the\nnormal voice picker.\n\nAn existing project audio asset may drive the avatar directly. When audio is the\nspeech source, do not invent or require text unless the user also wants a transcript\nor script review.\n\n### Resolve a script only for text-driven generation\n\nThe script may be pasted by the user, derived from selected project material, or\nwritten collaboratively. When drafting:\n\n1. Ask only for missing intent such as audience, goal, tone, facts, and duration.\n2. Produce the complete proposed script.\n3. Let the user edit it or approve it explicitly.\n4. Submit exactly the confirmed content.\n\nEach explicit text segment must contain 1–5000 characters. Omit explicit segments\nfor an ordinary script so the backend generates one continuous video up to 5000\ncharacters. Use explicit segments only when the user requests meaningful paragraph\nor shot boundaries. Longer text is split automatically and may create at most 10\nsegments. Never summarize, translate, drop, duplicate, or reorder content to fit a\nlimit. Preserve wording and\npunctuation; non-semantic line whitespace may be normalized automatically.\n\nText-driven avatar generation is limited by the 5000-character segment boundary,\nnot by an estimated audio duration. ChatCut TTS and cloned voices are rendered to\naudio before avatar-video submission. Long audio-backed text is prepared as smaller\nordered segments, and each generated audio file is validated from its real duration.\nExisting project audio longer than 600 seconds is automatically split into ordered\nparts before submission. Pass the original asset once; never split it manually or\nsubmit one generation call per part. If a progress update is useful, say only that\nChatCut is splitting the long audio while preserving the complete content and order.\nDo not add implementation details about where or how the work runs, and never expose\nhidden derived audio assets. Never shorten or summarize approved content to satisfy\nthese limits.\n\n### Resolve output settings from intent and available defaults\n\nPreserve the selected avatar's original framing by default: omit `aspectRatio` and\nlet the backend resolve it to `auto`. Never use the current project ratio as the\navatar-video default. If the user explicitly asks for a different ratio, pass that\nrequest instead.\n\nFor an official catalog avatar, resolve the default from the `hasBackground` field\nreturned by `manage_avatar action=\"catalog\"`:\n\n- `hasBackground: true` — pass `removeBackground: false` and preserve the original\n scene.\n- `hasBackground: false` — pass `removeBackground: true` so the result is a\n transparent WebM when transparency is supported.\n\nFor a saved/custom avatar without catalog metadata, keep `removeBackground: false` as\nthe default and preserve the source image background. Pass `removeBackground: true`\nonly when the user explicitly asks for a transparent background or background removal.\nDo not turn this into a blocking question. Before submission, briefly tell the user\nwhether the original scene will be preserved or the result will be transparent. An\nexplicit user request overrides the catalog default. If transparency is unsupported,\nexplain the limitation and keep the original background.\n\nDo not promise crop, background removal, motion control, transparency, resolution,\nor prompt-based identity creation until the live capability response confirms it.\n\n### Submit as soon as the required constraints are resolved\n\nSummarize the resolved avatar, voice or audio source, script state, aspect ratio, and\nresolution before the first generation when any choice remains consequential. Then\ncall `submit_avatar_video` once.\n\nTreat long-script output as an ordered batch of avatar-video segments, not as one\naudio file or one opaque job. After submitting, tell the user that generation has\nstarted and end the turn. Never call `track_progress`, `manage_avatar action=get-batch`,\nor add a Bash sleep in the same turn merely to keep the turn open, including when a\nqueued follow-up step will eventually need the completed asset. The project library\nshows the in-progress generation and receives the completed video assets in the\nbackground.\n\nCall `track_progress` in a later user turn only when the user asks for status or resumes\na follow-up step that depends on the completed asset, such as placing it on the timeline\nor reviewing the result. When a job is still non-terminal, say that generation is still\nrunning without quoting its numeric progress: provider progress values are coarse\ninternal stages, not user-facing completion estimates. Use `manage_avatar\naction=get-batch` when ordered segment and attempt state is needed. Keep the stable\nsegment key and original order.\n\nFor a failed segment, offer a targeted retry. Do not resubmit successful segments or\nthe entire batch without the user's instruction. Use the management tool for supported\nsegment regeneration, removal, reordering, attempt selection, and acceptance.\n\nGenerated results become normal ChatCut video assets. Add them to the timeline only\nwhen the user requested placement or it is clearly part of the active editing task.\nDo not export unless asked.\n\n## Provider Selection\n\nProvider selection is an internal ChatCut backend detail. Always call the\nChatCut-native tools and let the backend construct provider requests, resolve private\nIDs, enforce capabilities, and persist results. Never call an underlying provider API\nor CLI directly from this skill.\n\nSelect only through ChatCut capabilities, catalog results, saved bindings, and the\nnative tools. User-facing language is limited to concepts such as:\n\n- **Official avatars** and **My avatars**\n- **Official voices**, **cloned voices**, and **project audio**\n- **Photo avatar** and **synthetic avatar**\n\nProvider names, engine or model names, provider-specific avatar or voice IDs, raw\nprovider URLs, request payloads, and provider error messages are internal. Never show\nthem in prose, option labels, progress updates, or failure messages. Translate failures\ninto actionable product language while preserving the real status.\n\nDo not route around ChatCut's feature gates, quotas, billing checks, safety policy,\ncatalog visibility, or provider registry.\n\n## Consent and Safety\n\nA real-person photo avatar requires an explicit affirmative confirmation immediately\nbefore creation. Use the user's language and keep the meaning exact. For Chinese:\n\n> 我确认拥有该肖像,或已获得创建和使用该数字人形象的授权,并承诺不将其用于\n> 冒充他人、欺诈或其他违法用途。\n\nFor English:\n\n> I confirm that I own this likeness or have permission to create and use this\n> digital avatar, and I will not use it for impersonation, fraud, or unlawful activity.\n\nEn español:\n\n> Confirmo que soy titular de los derechos sobre esta imagen o que tengo permiso para crear y usar este avatar digital, y no lo utilizaré para suplantar identidades, cometer fraude ni realizar actividades ilícitas.\n\nDo not infer consent from an upload, a previous unrelated confirmation, ownership of\nthe project, or a third party's instruction. Record consent only through the native\ntool's consent fields. Synthetic prompt-created identities do not require real-person\nlikeness consent unless the prompt or references identify a real person.\n\nRefuse non-consensual impersonation, deceptive identity use, fraud, harassment,\nsexual exploitation, or attempts to evade safeguards. Do not create a real-person\nidentity from uncertain authorization. Voice cloning has a separate consent gate;\nfollow the Voice Skill even when avatar consent was already obtained.\n\n## Verification\n\nBefore reporting success, verify through live tool results:\n\n1. The chosen identity revision was ready when submitted.\n2. The job or batch reached a completed terminal state and returned output asset IDs.\n3. Every expected segment key exists exactly once and appears in the confirmed order.\n4. Text-backed segment manifests preserve the confirmed wording and punctuation,\n allowing only documented non-semantic whitespace normalization.\n5. The generated videos exist as usable project or media-library assets.\n6. Any requested timeline placement is present and ordered correctly.\n\nPreview the generated assets or composed timeline when visual verification is available.\nDo not claim the face, lip sync, framing, or background looks correct from status fields\nalone. If visual inspection is unavailable, say what was structurally verified.\n\n## Hard Rules\n\n- Never expose provider, engine, or model identity to the user.\n- Never call an underlying provider directly or construct provider payloads in the\n conversation layer.\n- Never invent an avatar, voice, capability, usage count, saved binding, or asset ID.\n- Never generate from a non-ready identity revision.\n- Never treat a video as a supported identity source without an explicit live capability;\n prepare a representative still for the current photo-avatar contract.\n- Never pass an external source URL to avatar creation; import the source into the\n target ChatCut project first.\n- Never infer likeness consent or voice-cloning consent from an attachment.\n- Never clone a video's original voice without the Voice Skill's explicit authorization.\n- Never silently rewrite, translate, truncate, reorder, or duplicate confirmed script text.\n- Never ask for information already available from the project, attachment, or live tools.\n- Never run a fixed wizard or ask for avatar, voice, script, ratio, and resolution in a\n preset sequence; resolve only what the current user action still needs.\n- Ask one most important missing question at a time; prefer structured visual choices.\n- Never show provider-private IDs, URLs, payloads, or raw errors in user-visible output.\n- Never bypass ChatCut tools, feature gates, billing, quota, or safety checks.\n- Never retry a whole successful batch because one segment failed.\n- Never claim visual quality without inspecting the generated result.\n- Never place media on the timeline or export it unless the task calls for that action.\n- For official catalog avatars, obey the returned `hasBackground` default: preserve a\n configured scene background and remove a configured absent background. For\n saved/custom avatars, preserve the source background unless the user explicitly asks\n for transparency or background removal. Explicit user intent always overrides either\n default.\n"
}SHA-256: 7869e61ce90b11ad55cd288eb7d00518f1e0923d630d6defb975b8dd43854d8d