From aws-serverless
Builds and migrates AWS Step Functions state machines using ASL with JSONata, covering state types, error handling, service integrations, data transformation, and JSONPath-to-JSONata migration.
How this skill is triggered — by the user, by Claude, or both
Slash command
/aws-serverless:aws-step-functions [what workflow are you building?][what workflow are you building?]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
AWS Step Functions uses Amazon States Language (ASL) to define state machines as JSON. With AWS Step Functions, you can create workflows, also called State machines, to build distributed applications, automate processes, orchestrate microservices, and create data and machine learning pipelines.
examples/compensation-saga-pattern.asl.jsonexamples/express-standard-handoff.asl.jsonexamples/human-in-the-loop-with-timeout-escalation.asl.jsonexamples/nested-map-parallel-structures.asl.jsonexamples/polling-loop-wait-check-choice.asl.jsonexamples/scatter-gather-with-partial-results.asl.jsonexamples/semaphore-concurrency-lock.asl.jsonreferences/architecture-patterns.mdreferences/asl-state-types.mdreferences/error-handling.mdreferences/migrating-from-jsonpath-to-jsonata.mdreferences/processing-state-inputs-and-outputs.mdreferences/service-integrations.mdreferences/transforming-data.mdreferences/validation-and-testing.mdAWS Step Functions uses Amazon States Language (ASL) to define state machines as JSON. With AWS Step Functions, you can create workflows, also called State machines, to build distributed applications, automate processes, orchestrate microservices, and create data and machine learning pipelines.
This skill provides comprehensive guidance for writing state machines in ASL, covering:
$states reserved variableAssignLoad the appropriate reference file based on what the user is working on:
| Standard | Express | |
|---|---|---|
| Max duration | 1 year | 5 minutes |
| Execution semantics | Exactly-once | At-least-once (async) / At-most-once (sync) |
| Execution history | Retained 90 days, queryable via API | CloudWatch Logs only |
| Max throughput | 2,000 exec/sec | 100,000 exec/sec |
| Pricing model | Per state transition | Per execution count + duration |
.sync / .waitForTaskToken | Supported | Not supported |
| Best for | Auditable, non-idempotent operations | High-volume, idempotent event processing |
Choose Standard for: payment processing, order fulfillment, compliance workflows, anything that must never execute twice.
Choose Express for: IoT data ingestion, streaming transformations, mobile backends, high-throughput short-lived processing.
JSONata is the modern, preferred way to reference and transform data in ASL. It replaces the five JSONPath I/O fields (InputPath, Parameters, ResultSelector, ResultPath, OutputPath) with just two: Arguments (inputs) and Output.
Enable at the top level to apply to all states:
{ "QueryLanguage": "JSONata", "StartAt": "...", "States": {...} }
Or per-state to migrate from JSONPath incrementally:
{ "Type": "Task", "QueryLanguage": "JSONata", ... }
JSONPath is still supported and is the default if QueryLanguage is omitted — existing state machines do not need to be migrated.
"QueryLanguage": "JSONata" at the top level for new state machines unless the user wants to use JSONPathOutput minimal — only include what the state immediately after the current state needsAssign to store variables needed in later states instead of threading it through Output$states.input to reference original state inputAssign and Output are evaluated in parallel — variable assignments in Assign are NOT available in Output of the same state$data.nonExistentField throws States.QueryEvaluationError$states.context.Execution.Input to access the original workflow input from any state.asl.json extension when working outside the consolearn:aws:states:::lambda:invoke) over the SDK integrationStates.QueryEvaluationError — JSONata expression failed. Check for type errors, undefined fields, or out-of-range values.$ or $$ at the top level of a JSONata expression — use $states.input instead.{% %} delimiters around JSONata expressions — the string will be treated as a literal.Assign and expecting them in Output of the same state — new values only take effect in the next state.npx claudepluginhub awslabs/agent-plugins --plugin aws-serverlessDesigns and builds AWS Step Functions workflows: orchestrating multi-step processes, saga patterns, parallel tasks, retries, error recovery, and Standard vs Express tradeoffs.
Manages AWS Step Functions workflows with guided best practices, configuration generation, and validation.
Builds resilient, long-running, multi-step applications on AWS Lambda with automatic state persistence, retry logic, orchestration, and testing support.