Skip to content
Data
Skill

/pennylane

Builds and differentiates PennyLane quantum circuits, hybrid PyTorch or JAX models, molecular VQE and QAOA workflows. Use for variational quantum algorithms, quantum machine learning, simulator validation, and moving validated circuits to provider plugins. For hardware-specific

From plugin
scientific-agent-skills
56k177 skills

Claude Code

$ npx -y skills add K-Dense-AI/scientific-agent-skills --skill pennylane --agent claude-code

SKILL.md

pennylane.SKILL.md
name: pennylane
description: Builds and differentiates PennyLane quantum circuits, hybrid PyTorch or JAX models, molecular VQE and QAOA workflows. Use for variational quantum algorithms, quantum machine learning, simulator validation, and moving validated circuits to provider plugins. For hardware-specific compilation use qiskit or cirq; for open-system dynamics use qutip.
license: Apache-2.0 license
compatibility: Requires Python 3.11+ and PennyLane 0.45.1 with NumPy 2+. Optional PyTorch, JAX or provider plugins need separate compatible environments. Local simulation needs no credentials; hardware requires provider credentials and network access.
allowed-tools: Read Bash Python
metadata:
  version: "2.0"
  skill-author: K-Dense Inc.
  last-reviewed: "2026-10-01"
  upstream-version: "0.45.1"

PennyLane

When to use

Use PennyLane to optimize parameterized circuits, build hybrid quantum-classical models, estimate molecular energies, or compare a validated circuit across devices. This skill targets stable PennyLane 0.45.1. The local examples use small synthetic systems; successful optimization does not establish quantum advantage, molecular accuracy, or hardware fidelity.

Installation

Create a dedicated environment; provider plugins and compiler dependencies should be resolved separately from unrelated scientific packages:

uv venv --python 3.13 .venv-pennylane
uv pip install --python .venv-pennylane/bin/python "pennylane==0.45.1"

PennyLane 0.45 requires NumPy 2+. Core installation includes Lightning. For ML, use the tested JAX 0.7.1/JAXlib 0.7.1 pair or PyTorch; do not assume the latest JAX is supported by this PennyLane release. See [device setup](references/devices_backends.md) for optional plugin versions and their verification limits.

Workflow

1. Fix the problem convention: feature ordering and label encoding for ML; Hamiltonian sign for optimization; units, charge, multiplicity, basis, active space and mapping for chemistry. 2. Build a small analytic `default.qubit` circuit. Keep the quantum function separate from the QNode when reusing it on another backend. 3. Check a known value and a gradient against an analytic or finite-difference result before training. Use trainable `pennylane.numpy` arrays for Autograd, framework-native tensors for Torch/JAX. 4. Optimize while recording objective, gradient norm, seeds, ansatz shape and package versions. `step_and_cost` returns the cost **before** its update; evaluate the objective again for final reporting. 5. Validate independently: held-out examples and classical baselines for ML; particle number and a sector-appropriate classical reference for VQE; enumerated small instances for QAOA. 6. Introduce finite shots/noise, report uncertainty, inspect decomposed resources, then select a current accessible hardware backend and execution budget. Plugin portability does not guarantee identical gates, measurements or gradients.

Quick start: value, gradient and optimization

This self-contained example is executed by the skill's tests.

import pennylane as qml
from pennylane import numpy as np

dev = qml.device("default.qubit", wires=1)

@qml.qnode(dev, interface="autograd", diff_method="backprop")
def energy(theta):
    qml.RY(theta, wires=0)
    return qml.expval(qml.Z(0))

theta = np.array(0.3, requires_grad=True)
assert np.allclose(energy(theta), np.cos(theta))
assert np.allclose(qml.grad(energy)(theta), -np.sin(theta))
opt = qml.GradientDescentOptimizer(stepsize=0.2)
for _ in range(80):
    theta = opt.step(energy, theta)
