kit/plugins/social-media-tools/skills/video-share/SKILL.md
Creates social media copy and a card for a YouTube or Vimeo video. Formats video content for LinkedIn, Twitter, and Bluesky with platform-appropriate messaging. Use when asked to share a video or promote a talk on LinkedIn, Twitter, or Bluesky.
npx skillsauth add shawn-sandy/agentics video-shareInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Draft platform-aware social media copy and generate a styled dark-mode card image for a YouTube or Vimeo video URL.
| Phase | Action |
|-------|--------|
| 0 — Locate | Locate templates/ and derive PLUGIN_DIR |
| 1 — Collect Input | Auto-detect platform from URL; ask target social platform + angle |
| 1c — Reuse check | Scan docs/media/social/ for existing video posts; offer reuse |
| 2 — Fetch Metadata | oEmbed API for title/channel/thumbnail; fallback on 4xx |
| 3 — Draft Copy | Write platform-aware copy |
| 4 — Populate Template | Fill video-card.html; inject {{THUMBNAIL_ZONE}} + {{COPY_PANELS}} |
| 4b — Save | Persistent save to docs/media/social/ |
| 5 — Screenshot | Serve HTML locally; Playwright screenshot |
| 6 — Deliver | Present copy + attach PNG + show saved path |
Run silently:
ls ~/devbox/agentics/kit/plugins/social-media-tools/templates 2>/dev/null && \
echo "$HOME/devbox/agentics/kit/plugins/social-media-tools/templates"
find ~/.claude/plugins -path "*/social-media-tools/templates" -type d 2>/dev/null | head -1
find ~/.claude -path "*/social-media-tools/templates" -type d 2>/dev/null | head -1
Use the first non-empty result as TEMPLATES_DIR. Derive:
PLUGIN_DIR=$(dirname "$TEMPLATES_DIR")
If not found: output "Templates not found. Install the plugin or load it with --plugin-dir." and STOP.
Auto-detect the video platform from the URL:
youtube.com or youtu.be → YouTubevimeo.com → VimeoUse AskUserQuestion to collect whatever is missing. Batch all questions in one call:
| Input | Options | Notes |
|-------|---------|-------|
| VIDEO_URL | Any YouTube or Vimeo URL | Required |
| PLATFORM | LinkedIn, Twitter/X, Bluesky, All sites | Required |
| HOOK_ANGLE | Free text | Optional |
FILE_PREFIX=video
Read $PLUGIN_DIR/references/reuse-check.md and follow its procedure.
Use ToolSearch with select:WebFetch first (silent, no user output), then call WebFetch.
For API endpoints and 4xx fallback, read references/platforms.md.
WebFetch on https://www.youtube.com/oembed?url=VIDEO_URL&format=json — extract title, author_name, thumbnail_urlWebFetch on the original VIDEO_URL — extract og:description4xx: ask user for title and channel via AskUserQuestion. Set thumbnail_url = "".
WebFetch on https://vimeo.com/api/oembed.json?url=VIDEO_URL — extract title, author_name, thumbnail_url, description4xx: same fallback as YouTube.
| Variable | YouTube | Vimeo |
|----------|---------|-------|
| PLATFORM_COLOR | #ff0000 | #1ab7ea |
| PLATFORM_BADGE | "YouTube" | "Vimeo" |
| CTA | "▶ Watch on YouTube" | "▶ Watch on Vimeo" |
For character limits and universal copy rules, read $PLUGIN_DIR/references/platforms.md.
For copy format and filled examples per platform, read references/platforms.md.
Present the draft in a fenced code block labelled with the platform name. Wait for approval.
\n---\n as POST_COPY_TEXT_RAWLINKEDIN_COPY, TWITTER_COPY, BLUESKY_COPY){{THUMBNAIL_ZONE}}thumbnail_url is non-empty:
<div class="video-thumbnail"><img src="THUMBNAIL_URL" alt="Video thumbnail"><div class="play-overlay"><span class="play-icon">▶</span></div></div>
""DESCRIPTION_SNIPPETTruncate description to first 150 characters. If unavailable, use "".
HTML-escape VIDEO_TITLE, CHANNEL, DESCRIPTION_SNIPPET: & → &, < → <, > → >.
Read $PLUGIN_DIR/references/copy-panels.md for markup and escaping rules.
Replace all {{VARIABLE}} placeholders. Write to ~/.claude/tmp/video-share-card.html:
mkdir -p ~/.claude/tmp
TEMP_HTML=video-share-card.html
FILE_PREFIX=video
SLUG_INPUT=$VIDEO_TITLE
Read $PLUGIN_DIR/references/saving-and-delivery.md — Persistent Save section.
Read $PLUGIN_DIR/references/rendering-pipeline.md and follow the full pipeline.
Read $PLUGIN_DIR/references/saving-and-delivery.md — Deliver section.
development
Checks whether the branch's PR is ready and merges it when green. Runs the readiness gate, lint, and an approval prompt. Use when the user asks "merge?" or if a PR is ready to merge.
development
Implements a plan file that already exists. Walks its steps, ticks the spec, re-renders, and runs the completion gates. Use when asked to implement an existing plan.
development
Audits and optimizes CLAUDE.md project memory files. Checks adherence to Claude Code best practices and produces actionable fixes. Use when the user asks to audit, optimize, or diagnose a CLAUDE.md.
development
Converts an HTML artifact or Markdown file into a draft post for a static site. Scopes CSS to keep interactive blocks alive and escapes prose for MDX. Use when asked to turn an artifact into a post.