--- name: mainline-presets description: Creating pipeline presets in TOML format for Mainline compatibility: opencode metadata: audience: developers source_type: codebase --- ## What This Skill Covers This skill covers how to create pipeline presets in TOML format for Mainline's rendering pipeline. ## Key Concepts ### Preset Loading Order Presets are loaded from multiple locations (later overrides earlier): 1. Built-in: `engine/presets.toml` 2. User config: `~/.config/mainline/presets.toml` 3. Local override: `./presets.toml` ### PipelinePreset Dataclass ```python @dataclass class PipelinePreset: name: str description: str = "" source: str = "headlines" # Data source display: str = "terminal" # Display backend camera: str = "scroll" # Camera mode effects: list[str] = field(default_factory=list) border: bool = False ``` ### TOML Format ```toml [presets.my-preset] description = "My custom pipeline" source = "headlines" display = "terminal" camera = "scroll" effects = ["noise", "fade"] border = true ``` ## Creating a Preset ### Option 1: User Config Create/edit `~/.config/mainline/presets.toml`: ```toml [presets.my-cool-preset] description = "Noise and glitch effects" source = "headlines" display = "terminal" effects = ["noise", "glitch"] ``` ### Option 2: Local Override Create `./presets.toml` in project root: ```toml [presets.dev-inspect] description = "Pipeline introspection for development" source = "headlines" display = "terminal" effects = ["hud"] ``` ### Option 3: Built-in Edit `engine/presets.toml` (requires PR to repository). ## Available Sources - `headlines` - RSS news feeds - `poetry` - Literature mode - `pipeline-inspect` - Live DAG visualization ## Available Displays - `terminal` - ANSI terminal - `websocket` - Web browser - `sixel` - Sixel graphics - `null` - Headless ## Available Effects See `effects_plugins/`: - noise, fade, glitch, firehose - border, crop, tint, hud ## Validation Functions Use these from `engine/pipeline/presets.py`: - `validate_preset()` - Validate preset structure - `validate_signal_path()` - Detect circular dependencies - `generate_preset_toml()` - Generate skeleton preset