ui-panelslisted
Install: claude install-skill TMHSDigital/Blender-Developer-Tools
# UI Panels
## Trigger
Use this skill when the user:
- Wants a sidebar tab in the 3D viewport, properties editor, or any other space
- Mentions `bpy.types.Panel`, `bl_space_type`, `bl_region_type`, "N panel", "sidebar"
- Needs to expose properties or operators in a custom UI
- Asks why a property is showing without a label or in the wrong column
## Required inputs
- **Where the panel lives**: the editor (3D viewport, Properties, etc.) and the region (sidebar, header, tools)
- **Tab name** if it lives in a sidebar (`bl_category`)
- **Class name** convention: `EDITOR_PT_name` (`VIEW3D_PT_my_addon`)
## The minimum viable panel
```python
import bpy
class VIEW3D_PT_my_addon(bpy.types.Panel):
bl_label = "My Addon"
bl_idname = "VIEW3D_PT_my_addon"
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = "My Addon"
def draw(self, context):
layout = self.layout
layout.label(text="Hello from the N panel")
```
After registering the class, the panel appears in the 3D viewport's sidebar (press `N`) under a "My Addon" tab.
## The bl_* fields that decide where it lives
| Field | Common values | Effect |
| --- | --- | --- |
| `bl_space_type` | `'VIEW_3D'`, `'PROPERTIES'`, `'NODE_EDITOR'`, `'IMAGE_EDITOR'`, `'TEXT_EDITOR'`, `'OUTLINER'`, `'SEQUENCE_EDITOR'` | Which editor the panel appears in |
| `bl_region_type` | `'UI'` (sidebar), `'TOOLS'` (toolbar, deprecated for new add-ons), `'WINDOW'` (main, used in PROPERTIES), `'HEADER'` | Whi