Generated banner for Amazon Braket
Generated logo for Amazon Braket

Amazon Braket

AWSOfficialPublished by AWS

  • Skill
  • Tool integration
  • Cloud and DevOps
  • Apache-2.0
  • Low risk

From the author

Runs quantum workflows on AWS / Amazon Braket: circuits and algorithms, QPU/device and ARN discovery, LocalSimulator, tasks, program sets, Hybrid Jobs, S3 results, pricing, account setup, and spending limits. Applies to quantum programs and execution, AHS, OpenQASM, pulse control, reservations, notebooks, or Qiskit or PennyLane integrations.
— the description by AWS

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

Amazon Braket is a managed service for quantum computing. This skill provides guidance on using the Amazon Braket Python SDK to design, execute, and manage quantum circuits and algorithms. It covers the full lifecycle of quantum workloads, including device discovery, task submission, hybrid job orchestration, cost management, and integration with frameworks like Qiskit and PennyLane.

What it does

  • Discover and filter quantum processing units (QPUs) and simulators by region and capability.
  • Execute quantum circuits, analog Hamiltonian simulations, and OpenQASM programs.
  • Manage complex quantum-classical loops using Hybrid Jobs.
  • Implement cost guardrails through service-side spending limits.
  • Integrate with third-party quantum frameworks like Qiskit and PennyLane.
  • Configure and monitor quantum task execution and result retrieval via S3.

When to use it

  • When you need to run quantum algorithms on real hardware or simulators via AWS.
  • When you are setting up a new quantum development environment or notebook instance.
  • When you need to optimize costs for large-scale quantum experiments.
  • When you are building hybrid quantum-classical applications requiring managed orchestration.
  • When you need to verify device availability, connectivity, or calibration data.

Advantages

  • Provides a unified interface for diverse quantum hardware and simulators.
  • Enables cost control through explicit spending limits and tracking.
  • Supports advanced workflows like parameter sweeps and hybrid job management.
  • Facilitates seamless integration with existing Python-based quantum ecosystems.
  • Ensures consistent attribution and security practices for AWS-based quantum tasks.

Usage examples

“List all available online QPU devices in the us-east-1 region.”
The agent uses the Braket SDK to query the device fleet, filtering by status and type, and returns a list of available QPU ARNs.
“How do I set a spending limit for my Braket QPU tasks?”
The agent provides the steps to create a spending limit using the Braket API or SDK, ensuring the user understands the enforcement mechanism.
“Help me run a circuit on the IonQ Aria device.”
The agent guides you through selecting the device, preparing the circuit using the SDK, and submitting the task with appropriate attribution.
“How can I run multiple circuits efficiently in one task?”
The agent explains how to use Program Sets to bundle multiple independent programs into a single service-side task to optimize performance and costs.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/aws/amazon-braket/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip amazon-braket.zip -d .agents/skills

Documentation by AWS

<!-- markdownlint-disable MD013 -->

Amazon Braket

Primitives

The vocabulary of a Braket workflow, and which reference to open for each.

