Novu Design Workflow
novuhq/novu
Design notification workflows the Novu way — choose channels, set severity, decide when a workflow is critical, configure digests, and route based on subscriber state.
Fix silent failures in Fastly Compute@Edge when using sendasync for fire-and-forget requests.
$ npx skills add divinevideo/divine-mobile --skill fastly-compute-async-request-reliability -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install divinevideo/divine-mobile fastly-compute-async-request-reliability --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "fastly-compute-async-request-reliability" agent skill from https://github.com/divinevideo/divine-mobile/tree/main/.agents/skills/fastly-compute-async-request-reliability into .claude/skills/fastly-compute-async-request-reliability/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fastly-compute-async-request-reliability", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/divinevideo/divine-mobile/tree/main/.agents/skills/fastly-compute-async-request-reliabilityType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add divinevideo/divine-mobile --skill fastly-compute-async-request-reliability -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install divinevideo/divine-mobile fastly-compute-async-request-reliability --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/divinevideo/divine-mobile.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/fastly-compute-async-request-reliability .agents/skills/fastly-compute-async-request-reliability && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "fastly-compute-async-request-reliability" agent skill from https://github.com/divinevideo/divine-mobile/tree/main/.agents/skills/fastly-compute-async-request-reliability into .agents/skills/fastly-compute-async-request-reliability/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fastly-compute-async-request-reliability", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add divinevideo/divine-mobile --skill fastly-compute-async-request-reliability -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install divinevideo/divine-mobile fastly-compute-async-request-reliability --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/divinevideo/divine-mobile.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/fastly-compute-async-request-reliability .cursor/skills/fastly-compute-async-request-reliability && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "fastly-compute-async-request-reliability" agent skill from https://github.com/divinevideo/divine-mobile/tree/main/.agents/skills/fastly-compute-async-request-reliability into .cursor/skills/fastly-compute-async-request-reliability/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fastly-compute-async-request-reliability", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/divinevideo/divine-mobile.git --path .agents/skills/fastly-compute-async-request-reliability--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add divinevideo/divine-mobile --skill fastly-compute-async-request-reliability -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install divinevideo/divine-mobile fastly-compute-async-request-reliability --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/divinevideo/divine-mobile.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/fastly-compute-async-request-reliability .gemini/skills/fastly-compute-async-request-reliability && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "fastly-compute-async-request-reliability" agent skill from https://github.com/divinevideo/divine-mobile/tree/main/.agents/skills/fastly-compute-async-request-reliability into .gemini/skills/fastly-compute-async-request-reliability/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fastly-compute-async-request-reliability", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install divinevideo/divine-mobile fastly-compute-async-request-reliabilityInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add divinevideo/divine-mobile --skill fastly-compute-async-request-reliability -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/divinevideo/divine-mobile.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/fastly-compute-async-request-reliability .github/skills/fastly-compute-async-request-reliability && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "fastly-compute-async-request-reliability" agent skill from https://github.com/divinevideo/divine-mobile/tree/main/.agents/skills/fastly-compute-async-request-reliability into .github/skills/fastly-compute-async-request-reliability/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fastly-compute-async-request-reliability", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add divinevideo/divine-mobile --skill fastly-compute-async-request-reliability -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install divinevideo/divine-mobile fastly-compute-async-request-reliability --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/divinevideo/divine-mobile.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/fastly-compute-async-request-reliability .opencode/skills/fastly-compute-async-request-reliability && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "fastly-compute-async-request-reliability" agent skill from https://github.com/divinevideo/divine-mobile/tree/main/.agents/skills/fastly-compute-async-request-reliability into .opencode/skills/fastly-compute-async-request-reliability/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fastly-compute-async-request-reliability", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
fastly-compute-async-request-reliabilityFix 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. 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.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 4c622be. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
curlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
divine-transcoder-xxxx.run.appupload.divine.videoFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from divinevideo/divine-mobile at commit 4c622be, republished under its MPL-2.0 licence (© divinevideo). 716 words, ~1,921 tokens.
.claude/skills/fastly-compute-async-request-reliability/SKILL.md (or your agent's skills folder).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.
req.send_async(backend)PendingRequest returned by send_async is immediately dropped (not awaited)let _ = ... or match ... { Err(_) => ... }fastly compute serve) but fails in productionfastly backend list --service-idsend() instead of send_async() for critical operations// 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
}
}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.
# 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.videoCheck 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.
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:
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:
grep -n "send(\|send_async(" src/*.rs
grep -n "BACKEND: &str" src/*.rs # find constant definitionsAny call site where format!("https://{}/...", SOMETHING_ELSE) doesn't match
the backend's dashboard address/override_host is a silent misroute.
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:
curl -X POST https://upload.divine.video/transcode -H 'Content-Type: application/json' -d '{"hash":"0"*64}'
# HTTP 404 <- wrong service, backend misroutedIf 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.
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.
// 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);
}fastly backend list --service-id ID --version latest shows all expected backendsIn Divine Blossom, the on-demand migration from Bunny CDN to GCS never worked because:
cdn_divine backend was never configured in the Fastly dashboard (only in fastly.toml)send_async for the Cloud Run migration request was dropped before completionlet _ = ...Fix: Added cdn_divine backend via CLI, changed send_async to send, added logging.
fastly.toml [local_server.backends] only configures backends for fastly compute servefastly backend create)© 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
Just SKILL.md in .agents/skills/fastly-compute-async-request-reliability of divinevideo/divine-mobile.
Open the folder on GitHubat commit 4c622be
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Fastly Compute Async Request Reliability this skilldivinevideo/divine-mobile | 266 | — | ~1.9k | Automated safety check: Pass | MPL-2.0 | |
| Novu Design Workflownovuhq/novu | 40k | — | ~2.6k | Automated safety check: Pass | Custom licence | |
| Stripe Appsfossasia/eventyay | 1.7k | 2 repos | ~3.6k | Automated safety check: Pass | Apache-2.0 | |
| Golivemikehasa/golive-skill | 1.2k | — | ~13k | Automated safety check: Notes | MIT | |
| Dingtalk Messageagentscope-ai/ReMe | 3.6k | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| PR Review Provideryansongda/pay | 5.4k | — | ~2.4k | Automated safety check: Pass | MIT |
novuhq/novu
Design notification workflows the Novu way — choose channels, set severity, decide when a workflow is critical, configure digests, and route based on subscriber state.
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.
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).
agentscope-ai/ReMe
钉钉消息发送技能。支持企业内部机器人(批量单聊/群聊)和 Webhook 自定义机器人两种接入方式,支持多机器人管理,支持文本、Markdown、链接、ActionCard、FeedCard等多种消息类型。
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.
kanchengw/cnllm
Guides Stripe integration decisions — API selection (Checkout Sessions vs PaymentIntents), Connect platform setup (Accounts v2, controller properties), billing/subscriptions, Treasury financial…
divinevideo/divine-mobile
Fix ArgoCD ExternalSecret deployment failing with "namespace X is not permitted in project Y".
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.
divinevideo/divine-mobile
Fix "Null check operator used on a null value" errors when an object is set to null during an async await.
divinevideo/divine-mobile
Add custom metadata headers (x-amz-meta-) to AWS v4 signed requests for GCS S3-compatible API.
divinevideo/divine-mobile
Fix password/secret authentication failures caused by trailing newlines when creating Google Cloud secrets (or similar) with bash here-strings.
divinevideo/divine-mobile
Fix silent video/media processing failures caused by URL extraction code that filters on file extensions (.mp4, .webm, .webp).
Categories
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.
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.
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.
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.
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.
Going by SKILL.md and its folder, Fastly Compute Async Request Reliability needs the command-line tools its instructions call (curl).
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.
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.
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.
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.
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.
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.