bluesky-cascade-fetch
Fetch Bluesky seed posts and expand reply-thread cascades in configurable UTC time windows with retries, throttling, transport checks, and structure validation. Use when tasks need social-opinion diffusion signals from Bluesky (query/feed/list/author sources) as JSON/JSONL artifacts for downstream sentiment or viral-cascade analysis.
What this skill does
# Bluesky Cascade Fetch ## Core Goal - Fetch seed posts from Bluesky using one of: - `searchPosts` - `getAuthorFeed` - `getFeed` - `getListFeed` - Expand each seed into a reply cascade with `getPostThread`. - Enforce UTC time-window filters (`start` inclusive, `end` exclusive). - Return machine-readable JSON and optional artifact files. - Keep execution observable with structured logs. ## Required Environment - Configure runtime via environment variables (see `references/env.md`). - Start from `assets/config.example.env`. - Load env values before running commands: ```bash set -a source assets/config.example.env set +a ``` ## Workflow 1. Validate effective configuration. ```bash python3 scripts/bluesky_cascade_fetch.py check-config --pretty ``` 2. Dry-run the fetch plan first. ```bash python3 scripts/bluesky_cascade_fetch.py fetch \ --source-mode search \ --query "environment policy" \ --start-datetime 2026-03-10T00:00:00Z \ --end-datetime 2026-03-11T00:00:00Z \ --max-pages 2 \ --max-posts 50 \ --max-threads 20 \ --dry-run \ --pretty ``` 3. Run fetch with cascade expansion and output artifacts. ```bash python3 scripts/bluesky_cascade_fetch.py fetch \ --source-mode search \ --query "environment policy" \ --search-sort latest \ --start-datetime 2026-03-10T00:00:00Z \ --end-datetime 2026-03-11T00:00:00Z \ --max-pages 5 \ --max-posts 120 \ --max-threads 40 \ --thread-depth 8 \ --thread-parent-height 5 \ --output-dir ./data/bluesky-cascade \ --log-level INFO \ --log-file ./logs/bluesky-cascade-fetch.log \ --pretty ``` ## Built-in Robustness - Retry transient failures (`429/500/502/503/504`) with exponential backoff. - Respect `Retry-After` and fail fast when it exceeds configured cap. - Throttle request rate with minimum request interval. - Enforce run safety caps: - max pages - max posts - max threads - Validate transport: - JSON content-type - UTF-8 decode - JSON object parse - Validate structure: - seed URI/timestamp checks - duplicate/orphan thread-node checks - cascade topology stats (`max_depth`, `max_branching_factor`) ## Scope Decision - Keep the skill atomic and request-driven: - one invocation = one configured windowed fetch task - No built-in scheduler/poller loops. - If periodic polling is needed, orchestrate repeated invocations externally. - If `public.api.bsky.app` returns route-level `403`, the script automatically retries with `--base-url https://api.bsky.app`. Manual override is still allowed. ## References - `references/env.md` - `references/bluesky-api-notes.md` - `references/bluesky-limitations.md` - `references/openclaw-chaining-templates.md` ## Script - `scripts/bluesky_cascade_fetch.py` ## OpenClaw Invocation Compatibility - Keep trigger metadata in `name`, `description`, and `agents/openai.yaml`. - Invoke with `$bluesky-cascade-fetch`. - Keep calls atomic and parameterized by time window and source mode. - Use OpenClaw orchestration (not this script) for recurring jobs. ## OpenClaw Prompt Templates Use these templates directly in OpenClaw and only replace bracketed placeholders. 1. Recon (plan check) ```text Use $bluesky-cascade-fetch. Run: python3 scripts/bluesky_cascade_fetch.py fetch \ --source-mode search \ --query "[QUERY]" \ --start-datetime [YYYY-MM-DDTHH:MM:SSZ] \ --end-datetime [YYYY-MM-DDTHH:MM:SSZ] \ --max-pages [N] \ --max-posts [M] \ --dry-run \ --pretty Return only the JSON result. ``` 2. Fetch (windowed cascade data) ```text Use $bluesky-cascade-fetch. Run: python3 scripts/bluesky_cascade_fetch.py fetch \ --source-mode search \ --query "[QUERY]" \ --search-sort latest \ --start-datetime [YYYY-MM-DDTHH:MM:SSZ] \ --end-datetime [YYYY-MM-DDTHH:MM:SSZ] \ --max-pages [N] \ --max-posts [M] \ --max-threads [K] \ --output-dir [OUTPUT_DIR] \ --pretty Return only the JSON result. ``` 3. Validate (quality gate) ```text Use $bluesky-cascade-fetch. Run: python3 scripts/bluesky_cascade_fetch.py fetch \ --source-mode author-feed \ --actor [HANDLE_OR_DID] \ --start-datetime [YYYY-MM-DDTHH:MM:SSZ] \ --end-datetime [YYYY-MM-DDTHH:MM:SSZ] \ --max-pages 1 \ --max-posts 30 \ --max-threads 10 \ --pretty Check validation_summary.total_issue_count and thread_fetch.success_count. Return JSON plus one-line pass/fail verdict. ```
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.