Qiskit
When to Use
- You are building or optimizing quantum circuits with Qiskit for simulators or real hardware.
- You need IBM Quantum-style tooling for transpilation, execution, visualization, or algorithm libraries.
- You want guidance on moving from a simple circuit prototype to backend-aware execution.
Overview
Qiskit is the world's most popular open-source quantum computing framework with 13M+ downloads. Build quantum circuits, optimize for hardware, execute on simulators or real quantum computers, and analyze results. Supports IBM Quantum (100+ qubit systems), IonQ, Amazon Braket, and other providers.
Key Features:
- 83x faster transpilation than competitors
- 29% fewer two-qubit gates in optimized circuits
- Backend-agnostic execution (local simulators or cloud hardware)
- Comprehensive algorithm libraries for optimization, chemistry, and ML
Quick Start
Installation
uv pip install qiskit
uv pip install "qiskit[visualization]" matplotlib
First Circuit
from qiskit import QuantumCircuit
from qiskit.primitives import StatevectorSampler
# Create Bell state (entangled qubits)
qc = QuantumCircuit(2)
qc.h(0) # Hadamard on qubit 0
qc.cx(0, 1) # CNOT from qubit 0 to 1
qc.measure_all() # Measure both qubits
# Run locally
sampler = StatevectorSampler()
result = sampler.run([qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
print(counts) # {'00': ~512, '11': ~512}
Visualization
from qiskit.visualization import plot_histogram
qc.draw('mpl') # Circuit diagram
plot_histogram(counts) # Results histogram
Core Capabilities
1. Setup and Installation
For detailed installation, authentication, and IBM Quantum account setup:
Topics covered:
- Installation with uv
- Python environment setup
- IBM Quantum account and API token configuration
- Local vs. cloud execution
2. Building Quantum Circuits
For constructing quantum circuits with gates, measurements, and composition:
- See
references/circuits.md
Topics covered:
- Creating circuits with QuantumCircuit
- Single-qubit gates (H, X, Y, Z, rotations, phase gates)
- Multi-qubit gates (CNOT, SWAP, Toffoli)
- Measurements and barriers
- Circuit composition and properties
- Parameterized circuits for variational algorithms
3. Primitives (Sampler and Estimator)
For executing quantum circuits and computing results:
- See
references/primitives.md
Topics covered:
- Sampler: Get bitstring measurements and probability distributions
- Estimator: Compute expectation values of observables
- V2 interface (StatevectorSampler, StatevectorEstimator)
- IBM Quantum Runtime primitives for hardware
- Sessions and Batch modes
- Parameter binding
4. Transpilation and Optimization
For optimizing circuits and preparing for hardware execution:
- See
references/transpilation.md
Topics covered:
- Why transpilation is necessary
- Optimization levels (0-3)
- Six transpilation stages (init, layout, routing, translation, optimization, scheduling)
- Advanced features (virtual permutation elision, gate cancellation)
- Common parameters (initial_layout, approximation_degree, seed)
- Best practices for efficient circuits
5. Visualization
For displaying circuits, results, and quantum states:
- See
references/visualization.md
Topics covered:
- Circuit drawings (text, matplotlib, LaTeX)
- Result histograms
- Quantum state visualization (Bloch sphere, state city, QSphere)
- Backend topology and error maps
- Customization and styling
- Saving publication-quality figures
6. Hardware Backends
For running on simulators and real quantum computers:
- See
references/backends.md
Topics covered:
- IBM Quantum backends and authentication
- Backend properties and status
- Running on real hardware with Runtime primitives
- Job management and queuing
- Session mode (iterative algorithms)
- Batch mode (parallel jobs)
- Local simulators (StatevectorSampler, Aer)
- Third-party providers (IonQ, Amazon Braket)
- Error mitigation strategies
7. Qiskit Patterns Workflow
For implementing the four-step quantum computing workflow:
- See
references/patterns.md
Topics covered:
- Map: Translate problems to quantum circuits
- Optimize: Transpile for hardware
- Execute: Run with primitives
- Post-process: Extract and analyze results
- Complete VQE example
- Session vs. Batch execution
- Common workflow patterns
8. Quantum Algorithms and Applications
For implementing specific quantum algorithms:
- See
references/algorithms.md
Topics covered:
- Optimization: VQE, QAOA, Grover's algorithm
- Chemistry: Molecular ground states, excited states, Hamiltonians
- Machine Learning: Quantum kernels, VQC, QNN
- Algorithm libraries: Qiskit Nature, Qiskit ML, Qiskit Optimization
- Physics simulations and benchmarking
Workflow Decision Guide
If you need to:
- Install Qiskit or set up IBM Quantum account →
references/setup.md
- Build a new quantum circuit →
references/circuits.md
- Understand gates and circuit operations →
references/circuits.md
- Run circuits and get measurements →
references/primitives.md
- Compute expectation values →
references/primitives.md
- Optimize circuits for hardware →
references/transpilation.md
- Visualize circuits or results →
references/visualization.md
- Execute on IBM Quantum hardware →
references/backends.md
- Connect to third-party providers →
references/backends.md
- Implement end-to-end quantum workflow →
references/patterns.md
- Build specific algorithm (VQE, QAOA, etc.) →
references/algorithms.md
- Solve chemistry or optimization problems →
references/algorithms.md
Best Practices
Development Workflow
Start with simulators: Test locally before using hardware
from qiskit.primitives import StatevectorSampler
sampler = StatevectorSampler()
Always transpile: Optimize circuits before execution
from qiskit import transpile
qc_optimized = transpile(qc, backend=backend, optimization_level=3)
Use appropriate primitives:
- Sampler for bitstrings (optimization algorithms)
- Estimator for expectation values (chemistry, physics)
Choose execution mode:
- Session: Iterative algorithms (VQE, QAOA)
- Batch: Independent parallel jobs
- Single job: One-off experiments
Performance Optimization
- Use optimization_level=3 for production
- Minimize two-qubit gates (major error source)
- Test with noisy simulators before hardware
- Save and reuse transpiled circuits
- Monitor convergence in variational algorithms
Hardware Execution
- Check backend status before submitting
- Use least_busy() for testing
- Save job IDs for later retrieval
- Apply error mitigation (resilience_level)
- Start with fewer shots, increase for final runs
Common Patterns
Pattern 1: Simple Circuit Execution
from qiskit import QuantumCircuit, transpile
from qiskit.primitives import StatevectorSampler
qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
sampler = StatevectorSampler()
result = sampler.run([qc], shots=1024).result()
counts = result[0].data.meas.get_counts()
Pattern 2: Hardware Execution with Transpilation
from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler
from qiskit import transpile
service = QiskitRuntimeService()
backend = service.backend("ibm_brisbane")
qc_optimized = transpile(qc, backend=backend, optimization_level=3)
sampler = Sampler(backend)
job = sampler.run([qc_optimized], shots=1024)
result = job.result()
Pattern 3: Variational Algorithm (VQE)
from qiskit_ibm_runtime import Session, EstimatorV2 as Estimator
from scipy.optimize import minimize
with Session(backend=backend) as session:
estimator = Estimator(session=session)
def cost_function(params):
bound_qc = ansatz.assign_parameters(params)
qc_isa = transpile(bound_qc, backend=backend)
result = estimator.run([(qc_isa, hamiltonian)]).result()
return result[0].data.evs
result = minimize(cost_function, initial_params, method='COBYLA')
Additional Resources
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
1---2name: qiskit3description: "Qiskit is the world's most popular open-source quantum computing framework with 13M+ downloads. Build quantum circuits, optimize for hardware, execute on simulators or real quantum computers, and analyze results. Supports IBM Quantum (100+ qubit systems), IonQ, Amazon Braket, and other providers."4license: Apache-2.0 license5metadata:6 skill-author: K-Dense Inc.7risk: unknown8source: community9---1011# Qiskit1213## When to Use14- You are building or optimizing quantum circuits with Qiskit for simulators or real hardware.15- You need IBM Quantum-style tooling for transpilation, execution, visualization, or algorithm libraries.16- You want guidance on moving from a simple circuit prototype to backend-aware execution.1718## Overview1920Qiskit is the world's most popular open-source quantum computing framework with 13M+ downloads. Build quantum circuits, optimize for hardware, execute on simulators or real quantum computers, and analyze results. Supports IBM Quantum (100+ qubit systems), IonQ, Amazon Braket, and other providers.2122**Key Features:**23- 83x faster transpilation than competitors24- 29% fewer two-qubit gates in optimized circuits25- Backend-agnostic execution (local simulators or cloud hardware)26- Comprehensive algorithm libraries for optimization, chemistry, and ML2728## Quick Start2930### Installation3132```bash33uv pip install qiskit34uv pip install "qiskit[visualization]" matplotlib35```3637### First Circuit3839```python40from qiskit import QuantumCircuit41from qiskit.primitives import StatevectorSampler4243# Create Bell state (entangled qubits)44qc = QuantumCircuit(2)45qc.h(0) # Hadamard on qubit 046qc.cx(0, 1) # CNOT from qubit 0 to 147qc.measure_all() # Measure both qubits4849# Run locally50sampler = StatevectorSampler()51result = sampler.run([qc], shots=1024).result()52counts = result[0].data.meas.get_counts()53print(counts) # {'00': ~512, '11': ~512}54```5556### Visualization5758```python59from qiskit.visualization import plot_histogram6061qc.draw('mpl') # Circuit diagram62plot_histogram(counts) # Results histogram63```6465## Core Capabilities6667### 1. Setup and Installation68For detailed installation, authentication, and IBM Quantum account setup:69- **See `references/setup.md`**7071Topics covered:72- Installation with uv73- Python environment setup74- IBM Quantum account and API token configuration75- Local vs. cloud execution7677### 2. Building Quantum Circuits78For constructing quantum circuits with gates, measurements, and composition:79- **See `references/circuits.md`**8081Topics covered:82- Creating circuits with QuantumCircuit83- Single-qubit gates (H, X, Y, Z, rotations, phase gates)84- Multi-qubit gates (CNOT, SWAP, Toffoli)85- Measurements and barriers86- Circuit composition and properties87- Parameterized circuits for variational algorithms8889### 3. Primitives (Sampler and Estimator)90For executing quantum circuits and computing results:91- **See `references/primitives.md`**9293Topics covered:94- **Sampler**: Get bitstring measurements and probability distributions95- **Estimator**: Compute expectation values of observables96- V2 interface (StatevectorSampler, StatevectorEstimator)97- IBM Quantum Runtime primitives for hardware98- Sessions and Batch modes99- Parameter binding100101### 4. Transpilation and Optimization102For optimizing circuits and preparing for hardware execution:103- **See `references/transpilation.md`**104105Topics covered:106- Why transpilation is necessary107- Optimization levels (0-3)108- Six transpilation stages (init, layout, routing, translation, optimization, scheduling)109- Advanced features (virtual permutation elision, gate cancellation)110- Common parameters (initial_layout, approximation_degree, seed)111- Best practices for efficient circuits112113### 5. Visualization114For displaying circuits, results, and quantum states:115- **See `references/visualization.md`**116117Topics covered:118- Circuit drawings (text, matplotlib, LaTeX)119- Result histograms120- Quantum state visualization (Bloch sphere, state city, QSphere)121- Backend topology and error maps122- Customization and styling123- Saving publication-quality figures124125### 6. Hardware Backends126For running on simulators and real quantum computers:127- **See `references/backends.md`**128129Topics covered:130- IBM Quantum backends and authentication131- Backend properties and status132- Running on real hardware with Runtime primitives133- Job management and queuing134- Session mode (iterative algorithms)135- Batch mode (parallel jobs)136- Local simulators (StatevectorSampler, Aer)137- Third-party providers (IonQ, Amazon Braket)138- Error mitigation strategies139140### 7. Qiskit Patterns Workflow141For implementing the four-step quantum computing workflow:142- **See `references/patterns.md`**143144Topics covered:145- **Map**: Translate problems to quantum circuits146- **Optimize**: Transpile for hardware147- **Execute**: Run with primitives148- **Post-process**: Extract and analyze results149- Complete VQE example150- Session vs. Batch execution151- Common workflow patterns152153### 8. Quantum Algorithms and Applications154For implementing specific quantum algorithms:155- **See `references/algorithms.md`**156157Topics covered:158- **Optimization**: VQE, QAOA, Grover's algorithm159- **Chemistry**: Molecular ground states, excited states, Hamiltonians160- **Machine Learning**: Quantum kernels, VQC, QNN161- **Algorithm libraries**: Qiskit Nature, Qiskit ML, Qiskit Optimization162- Physics simulations and benchmarking163164## Workflow Decision Guide165166**If you need to:**167168- Install Qiskit or set up IBM Quantum account → `references/setup.md`169- Build a new quantum circuit → `references/circuits.md`170- Understand gates and circuit operations → `references/circuits.md`171- Run circuits and get measurements → `references/primitives.md`172- Compute expectation values → `references/primitives.md`173- Optimize circuits for hardware → `references/transpilation.md`174- Visualize circuits or results → `references/visualization.md`175- Execute on IBM Quantum hardware → `references/backends.md`176- Connect to third-party providers → `references/backends.md`177- Implement end-to-end quantum workflow → `references/patterns.md`178- Build specific algorithm (VQE, QAOA, etc.) → `references/algorithms.md`179- Solve chemistry or optimization problems → `references/algorithms.md`180181## Best Practices182183### Development Workflow1841851. **Start with simulators**: Test locally before using hardware186 ```python187 from qiskit.primitives import StatevectorSampler188 sampler = StatevectorSampler()189 ```1901912. **Always transpile**: Optimize circuits before execution192 ```python193 from qiskit import transpile194 qc_optimized = transpile(qc, backend=backend, optimization_level=3)195 ```1961973. **Use appropriate primitives**:198 - Sampler for bitstrings (optimization algorithms)199 - Estimator for expectation values (chemistry, physics)2002014. **Choose execution mode**:202 - Session: Iterative algorithms (VQE, QAOA)203 - Batch: Independent parallel jobs204 - Single job: One-off experiments205206### Performance Optimization207208- Use optimization_level=3 for production209- Minimize two-qubit gates (major error source)210- Test with noisy simulators before hardware211- Save and reuse transpiled circuits212- Monitor convergence in variational algorithms213214### Hardware Execution215216- Check backend status before submitting217- Use least_busy() for testing218- Save job IDs for later retrieval219- Apply error mitigation (resilience_level)220- Start with fewer shots, increase for final runs221222## Common Patterns223224### Pattern 1: Simple Circuit Execution225226```python227from qiskit import QuantumCircuit, transpile228from qiskit.primitives import StatevectorSampler229230qc = QuantumCircuit(2)231qc.h(0)232qc.cx(0, 1)233qc.measure_all()234235sampler = StatevectorSampler()236result = sampler.run([qc], shots=1024).result()237counts = result[0].data.meas.get_counts()238```239240### Pattern 2: Hardware Execution with Transpilation241242```python243from qiskit_ibm_runtime import QiskitRuntimeService, SamplerV2 as Sampler244from qiskit import transpile245246service = QiskitRuntimeService()247backend = service.backend("ibm_brisbane")248249qc_optimized = transpile(qc, backend=backend, optimization_level=3)250251sampler = Sampler(backend)252job = sampler.run([qc_optimized], shots=1024)253result = job.result()254```255256### Pattern 3: Variational Algorithm (VQE)257258```python259from qiskit_ibm_runtime import Session, EstimatorV2 as Estimator260from scipy.optimize import minimize261262with Session(backend=backend) as session:263 estimator = Estimator(session=session)264265 def cost_function(params):266 bound_qc = ansatz.assign_parameters(params)267 qc_isa = transpile(bound_qc, backend=backend)268 result = estimator.run([(qc_isa, hamiltonian)]).result()269 return result[0].data.evs270271 result = minimize(cost_function, initial_params, method='COBYLA')272```273274## Additional Resources275276- **Official Docs**: https://quantum.ibm.com/docs277- **Qiskit Textbook**: https://qiskit.org/learn278- **API Reference**: https://docs.quantum.ibm.com/api/qiskit279- **Patterns Guide**: https://quantum.cloud.ibm.com/docs/en/guides/intro-to-patterns280281## Limitations282- Use this skill only when the task clearly matches the scope described above.283- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.284- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.