PrimitiveWhat it isRelated ReferencesOpen it when the request involves
DeviceA simulator or QPU, identified by a region-scoped ARNdevices.mdanything about a device: what exists, discovering or filtering the fleet, availability and status (online, offline, retired), which region a device lives in, ARNs, choosing a device for a workload, qubit count, connectivity or topology, native gates, fidelities, calibration data, queue depth, shot and gate limits, paradigm (gate-model vs analog Hamiltonian simulation), whether a device supports program sets, simulators and local emulators
ProgramThe workload/input — one executable (Circuit, AHS, OpenQASM). Which type is legal depends on the device's paradigm--
Quantum taskOne program + shots, run once (the atomic unit Braket meters)--
Task batchMany independent tasks — SDK-only fallback for when a program set does not fit; works on all devicesprogram-sets.mdsee the Program set row; also running multiple programs
Program setMany programs in one service-side task — preferred way to run multiple programs instead of task batchprogram-sets.mdrunning more than one program: parameter sweeps, scanning parameter values, task batches, run_batch, several circuits submitted together, attaching observables across programs, and minimizing per-task fees when many programs run, program sets. Also getting started with program sets
Hybrid jobManaged classical-quantum loop that orchestrates many taskshybrid-job.mdhybrid jobs: @hybrid_job, algorithm scripts and source modules, entry_point, embedded simulators, BYOC and custom container images, CUDA-Q, job execution roles, hyperparameters, checkpoints, and retrieving job results
Spending limitService-side hard cap that rejects QPU tasks — the only true enforcement (not SDK)spending-limit.mdcapping or enforcing spend: spending limits (create, update, delete, search), and cost guardrails
Cost trackingIn-session cost estimate (not enforcement)spending-limit.mdin-session cost tracking with Tracker
PricingCurrent Braket rates and pricing modelspricing.mdcurrent price or rate, simulator pricing, QPU per-task/per-shot pricing, Hybrid Job or reservation pricing, AWS Pricing API, bulk price list
ReservationExclusive device access for a booked window (Braket Direct)reservation.mdreservations: DirectReservation, reservation_arn, booking/cancelling a reservation, running tasks or hybrid jobs during a reservation window
NotebooksJupyter/JupyterLab notebook instances for exploring Braketnotebooks.mdcreating or managing a Braket notebook instance, Jupyter, getting-started environment for Braket
Pulse control / gate calibrationsNative gate calibrations and custom pulse sequences on supported QPUspulse-control.mdpulse control, gate calibrations, gate_calibrations, refresh_gate_calibrations, gate_definitions
Experimental capabilitiesOpt-in device features outside the published specificationsexperimental-capabilities.mdfeatures that not all QPUs support, EnableExperimentalCapability, experimental_capabilities
Library integrationsThird-party frameworks using Braket-owned providers or pluginsQiskit, PennyLaneQiskit or PennyLane workflows targeting Braket; provider/plugin behavior and Braket-specific compilation, submission, or result retrieval

Each reference carries the domain detail for its own area — field paths, key names, API shapes, and billing models.

Additional notes:

  • Setup — first-time account setup, prerequisites, roles, notebooks, and the results S3 bucket are covered in setup.md.

Critical Rules

These rules apply to every Braket request, whatever it involves.

  1. Use credentials with IAM-administrative permissions only for setup actions, such as creating IAM roles and policies, creating or updating spending limits, and creating S3 buckets or other resources. After setup, use workload credentials with permissions scoped to the workflow.

  2. The Amazon Braket Python SDK (pip install amazon-braket-sdk, imported as braket) is the primary entry point. Prefer it for every operation including Braket API operations, and understand what it covers by reading the docs or inspecting the SDK's modules locally.

    • Use local execution tools for running the Braket SDK, such as shell with python3 -c "<code>".

  3. The AWS MCP server is recommended for executing any other AWS API calls in this skill, especially operations not present in the Python SDK, although not required. Note: the AWS MCP's run_script tool executes code in a minimal sandbox without Braket libraries, so prefer using other tools for code execution, especially when using the Braket SDK.

  4. A small set of primitives composes every workflow — see Primitives for the vocabulary and the reference for each.

  5. Devices, quantum tasks, and hybrid jobs are region-scoped, so fan out across every Braket region whenever you use the API, CLI, or boto3 to search for resources. The SDK handles fanout for you where it can — AwsDevice.get_devices searches QPUs in all regions. Get the list of regions Braket supports from aws___get_regional_availability when the AWS MCP server is available, or from the supported devices and regions documentation. Resource ARNs containing a region may only be queried from that same region, otherwise you will see a ResourceNotFoundException.

  6. Open the matching reference before you write code or answer. Use the Primitives table to find and read references. Note: A request that asks for several things, e.g. executing a series of circuits and controlling the cost thereof, may require reading multiple reference files.

  7. Verify, never recall. Device ARNs and statuses, API signatures, supported features, and prices (and other values) all change and may post-date training data.

  8. Confirm a signature from documentation before you write code that calls it. This applies to the Braket SDK and to every third-party library that integrates with Braket. A guessed parameter or a guessed unit can produce a quantum task that runs, charges the customer, and returns a wrong answer.

    • For the Braket SDK, read the SDK reference docs.

    • For a third-party library, open its matching library reference from the Primitives table and verify signatures against the linked provider or plugin documentation.

    If no available tool reaches the documentation, read the signature from the installed package with shell:

    # subpackages: ahs, circuits, pulse, program_sets, ...
    PAGER=cat python -c "import braket; help(braket)"
    # names: DrivingField, AtomArrangement, ...
    python -c "import braket.ahs; print(dir(braket.ahs))"
    python -c "import inspect; from braket.ahs import DrivingField; \
    print(inspect.signature(DrivingField.from_lists)); print(inspect.getdoc(DrivingField.from_lists))"
  9. Attribute skill usage. In every Python script that uses the Braket SDK, insert this block before any Braket SDK code, including import braket:

    import botocore
    
    def _braket_attribution(session):
        session.user_agent_extra = (
            f"{session.user_agent_extra} AWSSkill-Braket/1.0.0"
        ).strip()
    
    botocore.register_initializer(_braket_attribution)

    If using the AWS CLI, prepend this skill's identifier to AWS_SDK_UA_APP_ID. The variable holds one value and other tools also write it, so always append the existing value instead of replacing it:

    # sh, bash, zsh, ksh, fish 3.1+
    AWS_SDK_UA_APP_ID="AWSSkill-Braket-$AWS_SDK_UA_APP_ID" aws braket ...
    # PowerShell — session-scoped
    if ($env:AWS_SDK_UA_APP_ID -notlike 'AWSSkill-Braket*') {
        $env:AWS_SDK_UA_APP_ID = "AWSSkill-Braket-$env:AWS_SDK_UA_APP_ID"
    }

    This marks AWS calls as originating from use with this skill. This is not needed when using AWS MCP tools as the AWS MCP automatically attributes during tool calls.

  10. Before the first QPU task on each device, search for an existing spending limit on that device ARN in its region; if none exists, create one with an amount the user confirms. Do not raise or delete a limit without an explicit user instruction. See spending-limit.md.

