What problem does it solve? PyO3's extension-module feature silently breaks cargo test and cargo check when enabled in a shared workspace dependency spec, producing confusing linker errors about missing Python C-API symbols. This Skill explains the root cause, the correct feature wiring between Cargo.toml and pyproject.toml, and how to make a Rust accelerator optional in Python. ## Core Features & Use Cases - Linker Error Diagnosis: Identifies ld symbol-not-found errors (Py_IsInitialized, Py_NoneStruct, etc.) as the extension-module feature being enabled where it should not be, not a missing dependency. - Feature Wiring Fix: Keeps extension-module out of the workspace dependency spec, exposes it as an opt-in crate feature, and tells maturin to request it via [tool.maturin] in pyproject.toml. - Maturin Config Gotcha: Explains that maturin reads pyproject.toml from the invoking working directory, not from --manifest-path, so config placement matters. - Optional Accelerator Pattern: Implements try/except import with a pure-Python fallback, plus a test proving both paths produce identical results. - Use Case: Your workspace cargo test fails with undefined Python symbols after adding a pyo3 crate; apply this Skill to restructure the feature flags and verify both cargo test and maturin build succeed. ## Quick Start Ask the assistant to diagnose why cargo test fails with undefined Py_NoneStruct linker errors in a pyo3 workspace and fix the extension-module feature wiring.