cradiy/rovar/rovar-design
Claude Code and agent skill by cradiy/rovar
- community
Checking that the SKILL.md file is still in the repository.
Create and refine editable designs in a running Rovar editor through its local protocol. Use for canvas design, selected-element edits, layout refinement, and visual verification in Rovar, not for developing the editor's source code.
Install
npx vskill@latest install cradiy/rovar/rovar-designSKILL.md
Rovar design
Work in the user's running editor. Keep designs editable and iterate on existing elements. Treat the running application's capabilities and schemas as authoritative; there is no pinned protocol version or legacy compatibility mode.
Use reset_component only when the user wants to discard an instance's local overrides and restore its current main component. It also removes local additions and restores interactions. Use incremental update operations for selective edits.
Connect and discover
Read the running editor's discovery records before searching for an executable:
- Linux/macOS:
~/.rovar/instances/rovar-live-*/session.json - Windows:
%USERPROFILE%\.rovar\instances\rovar-live-*\session.json
Each JSON record contains the absolute executable, endpoint, pid, application_version, started_at_unix_ms, and transport. Use the executable and endpoint from the same record. Do not guess build directories, installation paths, or socket names. Honor a path explicitly supplied by the user. If no live record exists, ask the user to start Rovar normally; stale records left by crashes are not proof of a running editor. Do not launch duplicate editors merely to find a session.
Compare this skill's metadata.rovar-version with the record's application_version. The record's skill_sha256 is the SHA-256 of the complete bundled SKILL.md bytes; compare it with this installed file to detect changes within the same app version. If either differs, install the bundled skill from Rovar Settings → AI design and reload the skill before editing. This checks the installed instructions, not a protocol version; continue to discover the live capabilities and schemas.
In the commands below, replace rovar with the recorded executable path, quoted when needed. --list-sessions checks reachability and returns the same metadata. Normal application startup automatically exposes a local interface on Windows, macOS and Linux; no agent startup flag is needed. Web does not expose this transport.
Use an actual discovered endpoint:
Windows PowerShell discovery (choose the intended record before connecting):
Windows shells may not wait for GUI executables when invoked directly. Keep PowerShell commands in a pipeline, or use Start-Process -Wait -PassThru for explicit exit status. Agent process APIs should redirect stdin/stdout/stderr and wait for exit. No separate CLI executable is needed.
Use UTF-8 for JSON input and output. In Windows PowerShell 5.1, set $OutputEncoding = [System.Text.UTF8Encoding]::new($false) before piping non-ASCII requests. PowerShell 7 uses UTF-8 by default.
--connect reads JSON Lines from stdin and returns JSON Lines on stdout; diagnostics go to stderr. Inspect the JSON error even when the process exits unsuccessfully. Use structured JSON serialization or a request file rather than interpolating design text into shell commands. The CLI accepts multiple request lines.
Inspect each candidate's tabs.list and session.describe to identify the intended window/document; do not choose the first process or tab arbitrarily. If discovery is empty despite a running editor, check that both processes use the same user/home directory. Do not edit persisted .rovar files as a substitute for the live protocol.
Before editing, record the target session_id, document_id, page_id, document revision, selection, busy state, and capabilities. Query schema.get for the methods you will use. Never infer supported properties from what the editor UI can do.
Manage documents
Use tabs.list to inspect all windows and tabs, including empty windows and inactive documents. Tab methods omit envelope session_id and document_id; their parameters use the returned opaque window_id and, where required, tab_id.
tabs.create:window_id, optionaltitle. Create a document when the design task
calls for one; it uses the window's current local/remote source.
tabs.open:window_id, absolute.rovarpath. External files are imported into
the workspace. An already-open path activates its existing window/tab.
tabs.activate:window_id,tab_id. Select the intended document and use
tab.session from the response when tab.ready is true. AI can invoke this directly when the task requires loading or showing that document; do not ask the user to switch tabs manually or seek separate approval for an ordinary switch.
tabs.save:window_id,tab_id. Save a loaded document without switching tabs.tabs.close:window_id,tab_id. Use when the task calls for closing that document;
unrelated user tabs should remain open. Closing saves changes first.
Query the method schema before use. Mutations return an acceptance response, not a completed disk operation. Poll tabs.list for loading/saving/closing state and errors. A failed save keeps the tab; a failed open appears in the window's open_errors, identified by tab_id. Do not proceed with editing until session.describe exposes the intended session or a tab snapshot provides ready:true and session. Each loaded tab's session includes session/document/page IDs, revision, and history availability. An unloaded tab has session:null. If create/open/activate returns ready:false, poll tabs.list and use the refreshed scope once ready. On BUSY, inspect pending state rather than flooding retries. After a timeout, retry the exact request ID/body to avoid creating duplicate tabs. There are 256 successful tab-operation receipt slots per process, reported by remaining_tab_receipts; reads consume none. Replayed responses are historical acceptance snapshots, so use tabs.list for current state.
Inspect the design
session.describeincludes loaded background tabs. Select the intended
document/session explicitly and inspect active and busy; do not assume the first session is the visible document. Read, edit, capture, or manage its pages in the background when no view change is needed. Use tabs.activate only to load an unloaded tab or deliberately show it before selection/framing/page activation.
- Use
pages.listto discover page UUIDs and counts. Node reads,document.apply,
and captures can target an inactive page without changing the user's canvas. Revisions are document-wide; reread after edits on any page.
- For a selection-based request, resolve the current selection with
nodes.get.
Do not guess the selected element from an old screenshot or its name.
- Use
nodes.findto locate relevant content andnodes.getto inspect parents,
siblings, geometry, text, and styles before changing them. Names help locate nodes; stable UUIDs identify mutation targets.
- Read paginated results at one revision. If the revision changes, restart the read.
- Capture the affected frame with
canvas.capturewhen visual context matters.
Decode data_base64 to a PNG file and inspect the image; do not print the encoded image into the conversation. This is an export-rendered subtree, not a screenshot of the desktop window or proof of native rendering parity.
Modify incrementally
Prefer small, coherent edits followed by inspection over replacing the entire design. Preserve existing UUIDs, hierarchy, and unrelated user content. Use update for existing elements; create only what is missing and delete only what the task makes obsolete. Do not delete and recreate a frame, page, or all its children on each pass. Rebuild a whole region only when the user requests a redesign or the existing structure cannot express the requested change; keep the replacement scoped to that region.
Use pages.apply for page creation, duplication, renaming, deletion, and ordering; inspect its schema first. Each batch uses base_revision and is one undo entry. Create and duplicate require a name and unique $ref; optional before controls page ordering, otherwise they append. Copies get new node UUIDs and copied component masters become instances. Preserve existing pages unless removal is requested. These operations keep the current page visible unless it is deleted.
Call pages.activate with page_id and revision only when the task requires showing that page or changing its selection/view. It restores the page's saved view without changing document revision. Page mutations and activation share the apply receipt cache: an exact retry acknowledges the earlier result without repeating it. Use a fresh request ID for a deliberate later switch and reread current state after retries.
For a new design, establish the frame and major layout first, inspect the result, then add and refine content. For an existing design, change the specific geometry, typography, spacing, or styling at issue. After each meaningful batch, read the result and capture the affected region before deciding the next adjustment. Let observed results guide subsequent edits instead of repeatedly regenerating the full design.
Use document.apply with a fresh request_id, the inspected scope, and base_revision. Submit related operations as one atomic batch within the limits returned by discovery. Save the exact request until its outcome is known.
$referencesresolve earlier creates, duplicates, or instances within one batch only. Use the returned UUIDs
in subsequent batches.
- Coordinates are page units, including children inside frames, independent of zoom
and DPI. Check the current schema for complete compound-property requirements.
- Omit properties that are not changing. A supplied compound property replaces that
property; it is not necessarily a partial patch.
- Respect type-specific constraints: groups have no fill, corner radius applies to
rectangles, and auto-layout controls child positions. Inspect resolved geometry after layout changes. Do not flatten or rebuild a layout merely to move a child.
- Locked content and unsupported node types must remain intact. Do not silently
approximate a requested unsupported feature with a destructive replacement.
Each changed apply is one ordinary undo entry. Its acknowledgement confirms an in-memory edit, not completion of saving or synchronization.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/rovar-design/SKILL.md
Popularity
- Repository stars
- 79
- Repository forks
- 7
- 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/cradiy/rovar/rovar-design)