Guardrail — where this skill's own files live (MCP vs local install)

This skill can be loaded two ways, and they resolve the skill's own bundled files from different places. Determine how the skill was loaded before reading a reference:

  • Loaded through the AWS MCP retrieve_skill tool: The skill is not installed on the local filesystem. You MUST fetch each reference via retrieve_skill with the file parameter (e.g. file="references/devices.md"). Do NOT file_read these paths locally — they do not exist on disk.

  • Installed locally (e.g. ~/.kiro/skills/amazon-braket/, .kiro/skills/amazon-braket/, or ~/.claude/skills/amazon-braket/): Read files from the local skill directory using relative paths.

references/ is a sibling of this SKILL.md — resolve reference paths against that directory, not your working directory, and do not search the filesystem for them. If a skill tool returns this overview instead of the file you asked for, it did not fetch it: read it from that directory instead, and do not write code from memory because a reference read failed. This distinction applies only to the skill's own packaged files. User data and session artifacts are always read from and written to the user's working directory — do not cd before running a script that writes a relative artifact path.

Common mistakes

SymptomCauseFix
Treats "task", "batch", "job" as interchangeablePrimitive confusionTask = one run; batch = many parallel tasks; job = managed loop
Missing required parameter: filters on SearchQuantumTasks, SearchJobs, or SearchDevicesfilters is required on all three — only SearchSpendingLimits lets you omit itPass filters=[] (--filters '[]') for an unfiltered search. A populated filter needs name and values, plus operator on tasks and jobs; SearchDevices has no operator member
Missing required parameter: clientToken when using AWS MCP run_script toolCreateQuantumTask, CreateJob, CancelQuantumTask, CreateSpendingLimit, UpdateSpendingLimit require a clientToken for idempotency. The SDK, CLI, and boto3 generate one automatically; the run_script tool requires explicit passingPass clientToken=str(uuid.uuid4()) on APIs taking clientToken when calling through run_script. Otherwise, prefer the SDK for these operations when possible.
Builds program IR as JAQCDJAQCD is deprecated on Amazon BraketUse OpenQASM — see OpenQASM on Braket
Denies a feature or SDK construct existsTraining data outdatedVerify against the docs or GetDevice before saying it does not exist
Invents a class, method, or parameterWriting API names from memoryConfirm the signature first. If uncertain, say so rather than inventing

Security considerations

Braket workflows touch IAM, S3, and (for hybrid jobs) container execution.

For details, see the Amazon Braket security documentation.

