Borrowing it
Nothing to install: this file belongs to taylorbrook/MAX-MSP_CC_Framework. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/taylorbrook/MAX-MSP_CC_Framework/main/.claude/skills/max-patch-agent/SKILL.mdgit clone --depth 1 https://github.com/taylorbrook/MAX-MSP_CC_FrameworkWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/taylorbrook/max-msp_cc_framework/max-patch-agent)<a href="https://agentmods.dev/skills/taylorbrook/max-msp_cc_framework/max-patch-agent"><img src="https://agentmods.dev/badge/skills/taylorbrook/max-msp_cc_framework/max-patch-agent/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/taylorbrook/max-msp_cc_framework/max-patch-agent"><img src="https://agentmods.dev/badge/skills/taylorbrook/max-msp_cc_framework/max-patch-agent.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00023 | $0.04227 |
| Opus 5.5 | $0.00009 | $0.01691 |
| Sonnet 5.5 | $0.00005 | $0.00845 |
| Haiku 4.5 | $0.00002 | $0.00423 |
Grade A, and why
max-patch-agent scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 245 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Patch Generation Specialist
The Patch agent generates MAX/MSP .maxpat files focused on control-rate operations: object routing, message passing, subpatcher organization, MIDI handling, and data management.
Domain Context Loading
Before any generation:
- Read
CLAUDE.mdat project root -- follow every rule (Rules #1-#9) and the patch style guidelines - Use
ObjectDatabasefromsrc.maxpat.db_lookupfor all object lookups -- it loads all domains, resolves aliases, checks PD blocklist, and provides relationship data automatically - Read
.claude/max-objects/relationships.jsonfor common object pairings (if needed for design decisions) - Read project
config.jsonviaload_project_config()fromsrc.maxpat.projectfor allowed packages. Passallowed_packagestoPatcher(allowed_packages=allowed)so package objects outside the project's selection are blocked at creation time. Ifload_project_config()returns None (no config.json), useallowed = [](core-only), never None -- None allows every package.
Domain focus: Max control/data/UI objects. Signal processing and RNBO are handled by their respective agents.
Capabilities
Patch Construction
- Create
Patcherinstances with boxes and connections viasrc.maxpat.patcher - Create standard objects with
patcher.add_box(name, args, x, y)-- it looks the name up in ObjectDatabase (Rule #1) and returns the Box - Create structural objects with the dedicated builders:
add_subpatcher(),add_bpatcher(),add_gen() - Connect boxes with
Patcher.add_connection(src_box, src_outlet, dst_box, dst_inlet)
Key Functions
Patcher()-- create a new patchPatcher.add_box(name, args=None, x=0.0, y=0.0)-- create a DB-validated box and add it to the patch (returns the Box). An explicit position is kept unless the box would truly overlap another; then it moves down in 15px steps and aBoxMovedWarningnames the move (box.nudged_fromholds the requested position).Patcher.add_connection(src_box, src_outlet, dst_box, dst_inlet)-- connect boxesPatcher.add_subpatcher(name, inlets=1, outlets=1, x=0.0, y=0.0, inlet_comments=None, outlet_comments=None)-- add a subpatcher with labeled I/OPatcher.populate_assistance_comments()-- auto-fill empty inlet/outlet comments from connection contextfinalize_patch(patcher, is_new=True, force_layout=False)-- single-call layout cleanup: styling, layout, comments, midpoints (new); comments + routing of new or touched cords that have no midpoints, never moving boxes or clearing midpoints (edit). Withis_new=Trueit raisesLayoutRefusedError(fromsrc.maxpat.layout) before changing anything when a patcher it would lay out has >120 boxes or was saved by MAX; see "Output Protocol (New Patches)"apply_layout(patcher, options=None, force=False)-- row-based topological layout positioning (accepts LayoutOptions); same refusal,force=Trueoverridesvalidate_patch(patcher.to_dict(), db=patcher.db)-- run the validation pipeline (Layers 1-5, every scope; passpatch_path=to resolve abstractions beside the file)save_patch_roundtrip(patcher.to_dict(), path)-- write .maxpat to diskPatcher.add_comment(text, x, y)-- add a comment box (for inline annotations, critic notes)Patcher.add_message(text, x, y)-- add a message box (for triggering messages, storing values)Patcher.add_box("node.script", ["myscript.js"], x=0.0, y=0.0)-- add a node.script box for Node for Max (DB entry: fixed 1 inlet / 2 outlets); write the script file withwrite_js(code, path)Patcher.add_js(filename, code=None, num_inlets=1, num_outlets=1, x=0.0, y=0.0)-- add a js object box (Legacy Engine, ES5 JavaScript) (returns tuple of Box and code string)
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 6d ago Changed · +3 lines eb095e449364
- 12d ago Changed 1b2159330411
- 13d ago Changed 4ddacfe9a85b
- 14d ago Changed · -105 lines 974d0f5ea479
- 15d ago Changed · -1 lines e901d98db12e
- 16d ago Changed · +1 lines 561a42f13d59
- 27d ago Changed 120d2f0f0c75
- 1mo ago Changed · -1 lines c41d80f96460
- 2mo ago First seen · 348 lines · 23 tokens per session scan A 8be8a75c2f0c
max-patch-agent is a skill published in the GitHub repository taylorbrook/MAX-MSP_CC_Framework (46 stars, last pushed 4d ago), licensed MIT. It adds 23 tokens to every session and 4,227 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
playtest-report
Structured playtest report template, or turn existing playtest notes into structured feedback.
godot-signals-groups
Build event-driven, decoupled Godot 4.7 gameplay with signals and node groups: declare and emit custom signals, connect with Callables (incl. bind/one-shot), and broadcast to many nodes via groups and callgroup. Use when wiring node communication in a Godot project, replacing tight references with signals…
motion
Reconstruct a skeleton from calibrated mesh projections and sequential VLM joint annotations, then fit joints and skin weights. Generate motion from joint-position trajectories, rhythm and contact constraints through IK; refine bone orientation against the action, then export, retarget and validate on the target mesh.
unity-addressables
Manage Addressables groups, entries, profiles and content builds (com.unity.addressables, reflection-based).
unity-manual-component
Manually add, configure, reorder, and copy components on GameObjects using Unity Editor UI. For one-off Inspector workflows that do not need REST automation.
threejs-exposure-color-grading
Build a measured exposure and grading path in Three.js. Use for a 64x36 encoded luminance meter, asynchronous readback, weighted log-average exposure, asymmetric adaptation, single tone-map ownership, and a generated 32-cube post-tone-map LUT.