leepokai/claude-mod-cutroom
cutroom
Cutroom: Claude Code 안의 HyperFrames 프로젝트용 편집 패널로, 프레임 미리보기, 타임라인, 자르기/분할/이동/삭제/되돌리기, Studio 선택 연동, Claude에 보내는 지목형 편집 요청을 제공합니다.
이 mod 소개
claude-mod-cutroom
Cutroom은 Claude Code 안에서 사용하는 HyperFrames 동영상 편집실입니다. 한 명령으로 브라우저에서 HyperFrames Studio(실제 미리보기와 타임라인)를 열고, 실시간 프레임 썸네일과 편집 버튼을 Claude Code 패널에 넣습니다. Studio에서 무엇을 선택했는지도 Claude가 알 수 있으므로 "make this bigger"라고 말할 때 다시 가리킬 필요가 없습니다.
또 다른 NLE를 만들려는 것이 아닙니다. 캔버스는 Studio입니다. 패널이 수행하는 모든 편집은 HyperFrames CLI 호출(timeline, snapshot, check, render) 하나이며, 버튼으로 표현할 수 없는 내용은 프로젝트, Studio 선택, 재생 헤드, 프레임 스냅샷, 타임라인을 이미 담은 프롬프트로 Claude에 전달됩니다.
my-launch · 45s · Studio ● [open Studio ↗] localhost:3061/#project/my-launch
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ← the frame under the
█████████████████▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀████ playhead, as half-block
████████████████ Message your coding agents ████████████████ cells in any terminal,
████████████████ like teammates. ████████████████ real pixels on kitty /
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ Ghostty and the desktop app
▶ |◀ -1s -.1 12.5s +.1 +1s ▶| ⟳ t=____ seek
Studio: 03 Demo · compositions/frames/03-demo.html
[ Trim in→┃ ] [ ┃←Trim out ] [ Split @┃ ] [ Move→┃ ] [ Duplicate ] [ Delete ] [ Undo (0) ]
[ Check ] [ Render draft ] [ Reload ] prompt context: on
Ask Claude › change what? (or just type in the main prompt)
graphics
▸ el-03-demo ····████┃······················· 9–16
el-04-feature ········█████···················· 15.5–22.1
설치
claude plugin marketplace add leepokai/claude-mod-cutroom
claude plugin install cutroom@claude-mod-cutroom
설치하지 않고 한 세션에서만 사용하려면 claude --plugin-dir /path/to/claude-mod-cutroom을 사용하세요. 이 폴더의 심볼릭 링크를 ~/.claude/skills/cutroom 아래에 두면 모든 세션에서 자동으로 로드됩니다.
요구 사항은 Node 22, PATH에 있는 ffmpeg와 curl, HyperFrames Claude Code 플러그인(claude plugin install hyperframes@hyperframes이며 Cutroom이 캐시된 CLI 실행기를 사용함) 또는 npx hyperframes에 접근할 수 있는 네트워크입니다. 프레임 미리보기는 kitty 그래픽 프로토콜을 말하는 터미널(kitty, Ghostty)과 Claude 데스크톱 앱에서는 실제 픽셀을 그리고, 다른 터미널에서는 반 블록 셀을 사용합니다.
사용
- HyperFrames 프로젝트(또는
videos/*가 있는 저장소 같은 부모 디렉터리)로cd한 뒤/cut을 입력하세요. Studio는 백그라운드에서 시작해 브라우저를 열고, 패널은 대화 기록 옆에 열립니다(전체 화면 레이아웃에서는 110열부터 도킹되고, 아니면 프롬프트 위에 표시됨). 현재 작업 디렉터리에hyperframes.json이 있으면 브라우저를 열지 않고 세션 시작 시 패널이 자동으로 열립니다./cut <dir>는 특정 프로젝트를 열고 후보가 여러 개면 패널에 버튼으로 나열합니다. - 보기. 패널에는 재생 헤드 아래의 프레임이 표시됩니다. Studio의 썸네일 API가 약 0.5초 만에 렌더링합니다.
▶(p)는 슬라이드쇼로 재생하며 타임라인의 0.5초마다 한 프레임을 프레임이 도착하는 속도대로 보여 줍니다.|◀ -1s -.1 +.1 +1s ▶|로 탐색합니다(패널에 포커스가 있을 때 단축키a j h l k f: ctrl+x tab 또는 클릭).t=로 시간을 찾고⟳(r)로 다시 캡처합니다. - 지목. Studio의 캔버스나 타임라인에서 아무 것이나 클릭하세요. 패널은 1.5초마다 Studio의 선택을 폴링해 보여 주고, 선택을 포함한 클립에 연결한 뒤 재생 헤드를 Studio의 시간으로 옮깁니다. 패널의 행(또는
1–9)으로 Studio 없이 최상위 클립을 선택할 수 있습니다. - CLI 자체 편집으로 자르기(각 작업은 취소할 수 있는
hyperframes timeline …호출):Trim in→┃(i)은 클립을 재생 헤드에서 시작하고,┃←Trim out(o)은 그 지점에서 끝내며,Split @┃(s)은<id>-2를 만들고,Move→┃(m)은 길이를 유지하며,Duplicate(d)는<id>-copy를 만듭니다.Delete(x)로 삭제하고Undo(u)로 패널의 이전 편집을 되돌립니다(영수증은<project>/.hyperframes/cutroom/에 있음). Studio는 그곳에서 수행한 드래그를 위한 자체 실행 취소 기록을 유지합니다. - 말하기. 프로젝트가 열려 있고
prompt context가 켜져 있을 때(t로 전환), Claude Code 프롬프트에 입력하는 모든 요청에는 Studio 선택, 해당 클립, 재생 헤드, 스냅샷 경로, 간단한 타임라인이 포함됩니다. 따라서 "把這個標題放大" 또는 "cut this scene 1s shorter"만으로 충분합니다. 패널 안의Ask Claude ›상자도 같은 정보를 보냅니다. 턴이 끝나면 패널이 타임라인과 프레임을 다시 불러오고 Studio도 스스로 새로 고칩니다. Check(c)는hyperframes check --json을 실행하고,Render draft(v)는renders/draft.mp4를 쓰며,Reload(z)는 타임라인을 다시 읽습니다.
사용해 보기
- 프로젝트가 없다면
npx hyperframes init demo로 하나 만드세요. - Claude Code에서
/cut demo를 입력하세요. Studio가 브라우저에서 열리고 패널에 첫 프레임이 표시됩니다.▶를 누른 다음 Studio 타임라인에서 클립을 클릭해 패널이 따라오는지 보세요. - 프롬프트에 "make the title 20% larger"라고 입력하세요. Claude가 컴포지션을 편집하고 Studio와 패널이 다시 로드됩니다.
레이아웃
Claude Code 모드는 세 파일과 타입 계약으로 구성됩니다(Claude Code 안의 plugin-authoring 스킬 참조). 이 저장소도 그런 모드 중 하나이며 자체 플러그인 마켓플레이스로도 동작합니다.
.claude-plugin/plugin.json manifest
.claude-plugin/marketplace.json lets `claude plugin marketplace add` point here
hooks/hooks.json names the hooks module
hooks/register.tsx the whole mod: CLI runner, state atoms, edit
verbs, Studio bridge, prompt composer, Pane render
types/index.d.ts the $.state contract the pane draws from
tests/editor.test.tsx claude plugin test .
claude plugin validate .는 엔진이 보게 될 모든 hook과$호출을 나열합니다.claude plugin test .는 실제 엔진에 대해 테스트를 실행합니다. 플러그인 아래의 세계(fs, process, http, store, env, clock)는 테스트가 응답합니다. 클립 목록, 중첩 행 숨기기, 선택, 이동, 정확한 argv로Split이 CLI에 도달하는지, 클립 바깥의 분할이 실행 전에 거부되는지를 검증합니다. Studio를 모의하면 선택 폴링이 패널에 도착하고 다음에 입력한 프롬프트의 컨텍스트로 전달되는지도 검증합니다.- 소유한 폴더에서 로드하면 엔진이 API 선언을
.claude-plugin/types/아래에 두고tsc -p .가 모드의 타입을 검사합니다.
라이선스
MIT, LICENSE 참조.
설치
먼저 작성자의 README에서 marketplace와 플러그인 이름을 확인하세요. 저장소 구조에 따라 명령어가 달라질 수 있습니다.
claude plugin marketplace add leepokai/claude-mod-cutroom claude plugin install cutroom
원문 / README
claude-mod-cutroom
Cutroom is a cutting room for HyperFrames videos that lives inside Claude Code. One command opens HyperFrames Studio in your browser (the real preview and timeline), puts a live frame thumbnail and the cut buttons in a Claude Code pane, and makes Claude aware of what you have selected in Studio, so "make this bigger" needs no further pointing.
It is deliberately not another NLE. Studio is the canvas. Every cut the pane
makes is one HyperFrames CLI call (timeline, snapshot, check, render),
and everything a button cannot say goes to Claude as a prompt that already
carries the project, the Studio selection, the playhead, the frame snapshot
and the timeline.
my-launch · 45s · Studio ● [open Studio ↗] localhost:3061/#project/my-launch
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ← the frame under the
█████████████████▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀████ playhead, as half-block
████████████████ Message your coding agents ████████████████ cells in any terminal,
████████████████ like teammates. ████████████████ real pixels on kitty /
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ Ghostty and the desktop app
▶ |◀ -1s -.1 12.5s +.1 +1s ▶| ⟳ t=____ seek
Studio: 03 Demo · compositions/frames/03-demo.html
[ Trim in→┃ ] [ ┃←Trim out ] [ Split @┃ ] [ Move→┃ ] [ Duplicate ] [ Delete ] [ Undo (0) ]
[ Check ] [ Render draft ] [ Reload ] prompt context: on
Ask Claude › change what? (or just type in the main prompt)
graphics
▸ el-03-demo ····████┃······················· 9–16
el-04-feature ········█████···················· 15.5–22.1
Install
claude plugin marketplace add leepokai/claude-mod-cutroom
claude plugin install cutroom@claude-mod-cutroom
For one session without installing: claude --plugin-dir /path/to/claude-mod-cutroom.
A symlink to this folder under ~/.claude/skills/cutroom also auto-loads it in
every session.
Requirements: Node 22, ffmpeg and curl on PATH, and either the hyperframes Claude
Code plugin (claude plugin install hyperframes@hyperframes, whose cached CLI
launcher Cutroom uses) or network access for npx hyperframes. The frame
preview draws real pixels in terminals that speak the kitty graphics protocol
(kitty, Ghostty) and in the Claude desktop app, and half-block cells in every
other terminal.
Use
cdinto a HyperFrames project (or its parent, e.g. a repo withvideos/*) and type/cut. Studio starts in the background and opens in your browser; the pane opens beside the transcript (docked in the fullscreen layout from 110 columns, else above the prompt). Withhyperframes.jsonin the cwd the pane opens by itself at session start (without launching a browser)./cut <dir>opens a specific project; with several candidates the pane lists them as buttons.- Look. The pane shows the frame under the playhead: Studio's thumbnail
API renders it in about half a second.
▶(p) plays it as a slideshow, one frame every 0.5 s of timeline, as fast as frames arrive.|◀ -1s -.1 +.1 +1s ▶|scrub (hotkeysa j h l k fwhile the pane has focus: ctrl+x tab, or click it);t=seeks to a time;⟳(r) re-captures. - Point. Click anything in Studio, on the canvas or in its timeline. The
pane polls Studio's selection every 1.5 s, shows it, maps it to the clip
that hosts it, and moves the playhead to Studio's time. Rows in the pane
(or
1–9) select a top-level clip without Studio. - Cut with the CLI's own edits (each one
hyperframes timeline …call, undoable withUndo):Trim in→┃(i) starts the clip at the playhead;┃←Trim out(o) ends it there;Split @┃(s) makes<id>-2;Move→┃(m) keeps the length;Duplicate(d) makes<id>-copy;Delete(x);Undo(u) restores the previous pane edit (receipts in<project>/.hyperframes/cutroom/). Studio keeps its own undo for drags made there. - Say it. Just type in Claude Code's prompt: while a project is open and
prompt contextis on (ttoggles it), every prompt you type carries the Studio selection, the hosting clip, the playhead, the snapshot path and a compact timeline, so "把這個標題放大" or "cut this scene 1s shorter" is enough. TheAsk Claude ›box does the same from inside the pane. When the turn ends the pane reloads the timeline and the frame; Studio reloads itself. Check(c) runshyperframes check --json;Render draft(v) writesrenders/draft.mp4;Reload(z) re-reads the timeline.
Try it
- Make a project if you have none:
npx hyperframes init demo. - In Claude Code:
/cut demo. Studio opens in the browser; the pane shows the first frame. Press▶, then click a clip in Studio's timeline and watch the pane follow. - Type in the prompt: "make the title 20% larger". Claude edits the composition; Studio and the pane reload.
Layout
A Claude Code mod is three files plus a type contract (see the
plugin-authoring skill inside Claude Code). This repo is one such mod and
doubles as its own plugin marketplace.
.claude-plugin/plugin.json manifest
.claude-plugin/marketplace.json lets `claude plugin marketplace add` point here
hooks/hooks.json names the hooks module
hooks/register.tsx the whole mod: CLI runner, state atoms, edit
verbs, Studio bridge, prompt composer, Pane render
types/index.d.ts the $.state contract the pane draws from
tests/editor.test.tsx claude plugin test .
claude plugin validate .lists every hook and$call the engine will see.claude plugin test .runs the tests against the real engine, with the world beneath the plugin (fs, process, http, store, env, clock) answered by the tests: clips list, nested rows hidden, select, seek,Splitreaching the CLI with the exact argv, a split outside the clip refused before anything runs; and with Studio mocked, the selection poll landing in the pane and riding the next typed prompt as context.- Once loaded from a folder you own, the engine lays its API declarations under
.claude-plugin/types/, andtsc -p .type-checks the mod.
License
MIT, see LICENSE.