Authoritative sources — prefer these over recalled details, since device ARNs, quotas, prices, and supported features change.

Official documentation (stable entry points — navigate/search from here)

For anything not covered here, search the documentation rather than guessing page slugs or recalling details: if the AWS MCP server is available, its aws___search_documentation tool can help; otherwise start from the Developer Guide or API Reference above and navigate.

GitHub

Files

references/devices.md

<!-- markdownlint-disable MD013 -->

Devices

For pricing see pricing.md — rates differ per device, so a device choice is also a cost choice; for submitting work as a program set (many programs in one task) see program-sets.md; for cost guardrails see spending-limit.md.

Device status

The ONLINE, OFFLINE, and RETIRED statuses have different semantics:

  • ONLINE — usable now, subject to its availability window.

  • OFFLINE — temporarily unusable; task creation is rejected.

  • RETIRED — permanently unusable. RETIRED devices will still be returned successfully by GetDevice and SearchDevices.

How to query devices

Prefer the SDK — it applies filters client-side, performs region fan-out, and other niceties.

TaskBraket Python SDK (preferred)AWS CLI (portable)
Discover and filter devicesAwsDevice.get_devices(statuses=["ONLINE"], types=["QPU"]) — filters are ANDed; also arns, names, provider_names, order_byaws braket search-devices --filters '[]' --region <region> then filter client-side; the API only supports deviceArn as filter
One deviceAwsDevice(arn)aws braket get-device --device-arn <arn> --region <region>
Read a fielddevice.name, device.status, device.type, device.is_availableaws braket get-device --device-arn <arn> --region <region> --query '{name:deviceName,status:deviceStatus,type:deviceType}'
Read capabilitiesdevice.properties — already a parsed objectaws braket get-device --device-arn <arn> --region <region> --query 'deviceCapabilities' --output text | jq '.paradigm.qubitCount, (.action | keys)' — a JSON string, parse before reading

Reference docs for correct usage:

Reading GetDevice

Warning: GetDevice responses are large (10–30 KB per device, mostly deviceCapabilities). Do NOT dump the full response into your context — extract only the fields you need. Preferred approaches:

  • SDK: device = AwsDevice(arn); device.properties.<path> (already parsed, access fields directly)

  • AWS CLI + jq: aws braket get-device --device-arn <arn> --region <region> --query 'deviceCapabilities' --output text | jq '<path to fields you need>'

The deviceCapabilities field in GetDevice contains all information about a device, like whether it can run program sets, whether it can run OpenQASM gate model programs, etc. deviceCapabilities is returned as a JSON-encoded string — parse it before reading (the SDK does this for you via AwsDevice.properties). Inspect deviceCapabilities for all relevant fields — action types, paradigm.qubitCount, service.shotsRange, connectivity, etc. — no matter the device type. Simulators and QPUs alike populate these fields (e.g. SV1 reports its qubit cap at paradigm.qubitCount). Do not skip a field or substitute null based on assumptions about what a device type "has" — read the payload, and only report a field as missing after actually checking it.

For field meanings, types, and constraints, consult the amazon-braket-schemas-python repository rather than inferring them from memory. You can do this by:

  • Read from the web — fetch the module source directly from the GitHub repository

  • Install the package — pip install --upgrade amazon-braket-schemas (always the latest), then read the module (e.g. inspect.getsource).

Resolve the module from the live payload's braketSchemaHeader: dots in name → folders under src/braket/, then append _v{version}.py. Example: braket.device_schema.iqm.iqm_device_capabilities v1 → src/braket/device_schema/iqm/iqm_device_capabilities_v1.py.

Paradigms

Braket supports two paradigms that are not mutually compatible:

  • Gate model — quantum circuits (gates + measurements). Most QPUs and all managed simulators.

  • AHS (Analog Hamiltonian Simulation) — continuous Hamiltonian evolution on neutral-atom arrays. Verify which devices support AHS via GetDevice (deviceCapabilities.paradigm) rather than assuming a fixed device.

A device accepts one paradigm. The most reliable discriminator is the action map, which names the program types the device will accept and covers every paradigm with one pattern:

