Groups Compose

Arranges related pai-pro canvas nodes into titled frames with computed bounding boxes

Works with setup

Test report

Verdict
Works with setup
Score
8.4/10
Tested
Jul 31, 2026
Environment
Claude Code 2.x (agent harness)
Upstream re-checked
Aug 10, 2026 · 03e1c3a

Cloned the repo; skills/groups-compose is a single 105-line SKILL.md with valid name+description frontmatter and no bundled scripts, no security smells (grep for curl|sh, base64, key/token exfil, injection text: no hits). The two things it references resolve — server/cli/canvas_layout.js and agent-templates/PROJECT_AGENT.md both HTTP 200 raw; paths use $PAI_REPO_ROOT, nothing machine-specific. I could not run the CLI end-to-end (it POSTs to the pai-pro viewer on localhost:7488, which needs ./scripts/setup + start.sh), so I tested against the server's own pure validator, server/lib/canvas_layout.js (zero imports), on a synthetic 6-node canvas with one pre-existing frame: I wrote a baseline layout patch reasoning only from workflow/positions data plus the existing frame shape, then a second patch following the skill's recipe. Both were ACCEPTED by applyCanvasLayoutPatch, but the baseline frame was 1780x1060 (1,886,800 px2) with 2 of 5 member cards falling outside the frame box (video_1 at y=1100 and audio_5 at x=1900) because canvas_positions.json carries no card widths/heights, while the skill patch produced 1318x468 (616,824 px2, 3.06x tighter) with 0 members overflowing and all five nodes moved into a note-left / media-right row at the documented 40px and 36px gaps. Docs lose a point: the skill's "evict from old frames in the same update" obligation is already done automatically by the server (my baseline omitted the eviction and the stale frame was still pruned), and SKILL.md never mentions that the viewer must be running for step 7 to succeed.

Scored on four weighted criteria — install, triggering, output vs. baseline, docs. How scoring works

  • Installs cleanly 5/5
  • Triggers reliably 5/5
  • Output vs. baseline 7/10
  • Docs & honesty 4/5

What Groups Compose does

Groups related nodes on the pai-pro filmmaking canvas — scene shots, character reference sets, act beats — into titled visual frames, moving members into a reading-order layout and computing the frame bounding box with fixed card sizes and 24px padding. It emits a single atomic layout update through the repo's canvas_layout.js CLI, which writes node positions and group frames together instead of editing workflow.json. Triggers on requests like "group these as Scene 2", "frame the character refs", or "arrange act 2 on the canvas".

How to install Groups Compose

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.

Skills live in ~/.claude/skills/ (global) or .claude/skills/ (per-project). Restart Claude Code after installing.

Commands — how to trigger Groups Compose

  • /groups-compose Arranges related pai-pro canvas nodes into titled frames with computed bounding boxes

It also activates on plain-language prompts like these:

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

Frequently asked questions

Is the Groups Compose skill free?
Yes. The skill itself is free from Utopai-Research/pai-pro. SkillProof publishes the install command and an independent test verdict at no cost.
Does Groups Compose work with Claude Code?
We tested it with Claude Code 2.x (agent harness) on Jul 31, 2026. Verdict: Works with setup. Cloned the repo; skills/groups-compose is a single 105-line SKILL.md with valid name+description frontmatter and no bundled scripts, no security smells (grep for curl|sh, base64, key/token exfil, injection text: no hits). The two things it references resolve — server/cli/canvas_layout.js and agent-templates/PROJECT_AGENT.md both HTTP 200 raw; paths use $PAI_REPO_ROOT, nothing machine-specific. I could not run the CLI end-to-end (it POSTs to the pai-pro viewer on localhost:7488, which needs ./scripts/setup + start.sh), so I tested against the server's own pure validator, server/lib/canvas_layout.js (zero imports), on a synthetic 6-node canvas with one pre-existing frame: I wrote a baseline layout patch reasoning only from workflow/positions data plus the existing frame shape, then a second patch following the skill's recipe. Both were ACCEPTED by applyCanvasLayoutPatch, but the baseline frame was 1780x1060 (1,886,800 px2) with 2 of 5 member cards falling outside the frame box (video_1 at y=1100 and audio_5 at x=1900) because canvas_positions.json carries no card widths/heights, while the skill patch produced 1318x468 (616,824 px2, 3.06x tighter) with 0 members overflowing and all five nodes moved into a note-left / media-right row at the documented 40px and 36px gaps. Docs lose a point: the skill's "evict from old frames in the same update" obligation is already done automatically by the server (my baseline omitted the eviction and the stale frame was still pruned), and SKILL.md never mentions that the viewer must be running for step 7 to succeed.
What is the Groups Compose SkillProof Score?
8.4/10 — installs cleanly 5/5, triggers reliably 5/5, output vs. baseline 7/10, docs & honesty 4/5.
How do I install Groups Compose?
Copy the install command from this page, run it in your terminal, and restart Claude Code. Skills live in ~/.claude/skills/ (global) or .claude/skills/ inside a project.
Can I use Groups Compose with Cursor, Copilot, Gemini CLI, Codex or other AI tools?
The SKILL.md format is native to Claude (Claude Code, Desktop, claude.ai). The instructions inside adapt to other assistants: Cursor rules, GitHub Copilot instructions, Windsurf rules, Custom GPTs, AGENTS.md for OpenAI Codex, and GEMINI.md for Google Gemini CLI — our conversion guides cover each, and the free converter on the tools page does the wrapping for you.