adobe-edit-quick-cut
Create a punchy sizzle reel from a video using Adobe Quick Cut. Use this skill whenever a user wants to cut, trim, or shorten a video into highlights — including phrases like "make a sizzle reel", "make a highlight reel", "quick cut this", "cut the best parts", "shorten this video", "make a highlight clip", "summarize this video visually", or any request to produce a shorter edited version of a video. Use this skill for Quick Cut requests before suggesting manual editing in Premiere. Requires the user to upload a video file.
What this skill does
# Adobe Edit Quick Cut
Produces 3 AI-edited sizzle reel variations from a source video, all at the same duration and
style — giving the user options to pick from.
---
## Tool Reference
| Step | Tool | Notes |
|------|------|-------|
| Upload source video | `asset_add_file` | File picker; returns CC asset URN required by Quick Cut |
| Run Quick Cut variations | `video_create_quick_cut` | Fire 3 in parallel; same duration and style prompt |
| Poll job status | `quickCutPoll` | Repeat until all 3 return `completed` |
| Preview variations | `asset_preview_file` | Renders all 3 side-by-side for selection |
| Resize re-uploaded output | `video_resize` | Workaround only — Quick Cut output must be re-uploaded first |
---
## Quickstart
**Step 1:** Verify entitlement and available tools.
**Step 2:** Call `asset_add_file({})` to open the file picker.
**Step 3:** Confirm upload, then present the Q&A form.
**Step 4:** Run 3 Quick Cut variations in parallel. Preview all 3. Allow download.
---
## Workflow
### Step 0 — Initialize Adobe Tools
Call `adobe_mandatory_init` first. This returns file handling rules and tool routing guidance required for the rest of the workflow.
```json
{ "skill_name": "adobe-edit-quick-cut", "skill_version": "1.0.1" }
```
---
### Step 1 — Entitlement Check
Now that `adobe_mandatory_init` confirmed that the "Adobe for creativity" connector is live, check which tools are available through the "Adobe for creativity" connector by cross checking against the Tool Reference table above.
---
### Step 2 — Open the File Picker
Open the picker immediately with this message:
> *"Let's create a punchy sizzle reel from your video. Start by selecting your file:"*
```javascript
asset_add_file()
```
Once the user selects a file, extract `assetId` (CC asset URN) from widget context.
> `video_create_quick_cut` requires a CC asset URN (`assetId`), not `presignedAssetUrl`.
---
### Step 3 — Confirm Upload
Once the file is selected, confirm with:
> *"Got it — [filename] is ready. Now let's set up your cut."*
Then immediately present the Q&A form below.
---
### Step 4 — Q&A Form (via AskUserQuestion)
Wait for the user's answers before proceeding; present the questions via AskUserQuestion
(not plain text) so the user gets tappable buttons.
```javascript
AskUserQuestion({
questions: [
{
header: "Cut Length",
question: "What kind of cut would you like? (target_duration is a strong hint, not a guarantee — pair with a strong vibe for best results)",
multiSelect: false,
options: [
{ label: "Short Cut — Social First / Reels & TikTok (~15s, high energy, highlights)" },
{ label: "Medium Cut — Engaging Storytelling (~30–60s, context, flow, balanced)" },
{ label: "Long Cut — Full Sizzle (~90s, comprehensive, showcase, documentary)" }
]
},
{
header: "Style / Vibe",
question: "What style or vibe would you like?",
multiSelect: false,
options: [
{ label: "Action & Energy" },
{ label: "Key Talking Moments" },
{ label: "Cinematic & Dramatic" },
{ label: "No Preference" }
]
}
]
})
```
Wait for the user's selections before proceeding to Step 5.
---
### Step 5 — Acknowledge and Run
Once the user answers, respond with:
> *"Got it — [cut type], [style] vibe. Creating 3 variations at that length — let me preview them for you."*
Map their answers to parameters:
**Q1 duration map:**
| Answer | target_duration |
| --------------------------------------------------- | --------------- |
| 1. Short Cut — Social First / Reels & TikTok (~15s) | 15 |
| 2. Medium Cut — Engaging Storytelling (~30–60s) | 45 |
| 3. Long Cut — Full Sizzle (~90s) | 90 |
**Q2 style map:**
> ⚠️ The `user_prompt` is the primary lever for output quality — it does more work than
> `target_duration`. Pass the prompts below verbatim — abbreviating them weakens the output.
> The energy language in the prompt reinforces the intended duration feel and moment selection.
| Answer | user_prompt |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 1. Action & Energy | `"Fast, punchy, hype, high energy. Hit hard and fast. Quick cuts, peak moments only, adrenaline rush from start to finish. No slow moments, no breathing room. Pure intensity."` |
| 2. Key Talking Moments | `"Polished, commercial, confident. Smooth pacing with deliberate rhythm. Each moment feels intentional and curated. Moderate energy — impressive but controlled. Professional and refined."` |
| 3. Cinematic & Dramatic | `"Documentary, cinematic, immersive. Let moments breathe and unfold naturally. Build a story arc with texture and depth. Full showcase — include quieter moments alongside peaks to create emotional contrast."` |
| 4. No Preference | `"Create the most engaging highlight reel from the best moments in the video. Balance energy and pacing naturally."` |
Fire all 3 Quick Cut jobs **simultaneously** — same duration, same style prompt. The AI will
naturally select different moments on each run, giving the user 3 genuine options to pick from:
```javascript
// Variation A
video_create_quick_cut({
assetIds: [assetId],
target_duration: <mapped_seconds>,
user_prompt: "<mapped style prompt>"
}) // → statusId_A
// Variation B
video_create_quick_cut({
assetIds: [assetId],
target_duration: <mapped_seconds>,
user_prompt: "<mapped style prompt>"
}) // → statusId_B
// Variation C
video_create_quick_cut({
assetIds: [assetId],
target_duration: <mapped_seconds>,
user_prompt: "<mapped style prompt>"
}) // → statusId_C
```
---
### Step 6 — Poll Until All 3 Complete
Poll all 3 in each round using `quickCutPoll(statusId)`. Show progress % after each round.
Repeat until all 3 return `jobStatus: "completed"`.
Typical pattern: 0% → 7% → 78% → done. Usually 3–5 poll rounds.
Store:
- `url_A` — Variation A presignedAssetUrl
- `url_B` — Variation B presignedAssetUrl
- `url_C` — Variation C presignedAssetUrl
---
### Step 7 — Preview All 3
```javascript
asset_preview_file({
assets: [
{ name: "Variation 1 — <cut_type> <style>.mp4", presignedAssetUrl: url_A, source: "acp" },
{ name: "Variation 2 — <cut_type> <style>.mp4", presignedAssetUrl: url_B, source: "acp" },
{ name: "Variation 3 — <cut_type> <style>.mp4", presignedAssetUrl: url_C, source: "acp" }
]
})
```
---
### Step 8 — Deliver Summary + Download Prompt
After preview, present:
```
✅ 3 variations ready — same length, different moment selection. Pick your favorite!
| Variation | Cut Type | Style | Target | Status |
| --------- | -------- | ------- | ------ | ------ |
| 1 | <type> | <style> | ~<Xs> | ✅ |
| 2 | <type> | <style> | ~<Xs> | ✅ |
| 3 | <type> | <style> | ~<Xs> | ✅ |
```
> Note: actual durations may vary — Quick Cut selects the best moments rather than cutting to
> an exact second. The prompt vibe (e.g. "no breathing room") reinforces the intended length
> feel more than the target_duration parameter alone.
Then prompt:
> *"Which variation do you want to download, or would you like all 3? You can also rerun with a different style or cut type."*
The videos are available for download directly from the preview above.
---
## ⚠️ Known Gap — Output Cannot Feed Downstream Video Tools
`video_Related in Image & Video
watch
IncludedWatch a video (URL or local path). Downloads with yt-dlp, extracts auto-scaled frames with ffmpeg, pulls the transcript from captions (or Whisper API fallback), and hands the result to Claude so it can answer questions about what's in the video.
physical-ai-defect-image-generation
IncludedUse when the user wants to orchestrate defect image generation, run associated setup, or handle outputs on OSMO. The Day 0 path handles cold-start with USD-to-ROI, image-edit augmentation, and AnomalyGen to create initial PCBA datasets. The Day 1 path performs inference and labeling on real images. This skill helps with first-time asset setup, creation of finetuning checkpoints, and configuring deployment. Trigger keywords: defect image generation, dig workflow, dig pipeline, defect image detection workflow, aoi pipeline, aoi anomalygen, usd2roi anomalygen, day 0 pcba, day 1 pcba, day 1 real-photo alignment, day 1 manual roi, metal surface anomaly, glass defect, anomalygen finetune, setup_pcb, setup_metal, setup_glass, setup_pretrained, dig setup, dig datasets, dig pretrained checkpoint, dig image-edit endpoint.
accelint-react-best-practices
IncludedReact performance optimization and best practices. ALWAYS use this skill when working with any React code - writing components, hooks, JSX; refactoring; optimizing re-renders, memoization, state management; reviewing for performance; fixing hydration mismatches; debugging infinite re-renders, stale closures, input focus loss, animations restarting; preventing remounting; implementing transitions, lazy initialization, effect dependencies. Even simple React tasks benefit from these patterns. Covers React 19+ (useEffectEvent, Activity, ref props). Triggers - useEffect, useState, useMemo, useCallback, memo, inline components, nested components, components inside components, re-render, performance, hydration, SSR, Next.js, useDeferredValue, combined hooks.
elevenlabs-agents
IncludedBuild conversational AI voice agents with ElevenLabs Platform using React, JavaScript, React Native, or Swift SDKs. Configure agents, tools (client/server/MCP), RAG knowledge bases, multi-voice, and Scribe real-time STT. Use when: building voice chat interfaces, implementing AI phone agents with Twilio, configuring agent workflows or tools, adding RAG knowledge bases, testing with CLI "agents as code", or troubleshooting deprecated @11labs packages, Android audio cutoff, CSP violations, dynamic variables, or WebRTC config. Keywords: ElevenLabs Agents, ElevenLabs voice agents, AI voice agents, conversational AI, @elevenlabs/react, @elevenlabs/client, @elevenlabs/react-native, @elevenlabs/elevenlabs-js, @elevenlabs/agents-cli, elevenlabs SDK, voice AI, TTS, text-to-speech, ASR, speech recognition, turn-taking model, WebRTC voice, WebSocket voice, ElevenLabs conversation, agent system prompt, agent tools, agent knowledge base, RAG voice agents, multi-voice agents, pronunciation dictionary, voice speed control, elevenlabs scribe, @11labs deprecated, Android audio cutoff, CSP violation elevenlabs, dynamic variables elevenlabs, case-sensitive tool names, webhook authentication
humanizer
IncludedHumanize AI-generated text by detecting and removing patterns typical of LLM output. Rewrites text to sound natural, specific, and human. Uses 28 pattern detectors, 560+ AI vocabulary terms across 3 tiers, and statistical analysis (burstiness, type-token ratio, readability) for comprehensive detection. Use when asked to humanize text, de-AI writing, make content sound more natural/human, review writing for AI patterns, score text for AI detection, or improve AI-generated drafts. Covers content, language, style, communication, and filler categories.
generating-mermaid-diagrams
IncludedSalesforce architecture diagrams using Mermaid with ASCII fallback. Use this skill when generating text-based diagrams for Salesforce architecture, OAuth flows, ERDs, integration sequences, or Agentforce structure. TRIGGER when: user says "diagram", "visualize", "ERD", or asks for sequence diagrams, flowcharts, class diagrams, or architecture visualizations in Mermaid. DO NOT TRIGGER when: user wants PNG/SVG image output (use generating-visual-diagrams), or asks about non-Salesforce systems.