Groups Compose

Organizza nodi correlati del canvas pai-pro in frame titolati con bounding box calcolati

di Utopai-Research · Utopai-Research/pai-pro

Richiede configurazione ★ 8.4/10

Groups Compose — Organizza nodi correlati del canvas pai-pro in frame titolati con bounding box calcolati

Cosa fa

Raggruppa nodi correlati sul canvas di produzione cinematografica pai-pro — inquadrature di scena, set di riferimento dei personaggi, battute di atto — in frame visivi titolati, spostando i membri in un layout con ordine di lettura e calcolando il bounding box del frame con dimensioni fisse delle carte e padding di 24px. Emette un singolo aggiornamento atomico del layout tramite la CLI canvas_layout.js del repository, che scrive posizioni dei nodi e frame di gruppo insieme invece di modificare workflow.json. Si attiva su richieste come "group these as Scene 2", "frame the character refs", o "arrange act 2 on the canvas".

Rapporto di test

Clonato il repository; skills/groups-compose è un singolo SKILL.md di 105 righe con frontmatter name+description valido e senza script inclusi, nessun problema di sicurezza (grep per curl|sh, base64, esfiltrazione di chiavi/token, testo di injection: nessun risultato). I due elementi a cui fa riferimento si risolvono — server/cli/canvas_layout.js e agent-templates/PROJECT_AGENT.md entrambi HTTP 200 raw; i percorsi usano $PAI_REPO_ROOT, nulla di specifico della macchina. Non ho potuto eseguire la CLI end-to-end (fa POST al visualizzatore pai-pro su localhost:7488, che richiede ./scripts/setup + start.sh), quindi ho testato contro il validatore puro del server, server/lib/canvas_layout.js (zero importazioni), su un canvas sintetico a 6 nodi con un frame preesistente: ho scritto una patch di layout di base ragionando solo dai dati workflow/positions più la forma del frame esistente, quindi una seconda patch seguendo la ricetta della skill. Entrambe sono state ACCETTATE da applyCanvasLayoutPatch, ma il frame di base era 1780x1060 (1.886.800 px2) con 2 delle 5 schede membro che cadevano fuori dal box del frame (video_1 a y=1100 e audio_5 a x=1900) perché canvas_positions.json non contiene larghezze/altezze delle schede, mentre la patch della skill ha prodotto 1318x468 (616.824 px2, 3.06x più stretto) con 0 membri che traboccano e tutti e cinque i nodi spostati in una riga note-left / media-right con gli spazi documentati di 40px e 36px. La documentazione perde un punto: l'obbligo della skill di "evict from old frames in the same update" è già gestito automaticamente dal server (la mia baseline ha omesso l'eviction e il frame obsoleto è stato comunque rimosso), e SKILL.md non menziona mai che il visualizzatore deve essere in esecuzione affinché il passo 7 abbia successo.

Testato il: 2026-07-31 · Claude Code 2.x (agent harness)

Installazione

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.

Comandi e prompt di esempio

  • /groups-composeOrganizza nodi correlati del canvas pai-pro in frame titolati con bounding box calcolati

Gli skill si attivano con richieste in linguaggio naturale, senza comandi da ricordare. Dopo l'installazione, prompt come questi lo attivano (in inglese):

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