What problem does it solve? You have a working Ascend C operator project on Ascend NPU hardware, but no way to call it from Python. This Skill builds the PyTorch Adapter (PTA) layer so your custom operator becomes callable through torch.ops or torch_npu, without touching the operator kernel itself. ## Core Features & Use Cases - Route Detection: Inspects your project for evidence (kernel <<<>>> calls, op_host OpDef, aclnn headers, .run packages) and routes to one of two mutually exclusive integration paths: kernel direct-invoke or aclnn registry. - Direct-Invoke Path: Generates op_extension files (ops.h, torch.cpp, register.cpp) plus a dual-target CMakeLists that produces a loadable libxxx_ops.so registered under torch.ops.npu, with correct stream(true) synchronization. - aclnn Registry Path: Generates an xops wheel (setup.py with NpuExtension, ops_common boilerplate, schema registration, Meta backend impl, torchair FX-to-GE converter) that dlsyms aclnn symbols from libcust_opapi.so at runtime. - Use Case: You built a custom fused operator (e.g., a BatchMatmulMaxSum kernel) that compiles and runs standalone, and now want to call it from a PyTorch training or inference script via torch_npu.npu_x_custom_op() with torch.compile graph-mode support. ## Quick Start Ask the assistant to add a PyTorch interface to your existing Ascend operator project at a given path, and it will detect the correct route and generate the PTA layer.