Groups Compose

Organise les nœuds de canevas pai-pro liés en cadres titrés avec des boîtes englobantes calculées

par Utopai-Research · Utopai-Research/pai-pro

Fonctionne avec configuration ★ 8.4/10

Groups Compose — Organise les nœuds de canevas pai-pro liés en cadres titrés avec des boîtes englobantes calculées

Ce que fait

Regroupe les nœuds liés sur le canevas de création de films pai-pro — plans de scène, ensembles de références de personnages, battements d'acte — en cadres visuels titrés, déplaçant les membres dans une disposition en ordre de lecture et calculant la boîte englobante du cadre avec des tailles de cartes fixes et un rembourrage de 24px. Il émet une seule mise à jour atomique de la disposition via l'outil CLI canvas_layout.js du dépôt, qui écrit les positions des nœuds et les cadres de groupe ensemble au lieu de modifier workflow.json. Se déclenche sur des requêtes comme "group these as Scene 2", "frame the character refs", ou "arrange act 2 on the canvas".

Rapport de test

Cloné le dépôt ; skills/groups-compose est un SKILL.md de 105 lignes avec un frontmatter name+description valide et aucun script intégré, aucune faille de sécurité (grep pour curl|sh, base64, exfiltration de clé/jeton, texte d'injection : aucun résultat). Les deux éléments qu'il référence se résolvent — server/cli/canvas_layout.js et agent-templates/PROJECT_AGENT.md tous deux HTTP 200 bruts ; les chemins utilisent $PAI_REPO_ROOT, rien de spécifique à la machine. Je n'ai pas pu exécuter le CLI de bout en bout (il POSTe vers le visualiseur pai-pro sur localhost:7488, ce qui nécessite ./scripts/setup + start.sh), j'ai donc testé contre le propre validateur pur du serveur, server/lib/canvas_layout.js (zéro imports), sur un canevas synthétique à 6 nœuds avec un cadre préexistant : j'ai écrit un patch de disposition de base en me basant uniquement sur les données workflow/positions plus la forme du cadre existant, puis un deuxième patch suivant la recette de la compétence. Les deux ont été ACCEPTÉS par applyCanvasLayoutPatch, mais le cadre de base était de 1780x1060 (1 886 800 px2) avec 2 des 5 cartes membres tombant en dehors de la boîte du cadre (video_1 à y=1100 et audio_5 à x=1900) car canvas_positions.json ne contient pas les largeurs/hauteurs des cartes, tandis que le patch de compétence a produit 1318x468 (616 824 px2, 3,06x plus serré) avec 0 membres débordant et les cinq nœuds déplacés dans une ligne note-left / media-right aux espacements documentés de 40px et 36px. La documentation perd un point : l'obligation de la compétence "evict from old frames in the same update" est déjà effectuée automatiquement par le serveur (ma base de référence a omis l'éviction et le cadre obsolète a quand même été élagué), et SKILL.md ne mentionne jamais que le visualiseur doit être en cours d'exécution pour que l'étape 7 réussisse.

Testé le: 2026-07-31 · Claude Code 2.x (agent harness)

Installation

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.

Commandes et exemples de prompts

  • /groups-composeOrganise les nœuds de canevas pai-pro liés en cadres titrés avec des boîtes englobantes calculées

Les skills se déclenchent sur des demandes en langage courant — aucune commande à retenir. Après installation, des prompts comme ceux-ci l'activent (en anglais) :

  • Group these scene nodes into a frame
  • Cluster the character references on the canvas
  • Arrange these act beats into a titled group