cirq
Cirq is Google Quantum AI's open-source framework for designing, simulating, and running quantum circuits on quantum computers and simulators.
About this skill
The Cirq skill equips your AI agent with Google Quantum AI's open-source framework for quantum computing. This robust Python library enables agents to design complex quantum circuits, simulate their behavior on classical computers, and execute them on various quantum hardware platforms and simulators. It offers deep integration capabilities with leading quantum hardware providers such as Google Quantum Engine, IonQ, AQT, Pasqal, and Azure Quantum, allowing for advanced quantum algorithm development and experimentation. This skill transforms an agent into a versatile tool for exploring quantum mechanics, building quantum applications, and leveraging the power of actual quantum processing units.
Best use case
Developing and testing quantum algorithms; Simulating quantum phenomena and circuit behavior; Interfacing with quantum hardware providers (e.g., IonQ, Azure Quantum, Google Quantum Engine) to run quantum experiments; Generating Python code for quantum circuits; Educational applications in quantum computing.
Cirq is Google Quantum AI's open-source framework for designing, simulating, and running quantum circuits on quantum computers and simulators.
Successfully designed and simulated quantum circuits; Python code for quantum algorithms; Execution of quantum circuits on specified hardware or simulators; Measurement outcomes and analysis of quantum computations.
Practical example
Example input
Design a quantum circuit in Cirq to demonstrate quantum entanglement using two qubits. Then, simulate it and report the measurement probabilities.
Example output
```python
import cirq
# Create a circuit with 2 qubits
q0, q1 = cirq.LineQubit.range(2)
circuit = cirq.Circuit(
cirq.H(q0),
cirq.CNOT(q0, q1),
cirq.measure(q0, q1, key='result')
)
print('Circuit:')
print(circuit)
# Simulate the circuit
simulator = cirq.Simulator()
result = simulator.run(circuit, repetitions=1000)
# Print measurement probabilities
counts = result.histogram(key='result')
print('\nMeasurement Probabilities:')
print(counts)
```
```
Circuit:
q0: ───H───@───M('result')───
│ │
q1: ───────X───M─────────────
Measurement Probabilities:
Counter({0: 504, 3: 496}) # Example output for 00 and 11 states
```When to use this skill
- When the task involves creating, simulating, or running quantum circuits; When a user needs to explore quantum algorithms or demonstrate quantum computing concepts; When an agent needs to generate Python code for quantum experiments; When there's a requirement to interact with specific quantum hardware backends.
When not to use this skill
- For tasks unrelated to quantum computing; When classical computing solutions are sufficient and more efficient for the given problem; If the agent's environment does not support Python or has no access to quantum hardware/simulators; For general-purpose mathematical or scientific computation that does not involve quantum mechanics.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/cirq/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How cirq Compares
| Feature / Agent | cirq | Standard Approach |
|---|---|---|
| Platform Support | Claude | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | medium | N/A |
Frequently Asked Questions
What does this skill do?
Cirq is Google Quantum AI's open-source framework for designing, simulating, and running quantum circuits on quantum computers and simulators.
Which AI agents support this skill?
This skill is designed for Claude.
How difficult is it to install?
The installation complexity is rated as medium. You can find the installation instructions above.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
AI Agents for Coding
Browse AI agent skills for coding, debugging, testing, refactoring, code review, and developer workflows across Claude, Cursor, and Codex.
Best AI Skills for Claude
Explore the best AI skills for Claude and Claude Code across coding, research, workflow automation, documentation, and agent operations.
ChatGPT vs Claude for Agent Skills
Compare ChatGPT and Claude for AI agent skills across coding, writing, research, and reusable workflow execution.
SKILL.md Source
# Cirq - Quantum Computing with Python
Cirq is Google Quantum AI's open-source framework for designing, simulating, and running quantum circuits on quantum computers and simulators.
## When to Use
- You are designing, simulating, or executing quantum circuits with the Cirq ecosystem.
- You need Google Quantum AI-style primitives, parameterized circuits, or integrations like `cirq-google` and `cirq-ionq`.
- You are prototyping or teaching quantum workflows in Python and want concrete circuit examples.
## Installation
```bash
uv pip install cirq
```
For hardware integration:
```bash
# Google Quantum Engine
uv pip install cirq-google
# IonQ
uv pip install cirq-ionq
# AQT (Alpine Quantum Technologies)
uv pip install cirq-aqt
# Pasqal
uv pip install cirq-pasqal
# Azure Quantum
uv pip install azure-quantum cirq
```
## Quick Start
### Basic Circuit
```python
import cirq
import numpy as np
# Create qubits
q0, q1 = cirq.LineQubit.range(2)
# Build circuit
circuit = cirq.Circuit(
cirq.H(q0), # Hadamard on q0
cirq.CNOT(q0, q1), # CNOT with q0 control, q1 target
cirq.measure(q0, q1, key='result')
)
print(circuit)
# Simulate
simulator = cirq.Simulator()
result = simulator.run(circuit, repetitions=1000)
# Display results
print(result.histogram(key='result'))
```
### Parameterized Circuit
```python
import sympy
# Define symbolic parameter
theta = sympy.Symbol('theta')
# Create parameterized circuit
circuit = cirq.Circuit(
cirq.ry(theta)(q0),
cirq.measure(q0, key='m')
)
# Sweep over parameter values
sweep = cirq.Linspace('theta', start=0, stop=2*np.pi, length=20)
results = simulator.run_sweep(circuit, params=sweep, repetitions=1000)
# Process results
for params, result in zip(sweep, results):
theta_val = params['theta']
counts = result.histogram(key='m')
print(f"θ={theta_val:.2f}: {counts}")
```
## Core Capabilities
### Circuit Building
For comprehensive information about building quantum circuits, including qubits, gates, operations, custom gates, and circuit patterns, see:
- **references/building.md** - Complete guide to circuit construction
Common topics:
- Qubit types (GridQubit, LineQubit, NamedQubit)
- Single and two-qubit gates
- Parameterized gates and operations
- Custom gate decomposition
- Circuit organization with moments
- Standard circuit patterns (Bell states, GHZ, QFT)
- Import/export (OpenQASM, JSON)
- Working with qudits and observables
### Simulation
For detailed information about simulating quantum circuits, including exact simulation, noisy simulation, parameter sweeps, and the Quantum Virtual Machine, see:
- **references/simulation.md** - Complete guide to quantum simulation
Common topics:
- Exact simulation (state vector, density matrix)
- Sampling and measurements
- Parameter sweeps (single and multiple parameters)
- Noisy simulation
- State histograms and visualization
- Quantum Virtual Machine (QVM)
- Expectation values and observables
- Performance optimization
### Circuit Transformation
For information about optimizing, compiling, and manipulating quantum circuits, see:
- **references/transformation.md** - Complete guide to circuit transformations
Common topics:
- Transformer framework
- Gate decomposition
- Circuit optimization (merge gates, eject Z gates, drop negligible operations)
- Circuit compilation for hardware
- Qubit routing and SWAP insertion
- Custom transformers
- Transformation pipelines
### Hardware Integration
For information about running circuits on real quantum hardware from various providers, see:
- **references/hardware.md** - Complete guide to hardware integration
Supported providers:
- **Google Quantum AI** (cirq-google) - Sycamore, Weber processors
- **IonQ** (cirq-ionq) - Trapped ion quantum computers
- **Azure Quantum** (azure-quantum) - IonQ and Honeywell backends
- **AQT** (cirq-aqt) - Alpine Quantum Technologies
- **Pasqal** (cirq-pasqal) - Neutral atom quantum computers
Topics include device representation, qubit selection, authentication, job management, and circuit optimization for hardware.
### Noise Modeling
For information about modeling noise, noisy simulation, characterization, and error mitigation, see:
- **references/noise.md** - Complete guide to noise modeling
Common topics:
- Noise channels (depolarizing, amplitude damping, phase damping)
- Noise models (constant, gate-specific, qubit-specific, thermal)
- Adding noise to circuits
- Readout noise
- Noise characterization (randomized benchmarking, XEB)
- Noise visualization (heatmaps)
- Error mitigation techniques
### Quantum Experiments
For information about designing experiments, parameter sweeps, data collection, and using the ReCirq framework, see:
- **references/experiments.md** - Complete guide to quantum experiments
Common topics:
- Experiment design patterns
- Parameter sweeps and data collection
- ReCirq framework structure
- Common algorithms (VQE, QAOA, QPE)
- Data analysis and visualization
- Statistical analysis and fidelity estimation
- Parallel data collection
## Common Patterns
### Variational Algorithm Template
```python
import scipy.optimize
def variational_algorithm(ansatz, cost_function, initial_params):
"""Template for variational quantum algorithms."""
def objective(params):
circuit = ansatz(params)
simulator = cirq.Simulator()
result = simulator.simulate(circuit)
return cost_function(result)
# Optimize
result = scipy.optimize.minimize(
objective,
initial_params,
method='COBYLA'
)
return result
# Define ansatz
def my_ansatz(params):
q = cirq.LineQubit(0)
return cirq.Circuit(
cirq.ry(params[0])(q),
cirq.rz(params[1])(q)
)
# Define cost function
def my_cost(result):
state = result.final_state_vector
# Calculate cost based on state
return np.real(state[0])
# Run optimization
result = variational_algorithm(my_ansatz, my_cost, [0.0, 0.0])
```
### Hardware Execution Template
```python
def run_on_hardware(circuit, provider='google', device_name='weber', repetitions=1000):
"""Template for running on quantum hardware."""
if provider == 'google':
import cirq_google
engine = cirq_google.get_engine()
processor = engine.get_processor(device_name)
job = processor.run(circuit, repetitions=repetitions)
return job.results()[0]
elif provider == 'ionq':
import cirq_ionq
service = cirq_ionq.Service()
result = service.run(circuit, repetitions=repetitions, target='qpu')
return result
elif provider == 'azure':
from azure.quantum.cirq import AzureQuantumService
# Setup workspace...
service = AzureQuantumService(workspace)
result = service.run(circuit, repetitions=repetitions, target='ionq.qpu')
return result
else:
raise ValueError(f"Unknown provider: {provider}")
```
### Noise Study Template
```python
def noise_comparison_study(circuit, noise_levels):
"""Compare circuit performance at different noise levels."""
results = {}
for noise_level in noise_levels:
# Create noisy circuit
noisy_circuit = circuit.with_noise(cirq.depolarize(p=noise_level))
# Simulate
simulator = cirq.DensityMatrixSimulator()
result = simulator.run(noisy_circuit, repetitions=1000)
# Analyze
results[noise_level] = {
'histogram': result.histogram(key='result'),
'dominant_state': max(
result.histogram(key='result').items(),
key=lambda x: x[1]
)
}
return results
# Run study
noise_levels = [0.0, 0.001, 0.01, 0.05, 0.1]
results = noise_comparison_study(circuit, noise_levels)
```
## Best Practices
1. **Circuit Design**
- Use appropriate qubit types for your topology
- Keep circuits modular and reusable
- Label measurements with descriptive keys
- Validate circuits against device constraints before execution
2. **Simulation**
- Use state vector simulation for pure states (more efficient)
- Use density matrix simulation only when needed (mixed states, noise)
- Leverage parameter sweeps instead of individual runs
- Monitor memory usage for large systems (2^n grows quickly)
3. **Hardware Execution**
- Always test on simulators first
- Select best qubits using calibration data
- Optimize circuits for target hardware gateset
- Implement error mitigation for production runs
- Store expensive hardware results immediately
4. **Circuit Optimization**
- Start with high-level built-in transformers
- Chain multiple optimizations in sequence
- Track depth and gate count reduction
- Validate correctness after transformation
5. **Noise Modeling**
- Use realistic noise models from calibration data
- Include all error sources (gate, decoherence, readout)
- Characterize before mitigating
- Keep circuits shallow to minimize noise accumulation
6. **Experiments**
- Structure experiments with clear separation (data generation, collection, analysis)
- Use ReCirq patterns for reproducibility
- Save intermediate results frequently
- Parallelize independent tasks
- Document thoroughly with metadata
## Additional Resources
- **Official Documentation**: https://quantumai.google/cirq
- **API Reference**: https://quantumai.google/reference/python/cirq
- **Tutorials**: https://quantumai.google/cirq/tutorials
- **Examples**: https://github.com/quantumlib/Cirq/tree/master/examples
- **ReCirq**: https://github.com/quantumlib/ReCirq
## Common Issues
**Circuit too deep for hardware:**
- Use circuit optimization transformers to reduce depth
- See `transformation.md` for optimization techniques
**Memory issues with simulation:**
- Switch from density matrix to state vector simulator
- Reduce number of qubits or use stabilizer simulator for Clifford circuits
**Device validation errors:**
- Check qubit connectivity with device.metadata.nx_graph
- Decompose gates to device-native gateset
- See `hardware.md` for device-specific compilation
**Noisy simulation too slow:**
- Density matrix simulation is O(2^2n) - consider reducing qubits
- Use noise models selectively on critical operations only
- See `simulation.md` for performance optimizationRelated Skills
nft-standards
Master ERC-721 and ERC-1155 NFT standards, metadata best practices, and advanced NFT features.
nextjs-app-router-patterns
Comprehensive patterns for Next.js 14+ App Router architecture, Server Components, and modern full-stack React development.
new-rails-project
Create a new Rails project
networkx
NetworkX is a Python package for creating, manipulating, and analyzing complex networks and graphs.
network-engineer
Expert network engineer specializing in modern cloud networking, security architectures, and performance optimization.
nestjs-expert
You are an expert in Nest.js with deep knowledge of enterprise-grade Node.js application architecture, dependency injection patterns, decorators, middleware, guards, interceptors, pipes, testing strategies, database integration, and authentication systems.
nerdzao-elite
Senior Elite Software Engineer (15+) and Senior Product Designer. Full workflow with planning, architecture, TDD, clean code, and pixel-perfect UX validation.
nerdzao-elite-gemini-high
Modo Elite Coder + UX Pixel-Perfect otimizado especificamente para Gemini 3.1 Pro High. Workflow completo com foco em qualidade máxima e eficiência de tokens.
native-data-fetching
Use when implementing or debugging ANY network request, API call, or data fetching. Covers fetch API, React Query, SWR, error handling, caching, offline support, and Expo Router data loaders (useLoaderData).
n8n-workflow-patterns
Proven architectural patterns for building n8n workflows.
n8n-validation-expert
Expert guide for interpreting and fixing n8n validation errors.
n8n-node-configuration
Operation-aware node configuration guidance. Use when configuring nodes, understanding property dependencies, determining required fields, choosing between get_node detail levels, or learning common configuration patterns by node type.