Agent skill

Divine Relay Video Requirements

by divinevideo in divinevideo/divine-mobile

Fix "blocked: event rejected by relay policy" errors when publishing Kind 34236 (video) events to divine relays.

MPL-2.0Auto-check passed

Install Divine Relay Video Requirements

skills CLI
$ npx skills add divinevideo/divine-mobile --skill divine-relay-video-requirements -a claude-code

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

GitHub CLI
$ gh skill install divinevideo/divine-mobile divine-relay-video-requirements --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/divine-relay-video-requirements .claude/skills/divine-relay-video-requirements && 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
divine-relay-video-requirements
GitHub stars
266
Token cost
~933 tokens
SKILL.md length
288 words
Files
1
Skills in repo
103
Repo updated
First seen
Licence
MPL-2.0

At a glance

Fix "blocked: event rejected by relay policy" errors when publishing Kind 34236 (video) events to divine relays.

  • Works in 2 steps: Inside imeta tag (preferred - NIP-92… → Standalone tag
  • Kind 0 profile events succeed but Kind 34236 fails
  • SKILL.md covers Problem, Context / Trigger Conditions, Root Cause and Solution, plus 5 more sections
  • Reaches thumbnail.jpg and media.divine.video

What it does

Divine Relay Video Requirements is an agent skill from divinevideo/divine-mobile. Fix "blocked: event rejected by relay policy" errors when publishing Kind 34236 (video) events to divine relays. Use when: (1) Kind 0 profile events succeed but Kind 34236 fails, (2) Generic policy rejection with no specific reason, (3) Video events work on other relays but fail on divine relays. The divine relay requires thumbnails for all video events - stricter than NIP-71 spec.

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

The licence is MPL-2.0.

When your agent uses it

  • Kind 0 profile events succeed but Kind 34236 fails
  • Generic policy rejection with no specific reason
  • Video events work on other relays but fail on divine relays

Example prompts

  • “blocked: event rejected by relay policy”
  • “/divine-relay-video-requirements”

Workflow steps

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

  1. Inside imeta tag (preferred - NIP-92 compliant)
  2. Standalone tag

What it can do on your machine

Read from SKILL.md and the folder at commit c3d6f7e. 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

    No scripts in the folder and no shell commands in SKILL.md (its code samples are rust and typescript).

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • thumbnail.jpg
    • media.divine.video

    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

Divine Relay Video Requirements loads about 933 tokens when it runs. Until then it costs about 104 tokens; SKILL.md has 288 words of instructions outside code blocks.

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

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 c3d6f7e, republished under its MPL-2.0 licence (© divinevideo). 288 words, ~933 tokens.

Download SKILL.mdSave it as .claude/skills/divine-relay-video-requirements/SKILL.md (or your agent's skills folder).
name
divine-relay-video-requirements
description
Fix "blocked: event rejected by relay policy" errors when publishing Kind 34236 (video) events to divine relays. Use when: (1) Kind 0 profile events succeed but Kind 34236 fails, (2) Generic policy rejection with no specific reason, (3) Video events work on other relays but fail on divine relays. The divine relay requires thumbnails for all video events - stricter than NIP-71 spec.
author
Claude Code
version
1.0.0
date
2026-01-25

Divine Relay Video Requirements

Problem

Publishing Kind 34236 (short-form video) events to divine relays fails with "blocked: event rejected by relay policy" even though the events comply with NIP-71 spec.

Context / Trigger Conditions

  • Error message: blocked: event rejected by relay policy
  • Kind 0 (profile) events publish successfully to the same relay
  • Kind 34236 events fail on divine relays (wss://relay.poc.dvines.org, wss://relay.dvines.org)
  • Events that work on other relays fail on divine relays

Root Cause

The divine relay (funnelcake) has additional validation beyond NIP-71:

From divine-funnelcake/crates/relay/src/relay.rs:554-564:

rust
// divine.video requires thumbnail for all videos (stricter than NIP-71)
// Accept: thumb tag, thumbnail tag, image tag, or imeta with image field
let has_thumb = event.get_tag("thumb").is_some()
    || event.get_tag("thumbnail").is_some()
    || event.get_tag("image").is_some()
    || has_imeta_with_image(&event);

if !has_thumb {
    // Event rejected
}

Solution

Ensure video events include a thumbnail in one of these formats:

  1. Inside imeta tag (preferred - NIP-92 compliant):

    ["imeta", "url https://...", "m video/mp4", "image https://thumbnail.jpg", ...]
  2. Standalone tag:

    ["thumb", "https://thumbnail.jpg"]
    ["thumbnail", "https://thumbnail.jpg"]
    ["image", "https://thumbnail.jpg"]
Getting Thumbnails from Blossom

Blossom (media.divine.video) auto-generates thumbnails for uploaded videos:

  • Thumbnail URL: https://media.divine.video/{video_sha256}.jpg
  • Generation is async - may take a few seconds after upload
  • Check with HEAD request before assuming availability

Verification

  1. Ensure imeta tag contains image https://... field
  2. Test publication: nak event -k 34236 ... wss://relay.poc.dvines.org
  3. Verify with: nak req -k 34236 -a {pubkey} --limit 1 wss://relay.poc.dvines.org

Example

typescript
// Build imeta with thumbnail
const imetaParts = [
  `url ${videoUpload.url}`,
  "m video/mp4",
  `image ${videoUpload.url}.jpg`,  // Blossom thumbnail URL
  "dim 480x480",
  `x ${videoUpload.sha256}`,
  "duration 6"
];
tags.push(["imeta", ...imetaParts]);

Notes

  • This is divine-specific - other relays may accept videos without thumbnails
  • The generic error message doesn't indicate which validation failed
  • To debug relay rejections: read the relay source code for policy details
  • Other divine relay validations in the same file:
    • Required d tag for addressable events
    • Required title tag
    • Required video source (imeta or url tag)

Debugging Strategy

When getting generic "relay policy" rejections:

  1. Test different event kinds (Kind 0 vs target kind) to isolate the issue
  2. Check if the relay codebase is available (divine repos are at ~/code/divine/)
  3. Search for "reject" or "blocked" in the relay handler code
  4. Look for validation beyond standard NIP requirements
  • Relay validation: divine-funnelcake/crates/relay/src/relay.rs
  • Allowed kinds seed: divine-funnelcake/database/migrations/000015_seed_allowed_kinds.up.sql
  • Relay config: divine-funnelcake/crates/relay/src/config.rs

© 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/divine-relay-video-requirements of divinevideo/divine-mobile.

Open the folder on GitHubat commit c3d6f7e

Compare with similar skills

Divine Relay Video Requirements 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.

Divine Relay Video Requirements compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Divine Relay Video Requirements this skilldivinevideo/divine-mobile266—~933Automated safety check: PassMPL-2.0
Detecting Ntlm Relay With Event Correlationmukul975/Anthropic-Cybersecurity-Skills34k—~8.7kAutomated safety check: PassApache-2.0
Implementing Policy As Code With Open Policy Agentmukul975/Anthropic-Cybersecurity-Skills34k—~2.6kAutomated safety check: NotesApache-2.0
Eventscoreyhaines31/marketingskills54k—~3kAutomated safety check: PassMIT
Configuring Block Policymatlab/simulink-agentic-toolkit1.2k—~959Automated safety check: PassCustom licence
Event Store Designwshobson/agents40k9 repos~828Automated safety check: PassMIT

Similar skills

  • Detecting Ntlm Relay With Event Correlation

    mukul975/Anthropic-Cybersecurity-Skills

    Detect NTLM relay attacks (T1557.001) by correlating Windows Event 4624 LogonType 3 for IP-to-hostname mismatches, identifying Responder/LLMNR poisoning artifacts, auditing SMB/LDAP signing, and…

    34k GitHub stars~8.7k tokensUpdated 1 mo ago
    SecurityAuto-check passed
  • Implementing Policy As Code With Open Policy Agent

    mukul975/Anthropic-Cybersecurity-Skills

    Implements policy-as-code enforcement with Open Policy Agent (OPA) and Gatekeeper for Kubernetes and CI/CD pipelines, covering writing Rego policies, deploying OPA Gatekeeper as a Kubernetes…

    34k GitHub stars~2.6k tokensUpdated 1 mo ago
    DevOps & CloudAuto-check: notes
  • Events

    coreyhaines31/marketingskills

    When the user wants to plan, run, sponsor, speak at, or get pipeline from events — webinars, conferences, trade shows, meetups, dinners, workshops, virtual summits, or user conferences.

    54k GitHub stars~3k tokensUpdated 2 days ago
    Marketing & SEOAuto-check passed
  • Configuring Block Policy

    matlab/simulink-agentic-toolkit

    Guide users through creating and managing .satk/block-policy.json for controlling which blocks the agent can use, which are excluded, and which block parameters the agent should not modify.

    1.2k GitHub stars~959 tokensUpdated 3 days ago
    Testing & QAAuto-check passed
  • Event Store Design

    wshobson/agents

    Designs event stores for event-sourced systems: requirements, a comparison of EventStoreDB, PostgreSQL, Kafka, DynamoDB and Marten, and stream and versioning practices.

    40k GitHub starsUsed in 9 repos~828 tokens
    Backend & APIsAuto-check passed
  • Block Kit

    openclaw/openclaw

    Use proactively for structured or interactive Slack replies, and when asked to author or validate native Slack Block Kit JSON.

    392k GitHub stars~624 tokensUpdated today
    Auto-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

Questions about Divine Relay Video Requirements

What does Divine Relay Video Requirements do?

Fix "blocked: event rejected by relay policy" errors when publishing Kind 34236 (video) events to divine relays. Divine Relay Video Requirements is an agent skill from divinevideo/divine-mobile. Fix "blocked: event rejected by relay policy" errors when publishing Kind 34236 (video) events to divine relays.

When should I use Divine Relay Video Requirements?

Divine Relay Video Requirements fits situations like: kind 0 profile events succeed but Kind 34236 fails; generic policy rejection with no specific reason; video events work on other relays but fail on divine relays.

How do I install Divine Relay Video Requirements in Claude Code?

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

How do I install Divine Relay Video Requirements in Codex?

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

Can I use Divine Relay Video Requirements 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 divine-relay-video-requirements -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/divine-relay-video-requirements, .gemini/skills/divine-relay-video-requirements, .github/skills/divine-relay-video-requirements and .opencode/skills/divine-relay-video-requirements in your project.

What does Divine Relay Video Requirements need to run?

SKILL.md names no scripts, command-line tools or credentials: Divine Relay Video Requirements is instructions for the agent only.

Does Divine Relay Video Requirements access the network?

SKILL.md names 2 domains. In commands or code: thumbnail.jpg and media.divine.video; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Divine Relay Video Requirements 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 Divine Relay Video Requirements use?

Divine Relay Video Requirements 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 Divine Relay Video Requirements use?

About 933 tokens (SKILL.md is roughly 3.7k 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 Divine Relay Video Requirements?

Skills that share tags, products or a category with Divine Relay Video Requirements: Detecting Ntlm Relay With Event Correlation (mukul975/Anthropic-Cybersecurity-Skills, 34k stars), Implementing Policy As Code With Open Policy Agent (mukul975/Anthropic-Cybersecurity-Skills, 34k stars), Events (coreyhaines31/marketingskills, 54k stars) and Configuring Block Policy (matlab/simulink-agentic-toolkit, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Divine Relay Video Requirements?

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 10, 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.