domains / science / quantum-circuit-execution / qiskit

qiskit

Skill card

combined

The K-Dense copy is a specific, version-pinned procedure for Qiskit 2.x and IBM Runtime 0.50, including a critical deprecation warning for SamplerV2/EstimatorV2 and a strict 5-step hardware workflow. The sickn33 copy is a broad, version-agnostic catalog that covers a wider range of topics (visualization, algorithms, third-party backends) but lacks the specific API migration details and the strict 'transpile once' constraint found in the K-Dense copy. Because the K-Dense copy contains material steps and constraints (specific import paths for deprecated primitives, specific version pins) that the other lacks, and the sickn33 copy contains material scope (visualization, algorithm libraries) that the other lacks, crowning one would hide a real alternative or lose critical technical detail.

Repositories

RepositoryPath
K-Dense-AI/scientific-agent-skillsskills/qiskit/SKILL.md
sickn33/agentic-awesome-skillsplugins/agentic-awesome-skills-claude/skills/qiskit/SKILL.md

Other copies

RoleRepositoryPath
peerK-Dense-AI/scientific-agent-skillsskills/qiskit/SKILL.md
peersickn33/agentic-awesome-skillsplugins/agentic-awesome-skills-claude/skills/qiskit/SKILL.md
adaptersickn33/agentic-awesome-skillsplugins/agentic-awesome-skills/skills/qiskit/SKILL.md
adaptersickn33/agentic-awesome-skillsskills/qiskit/SKILL.md

Combined skill

---
name: qiskit
description: Builds, simulates, transpiles, and executes quantum circuits with Qiskit and IBM Quantum Runtime. Use for Qiskit 2.x circuits, V2 primitives, target-aware transpilation, local/noisy simulation, IBM QPU execution, and Qiskit ecosystem packages.
license: Apache-2.0
metadata:
  version: "2.3"
  last-reviewed: "2026-10-01"
---

# Qiskit

Use current Qiskit 2.x APIs to build circuits, prepare hardware-compatible ISA circuits, and execute them through V2 primitives.

## Choose the Right Path

| Goal | Recommended interface |
|---|---|
| Ideal evolution with finite-shot sampling | `qiskit.primitives.StatevectorSampler` |
| Exact local expectation values | `qiskit.primitives.StatevectorEstimator` |
| High-performance or noisy simulation | Qiskit Aer |
| IBM QPU sampling | `qiskit_ibm_runtime.executor_sampler.Sampler` |
| IBM QPU expectation values and mitigation | `qiskit_ibm_runtime.executor_estimator.Estimator` |
| Open-system or master-equation dynamics | Prefer QuTiP |
| Differentiable quantum machine learning | Prefer PennyLane unless Qiskit integration is required |

## Installation

Create an isolated environment and install only the components needed:

```bash
uv venv --python 3.13
source .venv/bin/activate

# Core SDK plus plotting support
uv pip install "qiskit[visualization]==2.5.2"

# Add only when needed
uv pip install "qiskit-ibm-runtime==0.50.0"
uv pip install "qiskit-aer==0.17.2"
```

Do not install `qiskit-terra`; it was superseded by the `qiskit` distribution.

## Core Workflow

Follow this sequence for every hardware-oriented workload:

1. **Map** the problem to a circuit and, for Estimator, one or more observables.
2. **Optimize** the parameterized circuit once for the selected backend.
3. **Apply the layout** to every observable.
4. **Execute** ISA circuits through a V2 primitive using Primitive Unified Blocs (PUBs).
5. **Analyze** register-aware results, metadata, uncertainty, and resource usage.

Do not bind and retranspile a parameterized circuit inside every optimizer iteration. Transpile the parameterized circuit once, then pass parameter arrays in PUBs.

## Quick Local Sampling

```python
from qiskit import QuantumCircuit
from qiskit.primitives import StatevectorSampler

circuit = QuantumCircuit(2)
circuit.h(0)
circuit.cx(0, 1)
circuit.measure_all()  # creates the classical register named "meas"

sampler = StatevectorSampler(seed=7)
pub_result = sampler.run([circuit], shots=1024).result()[0]
counts = pub_result.data.meas.get_counts()
print(counts)
```

## IBM QPU Sampling

Note: Runtime 0.50 deprecates the top-level `SamplerV2`/`EstimatorV2` implementations. New code imports `Sampler` from `qiskit_ibm_runtime.executor_sampler` and `Estimator` from `qiskit_ibm_runtime.executor_estimator`.

```python
from qiskit import QuantumCircuit
from qiskit.transpiler import generate_preset_pass_manager
from qiskit_ibm_runtime import QiskitRuntimeService
from qiskit_ibm_runtime.executor_sampler import Sampler

service = QiskitRuntimeService()
backend = service.least_busy(
    operational=True,
    simulator=False,
    min_num_qubits=2,
)

circuit = QuantumCircuit(2)
circuit.h(0)
circuit.cx(0, 1)
circuit.measure_all()

# Transpile once
pm = generate_preset_pass_manager(optimization_level=2, backend=backend)
transpiled_circuit = pm.run(circuit)

sampler = Sampler(backend=backend)
pub_result = sampler.run([transpiled_circuit], shots=1024).result()[0]
```

## Visualization

```python
from qiskit.visualization import plot_histogram

qc.draw('mpl')           # Circuit diagram
plot_histogram(counts)   # Results histogram
```

## Conflicts

- **K-Dense-AI/scientific-agent-skills** specifies that Runtime 0.50 deprecates top-level `SamplerV2`/`EstimatorV2` and requires importing from `qiskit_ibm_runtime.executor_sampler`/`executor_estimator`. **sickn33/agentic-awesome-skills** does not mention this deprecation, implying standard top-level imports are still primary.
- **K-Dense-AI/scientific-agent-skills** mandates a 5-step sequence explicitly forbidding retranspilation inside optimizer iterations. **sickn33/agentic-awesome-skills** describes a 4-step workflow without this specific constraint.