orbit-elementor-devlisted
Install: claude install-skill adityaarsharma/orbit
# 🪐 orbit-elementor-dev — Elementor widget development
Elementor's widget API has its own rhythm — subclass `Widget_Base`, register controls, render with escaping. This skill audits that you're following the modern (3.18+) patterns.
---
## Quick start
```bash
claude "/orbit-elementor-dev Audit ~/plugins/my-plugin/widgets/ for Elementor widget best practices."
```
---
## What it checks
### 1. Widget structure
```php
class Widget_My_Hero extends \Elementor\Widget_Base {
public function get_name() { return 'my-hero'; }
public function get_title() { return __( 'My Hero', 'my-plugin' ); }
public function get_icon() { return 'eicon-banner'; }
public function get_categories() { return [ 'my-plugin' ]; }
public function get_keywords() { return [ 'hero', 'banner' ]; }
protected function register_controls() {
$this->start_controls_section( 'content_section', [
'label' => __( 'Content', 'my-plugin' ),
] );
$this->add_control( 'title', [...] );
$this->end_controls_section();
}
protected function render() { ... }
protected function content_template() { ... } // Live editor preview
}
```
### 2. Register the widget
```php
add_action( 'elementor/widgets/register', function( $widgets_manager ) {
$widgets_manager->register( new \My_Plugin\Widget_My_Hero() );
} );
```
**Whitepaper intent:** `elementor/widgets/register` (with `r`) is the modern hook. Old `widgets_registered` is deprecated and triggers a console warning in Elementor 3.18+.