actions = AwsDevice(arn).properties.action        # keyed by DeviceActionType
"braket.ir.openqasm.program"     in actions      # gate-model OpenQASM
"braket.ir.openqasm.program_set" in actions      # program sets
"braket.ir.ahs.program"          in actions      # analog Hamiltonian simulation

deviceCapabilities.paradigm carries the physical detail behind that choice — gate-model devices have nativeGateSet/connectivity, AHS devices have rydberg/lattice. Submitting a program type absent from the action map causes the program to be rejected.

Availability windows and maintenance

All information regarding interpreting device availability can be found in the device availability documentation. When a QPU is online but outside its executionWindows (availability window), it shows deviceStatus=ONLINE and queues tasks until the next window. Unplanned maintenance or other device events shows deviceStatus=OFFLINE and attempts to create the quantum task will be rejected.

Braket device reservations may also affect when tasks are able to run against QPUs.

When a target is OFFLINE or RETIRED, suggest an ONLINE alternative that is also within its availability window. When a target is outside its availability window, suggest an alternative that is.

Shot and gate limits

FieldPresent onSDK access → what it returns
service.shotsRangeevery deviceAwsDevice(arn).properties.service.shotsRange → (shots_lower, shots_upper)
service.reservationShotsRangedevices that support reservations and have different shot rangesAwsDevice(arn).properties.service.reservationShotsRange → (shots_lower, shots_upper), or None when absent — a reservation can lower the floor, here from 100 shots to 1

Some providers apply a further shot minimum when error mitigation is enabled, carried under provider rather than service. See error mitigation on IonQ.

Simulators

  • On-demand (managed by Braket). Duration-billed — see the simulator documentation.

  • Local (in the SDK, no ARN, no charge): LocalSimulator(backend=...), documented in the LocalSimulator API reference and the local simulator guide

  • Noise-aware simulation: applies only to density-matrix backends — LocalSimulator("braket_dm") locally, or the managed on-demand DM1. State-vector backends (braket_sv, default) cannot express noise models. See the example notebook and SDK noise modules.

  • shots=0 has special, simulator-specific behavior (analytical/exact mode): the circuit MUST include explicit result types — e.g. circuit.probability(), circuit.state_vector(), or circuit.expectation(observable) — or the simulator raises an error. QPUs always require shots > 0. See the simulator documentation and result types.

Local quantum device emulator

A local quantum device emulator is distinct from the local simulator: it applies a real device's validation rules and noise model to a circuit locally, so you can catch a rejection before running on the QPU. Learn how to use local device emulators in the local emulator guide. In the SDK, the emulator is obtained from a method on the AwsDevice class as AwsDevice.emulator().

Common mistakes

SymptomCauseFix
Context overflow / huge tool outputDumped full GetDevice JSON into contextUse jq or --query to extract only needed fields; never dump raw deviceCapabilities
Treats "GetDevice succeeded" as "device is available"Didn't check deviceStatus in responseGetDevice returns successfully for RETIRED devices — you MUST check deviceStatus in the response is not RETIRED (and not OFFLINE if you need currently-runnable devices)
Emits an ARN for a device that has since retiredRecall from training dataVerify via SearchDevices live
Misses a deviceQueried SearchDevices in only one regionQuery all Braket regions
queueSize/capabilities parse errorTreated string as int / JSON as objectqueueSize is a string; deviceCapabilities is a json string - json.loads(deviceCapabilities)
Wrong availability answerLooked for a maintenance fieldParse service.executionWindows
Recommends a LocalSimulator backend name from memoryBackend names and their support status change between SDK releasesEnumerate what the installed SDK actually offers before choosing: python -c "from braket.devices import LocalSimulator; print(LocalSimulator.registered_backends())" or read the simulator documentation
Misses a conditional shot minimum (e.g. IonQ error mitigation)Only read service.shotsRangeCheck the device's provider properties too — a mitigation scheme can raise the minimum above service.shotsRange

References

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs an MCP server, Needs Python

Security

What our scanner noticed· Low risk

  • Instructions that use the network

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
AWS
Publisher
AWS (Official)
Source
aws/agent-toolkit-for-aws · skills/specialized-skills/quantum-computing-skills/amazon-braket · commit 0a218f8
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • NOTICE (added by AutoGineer from NOTICE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by AWS or AWS.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download amazon-braket.zip