xiangyu-cas/codex-canvas/canvas
- community
Checking that the SKILL.md file is still in the repository.
Open and use Codex-Canvas, a project-local infinite canvas for Codex image generation. Use when the user says /canvas, asks to open the canvas, or wants generated images collected on a visual board.
Install
npx vskill@latest install xiangyu-cas/codex-canvas/canvasSKILL.md
Codex-Canvas
Use this skill to open the local Codex-Canvas board and keep generated images collected in the active project.
Workflow
- Open the native plugin sidebar with the
codex-canvas.open_canvasMCP tool. Discover the installed tool if it is deferred, then pass the active workspace's absoluteprojectDirand the current CodexthreadIdwhenever available.
open_canvasdefaults topresentation: "sidebar". The tool result opens the MCP App directly beside the chat; no browser tab, localhost URL, HTTP port, or desktop UI automation is needed.- The conversation's plugin panel entrypoint can also open the UI. If it has no project binding yet, its button asks the chat to call
open_canvaswith the active workspace and thread. - Opening never installs an update. Canvas state and images stay under the workspace's
canvas/directory, with separate scopes for bound threads. - Repeat calls reuse the panel in the same chat. Do not open a browser after a successful sidebar call.
- Keep the workspace and thread explicit for subsequent imports and operations. Without a thread binding, use the shared project default; never guess another chat's binding.
- Browser compatibility fallback: only when the host lacks MCP App support, the plugin MCP tool is unavailable, or the user explicitly asks for a browser, run
node <plugin-root>/bin/codex-canvas.mjs open --project <workspace> --thread-id <thread-id>(omit thread when unavailable), or callopen_canvaswithpresentation: "browser".
- Reuse an existing exact-URL Codex in-app browser tab, or open the returned URL in the in-app browser.
- If browser control is unavailable, return
[Open Codex-Canvas](<url>)and report the limitation. Do not launch the OS default browser or use desktop UI automation.
- When the user asks for image generation or image editing while this skill is active:
- Use Codex
imagegenfor the image work. - Save or identify the generated image file path and keep the current Codex thread id attached to the canvas operation.
- Immediately add the result to the canvas with
codex-canvas.add_image, or by running:
node <plugin-root>/bin/codex-canvas.mjs import <image-path> --project <workspace> --thread-id <thread-id>.
- If the exact output path is unclear, call
codex-canvas.collect_recent_imageswith the active workspace, or run:
node <plugin-root>/bin/codex-canvas.mjs collect --project <workspace> --thread-id <thread-id> --since-minutes 30 --limit 5.
- Default collection scans only
~/.codex/generated_images/<thread-id>. Without a bound thread it is a safe no-op. Use explicitroots/--fromonly for a user-requested manual recovery scan. - Session-generated images are placed in a vertical column by generation batch. Multiple images from the same generation batch are aligned in one horizontal row.
- Canvas-derived images, when collected with a
sourceObjectId, are placed in a horizontal row to the right of the source image.
Quick Edit,Remove BG,Expand,Edit Text, andEdit Elementsare implemented as background Codex-Canvas jobs. They create a canvas placeholder immediately, run Codex/ImageGen through the matching Codex-Canvas operation skill and bundled Codex App CLI, then replace the placeholder with the collected output.Edit Textis a two-step interaction: first run text recognition and show the formatted editable text list in the canvas UI; after the user changes one or more fields and clicks Run, call imagegen to produce the edited PNG.
- Text recognition should try local RapidOCR first when available. If local OCR is unavailable, fails, or returns no text, fall back to Codex vision recognition.
Edit Elementsasks ImageGen for a low-detail instance segmentation map, then Codex-Canvas locally splits the source image into four-channel transparent PNG object/text layers plus a residual background. Codex-Canvas immediately imports the residual background and transparent object/text layers, stacks them to the right of the source image so they reconstruct the original composition, and continues a background-completion pass from the original image plus residual background in the background. When completion finishes, Codex-Canvas replaces the existing background layer asset in place and refreshes that layer. Intermediate segmentation and raw completion images stay internal to the job and are not added to the canvas.- Canvas-to-chat requires a bound Codex thread. Each bound thread uses a separate canvas scope under
canvas/threads/<canvasId>/. The frontendsend-to-chataction sends alocalImageturn through Codex app-serverthread/resume+turn/start; MCP/HTTP callers may explicitly usemention-filefor a Codex@file-stylementionturn. The frontend@filetoolbar button must not directly send a turn; it prepares/copies an@<absolute-path>reference for the user to paste into the Codex chat box. Do not use desktop UI automation or clipboard paste as a fallback.
Notes
- Canvas data is stored under
<workspace>/canvas/. - The default UI is a self-contained MCP App in the plugin sidebar. Its state, images, and actions use the app-only MCP transport; the local web service is a compatibility fallback.
- The first milestone should preserve generated images as project assets, not only as chat attachments.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/canvas/SKILL.md
Popularity
- Repository stars
- 153
- Repository forks
- 16
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/xiangyu-cas/codex-canvas/canvas)