final_energy = float(energy(theta))
assert final_energy < -0.999
print(f"[OK] final expectation = {final_energy:.6f}")

Load the relevant reference

  • [Getting started](references/getting_started.md): QNodes, shots, random streams,

trainability, batched parameters and simulator selection.

  • [Quantum circuits](references/quantum_circuits.md): controls, measurement feedback,

wire ordering, QFT, transforms and current resource access.

  • [Quantum ML](references/quantum_ml.md): executed TorchLayer and JAX training,

stable classifier loss, feature scaling and evaluation.

  • [Quantum chemistry](references/quantum_chemistry.md): H2 UCCSD, units, particle

sector checks, dipoles, active spaces, geometry and excited-state caveats.

  • [Devices](references/devices_backends.md): simulators, provider contracts,

credentials, current target discovery and source-only integration boundaries.

  • [Optimization](references/optimization.md): gradient checks, SPSA, QNG, MaxCut

sign and exact QUBO-to-Ising conversion.

  • [Advanced features](references/advanced_features.md): templates, noise,

parametrized Hamiltonian evolution, Catalyst and error-correction examples.

Failure checks

  • Samples/counts require finite shots; states require a supporting simulator.

Use `qml.set_shots` on the QNode rather than mutating device shots.

  • Mid-circuit measurement values are symbolic. Use `qml.cond`, not Python `if m`.
  • `qml.specs` in 0.45.1 returns `CircuitSpecs`; access `.resources`, not obsolete

top-level dictionary keys. Record the transform level and account for split tapes.

  • `qml.qaoa.maxcut` produces **negative cut size**. Minimize it directly.
  • A zero/flat gradient can mean an unused parameter, symmetry, saturated encoding,

shot noise or differentiation failure. It does not by itself diagnose a barren plateau.

  • Chemistry geometry defaults to bohr. State units explicitly; an unconstrained

ansatz can leave the intended electron/spin sector.

  • A simulator seed initializes a random stream. Successive executions consume new

draws; reconstructing an equally seeded device reproduces the stream.

Upstream references and verification

Reviewed the [stable documentation](https://docs.pennylane.ai/en/stable/), [0.45.1 source](https://github.com/PennyLaneAI/pennylane/tree/v0.45.1), [deprecations](https://docs.pennylane.ai/en/stable/development/depreca

Read more
@k-dense-ai
Ships withscientific-agent-skills

๐Ÿ”” Claude Scientific Skills is now Scientific Agent Skills. Same skills, broader compatibility โ€” now works with any AI agent that supports the open Agent Skills standard, not just Claude.

Stars on GitHub

Momentum

stars in total
55.6k
Star history of K-Dense-AI/scientific-agent-skills on GitHub, a chart by star-history.com

Other skills on scientific-agent-skills.

aeon

aeon

This skill should be used for time series machine learning tasks including classification, regression, clustering, forecasting,โ€ฆ

More skills from other plugins.

paddleocr-doc-parsing

paddleocr-doc-parsing

Use this skill to extract structured Markdown/JSON from PDFs and document imagesโ€”tables with cell-level precision, formulas asโ€ฆ

@paddlepaddle@paddlepaddleInstall Skill
context-loader
Auto-invoked

context-loader

Search memories from earlier Pi sessions in this repository. Use it when earlier work may already explain the code, error,โ€ฆ

mem04d69k
@mem0ai@mem0aiInstall Skill
analyzing-ai-citations

analyzing-ai-citations

Answer AI citation and answer engine optimization (AEO) questions in PostHog: whether AI answer engines (ChatGPT, Claude, and anโ€ฆ

posthog10d41k
@posthog@posthogInstall Skill
qmd

qmd

Search local markdown knowledge bases, notes, docs, and wikis with QMD. Use when users ask to find notes, retrieve documents,โ€ฆ

qmd3w31k
@tobi@tobiInstall Skill

Questions about pennylane.

Which coding agents can use pennylane?
pennylane installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.