AddThisFeature

Video Trimmer

Let someone set a start and end point on an uploaded video and save the trimmed clip.

involved Editors & Builders

What it adds

A trim step on uploaded video, with a scrubbable timeline, in and out handles, and server-side processing of the result.

What your agent is told to do

5
  1. 1

    Build the trim on top of the app's existing upload path. Size and type limits stay enforced server-side, and if Upload Malware Scanning exists the source file is scanned before any processing job is queued.

  2. 2

    Keep the interface to what the customer needs: a preview, a scrubbable timeline with thumbnails, draggable in and out handles, and numeric time fields for precision. Multi-clip editing and transitions are a different product and should be deferred.

  3. 3

    Do the trimming on the server as a background job and report its state through the app's existing job progress surface rather than a bespoke spinner.

  4. 4

    Keep the source video after trimming, under the app's normal retention and access rules, so a bad cut can be redone without asking the customer to upload again.

  5. 5

    Do not treat trim points as free-form. Either snap the cut to a keyframe or re-encode the affected segment, because cutting mid-frame produces a clip that opens on a frozen or grey first second.

Edge cases it handles

8
  • A cut placed between keyframes gives a clip that starts frozen. Snap to the nearest keyframe and tell the user where the cut actually landed, or re-encode so the requested point is exact.
  • Encoding a long video takes minutes, not seconds. Show real progress, let the user cancel, and make cancellation stop the job rather than just hiding the dialog.
  • Source video arrives vertical, rotated by metadata, or with a variable frame rate. Read the rotation and honour it, and normalise frame rate rather than producing a clip whose audio drifts out of sync.
  • Captions belong to the original timeline. Shift and clip existing caption tracks to the new range, or regenerate them through the app's existing transcription feature if one is present. Leaving the old track attached puts the wrong words on screen.
  • A job that fails halfway leaves partial output and temporary files behind. Clean them up on failure and on cancellation, and never leave a half-encoded file where a finished one is expected.
  • The customer must not be able to overwrite a clip that something else is already using. Save the trim as a new asset or version, and be explicit about which one existing embeds point at.
  • A file the encoder cannot read must fail with a plain explanation of what is unsupported, not a stuck job that sits at zero percent forever.
  • The player needs a reserved aspect ratio and a poster frame so the page does not jump when the video loads, and controls that work from the keyboard.

Definition of done

9
  • A user can set in and out points on the timeline and by typing exact times, and preview the result before saving.
  • Trimming runs as a background job with visible progress and working cancellation.
  • Cut points land on keyframes or are re-encoded, and the saved clip opens on a real frame.
  • Rotated, vertical and variable-frame-rate sources produce correctly oriented clips with audio in sync.
  • Captions are shifted to the new timeline or regenerated, never left misaligned.
  • The source file is retained and the trim is saved as a new asset or version.
  • Failed and cancelled jobs leave no partial files behind.
  • The feature matches the existing design system.
  • No existing functionality is broken.

Related features

How it works

  1. 1

    Copy the link

    Grab the Markdown instruction URL for this feature.

  2. 2

    Give it to your AI

    Paste it into Claude Code, Cursor, v0, Lovable — whatever you build with.

  3. 3

    It inspects, then implements

    Your agent reads your existing app first, then adds the feature to fit it.

Works with your stack

These instructions are written to adapt. They tell the agent to detect your framework, match your existing design system, and reuse what you already have — rather than assuming a particular stack.

Need it tighter than that? Customize the feature and tell it exactly what you're running.