بنقرة واحدة
canvas
Operate Pulse Canvas workspaces — read user-curated context, write results, create nodes
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Operate Pulse Canvas workspaces — read user-curated context, write results, create nodes
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Select and run proportionate validation for changes to apps/canvas-workspace. Use when iterating on Canvas Workspace code, finishing a feature or fix, preparing release evidence, or deciding whether a full performance report is necessary.
Deep-research a topic and build a structured Pulse Canvas workspace with approved research depth, source-backed findings, progressive or final canvas creation, spatially organized frames, content nodes, and connections. Use when the user asks to bootstrap, generate, research, organize, or build an AI-created canvas.
Extend an existing Pulse Canvas frame with local, source-backed research while preserving the surrounding canvas. Use when the user asks to research, enrich, expand, verify, update, or add sources/details inside a selected or named frame, rather than bootstrapping a whole new canvas.
Add or change a Pulse Canvas capability that must be available through structured agent tools and the pulse-canvas CLI. Use for cross-workspace Capability Runtime changes spanning apps/canvas-workspace, packages/canvas-cli, or packages/cli, including new live read, operate, or unsafe application actions.
Run the canvas-workspace performance evaluation, publish the latest static dashboard through the local nginx/Cloudflare Tunnel route, capture a screenshot, and summarize the report. Use when the user asks to run Pulse Canvas/canvas-workspace perf checks, deploy the performance dashboard, refresh https://jasperhu.art/apps/canvas-perf/, or send a dashboard screenshot from Feishu/remote-server.
Use when adding a new canvas node capability to Pulse Canvas (apps/canvas-workspace). Plugin nodes are the default path; host types are the documented exception. Covers both paths' exact touch points and the landmines (union/factory desync, dispatch fallthrough, agent-tool contract surface).
| name | canvas |
| description | Operate Pulse Canvas workspaces — read user-curated context, write results, create nodes |
| version | 1.0.0 |
Interact with canvas workspaces via the pulse-canvas CLI. The canvas is a shared workspace between humans and agents.
The current workspace ID is available via $PULSE_CANVAS_WORKSPACE_ID environment variable (auto-set by canvas). All node and context commands use it automatically — no need to pass workspace ID explicitly.
Whenever $PULSE_CANVAS_WORKSPACE_ID is set, treat the canvas as required user-provided context. Before planning, coding, reviewing, or answering a workspace task, run pulse-canvas context --format json and use that result alongside repository files.
pulse-canvas context --format json
Returns all nodes with structured info: file paths, frame groups, labels.
pulse-canvas node list --format json
pulse-canvas node read <nodeId> --format json
pulse-canvas node write <nodeId> --content "..."
pulse-canvas node create --type file --title "Report" --data '{"content":"..."}'
Supported --type values: file, terminal, frame, agent, mindmap.
For mindmaps, pass the recursive topic tree under data.root. Topic ids are auto-generated — do NOT supply them yourself. If --data is omitted a placeholder root is inserted.
pulse-canvas node create --type mindmap --title "Roadmap" --data '{
"root": {
"text": "Roadmap",
"children": [
{ "text": "Q1", "children": [
{ "text": "Ship MVP" },
{ "text": "Onboard 10 users" }
]},
{ "text": "Q2", "children": [
{ "text": "Public beta" }
]}
]
}
}'
Topic shape: { text: string, children?: Topic[], color?: string, collapsed?: boolean } (recursive). Use this whenever the user asks for a mindmap / brainstorm / outline that should be laid out radially rather than as a flat text node.
pulse-canvas edge create --from <nodeId> --to <nodeId> --label "depends on" --kind dependency --format json
pulse-canvas edge list --format json
pulse-canvas edge delete <edgeId> --format json
pulse-canvas workspace list --format json
pulse-canvas agent send <nodeId> --input "..."
Use this for follow-up prompts, approvals, corrections, or redirections to an already-running agent node. Enter is appended automatically.
Requirements:
agentrunningDo NOT use node write for agent nodes — node write only modifies file/frame/group content. agent send delivers live input to the PTY session and is the only correct channel for talking to a running agent.
Choose the most direct runtime interface available:
canvas_read_webpage, page_click,
page_fill, or page_eval when the host provides them.app_capabilities_list and app_capability_call tools
when they are available.pulse-canvas runtime ... when the host does not provide native runtime tools.These interfaces reach the same Capability Runtime. Do not shell out to
pulse-canvas runtime when an equivalent native tool is available.
When Pulse Canvas is running, discover the runtime capabilities before using them:
pulse-canvas runtime capabilities --format json
Prefer structured capabilities such as page read, click, and fill. If the user asks for behavior those capabilities cannot express, execute a JavaScript function body inside an open iframe node or right-dock link tab:
printf '%s' 'return { title: document.title, links: document.links.length }' |
pulse-canvas runtime eval --node <nodeId> --stdin --format json
Requirements:
runtime eval sparingly, return JSON-serialisable data, and read the page again after a mutation to verify the outcome.For non-preset operations on Pulse Canvas's own renderer UI, use the host renderer capability only after structured Canvas tools prove insufficient:
printf '%s' 'return { title: document.title }' |
pulse-canvas runtime host-eval --stdin --format json
host-eval requires Agent runtime control, is limited to the selected
workspace's host route, and must return JSON-serialisable data. It has no direct
Node require, but runs in the renderer main world and can use the exposed
window.canvasWorkspace bridge, including actions backed by main-process IPC.
Treat it as an unsafe full-app escape hatch: prefer stable capabilities, then
verify any mutation through a structured read.
pulse-canvas context --format json to understand the user's canvas layout and intentruntime eval; use arbitrary scripts only for non-preset behavior