.claude/skills/max-ui-agent/SKILL.md
Design and position UI controls for MAX patches in presentation and patching mode
npx skillsauth add taylorbrook/MAX-MSP_CC_Framework max-ui-agentInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
The UI agent handles visual design and control placement for MAX patches. It manages presentation mode layout (the user-facing interface) and patching mode organization (the developer view). It works with UI objects -- dials, sliders, panels, displays -- and positions them for usability.
Before any generation:
CLAUDE.md at project root -- follow Rule #4 (Patch Style) for spacing and organizationObjectDatabase from src.maxpat.db_lookup for UI object lookups -- focus on UI-relevant objects: dial, slider, multislider, number, flonum, toggle, button, comment, panel, umenu, tab, radiogroup, swatch, pictctrl, message, live.dial, live.slider, live.numbox, live.toggle, live.menu, live.text, live.tabconfig.json via load_project_config() from src.maxpat.project for allowed packages. Pass allowed_packages to Patcher(allowed_packages=allowed) so package objects outside the project's selection are blocked at creation time.Domain focus: UI objects and presentation layout. Signal processing is handled by the DSP agent.
presentation flag on boxes to include them in presentation viewpresentation_rect for the user-facing interfacefinalize_patch(patcher, is_new=True) -- single-call layout cleanup: styling, layout, comments, midpoints (new); midpoints + comments (edit)apply_layout(patcher) from src.maxpat.layout -- row-based topological auto-layout for patching mode (called internally by finalize_patch)apply_layout automatically positions objects inside subpatchers, gen~ patchers, and embedded bpatchers -- no manual subpatcher layout neededpresentation_rect on a box BEFORE apply_layout runs, the layout engine will NOT overwrite it. Only boxes with presentation=True but NO presentation_rect get the fallback 4-per-row grid layoutPatchline supports optional midpoints: list[float] for segmented cable routing[x1, y1, x2, y2, ...] of waypoint coordinatespatcher.add_connection(src, 0, dst, 0, midpoints=[x1, y1, x2, y2])presentation: 1 -- include box in presentation viewpresentation_rect: [x, y, width, height] -- position in presentation modepresentation_linecount -- for comment objects, number of visible linesbgcolor -- background color for panels and some objectstextcolor -- text colorfontsize -- font size for textfontname -- font familyShared Capabilities: See
.claude/skills/references/shared-capabilities.mdfor Assistance Comments, Z-Order Manipulation, Aesthetic Capabilities, Layout Options, Editing Functions, and Edit Workflow reference.
When generating patches with package objects (BEAP, Vizzie, etc.), read .claude/max-objects/PACKAGES.md for:
Package bpatchers have specific dimensions that differ from the default 200x100:
add_bpatcher(object_name="bp.Oscillator", filename="bp.Oscillator.maxpat") -- the object_name parameter triggers DB-driven auto-sizingpresentation_rect sizingget_bpatcher_dims("bp.Oscillator") from src.maxpat.sizing to query dimensionsDomain focus: Edit presentation mode layouts, control positioning, bpatcher configurations.
presentation_rect on each boxread_patch() and patcher.analyze()finalize_patch(patcher, is_new=False) -- regenerates cable midpoints and populates assistance comments without repositioning existing objectsvalidate_patch(patcher)save_patch_roundtrip()testing
Analyzes user task descriptions and dispatches to the correct specialist agent(s) for MAX/MSP generation
data-ai
RNBO export-aware patch generation, target validation, and param mapping
data-ai
Generate MAX patches with control flow, message routing, subpatcher organization, and MIDI handling
testing
Manages MAX project creation, status tracking, project switching, and test protocol execution