← ClaudeAtlas

orbit-elementor-skinslisted

Audit Elementor widget skins — Skin_Base subclasses that let one widget render in multiple visual styles (e.g. "Card", "List", "Carousel" variants of the same Posts widget). Use when the user says "Elementor skin", "Skin_Base", "widget variant", or has multiple similar widgets that should be skins of one.
adityaarsharma/orbit · ★ 1 · Testing & QA · score 55
Install: claude install-skill adityaarsharma/orbit
# 🪐 orbit-elementor-skins — Widget skins Skins are Elementor's variation system. One widget, multiple visual treatments, shared data + controls. Most plugins ship 5 separate widgets when 1 widget + 5 skins would be cleaner. --- ## Quick start ```bash claude "/orbit-elementor-skins Audit ~/plugins/my-plugin for over-widgeting — places where multiple widgets should be skins of one." ``` --- ## What it checks ### 1. Skin_Base subclass ```php class Skin_Card extends \Elementor\Skin_Base { public function get_id() { return 'card'; } public function get_title() { return __( 'Card', 'my-plugin' ); } protected function _register_controls_actions() { add_action( "elementor/element/{$this->parent->get_name()}/section_card/before_section_end", [ $this, 'register_controls' ] ); } public function render() { // Custom render for "card" treatment } } ``` ### 2. Skin registered on the widget ```php class Widget_Posts extends \Elementor\Widget_Base { protected function _register_skins() { $this->add_skin( new Skin_Card( $this ) ); $this->add_skin( new Skin_List( $this ) ); $this->add_skin( new Skin_Grid( $this ) ); } } ``` ### 3. Default skin ```php $this->add_control( '_skin', [ 'type' => Controls_Manager::SELECT, 'default' => 'card', // populated automatically from registered skins ] ); ``` ### 4. Use cases for skins vs separate widgets | Use skin when | Use separate widget when | |---|---| | Same data shape (posts list, gallery