Groups Compose

Układa powiązane węzły płótna pai-pro w zatytułowane ramki z obliczonymi polami ograniczającymi

Autor: Utopai-Research · Utopai-Research/pai-pro

Działa po konfiguracji ★ 8.4/10

Groups Compose — Układa powiązane węzły płótna pai-pro w zatytułowane ramki z obliczonymi polami ograniczającymi

Co robi ten skill

Grupowanie powiązanych węzłów na płótnie filmowym pai-pro — ujęć scen, zestawów referencyjnych postaci, rytmów aktów — w zatytułowane ramki wizualne, przenoszenie elementów do układu zgodnego z kolejnością czytania i obliczanie pola ograniczającego ramki z ustalonymi rozmiarami kart i 24px odstępu. Emituje pojedynczą atomową aktualizację układu za pośrednictwem CLI canvas_layout.js repozytorium, który zapisuje pozycje węzłów i ramki grup razem, zamiast edytować workflow.json. Uruchamia się na żądania takie jak "group these as Scene 2", "frame the character refs" lub "arrange act 2 on the canvas".

Raport z testu

Sklonowano repozytorium; skills/groups-compose to pojedynczy 105-liniowy SKILL.md z prawidłowym frontmatterem name+description i bez dołączonych skryptów, bez problemów bezpieczeństwa (grep dla curl|sh, base64, wycieku kluczy/tokenów, tekstu wstrzykującego: brak trafień). Dwie rzeczy, do których się odwołuje, rozwiązują się — server/cli/canvas_layout.js i agent-templates/PROJECT_AGENT.md oba HTTP 200 raw; ścieżki używają $PAI_REPO_ROOT, nic specyficznego dla maszyny. Nie mogłem uruchomić CLI od początku do końca (wysyła POST do przeglądarki pai-pro na localhost:7488, co wymaga ./scripts/setup + start.sh), więc testowałem na własnym czystym walidatorze serwera, server/lib/canvas_layout.js (zero importów), na syntetycznym płótnie 6-węzłowym z jedną istniejącą ramką: napisałem bazową łatkę układu, opierając się tylko na danych workflow/positions plus istniejącym kształcie ramki, a następnie drugą łatkę, postępując zgodnie z przepisem umiejętności. Obie zostały ZAAKCEPTOWANE przez applyCanvasLayoutPatch, ale ramka bazowa miała 1780x1060 (1 886 800 px2) z 2 z 5 kart członków wypadających poza pole ramki (video_1 na y=1100 i audio_5 na x=1900), ponieważ canvas_positions.json nie zawiera szerokości/wysokości kart, podczas gdy łatka umiejętności wygenerowała 1318x468 (616 824 px2, 3,06x ciaśniej) z 0 członków przelewających się i wszystkie pięć węzłów przeniesionych do rzędu note-left / media-right z udokumentowanymi odstępami 40px i 36px. Dokumentacja traci punkt: obowiązek umiejętności "evict from old frames in the same update" jest już automatycznie wykonywany przez serwer (moja linia bazowa pominęła eksmisję, a przestarzała ramka nadal została usunięta), a SKILL.md nigdy nie wspomina, że przeglądarka musi działać, aby krok 7 zakończył się sukcesem.

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

Instalacja

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.

Komendy i przykładowe prompty

  • /groups-composeUkłada powiązane węzły płótna pai-pro w zatytułowane ramki z obliczonymi polami ograniczającymi

Skille uruchamiają się na zwykłe polecenia — bez komend do zapamiętania. Po instalacji aktywują go prompty takie jak te (po angielsku):

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