From filestack
Use when the user wants to design, run, or troubleshoot a Filestack Workflow — a multi-step file processing pipeline. Activates on: workflow design, multi-step processing, conditional file processing, automated pipelines, virus scanning workflow, video intelligence pipelines, async file processing, `runWorkflow` policy call, `run_workflow` task, `filestack_run_workflow`, `fs.workflow` webhook event, `wf.json`, workflow UUID, Filestack Workflows UI / Developer Portal Workflows.
How this skill is triggered — by the user, by Claude, or both
Slash command
/filestack:filestack-workflow-designThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Workflows are Filestack's primary asynchronous processing story — multi-step pipelines that run on every file upload (or on demand) and emit `fs.workflow` webhook events when complete.
Workflows are Filestack's primary asynchronous processing story — multi-step pipelines that run on every file upload (or on demand) and emit fs.workflow webhook events when complete.
Use this skill when the user wants to:
Use direct CDN tasks (filestack_transform_url, filestack_transform_apply, filestack_analyze) when:
Use a Workflow when:
virus_detectionvideo_sfw, video_tagging (video intelligence)phishing_detectionfs.workflow eventWorkflows are designed in the Filestack Developer Portal (https://dev.filestack.com/ → Workflows). They cannot be designed via API — only invoked via API once created.
A workflow has:
sfw == true)filestack_run_workflow or picker storeTo.workflows), or implicit (on upload)filestack_run_workflowUpload → sfw → (if sfw=true) → tags → store to public bucket
↓
(if sfw=false) → webhook to alert team → store to quarantine bucket
Upload (PDF/image) → doc_detection → (if detected) → ocr → store text alongside file
↓
(else) → webhook "manual review needed"
Upload (video) → virus_detection → video_convert (preset: h264, hls) → video_tagging → store outputs to S3
Upload → virus_detection → (if clean) → store to user bucket
↓
(if infected) → webhook "infected upload from user X" → discard
Once a workflow is created in the Portal, run it via filestack_run_workflow:
const result = await callTool('filestack_run_workflow', {
handleOrUrl: 'abc123XYZ',
workflowId: '67d273c3-249c-4192-b228-9c3e1d003963',
});
// result.result contains { jobid, status, ... }
For security-enabled apps, pre-generate a signed policy that includes BOTH convert AND runWorkflow in the call array:
const { policy, signature } = await callTool('filestack_generate_signed_url', {
handle: 'abc123XYZ',
call: ['convert', 'runWorkflow'],
expiry: Math.floor(Date.now() / 1000) + 3600,
});
const result = await callTool('filestack_run_workflow', {
handleOrUrl: 'abc123XYZ',
workflowId: '67d273c3-249c-4192-b228-9c3e1d003963',
options: { policy, signature },
});
Configure a webhook in the Developer Portal subscribed to fs.workflow events. Use filestack_verify_webhook_signature in your receiver to authenticate. Payload shape:
{
"id": 12345,
"action": "fs.workflow",
"timestamp": 1710000000,
"text": {
"workflow": "67d273c3-249c-4192-b228-9c3e1d003963",
"job": "job-uuid",
"status": "Finished",
"sources": ["abc123XYZ"],
"results": {
"store_1": { "url": "...", "handle": "..." },
"store_2": { "url": "...", "handle": "..." }
}
}
}
The results object is keyed by the task name as set in the workflow designer (rename your store tasks to something meaningful like store_public / store_quarantine).
To run a workflow on every upload, pass the workflow ID(s) to the picker's storeTo.workflows option:
const picker = client.picker({
storeTo: {
location: 's3',
workflows: ['67d273c3-249c-4192-b228-9c3e1d003963'],
},
});
This emits a workflow job for each completed upload — fire-and-forget.
runWorkflow AND/OR convert calls. Both are required.fs.workflow (not fp.upload). The two are separate event types.sfw == true vs sfw == "true"); check the upstream task's actual output type in the workflow logs.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.