nostr-addressable-event-d-tag-requirement

nostr-addressable-event-d-tag-requirement is a skill for Claude Code, Codex from divinevideo/divine-mobile. It costs 114 tokens per session (1,252 once invoked), scanned A, original, MPL-2.0.

A guide to publishing Nostr parameterized replaceable events, which use a label called a d-tag to identify the versioned item. The tag lets relays replace an existing event instead of storing every update as a duplicate.

In plain words
What is it for?
Use it when publishing or updating Nostr events in the 30000–39999 range, including video and long-form content. It helps create the identifier that makes those events replaceable.
Why use it?
It removes duplicate content when publishing events such as Nostr videos or long-form posts. Without the required label, the relay cannot know which event an update should replace.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: mentions Claude Code; installed under .agents/ (shared by several agents).

Good fit Use it when publishing or updating Nostr events in the 30000–39999 range, including video and long-form content. It helps create the identifier that makes those events replaceable.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/divinevideo/divine-mobile/nostr-addressable-event-d-tag-requirement
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add divinevideo/divine-mobile --skill nostr-addressable-event-d-tag-requirement
Clone the repo
git clone --depth 1 https://github.com/divinevideo/divine-mobile

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for nostr-addressable-event-d-tag-requirement

README.md
[![agentmods](https://agentmods.dev/badge/skills/divinevideo/divine-mobile/nostr-addressable-event-d-tag-requirement/github.svg)](https://agentmods.dev/skills/divinevideo/divine-mobile/nostr-addressable-event-d-tag-requirement)
Your own site
<a href="https://agentmods.dev/skills/divinevideo/divine-mobile/nostr-addressable-event-d-tag-requirement"><img src="https://agentmods.dev/badge/skills/divinevideo/divine-mobile/nostr-addressable-event-d-tag-requirement/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for nostr-addressable-event-d-tag-requirement

Your own site · 80×15
<a href="https://agentmods.dev/skills/divinevideo/divine-mobile/nostr-addressable-event-d-tag-requirement"><img src="https://agentmods.dev/badge/skills/divinevideo/divine-mobile/nostr-addressable-event-d-tag-requirement.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 114 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,252 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00114 $0.01252
Opus 5.5 $0.00046 $0.00501
Sonnet 5.5 $0.00023 $0.00250
Haiku 4.5 $0.00011 $0.00125

Measured 2mo ago against content hash a71d61ea74cd, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

nostr-addressable-event-d-tag-requirement scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.agents/skills/nostr-addressable-event-d-tag-requirement/SKILL.md · 127 lines

How it starts

The opening of the file, as written. The whole thing — 127 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Nostr Addressable Event d-tag Requirement

Problem

When publishing parameterized replaceable events (Kind 30000-39999, including NIP-71 video events Kind 34236), events appear as duplicates on the relay instead of replacing each other. The same content shows up multiple times for the same user.

Context / Trigger Conditions

  • Publishing Kind 30000+ events (parameterized replaceable events)
  • Same video/content appears multiple times in user's feed
  • Events have identical pubkey, kind, and content but different event IDs
  • Relay returns multiple events when you expect one
  • Using NIP-71 (Kind 34236) for video events
  • Using NIP-23 (Kind 30023) for long-form content
  • Any addressable event type showing duplicates

Solution

Root Cause

Parameterized replaceable events (Kind 30000-39999) require a d tag to be addressable. The combination of pubkey + kind + d-tag value forms the unique address. Without a d tag, the relay treats each event as a separate non-replaceable event.

Fix

Always include a d tag with a unique identifier for the content:

// CORRECT - has d tag, will be replaceable
const event = {
  kind: 34236, // NIP-71 video
  pubkey: userPubkey,
  content: "Video description",
  tags: [
    ["d", videoId],  // REQUIRED for addressability
    ["title", "My Video"],
    ["url", "https://..."],
    // ... other tags
  ]
};

// WRONG - missing d tag, creates new event each time
const badEvent = {
  kind: 34236,
  pubkey: userPubkey,
  content: "Video description",
  tags: [
    ["title", "My Video"],  // No d tag!
    ["url", "https://..."],
  ]
};

For NIP-71 Video Events

Use the video's unique identifier (vine_id, video_id, etc.) as the d-tag value:

tags.push(["d", video.id]);

Cleaning Up Existing Duplicates

  1. Fetch all events for the pubkey: { kinds: [34236], authors: [pubkey] }
  2. Identify events without d-tags (these are the duplicates)
  3. Publish NIP-09 deletion events (Kind 5) referencing the bad event IDs
  4. Republish with proper d-tags

Read the full file on GitHub · 127 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2mo ago First seen · 127 lines · 114 tokens per session scan A a71d61ea74cd

Subscribe to this mod's changes

nostr-addressable-event-d-tag-requirement is a skill published in the GitHub repository divinevideo/divine-mobile (264 stars, last pushed today), licensed MPL-2.0. It adds 114 tokens to every session and 1,252 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.

Related

Other skills, from other repositories

code-changes

Workflow for any task that ends in code changes: issue analysis or triage, pull request review comments, features, bug fixes, refactors. Invoke at the start of such a task, before reading or writing code.

JanDeDobbeleer/oh-my-posh · 48 tokens

alchemy-cli

Use the Alchemy CLI (@alchemy/cli) for live blockchain data, transaction lookups, NFT/token/portfolio queries, simulation, tracing/debugging, contract reads/writes, wallet-signed sends, swaps and cross-chain bridges, Solana RPC/DAS plus wallet sends, webhook management, and Alchemy app administration. Preferred…

alchemyplatform/skills · 166 tokens

etherscan-transaction-debugger

Analyze and explain one or two EVM transactions using live Etherscan data and human-verifiable Etherscan evidence links. Use when a user provides a transaction hash or asks what happened, why a transaction failed, which contracts or internal calls were involved, where assets moved, whether a proxy implementation…

etherscan/skills · 155 tokens

cross-environment-semantic-drift

L1 trigger - audits L1/L2 boundary bugs, precompile context assumptions, integer width mismatches at environment boundaries, and EVM-on-non-EVM drift.

PlamenTSV/plamen · 43 tokens

genvm-lint

Validate GenLayer intelligent contracts with the GenVM linter.

internet-court/internet-court-skill · 17 tokens

consensus-math-correctness

L1 trigger - audits consensus arithmetic for truncation, unused bounds, EMA direction, and threshold edge errors.

PlamenTSV/plamen · 30 tokens