Agent skill

HTTP Video Streaming Headers

by divinevideo in divinevideo/divine-mobile

Fix "Failed to load video" errors when network requests succeed (200/206 status).

MPL-2.0Auto-check passedBackend & APIs

Install HTTP Video Streaming Headers

skills CLI
$ npx skills add divinevideo/divine-mobile --skill http-video-streaming-headers -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install divinevideo/divine-mobile http-video-streaming-headers --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/divinevideo/divine-mobile.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/http-video-streaming-headers .claude/skills/http-video-streaming-headers && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
http-video-streaming-headers
GitHub stars
266
Token cost
~995 tokens
SKILL.md length
320 words
Files
1
Skills in repo
103
Repo updated
First seen
Licence
MPL-2.0

At a glance

Fix "Failed to load video" errors when network requests succeed (200/206 status).

  • Works in 4 steps: Accept-Ranges: bytes (CRITICAL) → Content-Type: video/mp4 (or appropriate… → Content-Length (for full responses) → …
  • Video element shows error but DevTools shows successful requests
  • SKILL.md covers Problem, Context / Trigger Conditions, Solution and Verification, plus 3 more sections
  • Calls curl

What it does

HTTP Video Streaming Headers is an agent skill from divinevideo/divine-mobile. Fix "Failed to load video" errors when network requests succeed (200/206 status). Use when: (1) Video element shows error but DevTools shows successful requests, (2) Videos download correctly via curl but fail in browser, (3) Range requests work but video won't play, (4) Building CDN/media server for video streaming. The root cause is often missing Accept-Ranges header which browsers need for video seeking and streaming.

Its SKILL.md is about 1000 tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering Root cause analysis. The licence is MPL-2.0.

When your agent uses it

  • Video element shows error but DevTools shows successful requests
  • Videos download correctly via curl but fail in browser
  • Range requests work but video wont play
  • Building CDN/media server for video streaming

Example prompts

  • “Failed to load video”
  • “/http-video-streaming-headers”

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Accept-Ranges: bytes (CRITICAL)
  2. Content-Type: video/mp4 (or appropriate MIME type)
  3. Content-Length (for full responses)
  4. For Range Requests (206 Partial Content)

What it can do on your machine

Read from SKILL.md and the folder at commit 4c622be. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • developer.mozilla.org

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

HTTP Video Streaming Headers loads about 995 tokens when it runs. Until then it costs about 113 tokens; SKILL.md has 320 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~113
When it runs · the whole SKILL.md, loaded when a task matches
~995

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from divinevideo/divine-mobile at commit 4c622be, republished under its MPL-2.0 licence (© divinevideo). 320 words, ~995 tokens.

Download SKILL.mdSave it as .claude/skills/http-video-streaming-headers/SKILL.md (or your agent's skills folder).
name
http-video-streaming-headers
description
Fix "Failed to load video" errors when network requests succeed (200/206 status). Use when: (1) Video element shows error but DevTools shows successful requests, (2) Videos download correctly via curl but fail in browser, (3) Range requests work but video won't play, (4) Building CDN/media server for video streaming. The root cause is often missing Accept-Ranges header which browsers need for video seeking and streaming.
author
Claude Code
version
1.0.0
date
2026-01-29

HTTP Video Streaming Header Requirements

Problem

HTML5 video elements fail to play with "Failed to load video" error even though network requests show successful 200/206 responses. The video file downloads correctly when tested with curl, but browsers refuse to play it.

Context / Trigger Conditions

  • Video element fires onerror event despite network success
  • DevTools Network tab shows 200 or 206 status for video requests
  • curl -O <video-url> downloads a valid MP4 file
  • Video plays locally when downloaded
  • Error message is generic: "Failed to load video" or media error code 4

Solution

Required Headers for Video Streaming
  1. Accept-Ranges: bytes (CRITICAL)

    • Tells browser that range requests are supported
    • Without this, browsers may not attempt range requests for seeking
    • Add to ALL video responses, even full (200) responses
  2. Content-Type: video/mp4 (or appropriate MIME type)

    • Must match actual video format
    • Browser uses this to select decoder
  3. Content-Length (for full responses)

    • Required for browser to know file size
    • Enables progress indicators and seeking calculations
    • Note: For 206 responses, this should be partial content size
  4. For Range Requests (206 Partial Content):

    • Content-Range: bytes START-END/TOTAL
    • Status code MUST be 206, not 200
Server Implementation
rust
// Fastly Compute@Edge example
resp.set_header("Accept-Ranges", "bytes");
resp.set_header("Content-Type", "video/mp4");

// For full responses only (not 206):
if resp.get_status() != StatusCode::PARTIAL_CONTENT {
    resp.set_header("Content-Length", file_size.to_string());
}
CDN Considerations
  • Edge caches may strip or modify headers
  • Verify headers reach the client, not just origin
  • Fastly/CloudFront can serve range requests from cached full content
  • Test with curl -I -H "Range: bytes=0-1023" to verify 206 response

Verification

bash
# Check Accept-Ranges header
curl -I https://cdn.example.com/video.mp4 | grep -i accept-ranges
# Expected: accept-ranges: bytes

# Test range request support
curl -I -H "Range: bytes=0-1023" https://cdn.example.com/video.mp4
# Expected: HTTP/2 206 with Content-Range header

# Verify partial download works
curl -H "Range: bytes=0-100" https://cdn.example.com/video.mp4 | wc -c
# Expected: 101 (bytes 0-100 inclusive)

Example

Before (broken):

HTTP/2 200
content-type: video/mp4
x-custom-header: value

Video fails to load in browser.

After (working):

HTTP/2 200
content-type: video/mp4
content-length: 1443199
accept-ranges: bytes

Video plays correctly with seeking support.

Notes

  • Even if your CDN handles range requests automatically, you should still include Accept-Ranges: bytes in the response headers
  • Some browsers are more forgiving than others; Safari often requires proper range support while Chrome may work without
  • HTTP/2 responses may have headers lowercased (this is normal)
  • For HLS/DASH streaming, the manifest and segments all need proper headers
  • Mobile browsers are particularly strict about video headers

References

© divinevideo, MPL-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/http-video-streaming-headers of divinevideo/divine-mobile.

Open the folder on GitHubat commit 4c622be

Compare with similar skills

HTTP Video Streaming Headers next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

HTTP Video Streaming Headers compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
HTTP Video Streaming Headers this skilldivinevideo/divine-mobile266—~995Automated safety check: PassMPL-2.0
Workers Sync Debuggermakenotion/workers-template4391 repos~957Automated safety check: NotesMIT
Engineering Mission PlaybookIntelligent-Internet/zenith334—~8.2kAutomated safety check: PassApache-2.0
Foundry Differential Testsaviggiano/security144—~613Automated safety check: PassMIT
QA Find Bugs MCPbex-co/beancount-io295—~3kAutomated safety check: PassMIT
Laravel Development Workflowsickn33/agentic-awesome-skills47k1 repos~1.4kAutomated safety check: PassMIT

Similar skills

  • Workers Sync Debugger

    makenotion/workers-template

    Official

    Works out why a Workers sync is failing or returning wrong data by reading run logs through the ntn CLI, matching errors to the sync code and proposing fixes.

    439 GitHub starsUsed in 1 repo~957 tokens
    Backend & APIsAuto-check: notes
  • Engineering Mission Playbook

    Intelligent-Internet/zenith

    A skill your agent uses when planning or replanning engineering missions that create, change, port, migrate, integrate, or preserve durable codebase behavior across UI, API, CLI, background jobs…

    334 GitHub stars~8.2k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Foundry Differential Tests

    aviggiano/security

    Create Foundry differential tests comparing production Solidity contracts against an independent reference model.

    144 GitHub stars~613 tokensUpdated 22 days ago
    Backend & APIsAuto-check passed
  • QA Find Bugs MCP

    bex-co/beancount-io

    Hunt bugs in the Beancount.io remote MCP server by driving the real POST /api-gateway/mcp endpoint with JSON-RPC and real MCP clients, checking transport, discovery, credential boundaries, tool and…

    295 GitHub stars~3k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Laravel Development Workflow

    sickn33/agentic-awesome-skills

    Build and fix existing Laravel applications through root-cause diagnosis, repository-native implementation, regression coverage, and risk-based verification.

    47k GitHub starsUsed in 1 repo~1.4k tokens
    Backend & APIsAuto-check passed
  • Debugging Mwaa Workflow

    aws/agent-toolkit-for-aws

    Official

    Diagnoses and root-causes Amazon MWAA workflow failures across Provisioned (Python DAG) and Serverless (YAML workflow) environments.

    2.8k GitHub stars~2.3k tokensUpdated today
    Backend & APIsAuto-check passed

More from divinevideo/divine-mobile

All 103 skills in this repo
  • Fix ArgoCD ExternalSecret deployment failing with "namespace X is not permitted in project Y".

    266 GitHub stars~931 tokensUpdated today
    Auto-check passed
  • Art Direct

    divinevideo/divine-mobile

    Art direction for any content — reads text, PDF, Word, HTML, PPT, then proposes 2-3 creative directions with photography style, mood, and visual language.

    266 GitHub stars~4.8k tokensUpdated today
    Auto-check passed
  • Async Await Null Race Condition

    divinevideo/divine-mobile

    Fix "Null check operator used on a null value" errors when an object is set to null during an async await.

    266 GitHub stars~881 tokensUpdated today
    Auto-check passed
  • AWS V4 Signing Custom Headers Gcs

    divinevideo/divine-mobile

    Add custom metadata headers (x-amz-meta-) to AWS v4 signed requests for GCS S3-compatible API.

    266 GitHub stars~1k tokensUpdated today
    Auto-check passed
  • Bash Herestring Newline Secrets

    divinevideo/divine-mobile

    Fix password/secret authentication failures caused by trailing newlines when creating Google Cloud secrets (or similar) with bash here-strings.

    266 GitHub stars~791 tokensUpdated today
    Auto-check passed
  • Fix silent video/media processing failures caused by URL extraction code that filters on file extensions (.mp4, .webm, .webp).

    266 GitHub stars~1.1k tokensUpdated today
    Auto-check passed

Categories

Questions about HTTP Video Streaming Headers

What does HTTP Video Streaming Headers do?

Fix "Failed to load video" errors when network requests succeed (200/206 status). HTTP Video Streaming Headers is an agent skill from divinevideo/divine-mobile. Fix "Failed to load video" errors when network requests succeed (200/206 status).

When should I use HTTP Video Streaming Headers?

HTTP Video Streaming Headers fits situations like: video element shows error but DevTools shows successful requests; videos download correctly via curl but fail in browser; range requests work but video wont play; building CDN/media server for video streaming.

How do I install HTTP Video Streaming Headers in Claude Code?

Run `npx skills add divinevideo/divine-mobile --skill http-video-streaming-headers -a claude-code`. Or copy the skill folder (.agents/skills/http-video-streaming-headers in divinevideo/divine-mobile) into .claude/skills/http-video-streaming-headers in your project. Claude Code loads it when a task matches its description.

How do I install HTTP Video Streaming Headers in Codex?

Run `npx skills add divinevideo/divine-mobile --skill http-video-streaming-headers -a codex`. Or copy the skill folder (.agents/skills/http-video-streaming-headers in divinevideo/divine-mobile) into .agents/skills/http-video-streaming-headers in your project. Codex loads it when a task matches its description.

Can I use HTTP Video Streaming Headers in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add divinevideo/divine-mobile --skill http-video-streaming-headers -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/http-video-streaming-headers, .gemini/skills/http-video-streaming-headers, .github/skills/http-video-streaming-headers and .opencode/skills/http-video-streaming-headers in your project.

What does HTTP Video Streaming Headers need to run?

Going by SKILL.md and its folder, HTTP Video Streaming Headers needs the command-line tools its instructions call (curl).

Does HTTP Video Streaming Headers access the network?

SKILL.md names 1 domain. As links in the text: developer.mozilla.org. This is read from the text; nothing was executed.

Is HTTP Video Streaming Headers safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does HTTP Video Streaming Headers use?

HTTP Video Streaming Headers is published under the MPL-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does HTTP Video Streaming Headers use?

About 995 tokens (SKILL.md is roughly 4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to HTTP Video Streaming Headers?

Skills that share tags, products or a category with HTTP Video Streaming Headers: Workers Sync Debugger (makenotion/workers-template, 439 stars), Engineering Mission Playbook (Intelligent-Internet/zenith, 334 stars), Foundry Differential Tests (aviggiano/security, 144 stars) and QA Find Bugs MCP (bex-co/beancount-io, 295 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains HTTP Video Streaming Headers?

divinevideo (a GitHub organization) maintains it in divinevideo/divine-mobile, which has 266 GitHub stars. The repository holds 103 skills in this directory. The repository was last updated on October 8, 2026.

Source: divinevideo/divine-mobile on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.