---
name: "polars-lazy-query-plan-optimizer"
description: "Optimize and execute analytical query graphs with Polars LazyFrame and scan_* APIs."
metadata:
  author: "Polars"
  version: "1.0.0"
  runtime_compatibility:
    - "codex"
    - "claude-code"
    - "cursor"
    - "windsurf"
triggers:
  - "use polars lazyframe"
  - "inspect polars query plan explain"
  - "scan parquet with polars"
permissions:
  fs_read: true
  fs_write: "workspace"
  shell_exec: false
  net_access: false
---

# Polars LazyFrame Query Optimization

Leverages Polars Lazy API (pl.scan_parquet, pl.scan_csv): predicate pushdown, projection pushdown, common subplan elimination, query graph inspection with explain(), and lazy execution.

## When to Invoke
Invoke this skill whenever you need to:
- use polars lazyframe
- inspect polars query plan explain
- scan parquet with polars

## Execution SOP & Rules
1. Start data ingestion with pl.scan_parquet() or pl.scan_csv() rather than eager read_* functions.
2. Apply filters as early as possible in the query chain to maximize predicate pushdown efficiency.
3. Call print(lf.explain()) to audit physical and logical query optimization trees.
4. Execute final query execution with lf.collect() to compute results in memory.

## Verification Checklist
- Run local linting, syntax validation, and type-checks before reporting completion.
- Ensure all created or modified files adhere to workspace boundaries and avoid uncommitted secrets.
- Verify tests or build commands exit cleanly with return code 0.
