> */ public function sub_group_rules(): array { return array( // Everything Elementor registers as an MCP resource is context or a guide. array( 'sub_group' => 'elementor-guidance', 'resource' => true, ), // The V4 global design system: variables, global classes and site-wide default styles. // These sit beside our own kit settings — the pairing issue #255 asked for. array( 'sub_group' => 'elementor-kits', 'keywords' => array( 'global-variable', 'classes', 'default-styles', 'variable' ), ), // Authoring and the document lifecycle. array( 'sub_group' => 'elementor-elements', 'keywords' => array( 'composition', 'element', 'component', 'document', 'preview', 'structure' ), ), // Catalogues, schemas and advice. `resource` and `posts` are here because // `list-resources`, `read-resource` and `list-posts` are tools that read the resource // and content catalogues rather than resources themselves, so the first rule misses // them — `diagnostics/list-unclassified-abilities` reported all three as placed by the // fallback, which is what that report is for. array( 'sub_group' => 'elementor-guidance', 'keywords' => array( 'schema', 'best-practices', 'guide', 'asset', 'dynamic-tag', 'resource', 'posts' ), ), ); } /** * No exceptions yet. * * The rules place all 25 of Elementor's current abilities correctly. A long list here would * mean the rules are wrong; fix them instead. * * @since 0.0.42 * @return array */ public function sub_group_overrides(): array { return array(); } /** * Where an unrecognised Elementor ability lands. * * Guidance rather than elements: an ability nobody has written a rule for is more useful sitting * with the catalogues than implying it mutates a page. `elementor/list-posts` and * `elementor/list-assets` are the shape this catches today. * * @since 0.0.42 * @return string */ public function default_sub_group(): string { return 'elementor-guidance'; } /** * Labels, matching what this plugin's own Elementor abilities declare. * * Declared rather than derived: `ucwords()` on the key would render "Elementor Kits" where the * rest of the group says "Kits & Global Styles". * * @since 0.0.42 * @return array */ public function sub_group_labels(): array { return array( 'elementor-elements' => __( 'Elements & Widgets', 'acrossai-abilities-manager' ), 'elementor-kits' => __( 'Kits & Global Styles', 'acrossai-abilities-manager' ), 'elementor-guidance' => __( 'Discovery & Guidance', 'acrossai-abilities-manager' ), ); } }