From releases
Decide whether an image or video found on a release page is editorial content (screenshots, demos, diagrams, product shots) or site chrome (avatars, logos, tracking pixels, decorative badges). Used during parsing to populate a release's media array.
How this skill is triggered — by the user, by Claude, or both
Slash command
/releases:classify-media-relevanceThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Release pages contain two kinds of media: **editorial content** that belongs in the release (screenshots of the feature, demo videos, diagrams explaining a change) and **site chrome** that doesn't (author avatars, nav logos, tracking pixels, decorative separators). This skill governs which items end up in a release's `media[]` array.
Release pages contain two kinds of media: editorial content that belongs in the release (screenshots of the feature, demo videos, diagrams explaining a change) and site chrome that doesn't (author avatars, nav logos, tracking pixels, decorative separators). This skill governs which items end up in a release's media[] array.
The goal is precision-over-recall: a dropped editorial image is recoverable (users click through to the source page), but a kept junk image pollutes the UI and wastes storage.
media[].These checks are deterministic, free, and catch the overwhelming majority of obvious junk. Always run them before invoking this skill. If a pre-check drops an item, no AI call is needed.
px.ads.linkedin.com, t.co, www.facebook.com/tr, analytics.twitter.com, bat.bing.com). Drop with reason tracking domain: <host>.image/png|jpeg|gif|webp|svg+xml|avif, video/mp4|webm). Drop with reason unsupported type.type: "video" references without downloading. Never route through R2 upload or this skill.Everything else — the ambiguous middle where URL patterns overlap between chrome and content — goes through the skill.
The old code treated path substrings like /avatar, /logo, /icon, /badge, /favicon, 1x1 as hard drops. That was wrong often enough to matter: a post titled "New icon set" shipped images under /icons/ that were the actual product. Do not hard-drop on path substrings. Pass them through as weak negative signals and let the classifier weigh them against context.
The one exception: /favicon.ico and exact /favicon* at the site root are always chrome. Keep that single check in code.
For each remaining media item, decide keep or drop based on these signals, in rough order of importance:
Strong keep signals
screenshot-*, demo-*, feature-*, *-hero.png, version numbers in name).cdn.example.com/posts/2026/new-thing.png).Strong drop signals
avatar|profile|author|contributor.logo.svg, wordmark.png, header-bg.jpg, footer-icon.svg)./wp-content/plugins/ or /_next/static/media/ with no posts path — usually framework chrome.Weak / context-dependent
/icon, /icons/ paths — only chrome if the release isn't about icons; keep if the release announces icon/design updates./badge, /badges/ — drop if it's a shields.io CI badge, keep if the release is about achievements/credentials.Return a JSON array, one entry per input item, in the same order:
[
{ "url": "https://...", "decision": "keep", "confidence": "high", "reason": "screenshot of new dashboard, alt text describes feature" },
{ "url": "https://...", "decision": "drop", "confidence": "high", "reason": "author avatar, 80x80 square at top of post" }
]
confidence is high when signals align, low when it's a judgment call. Callers treat low drops conservatively — they may keep low-confidence drops on high-value sources.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub buildinternet/releases-cli --plugin releases