From maxmcp
Organizes Max/MSP patch layouts by adjusting object positions, sizes, and patchcord routing in sections or full patches. Useful after edits, additions, or user requests for tidy layouts.
npx claudepluginhub signalcompose/maxmcpThis skill uses the workspace's default tool permissions.
MaxMCP で作成・編集した Max/MSP パッチのレイアウトを自動整理するスキル。
Provides guidelines for creating organized Max/MSP patches with MaxMCP: object addition, connections, signal flow, grid layout, section organization, and presentation UI design.
Generates and edits diagrams in draw.io using built-in AI with Gemini, Claude, or OpenAI from natural language prompts. Covers API configuration, custom LLM endpoints, and mxGraph XML best practices.
Creates interactive drag-and-drop mockups for node diagrams or matplotlib plots for charts to confirm layouts before coding CeTZ/Fletcher diagrams with 4+ nodes.
Share bugs, ideas, or general feedback.
MaxMCP で作成・編集した Max/MSP パッチのレイアウトを自動整理するスキル。 オブジェクトの配置、サイズ、パッチコードの経路を最適化し、可読性の高いパッチに整形する。
このスキルは2つのモードで使用する。patch-guidelines の4フェーズワークフローに対応。セクション内モードがデフォルト。
単一セクション内のオブジェクトのみを対象に整理する。セクション外のオブジェクトには影響しない。
patch-guidelines Phase 2(セクション配置)を実行し、下流・隣接セクションの位置を調整するパッチ全体を対象に整理する。従来の動作と同等。
以下の操作を行った後、影響を受けるオブジェクトとその周辺のパッチコードに対して自動的にレイアウト調整を実行する:
presentation 0 に設定replace_object_text): サイズ変更に伴う inlet/outlet 位置の変化を反映し、接続先との整列を再調整set_object_attribute で patching_rect / presentation_rect を変更): 移動先で周辺オブジェクトとの整列を調整プレゼンテーション管理: オブジェクトの追加時、UIとして表示が不要なオブジェクト(ロジック用の trigger, prepend, pack, route, pattr 等)は presentation 0 に設定する。プレゼンテーションに含めるのは、ユーザーが直接操作・閲覧する UI オブジェクト(live.dial, live.numbox, live.text, textedit, live.comment 等のラベル)のみ
Phase 8 検証のタイミング: 個々の操作ごとに Phase 8 検証を実行しない。一連の操作(オブジェクト追加・移動・接続等)が完了した後にまとめて1回実行する。これによりトークン消費と往復回数を削減する
パッチ読み込み直後の検証は不要: ユーザーがパッチを開き直した(リロードした)直後は、位置検証(Phase 8)を自動実行しない。パッチの状態は保存時のまま維持されているため、リロードだけでレイアウトが崩れることはない。検証はユーザーが明示的に要求した場合、または一連の操作が完了した後にのみ実行する
list_active_patches で取得可能であることpatch-guidelines スキルがロード済みであること(レイアウトルール参照)| Phase | セクション内モード | フルパッチモード |
|---|---|---|
| Phase 1: パッチ分析 | 対象セクションのみ | パッチ全体 |
| Phase 2: セクション分割 | スキップ(セクション確定済み) | 実行 |
| Phase 3: メインフロー特定 | セクション内で特定 | パッチ全体で特定 |
| Phase 4: オブジェクトサイズ調整 | 対象セクションのみ | 全オブジェクト |
| Phase 5: オブジェクト再配置 | 対象セクション内のみ | 全オブジェクト |
| Phase 6: パッチコード経路最適化 | セクション内パッチコードのみ | 全パッチコード |
| Phase 7: セクションヘッダー追加 | 対象セクションのみ | 全セクション |
| Phase 8: 重複・交差検証 | 対象セクション内のみ | パッチ全体 |
get_objects_in_patch で全オブジェクトの位置・サイズ・テキストを取得get_patchlines で全パッチコードの始点・終点・ミッドポイントを取得接続のトポロジーに基づき、パッチを論理セクションに分割する:
send / receive の境界でセクションを分ける各オブジェクトのテキスト内容に基づきサイズを調整する。幅の計算式・標準サイズは Layout Rules の Object Dimensions セクションを参照。
サイズ調整のルール:
live.dial, live.numbox, live.text 等の UI オブジェクトは固有サイズを維持panel オブジェクトはプレゼンテーション専用のためパッチングサイズは変更しないサイズ確認の注意:
fontsize を変更すると live.numbox, live.comment, live.text 等のサイズが自動変更されるappearance を変更すると live.dial のサイズが変わるget_object_attribute で patching_rect / presentation_rect の実際値を確認する(設定値と異なる場合がある)set_object_attribute で patching_rect を設定。すべてのルールは Layout Rules を参照:
配置順序:
set_patchline_midpoints でパッチコードの経路を設定。すべてのルールは Layout Rules の Patchcord Management セクションを参照:
各セクションの先頭に comment オブジェクトを配置:
--- Section Name ---
レイアウト完了後、全オブジェクトとパッチコードの重複・交差がないか検証する。このフェーズは省略できない。 セクション構築完了時、およびレイアウト変更後に必ず実行する。
検証手順:
get_objects_in_patch で全オブジェクトの position と size を取得get_patchlines で全パッチコードの start_point、end_point、midpoints を取得0. 上向き接続の検出:
start_point.y と end_point.y を比較start_point.y > end_point.y かつ num_midpoints == 0 の接続 = 上向き接続(禁止)1. オブジェクト同士の重複:
2. パッチコードとオブジェクトの交差:
3. パッチコード同士の重複:
4. プレゼンテーションモードの重複:
presentation 1 のオブジェクトについて、presentation_rect を取得patching_rect 変更時に presentation_rect が意図せず変わっていないか確認(live.* オブジェクトは showname/shownumber 等の変更でサイズが自動変更される場合がある)修正後の再検証: 修正を行った場合、影響を受ける周辺のパッチコード・オブジェクトについて再度検証する。プレゼンテーションモードの検証も含む
| パラメータ | 必須 | 説明 |
|---|---|---|
| patch_id | Yes | 整理対象のパッチID(list_active_patches または get_frontmost_patch で取得) |
| section_varnames | No | セクション内モード時、対象セクションに含まれるオブジェクトの varname リスト。省略時はフルパッチモードで動作 |
| ツール | フェーズ | 用途 |
|---|---|---|
get_objects_in_patch | 分析 | 全オブジェクト情報取得 |
get_patchlines | 分析 | 全接続情報取得 |
get_object_io_info | 分析 | inlet/outlet 数の確認 |
set_object_attribute | 再配置 | patching_rect でサイズ・位置変更 |
set_patchline_midpoints | 経路最適化 | パッチコードのミッドポイント設定 |
add_max_object | ヘッダー | セクションコメント追加 |
replace_object_text | ヘッダー | コメントテキスト設定 |
remove_max_object | クリーンアップ | 不要コメントの削除 |
patch-guidelines > reference/layout-rules.md — グリッド・間隔ルールpatch-guidelines > reference/mcp-notes.md — MCP ツール固有の注意事項patch-guidelines > reference/presentation-layout.md — プレゼンテーションモード(変更しない)patch-guidelines > reference/visual-design.md — パネル・色設計(変更しない)presentation_rect の位置・サイズを意図的に変更しない。ただし patching_rect の変更に伴い presentation_rect が意図せず変化する場合があるため、Phase 8 で検証し、変化が検出された場合は元の値に復元するUser: パッチを整理して
Assistant:
1. get_objects_in_patch → 47 objects
2. get_patchlines → 54 connections
3. 5 sections identified: Init, Learn, ParamInfo, UI, Processing
4. Main flow: Learn observer chain (12 objects, vertical)
5. Resizing 30 objects to content-appropriate widths
6. Repositioning all objects (top-to-bottom flow)
7. Adding midpoints to 2 upward connections (U-shape)
8. Adding 5 section header comments
Done: patch organized