使用three.js创建立体模型,在交互式查看器中从各个角度检查形状和材质,并以OBJ + MTL或GLB格式保存,供其他三维制作软件使用。
- 创建立体模型并从各个角度检查
- 制作可在Blender中继续编辑的模型
- 检查模型轮廓和材质效果
在对话中制作图表、地图、模拟和界面模型,帮助理解机制、比较方案或查看条件变化带来的结果。静态科学图表通常使用常规绘图工具制作。
Create visualizations and interactive tools directly in conversation. Proactively use to show how something works; explore 'what happens when', 'what changes', or 'help me understand'; compare or inspect; create simulations, maps, charts, graphs, and mockups. Use standard tools for static scientific figures.
实测评分 未实测
查看安装方法此技能会在对话中制作视觉资料,帮助理解说明内容,或查看条件变化后结果如何改变。可制作机制示意图、比较图表、地图、模拟和界面模型。用户要求表格时,会直接返回 Markdown 表格;对于带标签的静态结构,会使用 Mermaid。如果需要展示动态过程或调整输入,则会制作可在对话中交互查看的视觉内容。
当仅靠文字难以理解流程或关系时,或想比较不同条件下的结果、查看多个方案的差异时,可以使用此技能。它也适合在对话中预览界面方案。静态科学图表通常使用常规绘图工具制作。
新建独立文件、网站、应用页面或组件的请求,与在对话中制作视觉内容属于不同类型的请求。制作地图时会使用公开的地理数据。
本介绍由 AI(OpenAI Codex)根据公开的 SKILL.md 撰写。准确的规格请查看下方原文。
AI 根据 SKILL.md 的内容检查了需要注意的操作和使用前提。评分只依据实际运行的结果(实测对比)。
不计入评分。 由 AI(OpenAI Codex)于 2026年10月24日 评估。仅供参考,安装前请同时查看原文。
安装前可以查看交给 AI 代理的指令内容。
Read this file in full before authoring. Reread truncated ranges in smaller calls. Copy into every compaction summary: Reload the full visualize skill before creating or updating a visualization.
<title>.html in an explicitly writable, durable, task-owned location. Prefer the thread-scoped visualization directory when it appears in the writable roots or is explicitly supplied by the host. Do not write inline fragments into the project; if no visualization directory is supplied, inline rendering is unavailable.sandbox: links to inline visualization HTML unless the user specifically requests a download.~/.zcode is writable beyond the session directory explicitly supplied by the host.<!doctype>, <html>, <head>, or <body>.<div class="card">Hi</div> plus a real newline, never <div class=\"card\">Hi</div>\n. Never embed the fragment in an inline Python, JavaScript, or shell string. Read it back; rewrite literal \" or \n.fetch, XHR, WebSocket, or other API calls.document.getElementById(...). Never derive the root from document.currentScript; scripts may sit outside the root.python3 scripts/render.py <absolute-fragment-path> [<destination>.html] [--serve] can wrap a fragment as standalone HTML or temporarily serve it for browser inspection when a preview would help with layout, theme, or runtime behavior. The rendered preview places the fragment inside a sandboxed iframe: scope Playwright locators to page.frameLocator("iframe") and evaluation to that frame.::visualize followed by a JSON object; keep both colons, do not use Unicode private-use delimiters, and do not wrap the reference in backticks or a code fence:::visualize{"path":"<absolute-path>/<title>.html"}
"mode":"wide" for a full-screen desktop app mockup, including its application shell. For other visuals, add it only when several compact chart panels must remain side by side for direct comparison and would be unreadable at the normal width. Never widen a single plot, map, grid, diagram, or timeline merely because it is dense. Keep contained mockups, dialogs, and mobile screens at normal width; stack separate self-contained views vertically. Visualizations fill the available conversation width; the host does not impose a separate card width cap:::visualize{"path":"<absolute-path>/<title>.html","mode":"wide"}
title when needed.<script src="..."> for D3 so exports remain offline; do not add another copy or fetch a fallback. Other versions, query strings, libraries, fonts, and map data are not bundled by this rule.cdnjs.cloudflare.com, esm.sh, cdn.jsdelivr.net, unpkg.com, fonts.googleapis.com, fonts.gstatic.com, and fonts.bunny.net. Other origins are blocked and fail silently.python3 scripts/render.py <absolute-fragment-path> <destination>.html.window.zcode.widgetState and window.zcode.setWidgetState calls from window.zcode.* when exporting: the standalone wrapper supplies fallback state storage. Replace other host-only interactions before using the standalone HTML outside ZCode.-foreground token is the content on that surface. --muted is a surface fill; use --muted-foreground for secondary text..text-muted inside .card or another filled container unless its background preserves that contrast.--background, --foreground, --card, --card-foreground, --popover, --popover-foreground, --primary, --primary-foreground, --secondary, --secondary-foreground, --muted, --muted-foreground, --accent, --accent-foreground, --destructive, --border, --input, --ring, --blue, --orange, --green, --red, --purple, and --yellow. Use currentColor inside SVG.--viz-series-1 for one measure or active state. Use --viz-series-2 through --viz-series-6 only for important persistent category, series, or status identity; never give every peer a different color by default.
--foreground or --muted-foreground..btn-primary for high-emphasis actions; its neutral fill is supplied by the utility. Use --primary and --primary-foreground for filled selected, active, or pressed controls. Reserve --accent and --accent-foreground for subtle interactive surfaces and soft highlights. Buttons with aria-pressed="true", aria-selected="true", or .is-selected already use the primary pairing; .nav-pills .nav-link.active keeps selection neutral.--font-size-base. Use normal text by default and .text-small only for secondary annotations; at the default scale these are 14px and 12px. Never make supporting text smaller than 11px.h1, h2, and h3 are available; use one concise visible heading for a self-contained chart or graph, with short panel headings only when needed. Do not restate the prompt or add a redundant title to other visualizations.400 and 500. Never set custom font sizes or line heights..tabular-nums on changing or aligned numbers. Avoid it for editorial or decorative numerals.Choose the smallest composition that fits.
await window.zcode.sendFollowUpMessage({ prompt, title }), where the optional title is a concise confirmation-dialog heading of up to 250 characters. Include the selected values and requested investigation in the prompt, and label the action clearly.<a href="https://example.com/subscribe"> link. If a button needs scripted handling, call await window.zcode.openExternal({ href }) from its user click handler; see API. Use an absolute HTTP(S) URL. Keep #fragment links for navigation within the page.window.zcode.widgetState when rendering. Listen for zcode:set_globals and apply event.detail.globals.widgetState when present. Use defaults for missing or incompatible state.window.zcode.setWidgetState({ modelContent, privateContent }).catch(() => {}). Updates are acknowledged after the host persists them. Both fields accept JSON or null and may be omitted (treated as null). Each call replaces the snapshot; keep it under 16 KiB. Never save on load or state events.modelContent, UI details worth restoring in privateContent, and transient or recomputable values in memory. Only modelContent may reach the model: delivery is best-effort and not guaranteed across clients. Never rely on it; saving never starts a turn. No secrets or images.Tweak helper. Keep ordinary mockup interactions local; do not add design controls to charts, explainers, or simulations unless requested. Do not render a second controls panel or open annotation mode automatically.--card, --font-size-base, .card, or .btn). Define root-scoped, product-specific colors, typography, surfaces, and controls instead. This rule overrides all general visualization guidance.light-dark(<light>, <dark>) colors unless a fixed theme is requested..viz-dotted-background to the surrounding preview area or carousel root for a quiet, theme-aware dot grid. This preview-only class is an exception to the mockup utility rule; keep it outside the product UI and leave full-page mockups, charts, and explainers plain.<viz-calendar> for a day schedule. Read Calendar and start from the example. Supply verified dates and events; the component handles durations, overlap lanes, and responsive layout. Short blocks show the title; hover, focus, or tap reveals the full title, time, and detail. Do not stretch the schedule to fit secondary text or wrap the element in another card.<script src="https://cdn.jsdelivr.net/npm/d3@7.9.0/dist/d3.min.js"></script> before using d3..card, rounded panels, filled backgrounds, or shadowed containers.viewBox, a thin frame, and visible text.axis-title[data-axis="x"] and text.axis-title[data-axis="y"] showing quantities and units.viewBox from its own container's measured width, redraw with ResizeObserver, and reserve at least 64px for the y axis. Never scale down a fixed-width viewBox.d3.extent(...) over all observations, uncertainty, and references. Inset scale ranges for marker radii and keep every path inside rect[data-chart-frame]; never draw endpoint connectors outside the frame or guess or hard-code the domain.--viz-series-1 through --viz-series-6 for chart series; use --foreground and --border for neutrals, cycle the six series tokens when more are needed, and never use literal or fallback colors. Give every SVG label fill: var(--foreground) and font-size: 12px; never shrink labels below 11 screen pixels. Stack subplots when their labels no longer fit.<button type="button" aria-pressed="true"> per series with a small swatch and neutral text; toggle its line, markers, and tooltip row together. Keep buttons transparent, borderless, and indistinguishable from inline text; never use .btn, pills, badges, rounded borders, or filled and selected backgrounds.<div class="tooltip" role="tooltip"> using --popover and --popover-foreground. In each multi-series SVG, give the full-plot overlay both data-chart-hit and data-chart-hover-overlay="cross-series". Keep the data-chart-hover-guide at the exact cursor x, interpolate every visible series there, and show one aligned data-chart-hover-marker and tooltip row per visible series; never snap the guide to a nearby sample. Let touch users pin the same cross-series details without requiring hover.d3.bisector(d => d.x).center(values, x); never pass an accessor to d3.bisectCenter.data-chart-hit targets at least 32 screen pixels across on fine pointers and about 44px on coarse pointers; use one nearest-point overlay for dense scatter.d3-geo; never hard-code or hand-draw geographic outlines. Use schematic maps only when asked.https://esm.sh/@d3-maps/atlas@1.0.0/world/countries/countries-110m and convert it with topojson-client@3.1.0 using feature(world, world.objects.features).features. Join input ISO3 directly to feature.properties.id, which is already ISO3; do not convert it to numbers.https://cdn.jsdelivr.net/npm/us-atlas@3/counties-10m.json/+esm. For ZIP/ZCTA or city boundaries, download official Census or local open-data GeoJSON; do not guess sibling atlas paths or import raw JSON as JavaScript.aria-live="polite" for dynamic results, selections, and simulator updates. Use role="alert" for validation errors. Do not announce every hover or animation frame..table-responsive only when table columns cannot fit. The host sizes the frame to its content, so avoid fixed outer widths, other horizontal overflow, internal scrolling, position: fixed, and viewport-height layouts.viewBox.tabindex.button, input, select, and textarea elements with matching utilities; never recreate controls..card: The only card-like HTML surface. Use its base class unchanged for a necessary numeric summary, selected-item summary, or bounded interactive field. Before adding a fill, border, radius, or shadow to any layout container, either use .card or leave it transparent and unframed; never recreate card chrome on rows, panels, tiles, sections, or wrappers. Keep charts, maps, diagrams, tables, controls, and the whole visualization unframed. Never nest cards; show 2-4 summaries near the top only when useful. Structural groupings and repeated content are not bounded interactive fields. Organize them with layout or visual marks, not container chrome..viz-stat: Use a summary .card with one muted label, one .viz-stat-value, and at most one short context or delta line..viz-grid: Use for peer metrics or choices instead of a custom grid. It creates as many equal-width columns as fit and stacks when narrow. Never use it for the whole visual or a horizontally scrolling card row. Keep groups to 2-3 columns at 736px and controls in a separate row..viz-row: Use as a wrapping horizontal group with centered related values or inline actions that may wrap when narrow.<hr>: Use a native horizontal rule for a subtle theme-aware separator..nav.nav-pills + .nav-link: Use the accessible, interactive Tabs API below..progress + .progress-bar: <div class="progress" role="progressbar" aria-label="Progress" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"><div class="progress-bar" style="width:25%"></div></div>.viz-tile: Add to a selectable dense-grid .btn; it stretches to fill its grid cell, preserves category fill, and uses an accent ring instead of solid selection. Never add another selected, pressed, border, outline, or shadow rule..viz-badge: Use as a compact display-only accent pill for a short status, category, or value; never as a button..viz-controls: Use as a wrapping row for controls affecting the same visualization. Keep button groups compact. Put labeled fields directly inside as .form-label; fields form at most two columns and stack when narrow..nav.nav-pills[role="tablist"]: Group content-width native .nav-link[role="tab"] buttons and label the group with aria-label. Add .nav-justified only when tabs should share and fill the row equally..nav-link[role="tab"]: Give each button a unique id, type="button", aria-controls, and aria-selected. Mark the initial tab .active and aria-selected="true"; use disabled or aria-disabled="true" when needed.[role="tabpanel"]: Match id to its tab's aria-controls, set aria-labelledby to the tab's id, and mark inactive panels hidden. Tabs can have separate panels or point to one shared panel.<div class="nav nav-pills" role="tablist" aria-label="Platform">
<button class="nav-link active" id="mac" role="tab" aria-controls="mac-panel" aria-selected="true" type="button">macOS</button>
<button class="nav-link" id="linux" role="tab" aria-controls="linux-panel" aria-selected="false" type="button">Linux</button>
</div>
<div id="mac-panel" role="tabpanel" aria-labelledby="mac">macOS content</div>
<div id="linux-panel" role="tabpanel" aria-labelledby="linux" hidden>Linux content</div>
Use .cursor-interaction on custom interactive elements, including locally styled widget controls. It follows the host cursor preference; never hardcode cursor:pointer. Shared controls already apply it. Preserve text, drag and disabled cursors for those states.
Place related inputs and buttons on one row, aligned at their vertical centers. Put labels and values on a separate row above them.
.btn: Use for a content-sized secondary action. Add .btn-primary for one main action per control group or .btn-ghost for low emphasis.
.btn-block: Add to a .btn only when the action should intentionally fill the available inline space. Never use it for ordinary row actions.
<a>: Use for links. Add .btn to style a link as a button.
[data-tooltip]: Use for concise supplementary plain text on static or dynamic triggers; the sandbox handles hover, focus, and touch and creates .tooltip elements. Keep essential content visible and triggers labeled. Never use title, custom markup, or initialization. Example: <button type="button" data-tooltip="Reset view">Reset</button>.
When a visible label is truncated, put its full text in data-tooltip on the existing accessible trigger so hover, focus, and tap reveal it. The bundled calendar does this automatically.
[data-tooltip-placement]: Optionally prefer top (default), right, bottom, or left; collision handling may flip it.
.form-check: Prefer a wrapping <label class="form-check"> around the native .form-check-input and .form-check-label text so the whole row is tappable. An explicit label with matching for and input id also works.
.form-switch: Add to .form-check around a native checkbox.
.form-control: Pair a native text, date, file, or color input—or a textarea—with .form-label.
.form-control-color: Add to .form-control for a compact native color input.
.form-select: Pair a native select with .form-label.
.form-range: Pair a native range with a visible label; put its current value and units immediately before it.
.table: Use on a semantic table for a quiet, unframed data view. It provides wrapping cells and subtle horizontal dividers without vertical gridlines. Use sentence case for headers..table-responsive: Wrap a table when its columns cannot fit at narrow widths. It contains horizontal overflow without clipping the visualization..table-sm: Add to .table when more rows need to fit; it reduces cell padding without shrinking text..text-end, .text-center, and .text-nowrap: Use inside .table for numeric/end alignment, centered values, or values that must stay on one line. Numeric cells use tabular figures when end-aligned..text-small: Use for the smallest host-scaled secondary chart labels and annotations, never below 11px or for essential content..text-muted: Use for secondary units, captions, timestamps, and context, never essential values or labels..text-destructive: Use only for error or validation text the user needs to notice or act on.<code>: Use for inline commands, file names, symbols, or short references; put multiline code in <pre><code>..sr-only: Use for visually hidden accessible text.light-dark(...); redraw when the theme changes.data-tooltip directly to the real pointer-accessible mark and include its label, value, and units; the sandbox handles themed positioning, keyboard focus, and touch.prefers-reduced-motion.svg in a container that also contains Lucide icons.<title>/<desc>, fallback text, or an .sr-only heading or description..text-small when space is tight. Never overlap or clip text against marks, axes, legends, labels, or edges; move or reduce labels rather than squeeze them.Use the sandbox-provided global lucide. Add an icon name with data-lucide:
<i data-lucide="search" aria-hidden="true"></i>
Never author inline icon SVG or icon paths. Use only supplied Lucide names; the sandbox replaces each placeholder with a host-sized currentColor SVG. Reserve authored inline SVG for charts and data marks.
Mark decorative icons aria-hidden="true". Put action icons inside labeled controls; use a visible label or aria-label for icon-only actions.
Let the sandbox initialize static icons after the fragment without blocking first render. After adding icons dynamically, use lucide.createIcons({ attrs: { width: 16, height: 16 } }).
Never load Lucide or another icon library from the network.
Use visibly labeled buttons and inputs for small interactions. Keep all presentation-only interaction local to the fragment and make the first render useful before input changes.
Use semantic controls, realistic spacing, and restrained chrome for mockups. Never fake product screenshots when inspectable UI is needed.
window.zcode exposes widget state, state saving, follow-up messages, and openExternal({ href }). See API for external links, acknowledgement, cancellation, and Tweak object bindings. The standalone export supplies state fallback, not Agent access.::visualize{path="..."} references remain supported for historical replies. Generate the ::visualize JSON reference described above for new replies.还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
使用three.js创建立体模型,在交互式查看器中从各个角度检查形状和材质,并以OBJ + MTL或GLB格式保存,供其他三维制作软件使用。
Audit web accessibility with Chrome DevTools MCP and Lighthouse. Inspect semantic structure, labels, keyboard focus, tap target size, and color contrast, then identify page elements that may need changes based on web.dev guidance.
中文简介正在准备中。当前显示英语简介。
在个人任务清单中记录待办事项、承诺、期限、下一步、待回复对象和阻碍原因,更新进度与依赖关系,合并重复项并归档已结束的任务。
Coordinate a task from a verifiable goal through completion. Handle work directly or split independent tasks across separate agent sessions, track progress, verify results, and arrange pull request merging when included in the goal.
中文简介正在准备中。当前显示英语简介。
了解 Antigravity 如何发现和加载自定义配置,包括配置位置与优先级。借助本指南选择并创建技能、规则、插件、钩子或 MCP 服务器,用于智能体工作流程和外部工具连接。
将动画制作成可播放、暂停和定位时间的HTML页面,通过时间轴调整场景时长与速度,并为横屏或竖屏视频导出做好准备。