Agent skill

Fastly Compute Async Request Reliability

by divinevideo in divinevideo/divine-mobile

Fix silent failures in Fastly Compute@Edge when using sendasync for fire-and-forget requests.

MPL-2.0Auto-check passedBackend & APIs

Install Fastly Compute Async Request Reliability

skills CLI
$ npx skills add divinevideo/divine-mobile --skill fastly-compute-async-request-reliability -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install divinevideo/divine-mobile fastly-compute-async-request-reliability --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/divinevideo/divine-mobile.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/fastly-compute-async-request-reliability .claude/skills/fastly-compute-async-request-reliability && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
fastly-compute-async-request-reliability
GitHub stars
266
Token cost
~1.9k tokens
SKILL.md length
716 words
Files
1
Skills in repo
103
Repo updated
First seen
Licence
MPL-2.0

At a glance

Fix silent failures in Fastly Compute@Edge when using sendasync for fire-and-forget requests.

  • Works in 5 steps: Use synchronous send() instead of… → When synchronous is too slow, use a… → Always verify backend existence → …
  • Background tasks (migrations
  • SKILL.md covers Problem, Context / Trigger Conditions, Solution and Verification, plus 2 more sections
  • Calls curl; reaches divine-transcoder-xxxx.run.app and upload.divine.video

What it does

Fastly Compute Async Request Reliability is an agent skill from divinevideo/divine-mobile. Fix silent failures in Fastly Compute@Edge when using sendasync for fire-and-forget requests. Use when: (1) Background tasks (migrations, webhooks, notifications) triggered from Compute never complete, (2) sendasync PendingRequest is immediately dropped, (3) Fire-and-forget pattern works locally but fails in production, (4) An async trigger "logs as triggered" but the target service never receives the request (especially after renaming backend constants — the URL hostname is cosmetic, the backend name determines…

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering Webhooks. The licence is MPL-2.0.

When your agent uses it

  • Background tasks (migrations
  • Notifications) triggered from Compute never complete
  • Sendasync PendingRequest is immediately dropped
  • Fire-and-forget pattern works locally but fails in production

Example prompts

  • “logs as triggered”
  • “/fastly-compute-async-request-reliability”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Use synchronous send() instead of send_async() for critical operations
  2. When synchronous is too slow, use a caching layer
  3. Always verify backend existence
  4. Beware: the URL hostname is cosmetic — the backend name decides routing
  5. Never silently swallow backend errors for important operations

What it can do on your machine

Read from SKILL.md and the folder at commit 4c622be. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • divine-transcoder-xxxx.run.app
    • upload.divine.video

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Fastly Compute Async Request Reliability loads about 1.9k tokens when it runs. Until then it costs about 197 tokens; SKILL.md has 716 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~197
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from divinevideo/divine-mobile at commit 4c622be, republished under its MPL-2.0 licence (© divinevideo). 716 words, ~1,921 tokens.

Download SKILL.mdSave it as .claude/skills/fastly-compute-async-request-reliability/SKILL.md (or your agent's skills folder).
name
fastly-compute-async-request-reliability
description
Fix silent failures in Fastly Compute@Edge when using send_async for fire-and-forget requests. Use when: (1) Background tasks (migrations, webhooks, notifications) triggered from Compute never complete, (2) send_async PendingRequest is immediately dropped, (3) Fire-and-forget pattern works locally but fails in production, (4) An async trigger "logs as triggered" but the target service never receives the request (especially after renaming backend constants — the URL hostname is cosmetic, the backend name determines routing, so a global rename can silently reroute calls to the wrong service). Also covers silent backend-not-found errors when FALLBACK_BACKENDS or other backend constants reference names not configured in the Fastly dashboard.
author
Claude Code
version
1.1.0
date
2026-04-05

Fastly Compute Async Request Reliability

Problem

Fire-and-forget HTTP requests from Fastly Compute@Edge using send_async silently fail because the worker process can terminate before the async request reaches the backend. Additionally, backend names referenced in code but not configured in the Fastly dashboard cause silent failures that are easy to miss.

Context / Trigger Conditions

  • Background migration, webhook, or notification triggered via req.send_async(backend)
  • The PendingRequest returned by send_async is immediately dropped (not awaited)
  • The main response is sent to the client, causing the Compute worker to terminate
  • Error is swallowed with let _ = ... or match ... { Err(_) => ... }
  • Works in local testing (fastly compute serve) but fails in production
  • Backend name in code doesn't match any backend in fastly backend list --service-id

Solution

1. Use synchronous send() instead of send_async() for critical operations
rust
// BAD: Fire-and-forget — worker terminates before request completes
match req.send_async(BACKEND) {
    Ok(_pending) => {
        // PendingRequest dropped here — request likely never completes!
        Ok(())
    }
    Err(e) => { /* ... */ }
}

// GOOD: Synchronous send — waits for response
match req.send(BACKEND) {
    Ok(resp) => {
        let status = resp.get_status();
        if status.is_success() {
            eprintln!("[MIGRATE] Success for {}", hash);
        } else {
            eprintln!("[MIGRATE] Backend returned {}", status);
        }
        Ok(())
    }
    Err(e) => {
        eprintln!("[MIGRATE] Failed: {}", e);
        Ok(()) // Don't fail the main request
    }
}
2. When synchronous is too slow, use a caching layer

If a VCL caching layer fronts Compute (service chaining), the extra latency from synchronous send only affects cache misses. Subsequent requests hit the cache. This makes synchronous send acceptable for operations like migration triggers.

3. Always verify backend existence
bash
# List backends configured on the service
fastly backend list --service-id YOUR_SERVICE_ID --version latest

# Add missing backend
fastly backend create --service-id YOUR_SERVICE_ID --version latest --autoclone \
  --name cdn_divine --address cdn.divine.video --port 443 \
  --use-ssl --ssl-sni-hostname cdn.divine.video --override-host cdn.divine.video

Check that every backend name in your Rust code (req.send("backend_name")) has a corresponding entry in the Fastly dashboard. The fastly.toml [local_server.backends] section is for local dev only — it does NOT create production backends.

4. Beware: the URL hostname is cosmetic — the backend name decides routing

In Fastly Compute, req.send(backend_name) / req.send_async(backend_name) ignores the URL's hostname for routing purposes. The backend's dashboard configuration (address, override_host, TLS SNI) determines where the request actually lands. This means two different Cloud Run services that happen to share a backend constant will both deliver to whichever address that one backend is wired to — and the call site that looked correct because its URL said service-A.run.app will actually hit service-B.

This bites hardest after a global rename. Example: a refactor replaces CLOUD_RUN_BACKEND with UPLOAD_SERVICE_BACKEND across the whole file via sed-style search-and-replace. Most call sites were legitimately targeting the upload service, so they still work. But one call site was doing POST https://divine-transcoder-XXXX.run.app/transcode and the rename points it at the upload service backend — the request gets a nginx 404 from the upload service, send_async returns Ok (backend accepted the connection), and the eprintln!("[HLS] Triggered on-demand transcoding for {}", hash) log line is a false positive. The transcoder never sees the request. Videos pile up in an "in progress" state for days.

How to catch this class of bug:

  1. When you see a rename of a backend constant, grep for every call site and verify the URL hostname matches what the new backend is configured to route to:

    bash
    grep -n "send(\|send_async(" src/*.rs
    grep -n "BACKEND: &str" src/*.rs  # find constant definitions

    Any call site where format!("https://{}/...", SOMETHING_ELSE) doesn't match the backend's dashboard address/override_host is a silent misroute.

  2. Probe the "wrong" destination directly from the outside with curl using a synthetic payload. If you get a 404 or 405 from nginx/the wrong service, you've found a misroute. Example:

    bash
    curl -X POST https://upload.divine.video/transcode -H 'Content-Type: application/json' -d '{"hash":"0"*64}'
    # HTTP 404 <- wrong service, backend misrouted
  3. If you own more than one Cloud Run service, define one backend per service (transcoder_backend, upload_service, transcriber_backend) and never collapse them just because both are *.run.app. The override_host on each backend pins its destination regardless of URL.

  4. Switch fire-and-forget triggers that you care about to synchronous send() at least during investigation — a real non-2xx response from the wrong service makes the bug visible immediately instead of hiding behind send_async.

Show full SKILL.md (172 more words)Show less
5. Never silently swallow backend errors for important operations
rust
// BAD: Silent failure
let _ = trigger_migration(&hash, &source);

// GOOD: Log the error even if you don't fail the request
if let Err(e) = trigger_migration(&hash, &source) {
    eprintln!("[MIGRATE] Failed for {}: {}", hash, e);
}

Verification

  1. Check Compute logs for the migration/webhook success messages
  2. Verify the side effect actually happened (e.g., blob exists in GCS after migration)
  3. fastly backend list --service-id ID --version latest shows all expected backends

Example

In Divine Blossom, the on-demand migration from Bunny CDN to GCS never worked because:

  1. cdn_divine backend was never configured in the Fastly dashboard (only in fastly.toml)
  2. send_async for the Cloud Run migration request was dropped before completion
  3. Both errors were silently swallowed with let _ = ...

Fix: Added cdn_divine backend via CLI, changed send_async to send, added logging.

Notes

  • fastly.toml [local_server.backends] only configures backends for fastly compute serve
  • Production backends must be configured via dashboard or CLI (fastly backend create)
  • In Fastly Compute, once the main response body starts streaming to the client, the worker can be terminated at any time — async requests in flight may be cancelled
  • If you need true fire-and-forget, consider calling an external queue (Cloud Tasks, PubSub) instead of direct HTTP

© divinevideo, MPL-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/fastly-compute-async-request-reliability of divinevideo/divine-mobile.

Open the folder on GitHubat commit 4c622be

Compare with similar skills

Fastly Compute Async Request Reliability next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Fastly Compute Async Request Reliability compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Fastly Compute Async Request Reliability this skilldivinevideo/divine-mobile266—~1.9kAutomated safety check: PassMPL-2.0
Novu Design Workflownovuhq/novu40k—~2.6kAutomated safety check: PassCustom licence
Stripe Appsfossasia/eventyay1.7k2 repos~3.6kAutomated safety check: PassApache-2.0
Golivemikehasa/golive-skill1.2k—~13kAutomated safety check: NotesMIT
Dingtalk Messageagentscope-ai/ReMe3.6k—~1.6kAutomated safety check: PassApache-2.0
PR Review Provideryansongda/pay5.4k—~2.4kAutomated safety check: PassMIT

Similar skills

  • Design notification workflows the Novu way — choose channels, set severity, decide when a workflow is critical, configure digests, and route based on subscriber state.

    40k GitHub stars~2.6k tokensUpdated today
    Backend & APIsAuto-check passed
  • Stripe Apps

    fossasia/eventyay

    A skill your agent uses when building, modifying, or reviewing a Stripe App — or when the user describes something that implies one (e.g.

    1.7k GitHub starsUsed in 2 repos~3.6k tokens
    Backend & APIsAuto-check passed
  • Golive

    mikehasa/golive-skill

    Take an agent-written app from repo to live production on the user's OWN accounts, with providers they choose (hosting, database, auth, payments, email, domain/DNS).

    1.2k GitHub stars~13k tokensUpdated 4 days ago
    Backend & APIsAuto-check: notes
  • Dingtalk Message

    agentscope-ai/ReMe

    钉钉消息发送技能。支持企业内部机器人(批量单聊/群聊)和 Webhook 自定义机器人两种接入方式,支持多机器人管理,支持文本、Markdown、链接、ActionCard、FeedCard等多种消息类型。

    3.6k GitHub stars~1.6k tokensUpdated 2 days ago
    Backend & APIsAuto-check passed
  • PR Review Provider

    yansongda/pay

    A skill your agent uses when reviewing PRs that add or modify a payment Provider in yansongda/pay - covers plugin pipeline, multi-tenant safety, signature verification, docs, and naming conventions.

    5.4k GitHub stars~2.4k tokensUpdated 9 days ago
    Backend & APIsAuto-check passed
  • Stripe Best Practices

    kanchengw/cnllm

    Guides Stripe integration decisions — API selection (Checkout Sessions vs PaymentIntents), Connect platform setup (Accounts v2, controller properties), billing/subscriptions, Treasury financial…

    175 GitHub starsUsed in 3 repos~925 tokens
    Backend & APIsAuto-check passed

More from divinevideo/divine-mobile

All 103 skills in this repo
  • Fix ArgoCD ExternalSecret deployment failing with "namespace X is not permitted in project Y".

    266 GitHub stars~931 tokensUpdated today
    Auto-check passed
  • Art Direct

    divinevideo/divine-mobile

    Art direction for any content — reads text, PDF, Word, HTML, PPT, then proposes 2-3 creative directions with photography style, mood, and visual language.

    266 GitHub stars~4.8k tokensUpdated today
    Auto-check passed
  • Async Await Null Race Condition

    divinevideo/divine-mobile

    Fix "Null check operator used on a null value" errors when an object is set to null during an async await.

    266 GitHub stars~881 tokensUpdated today
    Auto-check passed
  • AWS V4 Signing Custom Headers Gcs

    divinevideo/divine-mobile

    Add custom metadata headers (x-amz-meta-) to AWS v4 signed requests for GCS S3-compatible API.

    266 GitHub stars~1k tokensUpdated today
    Auto-check passed
  • Bash Herestring Newline Secrets

    divinevideo/divine-mobile

    Fix password/secret authentication failures caused by trailing newlines when creating Google Cloud secrets (or similar) with bash here-strings.

    266 GitHub stars~791 tokensUpdated today
    Auto-check passed
  • Fix silent video/media processing failures caused by URL extraction code that filters on file extensions (.mp4, .webm, .webp).

    266 GitHub stars~1.1k tokensUpdated today
    Auto-check passed

Categories

Questions about Fastly Compute Async Request Reliability

What does Fastly Compute Async Request Reliability do?

Fix silent failures in Fastly Compute@Edge when using sendasync for fire-and-forget requests. Fastly Compute Async Request Reliability is an agent skill from divinevideo/divine-mobile. Fix silent failures in Fastly Compute@Edge when using sendasync for fire-and-forget requests.

When should I use Fastly Compute Async Request Reliability?

Fastly Compute Async Request Reliability fits situations like: background tasks (migrations; notifications) triggered from Compute never complete; sendasync PendingRequest is immediately dropped; fire-and-forget pattern works locally but fails in production.

How do I install Fastly Compute Async Request Reliability in Claude Code?

Run `npx skills add divinevideo/divine-mobile --skill fastly-compute-async-request-reliability -a claude-code`. Or copy the skill folder (.agents/skills/fastly-compute-async-request-reliability in divinevideo/divine-mobile) into .claude/skills/fastly-compute-async-request-reliability in your project. Claude Code loads it when a task matches its description.

How do I install Fastly Compute Async Request Reliability in Codex?

Run `npx skills add divinevideo/divine-mobile --skill fastly-compute-async-request-reliability -a codex`. Or copy the skill folder (.agents/skills/fastly-compute-async-request-reliability in divinevideo/divine-mobile) into .agents/skills/fastly-compute-async-request-reliability in your project. Codex loads it when a task matches its description.

Can I use Fastly Compute Async Request Reliability in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add divinevideo/divine-mobile --skill fastly-compute-async-request-reliability -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/fastly-compute-async-request-reliability, .gemini/skills/fastly-compute-async-request-reliability, .github/skills/fastly-compute-async-request-reliability and .opencode/skills/fastly-compute-async-request-reliability in your project.

What does Fastly Compute Async Request Reliability need to run?

Going by SKILL.md and its folder, Fastly Compute Async Request Reliability needs the command-line tools its instructions call (curl).

Does Fastly Compute Async Request Reliability access the network?

SKILL.md names 2 domains. In commands or code: divine-transcoder-xxxx.run.app and upload.divine.video; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Fastly Compute Async Request Reliability safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Fastly Compute Async Request Reliability use?

Fastly Compute Async Request Reliability is published under the MPL-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Fastly Compute Async Request Reliability use?

About 1.9k tokens (SKILL.md is roughly 7.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Fastly Compute Async Request Reliability?

Skills that share tags, products or a category with Fastly Compute Async Request Reliability: Novu Design Workflow (novuhq/novu, 40k stars), Stripe Apps (fossasia/eventyay, 1.7k stars), Golive (mikehasa/golive-skill, 1.2k stars) and Dingtalk Message (agentscope-ai/ReMe, 3.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Fastly Compute Async Request Reliability?

divinevideo (a GitHub organization) maintains it in divinevideo/divine-mobile, which has 266 GitHub stars. The repository holds 103 skills in this directory. The repository was last updated on October 8, 2026.

Source: divinevideo/divine-mobile on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.