Agent skill
stream-deck
Helper to safely edit manifest files when developing plugin for Elgato Stream Deck. Use when creating, validating, or repairing Stream Deck manifest.json files.
Install this agent skill to your Project
npx add-skill https://github.com/geggo98/dotfiles/tree/main/modules/ai/_files/skills/streamdeck
SKILL.md
Stream Deck Manifest Toolkit
Validate, repair, format, and scaffold Elgato Stream Deck manifest.json files.
This skill is designed to shorten the feedback loop when an agent generates or edits Stream Deck plugin manifests by providing:
- Schema validation against the official JSON schema.
- Fast, local asset checks (file existence + PNG/GIF dimensions) that typically only fail during manual Stream Deck testing.
- Scaffolding/editing helpers to keep manifests consistent and less error-prone.
Important: Run the script directly (
./scripts/streamdeck_manifest.sh). Do not prefix withbash— the script requires zsh and will fail under bash.
What this skill does
1) Schema validation
- Validates the manifest against the official schema.
- Uses the manifest’s
$schemaURL if present; otherwise defaults to:https://schemas.elgato.com/streamdeck/plugins/manifest.json
2) Extra validations (beyond JSON Schema)
The schema cannot reliably verify files on disk. This tool adds:
- Strict JSON check (no comments / trailing commas). If the file parses as JSONC, it reports it and can rewrite to strict JSON.
- File existence checks (relative to the manifest directory) for:
CodePath,CodePathMac,CodePathWin,PropertyInspectorPath- action
PropertyInspectorPath - encoder
layoutwhen it ends with.json
- Image asset checks (existence + dimensions for PNG/GIF):
- Plugin
Icon: 256×256 + 512×512 (@2x), PNG only CategoryIcon: 28×28 + 56×56 (@2x), PNG; or single SVG- Action
Icon: 20×20 + 40×40 (@2x), PNG; or single SVG - Action
States[].Image: 72×72 + 144×144 (@2x), PNG/GIF; or single SVG - Action
States[].MultiActionImage: 72×72 + 144×144 (@2x), PNG; or single SVG - Encoder
Icon: 72×72 + 144×144 (@2x), PNG; or single SVG - Encoder
background: 200×100 + 400×200 (@2x), PNG; or single SVG
- Plugin
- Action UUID uniqueness and convention warning if an action UUID doesn’t start with the plugin UUID.
3) Editing helpers
fmt: rewrites a manifest to strict JSON and applies a stable key order + formatting.init: scaffolds a minimal.sdPluginfolder with:manifest.json- placeholder plugin icon PNGs
- placeholder SVGs for category/action/state icons
- a stub
bin/plugin.jsand action property inspector HTML
add-action: appends an action stub into an existing manifest and creates placeholder assets.
Scripts
scripts/streamdeck_manifest.sh— CLI entrypoint.- Output is JSON by default (easy for agents to parse).
- Pass
--timeout DURATIONto override the global execution timeout (default:1m). Format follows GNU coreutils (e.g.30s,2m,1h).
How to use
Validate a manifest
./scripts/streamdeck_manifest.sh validate path/to/manifest.json
Behavior:
- Exit code
0if no errors. - Exit code
1if parse/schema/asset errors exist. - Warnings do not fail by default.
JSON output shape:
{
"ok": true,
"errors": [],
"warnings": [],
"meta": {
"schemaUrl": "…",
"schemaFromCache": true,
"parsedAsJsonc": false
}
}
Fix JSONC / trailing commas
./scripts/streamdeck_manifest.sh validate manifest.json --fix-jsonc --write
Format / normalize
./scripts/streamdeck_manifest.sh fmt manifest.json --write
Scaffold a new plugin folder
./scripts/streamdeck_manifest.sh init ./MyPlugin.sdPlugin \
--name "My Plugin" \
--uuid "com.example.myplugin" \
--author "Example" \
--description "…"
Add an action to an existing manifest
./scripts/streamdeck_manifest.sh add-action ./MyPlugin.sdPlugin/manifest.json \
--name "My Action"
Agent workflow
- Run
validate. - If parse error or JSONC: run
validate --fix-jsonc --write. - Fix schema errors (missing required fields, wrong types, invalid values).
- Fix asset errors (wrong/missing paths, missing @2x files, wrong image dimensions).
- Run
fmt --write. - Re-run
validateuntilok: true.
Limitations
- Does not validate “monochrome” / “white on transparent” requirements; it only checks file existence and raster dimensions.
- Does not validate SVG geometry/dimensions.
- Passing validation does not guarantee correct runtime behavior; it only removes the common “manifest/asset” failure modes.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
eval-notebook
Execute .ipynb notebooks (Python, Kotlin, or any Jupyter kernel) without overwriting; return LLM-friendly JSON with outputs and errors. Use when you need to run or validate a Jupyter notebook.
nix-shell
Search Nix packages and run commands with packages from nixpkgs that are not installed locally. Use when you need a package not available locally or want to search nixpkgs.
tmux
Remote control tmux sessions for interactive CLIs (python, gdb, etc.) by sending keystrokes and scraping pane output.
slidev
Create and present web-based slidedecks for developers using Slidev with Markdown, Vue components, code highlighting, animations, and interactive features. Use when building technical presentations, conference talks, code walkthroughs, teaching materials, or developer decks. Also trigger when the user mentions Slidev, sli.dev, slide decks with code, or wants to create developer-facing presentations.
diagram-render
Render PlantUML (@startuml…@enduml) and Mermaid fenced blocks to a self-contained HTML preview; if rendering fails, the error text must be embedded in the output image. Use when the user asks to render, preview, or export diagrams.
adr-writing
Use when documenting significant architectural decisions. Creates focused ADRs explaining context, decision, and alternatives. Prevents vague documentation and implementation detail bloat. Triggers: 'create ADR', 'document decision', making technology/framework/persistence/auth choices, cross-cutting concerns.
Didn't find tool you were looking for?