modify-stream-deck

Installation
SKILL.md

Modify Stream Deck

Safely change the user's live Stream Deck profile while preserving unrelated buttons and a recoverable pre-change copy.

Workflow

  1. Confirm the requested device, page, button coordinates, and press behavior. Infer coordinates only after inspecting the active page.
  2. Locate the profile root. On macOS, start at ~/Library/Application Support/com.elgato.StreamDeck/ProfilesV3.
  3. Inspect the bundle manifest and page manifests. Run scripts/streamdeck_profile.py discover or inspect; never choose a page from its UUID alone.
  4. Translate each requested press into explicit actions. Use submit_text for “type text, then press Enter.” Do not rely on the Text action's isSendingEnter flag in terminal and coding-agent prompt fields.
  5. For focus-safe dictation, build background start and stop app wrappers with scripts/create_background_protocol_app.py, then use open steps for those app bundles. Do not send a dictation URL directly when the user wants to keep typing into the focused field.
  6. Create or select a 144 × 144 icon with a short label and one dominant symbol. Give toggle states different colors or symbols.
  7. Write a declarative spec and preview it with apply --dry-run. Read references/spec-format.md for the accepted action types.
  8. Apply with --restart-app. The helper copies the entire .sdProfile bundle before the atomic manifest replacement.
  9. Validate JSON, preserved coordinates, installed image dimensions, V3 Multi Action lanes, and Plugin descriptors. Stream Deck can render a key's icon yet show ⚠️ when its runtime action shape is invalid.
  10. Do not live-fire a button in a consequential field. Use a blank text editor or ask the user to press it. A successful JSON write does not prove the receiving app accepted the keystrokes.

Safety rules

Installs
1
GitHub Stars
4
First Seen
Oct 2, 2026