sampling-bluesky-zeitgeist/SKILL.md
DEPRECATED - Use browsing-bluesky skill instead. Sample and analyze Bluesky firehose to identify trending topics and content clusters. Use when user asks about "what's happening on Bluesky", "Bluesky trends", "zeitgeist", "firehose analysis", or wants to see real-time topic clusters from the network.
npx skillsauth add oaustegard/claude-skills sampling-bluesky-zeitgeistInstall 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.
⚠️ DEPRECATED: This skill has been consolidated into the browsing-bluesky skill.
Use browsing-bluesky for firehose sampling via the sample_firehose() function.
Capture and analyze multiple windows of Bluesky firehose data, identify content clusters, and present results showing both individual sample windows and aggregate trends.
Install dependencies:
cd /home/claude && npm install ws https-proxy-agent 2>/dev/null
Execute 3 consecutive 10-second samples:
node /mnt/skills/user/sampling-bluesky-zeitgeist/scripts/zeitgeist-sample.js --duration 10 > /home/claude/sample1.json 2>/dev/null
node /mnt/skills/user/sampling-bluesky-zeitgeist/scripts/zeitgeist-sample.js --duration 10 > /home/claude/sample2.json 2>/dev/null
node /mnt/skills/user/sampling-bluesky-zeitgeist/scripts/zeitgeist-sample.js --duration 10 > /home/claude/sample3.json 2>/dev/null
Parse each JSON file and aggregate:
(count / totalDurationSec) * 60Group related terms into thematic clusters. For each cluster:
"trump OR republican OR congress")(totalMentions / totalDurationSec) * 60Copy template and inject DATA:
cp /mnt/skills/user/sampling-bluesky-zeitgeist/assets/zeitgeist-template.html /mnt/user-data/outputs/zeitgeist.html
Then use str_replace to inject the DATA object:
old_str: const DATA = {"aggregate":{"totalPosts":0,"totalDurationSec":30,"avgPostsPerSecond":0,"timestamp":""},"windows":[],"clusters":[],"entities":[],"phrases":[],"languages":{}};
new_str: const DATA = {YOUR_ACTUAL_DATA_OBJECT};
See references/artifact-template.md for the complete DATA schema.
Present the artifact link, then provide a brief prose summary:
Keep summary to 2-3 sentences. The artifact is the main deliverable.
When user asks to refresh/update/sample again:
For comparison, track previous aggregate totals and show delta:
Previous: trump 50/min → Current: trump 62/min (+24%)
When user specifies a topic to monitor (e.g., "track the Lakers game", "what's happening with the drone sightings"):
Run samples with the --filter flag to capture only matching posts:
node zeitgeist-sample.js --duration 15 --filter "lakers" > /home/claude/topic1.json 2>/dev/null
This gives deeper analysis of a specific topic but misses broader context.
Run general samples, then:
In the DATA object, add a monitoredTopic field:
{
"monitoredTopic": {
"query": "lakers",
"totalMentions": 45,
"mentionsPerMin": 90.0,
"trend": "up",
"windowCounts": [12, 15, 18],
"samples": ["Lakers up by 10 in the 4th!", "LeBron with another triple double"]
}
}
At start of conversation:
Mid-conversation:
Follow-up pattern: User: "refresh but focus on the game" → Run new samples, keep monitored topic, update all data
If WebSocket connection fails:
*.bsky.network is in allowed domainsIf sample returns zero posts:
User may request:
development
Write effective instructions for Claude: project instructions, standalone prompts, and skill content. Use when users need help writing prompts, setting up project instructions, choosing between instruction formats, or improving how they communicate with Claude. Covers writing principles, model-aware calibration, and format selection. For building and testing complete skills, use skill-creator instead.
data-ai
Discover and load skills on demand from /mnt/skills/user/. Use when you need a capability but don't know which skill provides it, when the boot-emitted skill list is names-only and you need a full description, or when you want to list the catalog. Verbs are list (names only), search (rank by name/description match against a query), and show (emit the full SKILL.md for a named skill).
documentation
Reads the visual content of slides, pages, and images the way a human would, not just their embedded text. Use when a PPTX or PDF has image slides, screenshots, charts, scanned figures, or flattened-to-image layouts that the built-in pptx/pdf skills read as empty; when asked to transcribe, describe, OCR, or extract what is shown in an image, slide deck, or document page; or when embedded-text extraction returned little or nothing from a visually rich file. Triggers on 'read this deck', 'what's on these slides', 'transcribe', 'OCR', 'extract text from image', 'describe this chart/diagram', .pptx/.pdf/.png/.jpg with visual content.
development
Portrait Mode for SVGs — foveated vectorization with 4-zone selective detail. Combines vision annotations, MediaPipe segmentation/landmarks, and optional saliency. Like phone portrait mode, but vectorized. Use when vectorizing a portrait or photo where subject detail should outrank background detail.