Subtitle timings come from measured speech or explicit external subtitles; do not substitute shot cut points or manual timing estimates.
When to use
- The user explicitly requests the Jianying capability corresponding to this skill's title and accepts handling via the unified Rust
jianyingCLI. - The user needs an auditable plan, execution, or verification evidence, rather than just a conceptual answer.
- When requirements are not yet clear, first hand off to
jianying-userouting; this skill should not be used to handle other editors, general video knowledge Q&A, or speculative execution lacking necessary materials.
Capability boundaries
- ✅ Can do: Generate a deterministic plan based on real paths and probe results; execute operations in this domain when the capability is
supported; output the evidence level actually achieved. - ⚠️ Requires conditions: Writes must use an isolated copy; costs, external services, and native application actions must have precise approval; playback or export conclusions must have corresponding runtime evidence.
- ❌ Out of scope: Do not automatically install or upgrade the CLI, do not generate Python draft scripts, do not call external headless checkout, do not overwrite source drafts, and do not fabricate resource IDs, media facts, or success states.
Step 1 — Establish a factual baseline
Record the user's goal, absolute paths, host platform, target deliverables, and permitted side effects; when information is insufficient, first provide a read-only diagnostic plan and list the missing facts item by item.
Step 2 — Handshake capabilities
Run version, doctor, and capabilities checks. A satisfying version does not mean the capability is available;partial、external_dependency or missing states must enter a degraded path.
Step 3 — Validate inputs
Probe media, drafts, configuration, or task status; reject nonexistent paths, out-of-range times, unknown schemas, mismatched hashes, and approvals that cannot be bound to a target.
Step 4 — Form a deterministic plan
Write the operations, parameters, output paths, risk levels, confirmation points, and expected evidence into the plan. Order multiple tasks as "read-only facts → reversible writes → external/native actions."
Step 5 — Execute or stop before the gate
Execute only steps that are supported and authorized. When output is ambiguous, times out, or is partially successful, retain the task ID, audit log, and artifacts; do not automatically retry.
Step 6 — Verify and deliver
Run structural validation, then append cold reopen, playback, or native export evidence according to the target; report the actual level, failed fields, recoverable actions, and unverified items.
Rules
- Material durations, dimensions, streams, hashes, and draft versions in the plan must come from tool output.
- Approval must be bound to the command, parameters, target, validity period, and budget; if any field changes, reconfirm.
- User data is processed only within local target paths and the declared external Provider boundaries; unrelated credentials must not be collected, uploaded, or logged.
- When current evidence is insufficient, use
UNVERIFIED、BLOCKEDorAMBIGUOUS; it is forbidden to fill in results by inference.
Gotchas
- Treating version as capability: Always check the specific capability; do not execute directly just because the CLI version is new enough.
- Treating structural validation as final acceptance:
project verifyIt only proves the structural layer; playback and native export require independent evidence. - Modifying the source draft directly: First create an isolated copy and record the input hash; any in-place overwrite request must stop and be changed to a new output.
- Automatic retry for ambiguous: first query the task, audit, and external artifacts; only after confirming no side effects occurred may the user approve a retry.
- Filling in resources or times from memory: resource IDs come from the catalog, times come from probe/ASR/project data; if unobtainable, explicitly block.
- Vaguely asking for more information: first provide an executable read-only plan, then explicitly list the gaps such as paths, delivery level, or authorization.
Verification Checklist
- CLI identity, version, and capability have been recorded.
- All input paths, media facts, and hashes are reviewable.
- Write targets are isolated from source drafts, and confirmation points are precisely bound.
- Failure and ambiguous paths retain the task ID, logs, and recovery suggestions.
- Final wording is consistent with the actual evidence level.
Operating Contract
- Trigger conditions: the user needs SRT/ASS import and export, subtitle additions and modifications, styling, translation, or subtitle validation.
- Required capability:
captions.import、captions.style、captions.verify。 - Minimum CLI version:
1.6.0;captions.verifyWhen supported is not reached, you must not claim cold-reopen completion. - Default risk:
reversible_write。 - Input facts: target draft/isolated output, subtitle file encoding and format, time base, language, styling, and safe area.
- Confirmation points: writing to an existing draft, online/paid translation, and overwriting export files are confirmed separately.
- Success evidence:
cold_reopen; structural import only proves structural. - Prohibited actions: you must not generate Python draft scripts, must not call external headless checkout, must not estimate times by hand, create overlapping subtitles, or treat structural validation as playback validation.
Workflow
captions list/getread the current state.- Before import, parse SRT/ASS, rejecting negative times, ends earlier than starts, and unexpected overlaps.
- Use
captions import-srtorcaptions import-assto write an isolated copy. - Use
captions add/set/style/translatefor local modifications; for translation, prefer offline by_id/by_text mapping. captions export-srt/export-assperform a round-trip check, then executeproject verify。- When real acceptance is required, cold-reopen the draft to check fonts, line breaks, safe area, and synchronization.
For command selection, styling, and recovery, see references/workflow.md. For isolated editing Jobs, see examples/minimal-job.json。
Progressive Disclosure
- On first execution, load normal path to obtain the end-to-end sequence.
- When encountering failure or unknown status, load failure recovery and error recovery table。
- When the user requests overreach, overwriting, or automatic retry, load boundary refusal。
- Before delivery, complete verification checklistitem by item; you must not claim completion based only on a plan or the existence of files.