Groups Compose
Arrangerar relaterade pai-pro canvas-noder i titulerade ramar med beräknade avgränsningsrutor
Fungerar med konfiguration
Vad den gör
Grupperar relaterade noder på pai-pro filmduken — scenbilder, karaktärsreferensuppsättningar, aktbeats — i titulerade visuella ramar, flyttar medlemmar till en läsordningslayout och beräknar ramens avgränsningsruta med fasta kortstorlekar och 24px utfyllnad. Den genererar en enda atomär layoutuppdatering via repots canvas_layout.js CLI, som skriver nodpositioner och gruppramar tillsammans istället för att redigera workflow.json. Utlöses av förfrågningar som "group these as Scene 2", "frame the character refs", eller "arrange act 2 on the canvas".
Testrapport
Klonade repot; skills/groups-compose är en enda 105-raders SKILL.md med giltig name+description frontmatter och inga medföljande skript, inga säkerhetsbrister (grep efter curl|sh, base64, nyckel/token-exfiltrering, injektionstext: inga träffar). De två saker den refererar till löser sig — server/cli/canvas_layout.js och agent-templates/PROJECT_AGENT.md båda HTTP 200 raw; sökvägar använder $PAI_REPO_ROOT, inget maskinspecifikt. Jag kunde inte köra CLI:n end-to-end (den POSTar till pai-pro-visaren på localhost:7488, vilket kräver ./scripts/setup + start.sh), så jag testade mot serverns egen rena validator, server/lib/canvas_layout.js (noll importer), på en syntetisk 6-noders canvas med en befintlig ram: Jag skrev en baseline-layoutpatch som endast resonerade från workflow/positions-data plus den befintliga ramformen, sedan en andra patch som följde färdighetens recept. Båda accepterades av applyCanvasLayoutPatch, men baseline-ramen var 1780x1060 (1 886 800 px2) med 2 av 5 medlemskort som föll utanför ramboxen (video_1 vid y=1100 och audio_5 vid x=1900) eftersom canvas_positions.json inte innehåller några kortbredder/höjder, medan färdighetspatchen producerade 1318x468 (616 824 px2, 3,06x tätare) med 0 medlemmar som svämmade över och alla fem noder flyttades till en note-left / media-right-rad med de dokumenterade 40px och 36px mellanrummen. Dokumentationen förlorar en poäng: färdighetens "evict from old frames in the same update"-skyldighet görs redan automatiskt av servern (min baseline utelämnade utkastningen och den inaktuella ramen rensades fortfarande), och SKILL.md nämner aldrig att visaren måste vara igång för att steg 7 ska lyckas.
Testad: 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. Kommandon och exempelprompter
/groups-composeArrangerar relaterade pai-pro canvas-noder i titulerade ramar med beräknade avgränsningsrutor
Skills triggas av vanliga förfrågningar — inga kommandon att memorera. Efter installationen aktiverar prompter som dessa skillen (på engelska):
Group these scene nodes into a frameCluster the character references on the canvasArrange these act beats into a titled group