sampling-bluesky-zeitgeist — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited sampling-bluesky-zeitgeist (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
⚠️ 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/nullExecute 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/nullParse 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.htmlThen 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/nullThis 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:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.