From filestack
Use when user encounters Filestack API errors. Activates on: domain tokens (filestackapi.com, filestackcontent.com, process.filestackapi.com), error shapes ({'result': 'error', 'error':, {'error':, result: null in Filestack context), HTTP 401/403/404/429 from Filestack endpoints, or when user pastes a Filestack API error message.
How this skill is triggered — by the user, by Claude, or both
Slash command
/filestack:filestack-error-diagnosisThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Filestack APIs return errors in two formats:
Filestack APIs return errors in two formats:
v1 API format (api.filestackapi.com):
{ "result": "error", "error": { "code": 403, "msg": "Policy required" } }
Processing/CDN format (process.filestackapi.com, cdn.filestackcontent.com):
{ "error": "Unsupported conversion" }
(v1 API includes a top-level result field; the processing/CDN edge does not — just error with a string or object.)
| Code | Meaning | Likely Cause | Fix |
|---|---|---|---|
| 401 | Unauthorized | Invalid or missing API key | Check FILESTACK_API_KEY is correct and hasn't been rotated |
| 403 | Forbidden | Security policy violation, or CORS origin not whitelisted | See policy errors below |
| 404 | Not Found | Handle doesn't exist, has been deleted, or has expired | Verify handle is correct; check app's handle expiry setting |
| 429 | Rate Limited | Too many requests | Read Filestack rate-limit headers (below); implement exponential backoff |
| 500/502/503 | Server Error | Transient Filestack service issue | Retry with backoff; check status.filestack.com |
403s from security-enabled apps are usually one of:
Expired policy — expiry unix timestamp is in the past
import time
policy = { "expiry": int(time.time()) + 3600, "call": ["read"] } # 1 hour from now
Wrong signature — HMAC computed with wrong secret, or policy was modified after signing
Insufficient call scope — policy doesn't include the operation being performed
read for CDN delivery, store for upload, convert for transformations, remove for deleteWrong CORS origin — browser request blocked
| Error | Cause | Fix |
|---|---|---|
| "Unsupported input format" | Input file format not supported by the transform | Check Filestack docs for supported input formats per transform |
| "Output size limit exceeded" | Result would be larger than the app's output limit | Reduce target dimensions or use progressive encoding |
| "Processing timeout" | Transform took too long (usually video) | Use async transforms with a callback URL for video |
| "Invalid parameter" | Wrong parameter name or value type | Check CDN URL syntax: param:value (colon, not =) |
Run through this in order when debugging Filestack errors:
API key valid? — Try a simple retrieve call: GET https://www.filestackapi.com/api/file/<handle>/metadata?key=<apikey>
Policy not expired? — Decode the base64 policy and check the expiry field is in the future
Handle exists? — Retrieve metadata for the handle; 404 means handle is gone
CORS origin whitelisted? — Check Filestack dashboard → app → Security → Domains
Transform params valid? — Run the CDN URL in a browser; the error is often self-describing
Rate limit hit? — Check for 429 (or 503 on the upload edge) and Filestack-specific rate-limit headers:
Filestack-Limit — request quota for the windowFilestack-Remaining — requests left in the windowFilestack-Reset — unix timestamp when the window resetsNote: Filestack does not emit the standard Retry-After header — use Filestack-Reset to compute backoff. The upload edge may also return 503 Service Unavailable (not 429) when rate-limited; treat both as rate-limit signals.
npx claudepluginhub filestack/filestack-claude-plugin --plugin filestack-claude-pluginProvides CDSS development patterns for drug interaction checking, dose validation, clinical scoring (NEWS2, qSOFA), and alert classification integrated into EMR workflows.