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
- Confirm the requested device, page, button coordinates, and press behavior. Infer coordinates only after inspecting the active page.
- Locate the profile root. On macOS, start at
~/Library/Application Support/com.elgato.StreamDeck/ProfilesV3. - Inspect the bundle manifest and page manifests. Run
scripts/streamdeck_profile.py discoverorinspect; never choose a page from its UUID alone. - Translate each requested press into explicit actions. Use
submit_textfor “type text, then press Enter.” Do not rely on the Text action'sisSendingEnterflag in terminal and coding-agent prompt fields. - For focus-safe dictation, build background start and stop app wrappers with
scripts/create_background_protocol_app.py, then useopensteps for those app bundles. Do not send a dictation URL directly when the user wants to keep typing into the focused field. - Create or select a 144 × 144 icon with a short label and one dominant symbol. Give toggle states different colors or symbols.
- Write a declarative spec and preview it with
apply --dry-run. Read references/spec-format.md for the accepted action types. - Apply with
--restart-app. The helper copies the entire.sdProfilebundle before the atomic manifest replacement. - Validate JSON, preserved coordinates, installed image dimensions, V3 Multi Action lanes, and
Plugindescriptors. Stream Deck can render a key's icon yet show ⚠️ when its runtime action shape is invalid. - 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.