Resources
3Install
npx skillscat add cordy27/canvotion-skill Install via the SkillsCat registry.
SKILL.md
Canvotion CLI Skill
Role
- Use the Canvotion CLI to interact with Canvotion services.
- Execute only standard high-level CLI commands (e.g.,
canvotion ...). - Do not attempt to call underlying API endpoints or internal system commands directly.
- For authoring guidelines, refer to the rule files under the
[project-agent](./project-agent)directory (which contains guidelines for planning, visuals, coding, and 3D scenes).
Setup
- Ensure the
canvotionnpm package is downloaded and installed:- Install globally:
npm install -g canvotion - Or install locally in a project directory:
npm install canvotionand run withnpx canvotion - Always execute the CLI using the installed
canvotionnpm package command directly (e.g., canvotion [command] or npx canvotion [command]).
- Install globally:
- Run
canvotion loginfirst to authenticate with the Canvotion service. - The CLI credentials will be managed automatically. Do not ask the user for database or storage credentials.
- Automation environments can authenticate using
canvotion login --cli-token <token>or by setting theCANVOTION_CLI_TOKENenvironment variable. - Run
canvotion capabilities --schemabefore relying on specific command options or component contracts.
Core Workflow
- Bootstrap auth, project, and session:
canvotion auth statuscanvotion projects listcanvotion projects create --title "Demo" --template blank --start-sessioncanvotion projects use --project-id <project_id>canvotion session start --project-id <project_id>canvotion session statuscanvotion session end
- Prepare or inspect workspace:
canvotion workspace prepare --allcanvotion workspace list
- Read or update plan:
canvotion plan readcanvotion plan write --stdin-json-file plan.jsoncanvotion plan publish
- Upload local images before writing canvas code:
canvotion image upload --file ./cover.png --summary "cover image"- Use the returned
delivery_urlin canvas code:Image({ url: "<delivery_url>" }).
- Read, write, verify, and publish pages:
canvotion page read --filename page-001.jsoncanvotion page write --filename page-001.json --stdin-file page.jscanvotion page verify --filename page-001.jsoncanvotion page publish --filename page-001.json --mode replace_focuscanvotion page ship --filename page-001.json --mode replace_focus --stdin-file page.js
- Export saved renders:
canvotion render image --filename page-001.json [--time-seconds <seconds>] --output page-001.pngcanvotion render video --scope slide --filename page-001.jsoncanvotion render video --scope slide --filename page-001.json --wait --timeout-seconds 120 --output page-001.mp4canvotion render video --scope slide --filename page-001.json --format mov-alpha --wait --timeout-seconds 120 --output page-001.movcanvotion render video --scope project --wait --output project.mp4canvotion render video --scope project --format mov-alpha --wait --output project.movcanvotion render status --task-id <task_id>canvotion render download --task-id <task_id> --output project.mp4 [--resume] [--retries <n>]canvotion render imagedefaults to exporting the first frame; specify--time-seconds <seconds>to capture other timestamps.canvotion render downloadkeeps the.partfile upon failure; use--resumeto continue and--retriesto specify retry attempts.
- Diagnose:
canvotion doctorcanvotion version
Canvas Contract
- Return a
Frame. - If you use
frame.add(...)orreturn frame, declare it first withconst frame = new Frame({ width: 1920, height: 1080 });. Do not rely on a globalframe. frame.add(...)andgroup.add(...)accept only a constructed Leafer node or Leafer JSON withtag. Do not pass a plain config object such as{ id, text, voice }; for custom media like voiceovers, use constructors likenew LeaferVoiceover({ ... }).- Use supported constructors only:
Frame,Group,Box,Rect,Text,Line,Ellipse,Polygon,Image,Path,ManimAnimation,LeaferVideo,LeaferVoiceover,LeaferAudio,LeaferThree,LeaferProjection,LeaferProjectionFace. - Do not use
eval,Function,require, dynamicimport,process,fetch, orXMLHttpRequest. - To use images, upload the local file via the CLI, and use the returned delivery_url in the canvas code. Local file paths must not appear in the final canvas code.
- Verify canvas content via the CLI verifier before publishing.
Authoring Rule Tree
- Use
[project-agent/plan/10-outline.rule](./project-agent/plan/10-outline.rule)for project outlines. - Use
[project-agent/visual/](./project-agent/visual/)rules for visual planning and refinement. - Use
[project-agent/code/](./project-agent/code/)rules for Frame/Leafer authoring, styles, animations, voiceovers, and asset references. - Use
[project-agent/threejs/](./project-agent/threejs/)rules when the canvas requires 3D scene configuration.
Boundaries
- Render commands only export saved canvas or project data. Do not attempt to stream unsaved file content to render commands.
- Render dimensions must keep the canvas frame ratio (16:9). Pass
--widthand--heighttogether. render imagereturns an image URL;render videoreturns a task ID and status URL by default, and only blocks/waits when--waitis specified.- For transparent overlay video intended for Premiere Pro, Jianying, or After Effects, author subject-only alpha-safe scenes with no full-canvas background fills, opaque backdrops, or solid Frame fill, then request export with exactly
--format mov-alpha. - Image uploading supports standard file paths via
canvotion image upload --file. - For canvas publishing, only use continuation
none. - Do not attempt to use any private backend routes or internal system commands.
- Prefer
page shipfor a single operation; usewrite -> verify -> publishwhen iterative correction is needed.