vse-pythonlisted
Install: claude install-skill TMHSDigital/Blender-Developer-Tools
# Video Sequence Editor in Python
## Trigger
Use this skill when the user:
- Builds or inspects a VSE / sequencer timeline from a script
- Mentions `sequence_editor`, `strips`, `sequences`, `new_effect`, COLOR strips, or `StripTransform`
- Hits `AttributeError: 'SequenceEditor' object has no attribute 'sequences'` on 5.x
- Hits `TypeError` on `new_effect` kwargs (`frame_end` vs `length`)
- Renders a sequencer composite whose COLOR cells ignore `transform.scale_*` after a resolution change
## High-level shape
```python
import bpy
scene = bpy.context.scene
se = scene.sequence_editor or scene.sequence_editor_create()
coll = se.strips if hasattr(se, "strips") else se.sequences
if bpy.app.version >= (5, 0, 0):
strip = coll.new_effect(
name="A", type="COLOR", channel=1,
frame_start=1, length=10,
)
else:
strip = coll.new_effect(
name="A", type="COLOR", channel=1,
frame_start=1, frame_end=11,
)
strip.color = (0.85, 0.10, 0.22)
```
Branch on `bpy.app.version`, never on `bpy.app.version_string`. An empty `bpy_prop_collection` is falsy — `se.strips or se.sequences` silently falls through to the legacy accessor on an empty timeline. Always branch on `hasattr`.
## Accessor: `.strips` vs `.sequences`
| | 4.5 LTS | 5.1 / 5.2+ |
| --- | --- | --- |
| Canonical collection | `.strips` (`.sequences` is a bridge to the same strips) | `.strips` only |
| `.sequences` | Present, same contents as `.strips` | `AttributeError` |
```python
def