.claude/skills/excalidraw-gen/SKILL.md
Generate excalidraw-style explanation images using Gemini API. Use when the user wants to create visual explanations, diagrams, or illustrations in the hand-drawn excalidraw aesthetic. Supports parallel generation of multiple variations with configurable timeout. Triggers on requests like "generate an excalidraw image", "create a visual explanation", "make a diagram for [concept]", or "illustrate [topic] in excalidraw style".
npx skillsauth add theramjad/ray-os excalidraw-genInstall 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.
ALWAYS pass the entire raw content verbatim as the prompt. Never summarize, paraphrase, or condense the content. Whether it's a single section or a whole file, the full text goes into the generate command as-is (with the white background prefix/suffix wrapped around it). This gives Gemini the richest context to produce accurate visuals.
Don't chunk solely by ## headings. Look for:
Each chunk = one image. A single ## section might produce 2-4 chunks if it covers multiple concepts. When analyzing content, identify these semantic boundaries first, then generate images for each chunk.
Before generating, ask the user which mode they want:
## sections, generate images for ALL sections in parallel using subagentsUse AskUserQuestion with options:
For a single section:
cd .claude/skills/excalidraw-gen && npx ts-node scripts/generate.ts "<entire section content verbatim>" -n 10 -o "/path/to/images/<section-name>"
For an entire markdown file:
## headings (or semantic chunks)images/<section-name-kebab-case>/run_in_background: trueRate limit constraint: Never run more than 2 generation tasks simultaneously. The Gemini API will rate-limit if you exceed this.
Subagent template:
Run this bash command (timeout 900000ms):
cd "/path/to/.claude/skills/excalidraw-gen" && npx ts-node scripts/generate.ts "<entire section content verbatim>" -n 10 -o "/path/to/images/<section-name>"
Batch workflow:
Batch 1: section-1, section-2 → wait for completion
Batch 2: section-3, section-4 → wait for completion
...continue until done
cd .claude/skills/excalidraw-gen && npx ts-node scripts/generate.ts <prompt> [options]
Prompt requirements — CRITICAL:
"CRITICAL: Use a plain white background (#FFFFFF). No gradients, no colors, no textures — pure white only.""Background must be solid white (#FFFFFF), nothing else."Options:
-n, --count — Number of images (default: 5, recommend 10)-o, --output — Output directory (use subfolder per section)-t, --timeout — Timeout per image in seconds (default: 180)-a, --aspect-ratio — Aspect ratio (default: 16:9). Supported: 21:9, 16:9, 4:3, 3:2, 1:1, 9:16, 3:4, 2:3, 5:4, 4:5--image-size — Image size hint (default: 2K)For X/Twitter article cover images, use 21:9 (the closest supported ratio to 5:2). X articles display cover images in a wide cinematic format.
cd .claude/skills/excalidraw-gen && npx ts-node scripts/generate.ts "<prompt>" -n 5 -a 21:9 -o "/path/to/images/<slug>"
Use a bold, high-contrast design with minimal text (3-5 words max). The image must be readable at small sizes in the X feed. Skip the white background instruction for thumbnails — use vibrant colors instead.
After generation completes, add all 10 images to the markdown file under the relevant section. The user picks their favorite(s) later.
Embed format (Obsidian):
![[images/section-name/excalidraw_1.png]]
![[images/section-name/excalidraw_2.png]]
![[images/section-name/excalidraw_3.png]]
![[images/section-name/excalidraw_4.png]]
![[images/section-name/excalidraw_5.png]]
![[images/section-name/excalidraw_6.png]]
![[images/section-name/excalidraw_7.png]]
![[images/section-name/excalidraw_8.png]]
![[images/section-name/excalidraw_9.png]]
![[images/section-name/excalidraw_10.png]]
Place embeds at the end of each section, before the next --- or ## heading.
images/core-insight/, images/kitchen-sink/)npm install in skill folder)GEMINI_API_KEY in .env file (already configured)The assets/ folder contains reference images (reference1-4.png) that define the excalidraw style. These load automatically.
content-media
Edit raw screen recording videos with synced audio. Removes repeated takes, false starts, silence, filler, and [MUSIC] tags to produce a clean final cut. Use when the user provides a raw/unedited MP4 video file and wants it edited down. Triggers on: "edit this video", "cut this video", providing a raw MP4 for editing, or any request to remove bad takes from a recording.
tools
Monitor Twitter/X for trending AI and developer tool discussions, score them, and deliver pre-digested content briefs. Use this skill whenever the user wants to find trending topics on Twitter, check what people are talking about in AI/tech, scout for video ideas from Twitter, or says things like "what's trending", "anything new on Twitter", "find me something to talk about", "scout Twitter", or "what are people saying about X". Also triggers on "monitor layer", "input layer", or "fountainhead" when Twitter is relevant.
development
# /triage — Inbox Triage ## Description Scan all connected communication channels, prioritize items by urgency, and draft responses in your voice. Clear your inbox in minutes. ## Arguments - `quick` — Tier 1 items only, no drafts (fastest) - `digest` — Full scan with summaries, drafts for Tier 1-2 - (no argument) — Full scan with drafts for everything actionable ## Instructions You are running inbox triage for {{YOUR_NAME}}. The goal is to process all incoming messages quickly and surface wh
tools
YouTube data utility — fetch transcripts, metadata, thumbnails, and search for videos. Wraps the Supadata API and yt-dlp into a single CLI tool. Use whenever you need YouTube data like transcripts, video metadata, thumbnail images, or need to search YouTube for videos matching a query. Triggers on any YouTube data fetching need from other skills or direct user requests.