Files
sideline/.opencode/skills/mainline-presets/SKILL.md
David Gwilliam ef98add0c5 feat(integration): Complete feature rewrite with pipeline architecture, effects system, and display improvements
Major changes:
- Pipeline architecture with capability-based dependency resolution
- Effects plugin system with performance monitoring
- Display abstraction with multiple backends (terminal, null, websocket)
- Camera system for viewport scrolling
- Sensor framework for real-time input
- Command-and-control system via ntfy
- WebSocket display backend for browser clients
- Comprehensive test suite and documentation

Issue #48: ADR for preset scripting language included

This commit consolidates 110 individual commits into a single
feature integration that can be reviewed and tested before
further refinement.
2026-03-20 04:41:44 -07:00

2.2 KiB

name, description, compatibility, metadata
name description compatibility metadata
mainline-presets Creating pipeline presets in TOML format for Mainline opencode
audience source_type
developers 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

@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

[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:

[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:

[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
  • null - Headless
  • moderngl - GPU-accelerated (optional)

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