tools:
- view_list
- view_create
- view_reload
- view_run
- view_compile_script
- view_call_script
- view_property_read
- view_property_discover
- view_property_write
- view_property_apply
View
L1
Use when the user asks to build or edit a Locus View (视图/面板): a Vue UI panel, inspector, table, board, or graph editor for the connected Unity project. Ignore Unity project View classes, folders, assets, and camera/runtime views.
Instructions
Use this workflow when the user asks for a Locus View or a frontend-built Unity editor interface.
-
Resolve the target View.
- Use
view_listfirst when a matching View may already exist. To change an existing View, reuse itspackageRootand continue from step 3. - For a new View, choose the template:
blankfor custom panels and early prototypes.inspector-formfor field-oriented Unity asset, GameObject, Component, Material, or ScriptableObject editing.canvas-boardfor draggable custom blocks.field-blocksfor block-based UnitySerializedPropertyeditors.node-graphfor graph editors with nodes, parameters, links, ports, layout, and scripted write-back.link-boardfor source-to-target mapping interfaces.serialized-tablefor table-based aggregation and editing ofSerializedPropertydata.
- Use
-
Create the package with
view_create.- Keep
idlowercase kebab-case and the display name concise. Pickiconfrom the tool enum, or omit it for the template default. - Set
temporary: truefor one-off display Views. They are written under the app temp directory, stay out ofLocus/Viewandview_list, and the requested id gains a unique suffix — use the returned id everywhere afterwards. displayPathonly changes the user-visible View tree path.packageNamepicks the workspace folder underLocus/Viewand defaults to the Unity project name.- Unity-capable templates (
inspector-form,field-blocks,node-graph,serialized-table) need a connected Unity editor when the View runs.
- Keep
-
Edit only inside the returned
packageRoot.- Manifest
view.jsonownsid,name,template,apiVersion, entry/style paths, scripts, capabilities, and requirements. Keep every path package-relative with forward slashes; never write absolute Unity project paths. - Main UI:
src/App.vue. Entry:src/main.ts. Styles:src/style.css(template styles extend a shared base block — keep it and append rules). Optional Unity script:unity/ViewApi.cs. Additional modules (for example asrc/store.tsfor shared state) may be created underpackageRootas needed. - Code shared across Views in the same workspace lives in the workspace
src/and is imported as@locus/project-view.
- Manifest
-
Resolve API details through the stable View contract, in this order:
runtime-api.mdin this skill package: the quick reference for@locus/view-runtimeservices (Unity property editing, drawers, drag/drop, graph/canvas, session, LLM, storage, fs, logs) and@locus/componentscomponents. Load it withknowledge_readpathskill/view/runtime-api.md.- Exported runtime sources under this skill package's
app/view-runtime/src/: exact component props, graph/canvas data shapes, and release behavior. - Locus application sources: only present in a development checkout. Installed releases do not ship them, so never depend on them from package code or instructions.
Typical starting imports:
import { view, unity, property, onEditorUpdate } from "@locus/view-runtime";
import { UnitySerializedPropertyTree, GraphView } from "@locus/components";
-
Use the right runtime path for Unity data.
SerializedPropertyediting from package code:property.fromPath("asset/<assetPath>/property/<propertyPath>")— alsoselection/…,guid/<assetGuid>/…,scene/…, andprefab/…path forms — thentree.drawDefaultEditor(),tree.require(path).draw(),property.write(target, value), or batchedproperty.apply([...]).- Unknown property paths:
view_property_discoverbefore hardcoding any path. Agent-side spot checks and one-off fixes:view_property_read,view_property_write,view_property_apply. - Custom property rendering:
propertyDrawer.registerValue/registerField/registerAttribute/registerPropertyPath/register, passed aspropertyDrawersintoUnitySerializedPropertyTree,UnityPropertyDraw, orUnityObjectPreview. Whole-object rendering:unityObjectDrawer.register(...), passed asobjectDrawersintoUnityObjectPreview. App-wide drawers (affecting chat fences and the Locus Inspector, not just this View) ship as plugin drawer packages instead — seeruntime-api.md"Plugin Drawer Packages". - Custom Unity logic: declare the C# file in
view.jsonscripts[], then call it withview.callScriptfrom package code orview_compile_script+view_call_scriptfrom the agent. - Selection-driven panels:
onEditorUpdate(handler). Unity selection and inspectors:unity.select(...),unity.inspect(...),unity.selectAsset(...),unity.selectSceneObject(...). - Locus <-> Unity drag and drop:
useUnityReferenceDrag,useUnityAssetDropTarget,UnityReferenceChip,UnityDropZone. - LLM-assisted semantic editors:
view.sessionandview.llm.
-
Keep the UI aligned with Locus / Unity Editor tool style.
- Prefer panels, split panes, inspectors, tables, trees, toolbars, and workspaces.
- Keep controls compact, neutral, and useful for long editing sessions. Use existing tokens for surfaces, borders, text, hover states, and accent color.
- Use state badges only for strong statuses such as running, error, modified, enabled, or disabled.
- Avoid marketing-style hero areas, decorative gradients, heavy shadows, oversized cards, colorful chip clusters, and continuous animation.
-
Validate, debug, and report.
- Run
view_reloadafter edits: it validates the manifest and refreshes an open host. Useview_runto open or focus the View host. - If the View fails to load or misbehaves, read
debug.mdwithknowledge_readpathskill/view/debug.md. That read activates the debugging tools (view_capture,view_snapshot,view_action,view_wait,view_console_read,view_debug_eval); plain file reads do not. Checkview_console_readfirst for frontend runtime errors. - When the user-facing reply should reference the finished View, put a standalone line in this exact format:
view:<view-id>, using the id returned byview_create,view_list, orview_reload. The Locus frontend renders that line as a View reference block with an Open View button. - Report the View id,
packageRoot, template used, files changed, reload or run result, and the standaloneview:<view-id>reference line.
- Run
Next.js App Router Expert
Development
A skill that turns Claude into a Next.js App Router expert.
README Generator
Development
Creates professional and comprehensive README.md files for your projects.
API Documentation Writer
Development
Generates comprehensive API documentation in OpenAPI/Swagger format.