Presets
Build grandMA2 Gobo / Color / Beam / Focus preset palettes from fixture-type XML profiles, programming the correct per-fixture-type DMX value for each named function so one logical preset works across mixed fixtures. Use whenever the user wants to "build presets", "make a color palette", "set up gobo/beam/focus presets", "program a preset pool", or hands over fixture XML files and a console to populate presets on. Requires the gma2 MCP server connected (run the connect skill first). Prefer this over hand-writing preset commands — it resolves fixture-specific values from the profiles instead of guessing.From its SKILL.md
npx -y skills add chienchuanw/chuan-skills --skill presetsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.0 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
gma2 presets
Program preset palettes (Gobo=pool 3, Color=4, Beam=5, Focus=6) that work across
a mix of fixtures. The hard part is that "Strobe Fast", "wide", "Iris Closed",
"gobo 1.3" map to different DMX values on every fixture type — that info lives in
the MA2 fixture-type XML, not on the wire. scripts/profile_palette.py reads the
XML and resolves each named function to (attribute, At%) per type, which you
merge into one Global preset.
Inputs (ask the user)
- Fixture-type XML paths — exported from the console to USB (e.g.
/Volumes/USB DISK/gma2/library/manufacturer@[email protected]). The user provides these each time; rigs differ. One XML per fixture type in use. - Which preset types to build (default: all four — Gobo/Color/Beam/Focus).
- The console must be connected via the gma2 MCP (see the connect skill).
Workflow
1. Inspect the profiles
Run the bundled resolver to see what each fixture can do:
python3 plugins/gma2/skills/presets/scripts/profile_palette.py FIXTURE1.xml FIXTURE2.xml --dump
Note which fixtures support which preset types — dimmer-only profiles (a lone
DIM channel) get no Gobo/Color/Beam/Focus and are excluded. Report a capability
table so the user sees, e.g., "only the 600L has gobos; CT+ has no Focus."
2. Map fixture types to patched Fixture IDs
Query the live patch (List Fixture 1 Thru 1000 via send_raw_command) to learn
the Fixture ID range for each type (e.g. Fine 600L = 101–109). You program presets
by selecting real patched fixtures — the XML is only the value source. If a type's
XML was given but it isn't patched, say so and skip it.
3. Choose palette contents (the only creative input — ask)
Use AskUserQuestion. Sensible defaults for a music show:
- Color (extended, ~13–23): Red, Orange, Amber, Yellow, Green, Cyan, Blue, Lavender, Magenta, Pink, White, Warm White, Cool White — plus a pastel set (Soft Pink, Peach, Pale Gold, Mint, Sky Blue, Lilac…) if asked. Express colors as R/G/B/W 0–100; for light tints keep the lowest channel ~45–65 so they read as a colour, not washed-out white.
- Scope: Global by default (one preset applies across all fixtures of the included types, by feature). Selective only if the user wants per-fixture values.
- Gobo (600L-class only): Open + each wheel-1 and wheel-2 gobo, plus index/rotate/spin if "full".
- Beam: Open, Closed, Strobe Slow, Strobe Fast, Prism, Frost, Iris Closed (each only on fixtures that have the function).
- Focus: Zoom Wide/Medium/Narrow + Focus Near/Far (Focus only where present).
4. Resolve per-type values
For Beam/Gobo/Focus, build a JSON query list and resolve across all profiles:
python3 .../profile_palette.py *.xml --queries \
'[{"label":"Strobe Fast","query":"max Strobe","feature":"SHUTTER"},
{"label":"Zoom Wide","query":"wide","feature":"FOCUS"},
{"label":"Prism","query":"4 facet prism"},
{"label":"Gobo 1","query":"gobo 1.1"}]'
The output gives {label: {fixture_name: [attribute, at_percent]}}. See
references/resolving.md for the query vocabulary (band vs. named-slot, strobe,
zoom reversal, gobo/prism/frost/iris) and worked examples.
5. Check the pools are empty, then build
Read back List Preset 4.1 etc. first — don't clobber existing presets without
confirming. Build via the MCP tools:
- Color:
build_color_palettewithscope="global", target = all colour fixtures (e.g.Fixture 101 Thru 109 + Fixture 201 Thru 208), each colour as{id, name, r, g, b, w}. It sets COLORRGB1/2/3/5, stores, labels, and sets the pool swatch. - Gobo/Beam/Focus:
build_preset_palettewithpreset_typeset to"gobo"/"beam"/"focus"(the required first argument — picks the pool),scope="global", and per-presetby_target— one target per fixture type, each with the resolved(attribute, at_percent)pairs. Targets accumulate (merge) into one Global preset.
Clear the programmer before and after (ClearAll) so the rig isn't left lit.
6. Verify and report
List Preset <pool>.<first> Thru <pool>.<last> to confirm count + labels (note:
List Preset 4 whole-pool may say "NO OBJECTS"; range form works). Report what was
built, what was excluded and why, and remind the user the show isn't saved.
Preset pools
Gobo = 3, Color = 4, Beam = 5, Focus = 6.
What ships with it: 2 files
10.4 KB alongside SKILL.md, 1 of them executable
references/
- resolving.md3.3 KB
scripts/
- profile_palette.pyruns7.1 KB
Gives 0 of the 12 instructions most mcp tooling skills give in ~1.2k tokens
Counted across 638 of the 750 authors here whose files we hold, read 2026-08-07
- Create ten complex or independent read-only evaluation questionsin 69 of 638, across 15 files
- Test servers using MCP Inspectorin 61 of 638, across 19 files
- Provide actionable error messages with specific next stepsin 54 of 638, across 12 files
- Prioritize comprehensive API coverage over specific workflows or workflow toolsin 54 of 638, across 12 files
- Use TypeScript and Streamable HTTP for remote servers or clientsin 54 of 638, across 8 files
- Define structured output schemas where possiblein 50 of 638, across 8 files
- Use Zod or Pydantic for input schemasin 47 of 638, across 5 files
- Fetch MCP specification pages with markdown suffixin 46 of 638, across 4 files
- Load framework documentation using WebFetchin 45 of 638, across 3 files
- Verify each evaluation answer independentlyin 45 of 638, across 3 files
- Implement API client with authentication and paginationin 45 of 638, across 3 files
- Define input schemas with validationin 27 of 638, across 9 files
Said here and by no other author read
- ask for fixture XML paths and preset types
- run profile resolver on provided fixture XMLs
- report fixture capability table to user
- query live patch for fixture type ID ranges
- ask user to choose preset palette contents
- resolve preset DMX values from fixture XMLs
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.