Groups Compose
Organiza nodos de lienzo pai-pro relacionados en marcos titulados con cajas delimitadoras calculadas
Funciona con configuración
Qué hace
Agrupa nodos relacionados en el lienzo de creación de películas pai-pro —tomas de escena, conjuntos de referencia de personajes, ritmos de acto— en marcos visuales titulados, moviendo los miembros a un diseño de orden de lectura y calculando la caja delimitadora del marco con tamaños de tarjeta fijos y un relleno de 24px. Emite una única actualización de diseño atómica a través de la CLI canvas_layout.js del repositorio, que escribe las posiciones de los nodos y los marcos de grupo juntos en lugar de editar workflow.json. Se activa con solicitudes como "group these as Scene 2", "frame the character refs" o "arrange act 2 on the canvas".
Informe de la prueba
Cloné el repositorio; skills/groups-compose es un único SKILL.md de 105 líneas con frontmatter name+description válido y sin scripts incluidos, sin problemas de seguridad (grep para curl|sh, base64, exfiltración de clave/token, texto de inyección: sin coincidencias). Las dos cosas a las que hace referencia se resuelven — server/cli/canvas_layout.js y agent-templates/PROJECT_AGENT.md ambos HTTP 200 raw; las rutas usan $PAI_REPO_ROOT, nada específico de la máquina. No pude ejecutar la CLI de principio a fin (hace POST al visor pai-pro en localhost:7488, lo que necesita ./scripts/setup + start.sh), así que probé contra el propio validador puro del servidor, server/lib/canvas_layout.js (cero importaciones), en un lienzo sintético de 6 nodos con un marco preexistente: escribí un parche de diseño de línea base razonando solo a partir de los datos de workflow/positions más la forma del marco existente, luego un segundo parche siguiendo la receta de la habilidad. Ambos fueron ACEPTADOS por applyCanvasLayoutPatch, pero el marco de la línea base era 1780x1060 (1,886,800 px2) con 2 de 5 tarjetas miembro cayendo fuera de la caja del marco (video_1 en y=1100 y audio_5 en x=1900) porque canvas_positions.json no contiene anchos/alturas de tarjeta, mientras que el parche de la habilidad produjo 1318x468 (616,824 px2, 3.06x más ajustado) con 0 miembros desbordándose y los cinco nodos movidos a una fila de nota a la izquierda / medios a la derecha con los espacios documentados de 40px y 36px. La documentación pierde un punto: la obligación de la habilidad de "evict from old frames in the same update" ya la realiza automáticamente el servidor (mi línea base omitió la expulsión y el marco obsoleto aún se podó), y SKILL.md nunca menciona que el visor debe estar en ejecución para que el paso 7 tenga éxito.
Probado el: 2026-07-31 · Claude Code 2.x (agent harness)
Instalación
git clone --depth 1 https://github.com/Utopai-Research/pai-pro.git /tmp/groups-compose-src
mkdir -p ~/.claude/skills
cp -R /tmp/groups-compose-src/skills/groups-compose ~/.claude/skills/groups-compose
# The skill only does anything inside a pai-pro project: its one write path is
# node "$PAI_REPO_ROOT/server/cli/canvas_layout.js" --layout-json '{...}'
# which POSTs to the local viewer at http://localhost:7488. So you also need:
# cd /tmp/groups-compose-src && ./scripts/setup --agent claude # installs deps, sets PAI_REPO_ROOT, registers skills
# ./scripts/start.sh # starts the viewer on :7488
# Plugin-marketplace alternative (installs all 7 pai-pro skills):
# /plugin marketplace add Utopai-Research/pai-pro then /plugin install pai-pro
# Skill folder is a single SKILL.md, no bundled scripts. Comandos y prompts de ejemplo
/groups-composeOrganiza nodos de lienzo pai-pro relacionados en marcos titulados con cajas delimitadoras calculadas
Los skills se activan con peticiones en lenguaje natural, sin comandos que memorizar. Tras instalarlo, prompts como estos lo activan (en inglés):
Group these scene nodes into a frameCluster the character references on the canvasArrange these act beats into a titled group