cawcut-vn
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCawCut VN
CawCut VN
The single entry point for every local VN action. The skill owns the VN
conversation and sequencing — whether to open a lightweight preview or build a
rough cut — and the CLI owns draft file generation and app
launching.
cawcut vnSkill files are English-only. Match the user's language in live replies via
, but keep this file and its references in English.
reply_language所有本地 VN 操作的唯一入口。该 skill 负责 VN 对话与流程编排——无论是打开轻量级预览,还是构建粗剪——而 CLI 负责生成草稿文件和启动应用。
cawcut vnSkill 文件仅限英文。 在实时回复中通过 匹配用户的语言,但此文件及其参考资料必须保持英文。
reply_languageReferences
参考资料
- Read references/capabilities.md before proposing
an edit. It is the authority for supported operations, flags, and editing limits. Never promise an effect that is absent there.
cawcut vn - Read references/install.md only when packaging, opening, installing, or troubleshooting delivery to the VN app.
Never edit VN JSON by hand. Use only documented commands.
cawcut vn- 在提出编辑方案前,读取 references/capabilities.md。该文件是受支持的 操作、参数和编辑限制的权威依据。绝不能承诺其中不存在的能力。
cawcut vn - 仅在打包、打开、安装或排查向 VN 应用交付问题时,才读取 references/install.md。
绝不要手工编辑 VN JSON。仅使用有文档说明的 命令。
cawcut vnRefusing what VN cannot do
拒绝 VN 无法完成的内容
references/capabilities.md- Name the missing capability plainly ("cannot remove or mute the audio a source video already carries — no flag does that"), never with a hedge.
cawcut vn - Never let a refusal read as done: no success report for an effect the CLI never applied, no describing the source media as if it had been altered, no hand-edited JSON to fake it.
- Offer the closest supported behaviour, or say the media must be prepared outside this skill and re-supplied as a local file. If nothing close exists, refuse outright instead of substituting another effect, and list whatever is left unimplemented in the edit plan (phase 7).
references/capabilities.md- 明确说出缺少的能力(例如:“无法移除或静音源视频自带的声音——没有任何参数支持此操作”),绝不能含糊其辞。
cawcut vn - 绝不能让拒绝看起来像已经完成:不能为 CLI 从未应用的效果报告成功,不能将源媒体描述成已被修改,也不能通过手工编辑 JSON 来伪造效果。
- 提供最接近的受支持行为;或者说明媒体必须在此 skill 之外准备完成,并重新作为本地文件提供。如果没有任何接近的受支持方案,就直接拒绝,不要擅自替换为其他效果;并在编辑方案(阶段 7)中列出所有未实现的内容。
Asking the user
询问用户
AskUserQuestionAskUserQuestionBootstrap
初始化
Run this silently before the first operation in an AI session:
cawcut- If a command already succeeded in this session, skip bootstrap.
cawcut - Otherwise run only . If an update is available, run
cawcut upgrade check --json. If the command is missing, ask the user to install it withcawcut upgrade.npm install -g @ubnt/cawcut - Never run ; VN operations are local.
cawcut auth login
在一个 AI session 中首次执行 操作前,静默完成以下步骤:
cawcut- 如果本 session 中已经成功执行过 命令,则跳过初始化。
cawcut - 否则,仅运行 。如果有可用更新,则运行
cawcut upgrade check --json。如果找不到命令,则请用户通过cawcut upgrade安装。npm install -g @ubnt/cawcut - 绝不运行 ;VN 操作完全在本地执行。
cawcut auth login
Workflow
工作流
Follow the phases in order. Reuse facts already established by the user or an
upstream skill; do not ask the same question twice.
严格按顺序执行各个阶段。复用用户或上游 skill 已经提供的事实;不要重复询问同一个问题。
0. Choose the VN action
0. 选择 VN 操作
This skill is the only place that decides what to do with VN, regardless of
where the media came from:
- The user invokes it directly (or an equivalent request) and supplies their own local image/video/audio files to edit. This is a first-class path, not a fallback — do not wait for or require an upstream skill's output.
/cawcut-vn - An upstream skill (,
cawcut-generate,cawcut-app-run,cawcut-avatar-video) hands off unconditionally after delivering generated media — it does not pre-filter or ask its own VN menu.cawcut-ad-video
- Run — see
cawcut vn statusfor exactly what counts as "usable".references/capabilities.md - If an upstream skill or the user already stated the action (preview-only, or editing), skip the question below and jump straight to the matching branch — this is the same decide-once guard used for every other handoff.
- Otherwise ask with , localized to
AskUserQuestion:reply_language- When VN is usable, offer three choices: open a VN preview and import now (recommended for a quick look), enter the editing flow (build a rough cut), not needed.
- When VN is not usable (not installed, or below ), omit the preview choice — offer only enter the editing flow and not needed. Do not offer a choice that cannot succeed.
VN_MIN_VERSION
Branches:
- Preview and import (only reachable when VN is usable): run
with every supplied local path. Reuse a name the conversation already established (the user named the project, or an upstream skill delivered a titled result); otherwise name it yourself from what the files are. Keep it to a few words — this is the label VN shows in its project list, not a description. Report the project URL and asset count. Stop — do not continue into the editing phases below.
cawcut vn import <path_1> <path_2> ... --title "<name>" --open - Not needed: end without running any command.
cawcut vn - Enter the editing flow: continue to phase 1. This branch never depends on VN being installed — drafting and validating a rough cut is fully local and does not launch the app.
无论媒体来自哪里,该 skill 都是唯一决定如何处理 VN 的地方:
- 用户直接调用它(或等效请求),并提供要编辑的本地图片、视频或音频文件。这是一条一等路径,而不是降级方案——不要等待或要求上游 skill 的输出。
/cawcut-vn - 上游 skill(、
cawcut-generate、cawcut-app-run或cawcut-avatar-video)在交付生成的媒体后,无条件将任务移交给本 skill;它不会预先筛选媒体,也不会询问自己的 VN 菜单。cawcut-ad-video
- 运行 ——关于什么才算“可用”,请严格按照
cawcut vn status判断。references/capabilities.md - 如果上游 skill 或用户已经说明操作类型(仅预览或编辑),则跳过下面的问题,直接进入对应分支——这与其他所有移交流程使用同一套“只决定一次”保护机制。
- 否则,使用 并按照
AskUserQuestion本地化提问:reply_language- VN 可用时,提供三个选项:打开 VN 预览并立即导入(推荐,适合快速查看)、进入编辑流程(构建粗剪)、不需要。
- VN 不可用时(未安装,或版本低于 ),不要提供预览选项——仅提供进入编辑流程和不需要。不要提供无法成功的选项。
VN_MIN_VERSION
分支:
- 预览并导入(仅在 VN 可用时进入):运行 ,并传入每个已提供的本地路径。复用对话中已经确定的名称(用户已命名项目,或上游 skill 交付了带标题的结果);否则,根据文件内容自行命名。名称应保持简短——它是 VN 在项目列表中显示的标签,而不是描述。报告项目 URL 和素材数量。然后停止,不要继续进入下面的编辑阶段。
cawcut vn import <path_1> <path_2> ... --title "<name>" --open - 不需要:结束操作,不运行任何 命令。
cawcut vn - 进入编辑流程:继续执行阶段 1。此分支不依赖 VN 是否安装——草稿的创建和验证完全在本地进行,不会启动应用。
1. Inventory the supplied media
1. 清点所提供的媒体
Before creating or changing a project:
- Resolve every supplied path and classify it as image, video, music, or sound effect. Record known video and audio durations and meaningful content/order cues from the conversation, an upstream generation result when present, filenames, or available local inspection tools. Never invent unseen content.
- Identify missing, unreadable, duplicate, or unsupported files immediately. Note here which videos carry their own soundtrack, and check the user's request against the refusal list while the inventory is fresh — an unsupported ask must be turned down now, not discovered at build time.
- Summarize the usable inventory to the user when it affects the edit.
- Do not generate replacement media. If generation is required, hand off to
or
cawcut-generate, then resume with their output paths.cawcut-app-run
在创建或修改项目之前:
- 解析每个已提供的路径,并将其分类为图片、视频、音乐或音效。记录对话、上游生成结果(如有)、文件名或可用的本地检查工具所提供的已知视频和音频时长,以及有意义的内容和顺序线索。绝不能虚构未见过的内容。
- 立即识别缺失、无法读取、重复或不受支持的文件。在此记录哪些视频自带音轨,并在清单仍清晰时对照拒绝列表检查用户请求——不受支持的请求必须立即拒绝,不能等到构建时才发现。
- 当媒体清单会影响编辑方式时,向用户总结可用素材。
- 不要生成替代媒体。如果需要生成内容,则移交给 或
cawcut-generate,然后使用其输出路径继续。cawcut-app-run
2. Confirm the project shape
2. 确认项目形态
For a new project, explicitly ask the user to choose , , or .
Recommend one from the stated destination, but do not create the project until
the user chooses. Also establish the title, intended platform/use, and target
duration when they are not already known.
9:1616:91:1For a copy of an existing draft, preserve its aspect ratio unless the user asks
for a new project; the CLI cannot change an existing draft's ratio in place.
对于新项目,明确要求用户选择 、 或 。可以根据既定目标推荐一个比例,但在用户选择之前不要创建项目。如果标题、目标平台/用途和目标时长尚不明确,也应一并确认。
9:1616:91:1对于现有草稿的副本,除非用户要求创建新项目,否则保留其宽高比;CLI 无法原地更改现有草稿的宽高比。
3. Recommend feasible editing styles
3. 推荐可行的剪辑风格
Style
风格
Use the inventory and intended use to recommend a style. Offer the recommended
option first and at most two meaningful alternatives:
- Clean narrative — chronological or semantic order, longer readable shots,
restrained transitions. Use
dissolveorfade-blackonly when a transition through color is intended. Fits explanatory or product footage.fade-white - Rhythm montage — shorter usable video ranges, stronger supported transitions, and planned music/SFX cues. Offer only when enough varied footage exists; beat detection and automatic beat sync are not supported.
- Photo story — paced still images and transitions. Fits image-heavy sets.
dissolve
Adapt these rather than forcing a label. Keep every proposal within the
capability reference: no manual crop/reframe, overlays, speed ramps, styled
typography, audio fades, or other unsupported operations.
Before continuing, use to let the user select the editing
style, unless they already named or clearly described one. Put the recommended
style first and label it recommended. Do not silently choose a style from the
inventory or defer this choice to the final plan approval — but offer only
styles this inventory can actually support, and when just one fits, say so in
prose instead of firing a one-option question (see Asking the user).
AskUserQuestion根据媒体清单和预期用途推荐风格。先提供推荐选项,最多再提供两个有意义的替代方案:
- 清晰叙事——按时间顺序或语义顺序排列,使用持续时间较长且易于理解的镜头,以及克制的 转场。只有在需要通过颜色过渡时才使用
dissolve或fade-black。适合讲解类或产品类素材。fade-white - 节奏蒙太奇——使用较短的视频片段范围、更强的受支持转场,并规划音乐和音效提示。仅在有足够且差异丰富的素材时提供;不支持节拍检测和自动节拍同步。
- 照片故事——按节奏排列静态图片并使用 转场。适合图片较多的素材集。
dissolve
应根据实际情况调整上述风格,不要强行套用标签。每个方案都必须符合能力参考文档的限制:不得包含手动裁剪/重构画幅、叠加层、速度渐变、样式化排版、音频淡入淡出或其他不受支持的操作。
继续之前,使用 让用户选择剪辑风格,除非用户已经指定或清楚描述了某种风格。将推荐风格放在首位,并标记为推荐。绝不能根据媒体清单擅自选择风格,也不能将这一决定推迟到最终方案审批时;但只能提供当前素材实际支持的风格。如果只有一种风格适用,应直接用文字说明,而不是发起只有一个选项的问题(参见询问用户)。
AskUserQuestionCanvas fill mode and transitions
画布填充模式和转场
Follow for and transition naming —
apply it, do not restate its reasoning here: default to , and only
switch to when the user explicitly wants the complete source frame kept
visible (call out the resulting letterbox/pillarbox space in the edit plan).
Do not infer merely because the source and project ratios look similar —
inspect their actual pixel ratios. Always name the exact canonical transition
type; never write or invoke the deprecated alias.
references/capabilities.md--scale-modefillfitfitfadeA transition belongs to a boundary, not a clip (see capabilities.md →
Transition model). Resolve "a transition on clip X" to X → X+1 and always write
it that way. Never use ; append every clip first, then
set each boundary with .
add-clip --transitionset-transition --index N关于 和转场命名,请遵循 ——直接执行即可,无需在此重复说明理由:默认使用 ;仅当用户明确希望完整显示源画面时才切换为 ,并在编辑方案中指出由此产生的黑边或pillarbox留白。不要仅因源素材和项目的比例看起来相近就推断应使用 ——应检查它们的实际像素比例。始终使用准确的规范转场类型;绝不能使用或调用已弃用的 别名。
--scale-modereferences/capabilities.mdfillfitfitfade转场属于边界,而不是单个片段(参见 capabilities.md → Transition model)。将“在片段 X 上添加转场”解析为 X → X+1,并始终按此方式书写。绝不能使用 ;先添加所有片段,再通过 设置每个边界。
add-clip --transitionset-transition --index N4. Resolve music and sound effects
4. 处理音乐和音效
Treat background music and sound effects as separate decisions.
- If neither is supplied and the user has not requested silence, ask whether they want to provide local BGM, local sound effects, both, or neither.
- If one category is supplied, ask only about the missing category when it would materially improve the chosen style.
- If the user wants audio, wait for exact local paths. This skill does not find, download, or generate audio by itself.
- Plan audio timing only after the visual sequence and approximate duration are known. Do not claim automatic beat alignment.
- When an audio source is longer than the intended placement, select and show
a source range using /
--trim-start(see--trim-endfor exact trim /references/capabilities.mdsemantics).--duration - Added audio never replaces audio the source clips already carry. When any supplied video has its own soundtrack and the user expects their BGM to replace it, refuse that part here (see Refusing what VN cannot do) and state in the plan that both tracks will play together.
将背景音乐和音效视为两个独立决策。
- 如果两者都未提供,而且用户没有要求静音,询问用户希望提供本地 BGM、本地音效、两者都提供,还是都不提供。
- 如果已经提供其中一类,仅在缺失的那一类能够实质性提升所选风格时进行询问。
- 如果用户需要音频,等待其提供准确的本地路径。此 skill 不会自行查找、下载或生成音频。
- 仅在明确视觉序列和大致时长后再规划音频时序。不得声称能够自动对齐节拍。
- 当音频源比预期放置位置更长时,使用 /
--trim-start选择并展示源范围(准确的裁剪和--trim-end语义参见--duration)。references/capabilities.md - 添加的音频绝不能替换源片段自带的声音。如果任何已提供的视频自带音轨,而用户期望用 BGM 替换它,则在此拒绝该部分(参见拒绝 VN 无法完成的内容),并在方案中说明两条音轨会同时播放。
5. Resolve text
5. 处理文字
A supplied is a separate path. When the user hands over one or more
files, do not ask the questions below — those cues already carry their
own wording and timings. Confirm only the placement (whether to shift the whole
block with ), show the cue count and the resulting time span in the edit
plan, and import with . Never retype, re-time, or re-word the cues, and
never split a file into individual calls.
.srt.srt--atadd-srtadd-textAsk whether the user wants text on this edit — this is a plain opt-in
question and belongs in the flow the same way phase 4 asked about music and
sound effects. Use once the visual sequence and style are
settled: Add text / No text. Skip the question only when the user
already requested text or supplied text content earlier in the conversation.
AskUserQuestionIf they decline, do not ask again — move on to phase 6 with no text.
If they opt in (or already requested text), gather only what implementing it
needs: content, timing, and type (title/subtitle/caption). Do not invent
wording, timing, or type the user has not given or approved — asking whether
they want text at all is not the same as proposing what it should say.
Text is an overlay and never extends the main-track or project duration. Infer
the intended placement from the user's wording; do not append an end-card clip
by default:
- "during the final N seconds", "in the video's last N seconds", or equivalent means overlay the text on the existing final visual clip;
- "for N seconds after all shots", "append a standalone end card", or equivalent explicitly sequential wording means append a separate N-second visual clip, then place the text over that clip;
- when the wording could mean either, ask one focused timing question before presenting the edit plan instead of choosing silently.
Only the second case authorizes an extra main-track clip. Never satisfy an
explicit "after all shots" request by shortening or covering the preceding
shot. Because the CLI cannot create a solid-color clip, require a supplied
end-card image or hand off its generation when that separate clip is requested.
所提供的 对应一条独立路径。 当用户提供一个或多个 文件时,不要询问以下问题——这些字幕提示已经包含各自的文字和时间信息。只需确认放置方式(是否使用 平移整个字幕块),在编辑方案中展示提示数量和最终时间跨度,然后使用 导入。绝不能重新录入、重新计时或改写提示,也绝不能将一个文件拆分成多个 调用。
.srt.srt--atadd-srtadd-text询问用户是否要在此次编辑中加入文字——这是一个简单的选择加入问题,其处理方式与阶段 4 询问音乐和音效相同。在视觉序列和风格确定后,使用 一次:添加文字 / 不添加文字。仅当用户已经要求添加文字,或此前在对话中提供过文字内容时,才跳过此问题。
AskUserQuestion如果用户拒绝,不要再次询问——直接进入阶段 6,并且不添加文字。
如果用户选择加入(或此前已经要求),只收集实现文字所必需的信息:内容、时间和类型(标题/字幕/说明文字)。绝不能虚构用户未提供或未批准的文字、时间和类型——询问是否需要文字,并不等于可以擅自提出文字内容。
文字是叠加层,绝不会延长主时间线或项目时长。根据用户的表述推断预期放置方式;默认不要在末尾附加片尾片段:
- “在最后 N 秒内”“在视频最后 N 秒内”或类似表述,表示将文字叠加在现有的最后一个视觉片段上;
- “在所有镜头结束后持续 N 秒”“附加独立片尾卡”或类似明确表示顺序关系的表述,表示添加一个独立的 N 秒视觉片段,再将文字叠加在该片段上;
- 如果表述可能同时指这两种含义,应在展示编辑方案前提出一个针对性的时序问题,不得擅自选择。
只有第二种情况才允许添加额外的主时间线片段。绝不能通过缩短或遮盖前一个镜头来满足明确的“所有镜头结束后”要求。由于 CLI 无法创建纯色片段,因此当用户要求独立片尾片段时,必须要求其提供片尾图片,或将图片生成任务移交给其他流程。
Font selection
字体选择
Every text type has a default font and point size (see
), but once text is confirmed, ask about the font
too — do not leave it silent. Skip straight to resolving the font when the user
already named or described one; otherwise use with:
references/capabilities.mdAskUserQuestion- Use the default (Recommended) — the type's own default font and point
size; leave /
--font/--font-fileunset.--font-size - Show me some recommendations — run and offer up to 4 candidates (label = family + style, closest to the chosen edit style first and marked (Recommended)).
cawcut vn fonts --json - I'll provide my own font — a font name, or a local file path via the
tool's free-text "Other" option (pass it to ).
--font-file
Pass the user's point size through unchanged — it is the number VN's Font Size
box shows, never a canvas-relative basis. Font flag semantics and portability
are in . Whenever the edit plan includes text, list
its font and point size (phase 7).
references/capabilities.md每种文字类型都有默认字体和默认磅值(参见 ),但确认需要文字后,也必须询问字体选择——不要对此保持沉默。如果用户已经指定或描述了字体,直接进入字体确认环节;否则使用 提供以下选项:
references/capabilities.mdAskUserQuestion- 使用默认值(推荐)——使用该类型自己的默认字体和默认磅值;不设置 /
--font/--font-file。--font-size - 查看一些推荐项——运行 ,并提供最多 4 个候选项(标签 = 字体家族 + 样式;与所选剪辑风格最接近的排在首位,并标记为 (推荐))。
cawcut vn fonts --json - 我会提供自己的字体——提供字体名称,或通过工具的自由文本“Other”选项提供本地文件路径(传给 )。
--font-file
原样传递用户给出的磅值——它就是 VN 的 Font Size 输入框所显示的数值,绝不是相对于画布的基准。字体参数语义和可移植性参见 。只要编辑方案包含文字,就必须列出其字体和磅值(阶段 7)。
references/capabilities.md6. Confirm the cover
6. 确认封面
For a new project, explicitly confirm the cover choice before presenting the
edit plan unless the user already specified it:
- a supplied PNG used as an explicit photo cover via ;
set-cover - another local PNG the user will provide; or
- VN's automatic first-frame cover.
Use for this choice. Recommend a suitable supplied image when
one clearly represents the project; otherwise recommend the automatic first
frame. Do not confuse a timeline opening shot with an explicit VN cover.
AskUserQuestion对于新项目,除非用户已经指定封面,否则在展示编辑方案前明确确认封面选择:
- 通过 使用某个已提供 PNG 作为明确的照片封面;
set-cover - 使用用户稍后提供的另一个本地 PNG;或
- 使用 VN 自动生成的首帧封面。
使用 让用户选择。如果某张已提供的图片能够清晰代表项目,则优先推荐该图片;否则推荐自动首帧封面。不要将时间线的开场镜头与明确的 VN 封面混为一谈。
AskUserQuestion7. Present the edit plan and wait for approval
7. 展示编辑方案并等待批准
Before running , , , , ,
, or , show a concrete plan containing:
initadd-clipadd-audioadd-sound-effectadd-textadd-srtset-transition- project title, aspect ratio, selected style, cover choice, and estimated total duration;
- ordered shots with source path and image duration or video trim range;
- each transition as an explicit boundary , never attached to a single clip;
N → N+1: <type> (<duration>s) - only when text was explicitly requested: title/subtitle/caption content with start time, duration, font, and point size (the same number VN's text panel shows in its Font Size box);
- for a supplied : the file name, cue count, any cues the parser will skip, the resulting time span, and any
.srtshift;--at - BGM and SFX paths with timeline start, source trim range, duration, and volume;
- every request this plan does not implement, as a named refusal or a simplification — including one already refused earlier in the conversation. Never let an unimplemented effect sit in the plan as if it were covered.
A compact timeline table is preferred for multi-shot edits. After showing the
complete plan, always use for the generation confirmation;
do not ask for approval only in prose. Offer these choices, localized to the
user's language:
AskUserQuestion- Create from this plan (Recommended) — approve the displayed plan and begin draft generation.
- Revise the plan — collect the requested changes, update the full plan,
and call again.
AskUserQuestion - Cancel — stop without creating or modifying a draft.
Only the first choice authorizes phase 8. Do not treat silence, an unrelated
reply, or a previously stated general request to “make a video” as approval.
This gate is important because the CLI appends clips and does not support
delete, reorder, or in-place clip editing.
在运行 、、、、、 或 之前,展示一份具体方案,其中包括:
initadd-clipadd-audioadd-sound-effectadd-textadd-srtset-transition- 项目标题、宽高比、所选风格、封面选择和预计总时长;
- 按顺序排列的镜头,包括源路径以及图片时长或视频裁剪范围;
- 每个转场都明确写为边界 ,绝不能挂在单个片段上;
N → N+1: <type> (<duration>s) - 仅当用户明确要求文字时,列出标题/字幕/说明文字的内容、开始时间、时长、字体和磅值(与 VN 文字面板的 Font Size 输入框显示相同的数值);
- 对于已提供的 ,列出文件名、提示数量、解析器将跳过的任何提示、最终时间跨度以及任何
.srt平移;--at - BGM 和 SFX 的路径、时间线开始位置、源裁剪范围、时长和音量;
- 此方案未实现的每项请求,明确列为拒绝或简化处理——包括对话中此前已经拒绝的内容。绝不能让未实现的效果在方案中表现得像是已经涵盖。
对于多镜头编辑,优先使用紧凑的时间线表格。展示完整方案后,始终使用 确认是否生成;不要只用文字询问批准。按照用户的语言提供以下选项:
AskUserQuestion- 根据此方案创建(推荐)——批准已展示的方案并开始生成草稿。
- 修改方案——收集所要求的更改,更新完整方案,然后再次调用 。
AskUserQuestion - 取消——停止操作,不创建或修改草稿。
只有第一个选项才能授权进入阶段 8。不得将沉默、无关回复,或此前笼统提出的“制作视频”请求视为批准。此确认关卡非常重要,因为 CLI 只能追加片段,不支持删除、重排或原地编辑片段。
8. Build and verify the rough cut
8. 构建并验证粗剪
After approval:
- Initialize the draft, or copy an existing draft with .
init --from - Add clips in approved order, using video source trim where planned.
- Apply the approved explicit cover when selected. Add BGM and SFX with the approved timeline start and source trim, then set
every approved transition with (never
set-transition --index N). Add text only when it was explicitly requested and included in the approved plan, and import an approvedadd-clip --transitionwith.srtrather than replaying its cues throughadd-srt.add-text - Run , compare the result against the approved plan, and correct any discrepancy that the CLI can express safely. A transition discrepancy is always correctable in place with
show --json(set-transitionto clear) — never rebuild the draft for a transition. If correction requires removing, retiming, replacing, or reordering a clip, create a fresh draft from the approved plan.--type none - Run . Do not report completion until it passes. Never silently drop a failed asset or substitute an unsupported effect.
validate
获得批准后:
- 初始化草稿,或使用 复制现有草稿。
init --from - 按批准顺序添加片段,并对视频应用方案中指定的源裁剪。
- 如果选择了明确封面,则应用已批准的封面。添加 BGM 和 SFX,并设置已批准的时间线开始位置和源裁剪;随后使用 设置每个已批准的转场(绝不能使用
set-transition --index N)。仅当用户明确要求文字且文字包含在已批准方案中时才添加文字;导入已批准的add-clip --transition时使用.srt,而不是通过add-srt重新创建其提示。add-text - 运行 ,将结果与已批准方案进行比较,并纠正 CLI 能够安全表达的任何差异。转场差异始终可以通过
show --json原地纠正(使用set-transition清除)——绝不能仅因转场问题而重建草稿。如果纠正操作需要移除、重新计时、替换或重排片段,则根据已批准方案创建全新草稿。--type none - 运行 。在验证通过前不得报告完成。绝不能悄悄丢弃失败的素材,也绝不能替换成不受支持的效果。
validate
9. Ask whether to open VN
9. 询问是否打开 VN
Only after matches the plan and passes, run again — do not reuse the phase 0 result, since the user may have
installed or upgraded VN since then (or phase 0 never checked it, because they
went straight into editing).
showvalidatecawcut vn status- VN usable: tell the user the rough cut is complete and ask whether to
open it in VN now.
- Yes: run . If the open fails, the CLI prints why and points at a route that works on that platform — relay that rather than retrying the same command.
cawcut vn project pack --open --project <dir> - No: run so the
cawcut vn project pack --project <dir>deliverable is still ready without launching the app..vn
- Yes: run
- VN not usable: skip the question — there is no working choice to offer.
Run directly, and mention the VN download/upgrade link as an optional aside.
cawcut vn project pack --project <dir>
Report the draft directory, path, duration, clip/audio/text counts, and
any deliberate simplifications. Do not open VN before this final choice.
.vn仅当 的结果与方案一致且 通过后,才再次运行 ——不要复用阶段 0 的结果,因为用户可能在此期间安装或升级了 VN(或者用户直接进入编辑流程,导致阶段 0 从未检查过 VN)。
showvalidatecawcut vn status- **VN 可用:**告知用户粗剪已完成,并询问是否现在在 VN 中打开。
- **是:**运行 。如果打开失败,CLI 会打印原因并指出该平台上可行的处理方式——如实转达,不要重复执行同一条命令。
cawcut vn project pack --open --project <dir> - **否:**运行 ,使
cawcut vn project pack --project <dir>交付文件准备好但不启动应用。.vn
- **是:**运行
- **VN 不可用:**跳过询问,因为此时没有可行选项。直接运行 ,并可顺带提供 VN 下载/升级链接。
cawcut vn project pack --project <dir>
报告草稿目录、 路径、时长、片段/音频/文字数量,以及所有有意做出的简化。在用户完成最终选择前,不要打开 VN。
.vnHandoff boundaries
移交边界
- Media can arrive two ways: the user supplies their own local files directly (treat this as the normal case, not an edge case), or an upstream skill hands off its generated output. When it is the latter, trust its valid paths, reuse any settled aspect, intent, or audio decisions, and trust a pre-decided action (preview vs. editing) instead of re-asking phase 0. In either case, still present the edit plan before timeline mutation.
- A request to only preview a few files, with no rough cut, is phase 0's preview-and-import branch — it stays inside this workflow, it does not hand off elsewhere.
- Keep commands, flags, and paths in English; converse in .
reply_language
- 媒体有两种来源:用户直接提供自己的本地文件(应视为正常情况,而不是边缘情况),或者由上游 skill 移交其生成的输出。对于后者,信任其有效路径,复用已经确定的宽高比、意图或音频决策,并信任预先决定的操作类型(预览还是编辑),不要再次询问阶段 0 的问题。无论属于哪种情况,在修改时间线之前仍须展示编辑方案。
- 如果用户只想预览少量文件而不制作粗剪,应进入阶段 0 的“预览并导入”分支——此流程仍在此工作流内部完成,不会移交给其他地方。
- 命令、参数和路径保持英文;对话则使用 。
reply_language