yt-dlp-downloader Skill Design Rationale¶
yt-dlp-downloader is a probe-first framework for generating and, when possible, executing yt-dlp download commands. Its core idea is: the hard part of high-quality yt-dlp assistance is determining what the user is actually trying to download, what formats and subtitles are really available, whether a watch URL might accidentally trigger a full playlist, whether the current environment can safely execute the command, and ensuring that a recommended command is never presented as a successful download unless it actually ran. That is why the skill turns Scope Classification, Dependency, Ambiguity Resolution, Probe, Auth Safety, Execution Mode, and Execution Integrity into one fixed seven-gate workflow.
1. Definition¶
yt-dlp-downloader is used for:
- generating and, when conditions permit, executing yt-dlp download commands,
- handling single videos, fixed resolution downloads, playlists, audio extraction, subtitles, authenticated content, live streams, and SponsorBlock use cases,
- making format and subtitle decisions from probes rather than guessed format IDs or language codes,
- applying safe defaults such as archive, resume, no-overwrite, retries, and truncated output paths,
- and reporting execution status in a structured way so users know whether the command actually ran and what to do next.
Its output is not just the final command. It also includes:
- scenario,
- inputs,
- probe decision or probe-result summary,
- final command,
- execution status,
- output location,
- next step.
From a design perspective, it is closer to a download-command governance framework than to a quick yt-dlp parameter prompt.
2. Background and Problems¶
The skill is not solving "models do not know yt-dlp." It is solving the fact that default download advice tends to drift into several high-risk distortions:
- guessing format IDs, subtitle languages, or resolution selectors without probing,
- accidentally downloading a full playlist when the user only wanted one video,
- reporting or implying success even though no command was actually executed.
Without an explicit process, the most common failures cluster into eight categories:
| Problem | Typical consequence |
|---|---|
| No scenario classification first | playlist, subtitle, audio-extraction, and SponsorBlock rules get mixed together |
| No dependency check first | merge / extract / embed commands are recommended even when ffmpeg is unavailable |
| No ambiguity resolution | the assistant does not know whether the user wants the full playlist, one video, or which subtitle language |
| No probe step | format IDs, subtitle availability, and playlist scale are guessed |
| No auth-safety boundary | cookies drift into paywall / DRM / circumvention advice |
| No safe defaults | re-downloads, title-path overflow, and poor recovery under unstable networks |
| Execution status is not stated honestly | users think the file was downloaded when only a command was recommended |
| No structured report for complex requests | commands can be reused less safely because users cannot tell why the flags were chosen |
The design logic of yt-dlp-downloader is to answer "what scenario is this, what is still ambiguous, which formats and subtitles really exist, whether auth is required, whether the environment can execute, and how to degrade honestly if it cannot" before assembling the final command.
3. Comparison with Common Alternatives¶
It helps to compare it with a few common alternatives:
| Dimension | yt-dlp-downloader skill | Asking a model to "give me a yt-dlp command" | Writing a familiar command from memory |
|---|---|---|---|
| Scenario classification | Strong | Weak | Weak |
| Probe discipline | Strong | Weak | Weak |
| Playlist safety guard | Strong | Weak | Weak |
| Safe defaults | Strong | Weak | Weak |
| Auth-safety boundary | Strong | Medium | Weak |
| Honest degradation | Strong | Weak | Weak |
| Structured execution report | Strong | Weak | Weak |
| Multi-scenario overlay handling | Strong | Medium | Weak |
Its value is not only that the command looks more complete. Its value is that download advice becomes safer, more auditable, and more reusable under real-world conditions.
4. Core Design Rationale¶
4.1 Scope Classification Comes First¶
The first step in yt-dlp-downloader is not command generation. It is mapping the request into one primary scenario:
- Single video,
- Fixed resolution,
- Playlist,
- Audio extraction,
- Subtitles,
- Authenticated,
- Live stream,
- SponsorBlock.
If the request is composite, the skill requires selecting a primary scenario first, then overlaying secondary flags, and documenting the composition in the Output Contract's Scenario field.
This is critical because many yt-dlp mistakes are not caused by a single wrong flag. They come from mixing multiple scenarios without choosing a stable base template. A request like "playlist + 720p + SponsorBlock + Chinese subtitles" is not just four independent wishes. It needs a Playlist base template first, then resolution, SponsorBlock, and subtitle logic layered on top. The evaluation's most complex case showed exactly this: the skill's advantage was not basic syntax, but combination discipline.
4.2 The Dependency Gate Must Be Up Front¶
Before execution, the skill requires checking:
yt-dlp --version,ffmpeg -version.
It also explicitly states that ffmpeg is required for:
- merging video + audio,
- embedding subtitles,
- extracting audio,
- embedding thumbnails,
- and
--merge-output-format.
It further adds the yt-dlp-ejs + JS runtime requirement for full YouTube support, which explains a major class of extraction failures.
This is mature design because many failures that look like "command problems" are really environment problems. Without this gate, it is easy for an assistant to misdiagnose the issue as a bad URL or bad format choice instead of first checking the dependency chain.
4.3 The Ambiguity Resolution Gate Is So Strict¶
yt-dlp-downloader explicitly stops to ask when:
- no URL is provided,
- the output directory is missing and matters for batch/playlist downloads,
- "good quality" is too vague,
- a playlist URL is given but full-playlist vs single-video intent is unclear,
- subtitles are requested without a language,
- multiple URLs are given without clear batching intent.
This matters because download tasks often look simpler than they are. One missing clarification can completely change the correct command. The canonical example is the YouTube watch URL with list=: if intent is not clarified, a single-video request can silently turn into full-playlist behavior.
4.4 The Probe Gate Is the Core of the Skill¶
The Probe Gate is the skill's most distinctive design choice. It explicitly requires:
yt-dlp -Ffor specific resolution / codec / format requests,yt-dlp --list-subswhen subtitle availability matters,--flat-playlistwhen playlist scale is unclear or large,--simulate --skip-downloadwhen auth or redirects may matter.
And it only permits probe skipping in the simple case of a public single video where the user already accepts default best quality.
This is the methodological core of the skill. In the evaluation, Probe decision compliance was one of the clearest skill-only deltas: with-skill was 3/3, without-skill was 0/3. That shows the real increment is not "knowing more yt-dlp flags." It is knowing when experience-based guessing is not acceptable.
4.5 --no-playlist Is a Safety Rule While --yes-playlist Is an Explicit-Intent Rule¶
The skill constrains playlist behavior at two different levels:
- single-video watch URLs default to
--no-playlist, which is explicitly written into the skill's Safety Rules, - full playlist intent should be made explicit with
--yes-playlist, which serves as the corresponding explicit-intent decision rule.
This matters because it addresses one of the highest-risk baseline gaps found in the evaluation. YouTube watch URLs frequently carry &list= parameters, and omitting --no-playlist can trigger large accidental downloads with major time, bandwidth, and storage costs.
That is why --no-playlist is not treated as a cosmetic recommendation. It is a safety rule. --yes-playlist matters for the opposite reason: when the user truly wants the full playlist, the command should say so explicitly instead of relying on ambiguous default behavior.
4.6 Safe Defaults Are Fixed as a Default Contract¶
The skill's defaults are not a loose grab bag. They are a stable set:
--download-archive,--continue,--no-overwrites,--retries 10 --fragment-retries 10,-o "<dir>/%(title).200s [%(id)s].%(ext)s".
For batches, troubleshooting, or unstable networks, it also recommends tee-based logging.
This is mature design because many yt-dlp problems are not failures to run the command at all. They are failures of repeatability and resilience:
- a rerun downloads everything again,
- interrupted downloads do not resume,
- long titles overflow the path,
- large runs fail without useful logs.
In the evaluation, archive / retries / truncation were among the most stable skill-only advantages. That shows these defaults improve execution reliability rather than just command syntax.
4.7 The Auth Safety Gate Separates "Can" from "Should"¶
The skill supports cookies and browser-session extraction, but it also sets very clear boundaries:
- cookies are only for content the user is authorized to access,
--cookies-from-browseris preferred,- users must never paste raw cookies into chat,
- cookies must never be described as a way to bypass paywalls, DRM, or geographic restrictions.
This is important because yt-dlp guidance naturally risks drifting into technically possible but inappropriate assistance. yt-dlp-downloader preserves legitimate authenticated-access workflows while blocking abusive framing at the rule level.
4.8 Execution Mode and Honest Degradation Are Separate Layers¶
yt-dlp-downloader auto-selects among:
- Full,
- Degraded,
- Blocked.
And it explicitly defines them as:
- Full: dependencies are present and the command actually ran, so success / failure details can be reported,
- Degraded: only a recommended command and assumptions may be given; no success, file size, or format availability claims,
- Blocked:
yt-dlpis missing, or the request involves DRM / unauthorized access, so the blocker must be stated directly. Other missing prerequisites, such asffmpegfor a merge/extract/embed request, should be reported as request-specific blockers with install guidance rather than widening the mode definition itself.
This is especially important because download assistance easily creates a false sense of execution: the command looks complete, so the user assumes the job is done. The skill forces a clean boundary between "command recommendation" and "command execution."
4.9 The Execution Integrity Gate Is the Final Honesty Constraint¶
The skill explicitly requires:
- if the command ran, report destination, success/failure, and relevant stderr/stdout summary,
- if it did not run, say
Not run in this environment.
This is critical because assistants often produce language that sounds like successful execution even when no shell execution happened. In the evaluation, without-skill missed degraded-mode declaration, while with-skill made "not run" part of the contract itself. This lets users distinguish between:
- whether the command looks reasonable,
- whether the command actually executed.
4.10 Output Contract as a Second Major Design Axis¶
yt-dlp-downloader requires every response to include seven fields:
- Scenario
- Inputs
- Probe
- Final command
- Execution status
- Output location
- Next step
The value of this is not just tidiness. It makes a complex download command auditable:
- which scenario template was chosen,
- which inputs were user-provided versus assumed,
- whether probing was skipped or performed and why,
- what to change next if the command fails.
In the evaluation, Output Contract compliance was a clear skill-only difference: with-skill 3/3, without-skill 0/3.
4.11 Multi-Scenario Overlay Handling Is So Valuable¶
Real yt-dlp requests are often combinations such as:
- playlist + resolution cap,
- subtitles + embedding,
- audio extraction + subtitle saving,
- SponsorBlock + MP4 output.
yt-dlp-downloader does not flatten these into an arbitrary pile of flags. It insists on:
- choosing a base scenario template first,
- overlaying secondary scenario rules second,
- documenting the composite relationship in the report.
That gives complex requests a stable structure instead of relying on last-step flag improvisation.
4.12 The Real Increment Is Workflow Governance vs. Basic Syntax¶
The evaluation already shows that the baseline model knew a fair amount of basic yt-dlp syntax, including:
bestvideo+bestaudio/best,--audio-format mp3,[height<=720],--sponsorblock-remove,--embed-subs.
The real gaps were elsewhere:
- missing
--no-playlist, - missing
--download-archive, - missing title truncation,
- no Probe framework,
- no Output Contract,
- no awareness that
--write-subsmust pair with--embed-subs, - no honest degraded-mode declaration.
That means the core value of yt-dlp-downloader is not teaching yt-dlp from zero. It is making real download assistance safer, more explicit, and more reproducible.
5. Problems This Design Solves¶
Combining the current SKILL.md, key references, and the evaluation report, the skill solves the following problems:
| Problem type | Corresponding design | Practical effect |
|---|---|---|
| Wrong base template for mixed requests | Scope Classification | Command structure becomes more stable |
| Commands fail because dependencies are missing | Dependency Gate | Failure diagnosis improves |
| User intent is under-specified | Ambiguity Resolution Gate | Fewer misdownloads |
| Formats or subtitles are guessed | Probe Gate | Parameter choice becomes more reliable |
| Single-video intent triggers full-playlist download | --no-playlist / --yes-playlist rules | Safety improves sharply |
| Repeat runs, interrupted transfers, or path issues | Safe defaults | Execution resilience improves |
| Cookie advice drifts out of bounds | Auth Safety Gate | Safety boundaries stay clear |
| Recommended commands look like completed downloads | Execution Integrity + Honest Degradation | Reporting stays honest |
6. Key Highlights¶
6.1 Probe-First Is the Skill's Most Distinctive Design Choice¶
It turns "inspect available formats and subtitles first" into a hard workflow rather than an optional best practice.
6.2 The Playlist Safety Guard Is Exceptionally Practical¶
--no-playlist / --yes-playlist blocks one of the most common and expensive yt-dlp mistakes before execution.
6.3 Safe Defaults Are Core Reliability Infrastructure, Not Decoration¶
Archive, resume, retries, and title truncation directly address repeatability, resilience, and filesystem safety.
6.4 Honest Degradation Rigidly Separates Recommendation from Execution¶
That prevents users from mistaking a suggested command for a completed download.
6.5 The Output Contract Makes Complex Commands Reviewable¶
In multi-scenario requests especially, the Scenario / Probe / Next step fields greatly improve explainability.
6.6 Its Real Increment Is Safety and Process, Not Basic Syntax Knowledge¶
The evaluation already shows that the baseline's basic yt-dlp syntax was often reasonable. The real improvement came from probe discipline, safety defaults, playlist guards, structured reporting, and execution honesty. That means the core value of yt-dlp-downloader is command governance rather than parameter encyclopedism.
7. When to Use It — and When Not To¶
| Scenario | Suitable | Reason |
|---|---|---|
| Single videos, playlists, audio extraction, subtitle downloads | Very suitable | These are core use cases |
| Composite requests such as playlist + 720p + subtitles + SponsorBlock | Very suitable | The overlay model is strong here |
| Auth-required content the user is legitimately allowed to access | Suitable | Auth safety rules are explicit |
| Environments without shell access or without yt-dlp installed | Suitable | Degraded / Blocked modes exist |
| Requests to bypass DRM, paywalls, or unauthorized access restrictions | Not suitable | Explicitly blocked by safety rules |
8. Conclusion¶
The real strength of yt-dlp-downloader is not that it writes longer yt-dlp commands. It is that it systematizes the parts of download assistance that are most likely to go wrong: classify the scenario first, check dependencies, resolve ambiguities, probe actual format and subtitle availability, and then constrain the final command and report with safe defaults, playlist guards, auth safety, and honest degradation.
From a design perspective, the skill expresses a clear principle: the key to high-quality yt-dlp assistance is not knowing more flags, but knowing when probing is mandatory, when the assistant must stop and ask, when the request crosses a safety boundary, and when an unexecuted command must never be presented as a completed result. That is why it is especially well suited to real downloads, batch downloads, and complex composite download requests.
9. Document Maintenance¶
This document should be updated when:
- the seven gates, Defaults, Safety Rules, Honest Degradation, Output Contract, or selective-loading rules in
skills/yt-dlp-downloader/SKILL.mdchange, - key rules in
skills/yt-dlp-downloader/references/scenario-templates.md,decision-rules.md,format-selection-guide.md,safety-and-recovery.md,anti-examples.md, orgolden-examples.mdchange, - the core supporting results in
evaluate/yt-dlp-downloader-skill-eval-report.mdorevaluate/yt-dlp-downloader-skill-eval-report.zh-CN.mdchange.
Review quarterly; review immediately if the probe rules, safe defaults, playlist guards, or execution contract of yt-dlp-downloader change substantially.
10. Further Reading¶
skills/yt-dlp-downloader/SKILL.mdskills/yt-dlp-downloader/references/scenario-templates.mdskills/yt-dlp-downloader/references/decision-rules.mdskills/yt-dlp-downloader/references/format-selection-guide.mdskills/yt-dlp-downloader/references/safety-and-recovery.mdskills/yt-dlp-downloader/references/anti-examples.mdskills/yt-dlp-downloader/references/golden-examples.mdevaluate/yt-dlp-downloader-skill-eval-report.mdevaluate/yt-dlp-downloader-skill-eval-report.zh-CN.md