Loading...
Loading...
Configures, manages, and debugs the Fastly CDN platform — covering service and backend setup, caching and VCL, security features like DDoS/WAF/NGWAF/rate limiting/bot management, TLS certificates and cache purging, the Compute platform, and the REST API. Use when working with Fastly services or domains, setting up edge caching or origin shielding, configuring security features, making Fastly API calls, enabling products, or looking up Fastly documentation. Also applies when troubleshooting 503 errors or SSL/TLS certificate mismatches on Fastly, and for configuring logging endpoints, load balancing, ACLs, or edge dictionaries.
npx skill4agent add fastly/fastly-agent-toolkit fastlyfastlycurl -vFastly-Key$(fastly auth show --reveal --quiet | awk '/^Token:/ {print $2}')| Topic | File | Use when... |
|---|---|---|
| DDoS protection | fastly-ddos-protection.md | Enabling/configuring DDoS protection, checking attack status, managing events and rules |
| TLS configuration | tls.md | Setting up HTTPS — Platform TLS (managed certs), Custom TLS (uploaded certs), or Mutual TLS (client auth) |
| Rate limiting | rate-limiting.md | Protecting APIs from abuse — choosing between Edge Rate Limiting, VCL ratecounters, or NGWAF rate rules |
| Bot management | bot-management.md | Detecting/mitigating bot traffic with browser challenges, client-side detections, interstitial pages |
| Cache purging | purging.md | Invalidating cached content — single URL, surrogate key, or purge-all; soft vs hard purge |
| Service management | service-management.md | Creating/managing services, versions, domains, settings; clone-modify-activate workflow |
| VCL services | vcl-services.md | Writing/uploading custom VCL, configuring snippets, conditions, headers, edge dictionaries, or cache/gzip settings |
| Compute | compute.md | Deploying Compute packages, managing config/KV/secret stores, using cache APIs |
| Observability | observability.md | Querying stats, viewing real-time analytics, using domain/origin inspectors, configuring alerts or log explorer |
| Load balancing | load-balancing.md | Configuring backends, directors, pools, or health checks; choosing between backends and pools |
| ACLs | acls.md | Managing VCL ACLs, Compute ACLs, or IP block lists; adding/removing access control entries |
| NGWAF | ngwaf.md | Setting up Next-Gen WAF, managing rules, signals, attack monitoring, or Signal Sciences integration |
| Account management | account-management.md | Managing users, IAM roles, API tokens, automation tokens, billing, or invitations |
| Domains & networking | domains-and-networking.md | Managing domains, DNS zones, domain verification, or service platform networking |
| Logging | logging.md | Configuring logging endpoints — 25+ providers (S3, Splunk, Datadog, BigQuery, etc.) |
| Products | products.md | Enabling/disabling Fastly products via API — universal pattern and product slug catalog |
| API security | api-security.md | Discovering APIs, managing operations, or configuring schema validation for API traffic |
| Other features | other-features.md | Fanout/real-time messaging, IP lists, POPs, HTTP/3, Image Optimizer, events, notifications |
| Edge phase ordering | edge-phases.md | Understanding edge request/response ordering, debugging feature interactions |
curl -sI -H "Host: DESIRED_HOST" https://ORIGIN_ADDRESS/ssl-cert-hostnamessl-sni-hostnameecho | openssl s_client -connect ORIGIN:443 -servername ORIGIN 2>/dev/null | openssl x509 -noout -text | grep -A1 "Subject Alternative Name"Cache-ControlExpiresobj.ttlvcl_hitvcl_deliversub vcl_hit {
if (obj.ttl <= 0s) {
set req.http.X-Grace = "true";
}
}
sub vcl_deliver {
if (req.http.X-Grace) {
set resp.http.X-Grace = "true";
}
}vcl_fetchvcl_delivervcl_deliverset beresp.http.Vary = "Accept-Encoding"sub vcl_fetch {
if (!beresp.http.Vary) {
set beresp.http.Vary = "Accept-Encoding";
} else if (beresp.http.Vary !~ "Accept-Encoding") {
set beresp.http.Vary = beresp.http.Vary ", Accept-Encoding";
}
}return(redirect)sub vcl_recv {
if (req.url ~ "^/old-path") {
error 801 "https://example.com/new-path";
}
}
sub vcl_error {
if (obj.status == 801) {
set obj.status = 301;
set obj.http.Location = obj.response;
synthetic {""};
return(deliver);
}
}obj.hits > 0vcl_deliverresp.http.X-Cachevcl_recvsub vcl_recv {
if (req.url ~ "^/api/") {
set req.http.X-Pass = "true";
return(pass);
}
}
sub vcl_deliver {
if (req.http.X-Pass) {
set resp.http.X-Cache = "PASS";
} else if (obj.hits > 0) {
set resp.http.X-Cache = "HIT";
} else {
set resp.http.X-Cache = "MISS";
}
}Cookie ~ "name=(\w+)"name_v2=X"name=(\w+)"namename_v2subfield()set req.http.X-My-Cookie = subfield(req.http.Cookie, "name", ";");tabletable.contains()table.lookup()table redirects {
"/old": "/new",
"/blog": "/articles",
}
sub vcl_recv {
if (table.contains(redirects, req.url)) {
error 801 table.lookup(redirects, req.url);
}
}beresp.*vcl_fetchvcl_deliverreq.requestreq.methodreturn(purge)return(pass)vcl_missvcl_hitset beresp.ttl = 86400s86400ssynthetic "text"synthetic {"text"}beresp.ttl = 0sset beresp.cacheable = false;Accept: text/markdownwww.fastly.com/documentation/docs.fastly.comhttps://www.fastly.com/documentation/llms.txt